Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
The input n is positive. Signed code 2 denotes +1, so the actual sum is +1 at n=1 and zero for n>1. The positive-values result permits arbitrary F(0), which the divisor mask excludes. Prime-square multiples contribute zero. Full G007 inversion is established in its separate family.
Exact theorem in conservative defined notation
∀ n. ∀ p. ∀ b. ∀ c. ¬n = 0 → Prime(p) → Dvd(p,n) → DivisorPrimeTogglePrefix(n,p,b,c,S n) → PermutationPrefix(b,c,S n)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 99 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (4)
01Fix variables and assumptionsL1–8
02Establish hbL9–11
Establish this local claim before using it. It is not an additional assumption.
- L9
have hb : BoundedPrefix(b,c,S n)Definitions: BoundedPrefix(b,c,S n)Original native command in the exact edition - L10
intro i - L11
intro hi
03Establish hvL12–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprefix.
- L12
have hv : ∃ e. BetaAt(b,c,i,e) ∧ DivisorPrimeToggle(n,p,i,e)Definitions: BetaAt(b,c,i,e)DivisorPrimeToggle(n,p,i,e)Original native command in the exact edition - L13
specialize hprefix (i) - L14
apply hprefix - L15
exact hi
04Separate the logical casesL16–17
05Construct an explicit witnessL18–18
Supply the displayed value, then prove that it has the required property.
- L18
exists x
06Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
split
07Use earlier factsL20–29
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L20
exact hv_witness_left - L21
specialize succ_le_succ (x) - L22
specialize succ_le_succ (n) - L23
apply succ_le_succ - L24
specialize divisor_prime_toggle_bounded (n) - L25
specialize divisor_prime_toggle_bounded (p) - L26
specialize divisor_prime_toggle_bounded (i) - L27
specialize divisor_prime_toggle_bounded (x) - L28
apply divisor_prime_toggle_bounded - L29
exact hn
08Use earlier factsL30–36
09Establish hinjL37–46
Establish this local claim before using it. It is not an additional assumption.
10Use earlier factsL47–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
specialize divisor_prime_toggle_functional (a) - L48
specialize divisor_prime_toggle_functional (i) - L49
specialize divisor_prime_toggle_functional (j) - L50
apply divisor_prime_toggle_functional - L51
exact hp - L52
specialize divisor_prime_toggle_symmetric (n) - L53
specialize divisor_prime_toggle_symmetric (p) - L54
specialize divisor_prime_toggle_symmetric (i) - L55
specialize divisor_prime_toggle_symmetric (a) - L56
apply divisor_prime_toggle_symmetric
11Use earlier factsL57–66
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L57
exact hn - L58
exact hp - L59
exact hpn - L60
specialize divisor_prime_toggle_prefix_lookup (n) - L61
specialize divisor_prime_toggle_prefix_lookup (p) - L62
specialize divisor_prime_toggle_prefix_lookup (b) - L63
specialize divisor_prime_toggle_prefix_lookup (c) - L64
specialize divisor_prime_toggle_prefix_lookup (S n) - L65
specialize divisor_prime_toggle_prefix_lookup (i) - L66
specialize divisor_prime_toggle_prefix_lookup (a)
12Use earlier factsL67–76
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
apply divisor_prime_toggle_prefix_lookup - L68
exact hprefix - L69
exact hi - L70
exact hia - L71
specialize divisor_prime_toggle_symmetric (n) - L72
specialize divisor_prime_toggle_symmetric (p) - L73
specialize divisor_prime_toggle_symmetric (j) - L74
specialize divisor_prime_toggle_symmetric (a) - L75
apply divisor_prime_toggle_symmetric - L76
exact hn
13Use earlier factsL77–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L77
exact hp - L78
exact hpn - L79
specialize divisor_prime_toggle_prefix_lookup (n) - L80
specialize divisor_prime_toggle_prefix_lookup (p) - L81
specialize divisor_prime_toggle_prefix_lookup (b) - L82
specialize divisor_prime_toggle_prefix_lookup (c) - L83
specialize divisor_prime_toggle_prefix_lookup (S n) - L84
specialize divisor_prime_toggle_prefix_lookup (j) - L85
specialize divisor_prime_toggle_prefix_lookup (a) - L86
apply divisor_prime_toggle_prefix_lookup
14Use earlier factsL87–89
15Separate the logical casesL90–90
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L90
split
16Use earlier factsL91–91
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L91
exact hb
17Separate the logical casesL92–92
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L92
split
18Use earlier factsL93–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 99 lines
- 0001
intro n - 0002
intro p - 0003
intro b - 0004
intro c - 0005
intro hn - 0006
intro hp - 0007
intro hpn - 0008
intro hprefix - 0009
have hb : BoundedPrefix(b,c,S n) - 0010
intro i - 0011
intro hi - 0012
have hv : ∃ e. BetaAt(b,c,i,e) ∧ DivisorPrimeToggle(n,p,i,e) - 0013
specialize hprefix (i) - 0014
apply hprefix - 0015
exact hi - 0016
cases hv - 0017
cases hv_witness - 0018
exists x - 0019
split - 0020
exact hv_witness_left - 0021
specialize succ_le_succ (x) - 0022
specialize succ_le_succ (n) - 0023
apply succ_le_succ - 0024
specialize divisor_prime_toggle_bounded (n) - 0025
specialize divisor_prime_toggle_bounded (p) - 0026
specialize divisor_prime_toggle_bounded (i) - 0027
specialize divisor_prime_toggle_bounded (x) - 0028
apply divisor_prime_toggle_bounded - 0029
exact hn - 0030
exact hp - 0031
exact hpn - 0032
specialize le_of_succ_le_succ (i) - 0033
specialize le_of_succ_le_succ (n) - 0034
apply le_of_succ_le_succ - 0035
exact hi - 0036
exact hv_witness_right - 0037
have hinj : InjectivePrefix(b,c,S n) - 0038
intro i - 0039
intro j - 0040
intro a - 0041
intro hi - 0042
intro hj - 0043
intro hia - 0044
intro hja - 0045
specialize divisor_prime_toggle_functional (n) - 0046
specialize divisor_prime_toggle_functional (p) - 0047
specialize divisor_prime_toggle_functional (a) - 0048
specialize divisor_prime_toggle_functional (i) - 0049
specialize divisor_prime_toggle_functional (j) - 0050
apply divisor_prime_toggle_functional - 0051
exact hp - 0052
specialize divisor_prime_toggle_symmetric (n) - 0053
specialize divisor_prime_toggle_symmetric (p) - 0054
specialize divisor_prime_toggle_symmetric (i) - 0055
specialize divisor_prime_toggle_symmetric (a) - 0056
apply divisor_prime_toggle_symmetric - 0057
exact hn - 0058
exact hp - 0059
exact hpn - 0060
specialize divisor_prime_toggle_prefix_lookup (n) - 0061
specialize divisor_prime_toggle_prefix_lookup (p) - 0062
specialize divisor_prime_toggle_prefix_lookup (b) - 0063
specialize divisor_prime_toggle_prefix_lookup (c) - 0064
specialize divisor_prime_toggle_prefix_lookup (S n) - 0065
specialize divisor_prime_toggle_prefix_lookup (i) - 0066
specialize divisor_prime_toggle_prefix_lookup (a) - 0067
apply divisor_prime_toggle_prefix_lookup - 0068
exact hprefix - 0069
exact hi - 0070
exact hia - 0071
specialize divisor_prime_toggle_symmetric (n) - 0072
specialize divisor_prime_toggle_symmetric (p) - 0073
specialize divisor_prime_toggle_symmetric (j) - 0074
specialize divisor_prime_toggle_symmetric (a) - 0075
apply divisor_prime_toggle_symmetric - 0076
exact hn - 0077
exact hp - 0078
exact hpn - 0079
specialize divisor_prime_toggle_prefix_lookup (n) - 0080
specialize divisor_prime_toggle_prefix_lookup (p) - 0081
specialize divisor_prime_toggle_prefix_lookup (b) - 0082
specialize divisor_prime_toggle_prefix_lookup (c) - 0083
specialize divisor_prime_toggle_prefix_lookup (S n) - 0084
specialize divisor_prime_toggle_prefix_lookup (j) - 0085
specialize divisor_prime_toggle_prefix_lookup (a) - 0086
apply divisor_prime_toggle_prefix_lookup - 0087
exact hprefix - 0088
exact hj - 0089
exact hja - 0090
split - 0091
exact hb - 0092
split - 0093
exact hinj - 0094
specialize finite_bounded_injective_surjective (S n) - 0095
specialize finite_bounded_injective_surjective (b) - 0096
specialize finite_bounded_injective_surjective (c) - 0097
apply finite_bounded_injective_surjective - 0098
exact hb - 0099
exact hinj