Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
Sets are complete characteristic-bit codes with actual finite cardinality witnesses. The proof constructs translations and the sumset; no finite-choice oracle, supplied cardinality conclusion, or unproved polynomial-method premise is used.
Exact theorem in conservative defined notation
∀ b. ∀ c. ∀ p. ∀ d. ∀ a. ∀ n. ∀ r. ¬p = 0 → AllBits(b,c,p) → ModularSetMember(b,c,p,a) → Lt(r,p) → ModEq(p,a + n · d,r) → BetaAt(b,c,r,1) ∨ (∃ x. ∃ y. ModularTranslationBoundary(b,c,p,d,x,y))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 108 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 (2)
01Fix variables and assumptionsL1–5
02Induction on nL6–12
03Separate the logical casesL13–13
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L13
cases hstart
04Establish hzeroL14–16
05Establish heL17–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq bounded unique.
06Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L25
left
07Calculate and transport equalitiesL26–27
08Use earlier factsL28–28
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L28
exact hstart_right
09Fix variables and assumptionsL29–34
10Establish hprevL35–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite modular residue exists.
- L35
have hprev : ∃ v. Lt(v,p) ∧ ModEq(p,a + n · d,v)Definitions: Lt(v,p)ModEq(p,a + n · d,v)Original native command in the exact edition - L36
specialize finite_modular_residue_exists p - L37
specialize finite_modular_residue_exists a+n*d - L38
apply finite_modular_residue_exists - L39
exact hp
11Separate the logical casesL40–41
12Establish hcaseL42–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L42
have hcase : BetaAt(b,c,x,1) ∨ (∃ y. ∃ z. ModularTranslationBoundary(b,c,p,d,y,z))Definitions: BetaAt(b,c,x,1)ModularTranslationBoundary(b,c,p,d,y,z)Original native command in the exact edition - L43
specialize IH x - L44
apply IH - L45
exact hp - L46
exact hbits - L47
exact hstart - L48
exact hprev_witness_left - L49
exact hprev_witness_right
13Separate the logical casesL50–50
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L50
cases hcase
14Establish hdecL51–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite bit membership decidable.
- L51
have hdec : BetaAt(b,c,r,1) ∨ ¬BetaAt(b,c,r,1)Definitions: BetaAt(b,c,r,1)Original native command in the exact edition - L52
specialize finite_bit_membership_decidable b - L53
specialize finite_bit_membership_decidable c - L54
specialize finite_bit_membership_decidable p - L55
specialize finite_bit_membership_decidable r - L56
apply finite_bit_membership_decidable - L57
exact hbits - L58
exact hr
15Separate the logical casesL59–60
16Use earlier factsL61–61
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L61
exact hdec_left
17Separate the logical casesL62–62
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L62
right
18Construct an explicit witnessL63–64
19Separate the logical casesL65–66
20Use earlier factsL67–68
21Separate the logical casesL69–69
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L69
split
22Use earlier factsL70–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L70
exact hr
23Separate the logical casesL71–71
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L71
split
24Establish haddL72–81
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L72
have hadd : ModEq(p,a + n · d + d,x + d)Definitions: ModEq(p,a + n · d + d,x + d)Original native command in the exact edition - L73
specialize mod_eq_add p - L74
specialize mod_eq_add a+n*d - L75
specialize mod_eq_add x - L76
specialize mod_eq_add d - L77
specialize mod_eq_add d - L78
apply mod_eq_add - L79
exact hprev_witness_right - L80
specialize mod_eq_refl p - L81
specialize mod_eq_refl d
25Use earlier factsL82–91
Instantiate or apply named facts and discharge the corresponding proof obligations.
26Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact hadd
27Establish heL93–93
Establish this local claim before using it. It is not an additional assumption.
- L93
have he : a+(S n)*d=(a+n*d)+d
28Establish hsL94–103
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul succ left.
29Calculate and transport equalitiesL104–104
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L104
rewrite <- he
30Use earlier factsL105–106
31Separate the logical casesL107–107
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L107
right
32Use earlier factsL108–108
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L108
exact hcase_right
Original defined command ledger · 108 lines
- 0001
intro b - 0002
intro c - 0003
intro p - 0004
intro d - 0005
intro a - 0006
induction n - 0007
intro r - 0008
intro hp - 0009
intro hbits - 0010
intro hstart - 0011
intro hr - 0012
intro hmod - 0013
cases hstart - 0014
have hzero : a+0*d=a - 0015
simp [mul_zero_left] - 0016
rewrite hzero at hmod - 0017
have he : a=r - 0018
specialize mod_eq_bounded_unique p - 0019
specialize mod_eq_bounded_unique a - 0020
specialize mod_eq_bounded_unique r - 0021
apply mod_eq_bounded_unique - 0022
exact hstart_left - 0023
exact hr - 0024
exact hmod - 0025
left - 0026
rewrite he at hstart_right - 0027
rewrite he at hstart_right - 0028
exact hstart_right - 0029
intro r - 0030
intro hp - 0031
intro hbits - 0032
intro hstart - 0033
intro hr - 0034
intro hmod - 0035
have hprev : ∃ v. Lt(v,p) ∧ ModEq(p,a + n · d,v) - 0036
specialize finite_modular_residue_exists p - 0037
specialize finite_modular_residue_exists a+n*d - 0038
apply finite_modular_residue_exists - 0039
exact hp - 0040
cases hprev - 0041
cases hprev_witness - 0042
have hcase : BetaAt(b,c,x,1) ∨ (∃ y. ∃ z. ModularTranslationBoundary(b,c,p,d,y,z)) - 0043
specialize IH x - 0044
apply IH - 0045
exact hp - 0046
exact hbits - 0047
exact hstart - 0048
exact hprev_witness_left - 0049
exact hprev_witness_right - 0050
cases hcase - 0051
have hdec : BetaAt(b,c,r,1) ∨ ¬BetaAt(b,c,r,1) - 0052
specialize finite_bit_membership_decidable b - 0053
specialize finite_bit_membership_decidable c - 0054
specialize finite_bit_membership_decidable p - 0055
specialize finite_bit_membership_decidable r - 0056
apply finite_bit_membership_decidable - 0057
exact hbits - 0058
exact hr - 0059
cases hdec - 0060
left - 0061
exact hdec_left - 0062
right - 0063
exists x - 0064
exists r - 0065
split - 0066
split - 0067
exact hprev_witness_left - 0068
exact hcase_left - 0069
split - 0070
exact hr - 0071
split - 0072
have hadd : ModEq(p,a + n · d + d,x + d) - 0073
specialize mod_eq_add p - 0074
specialize mod_eq_add a+n*d - 0075
specialize mod_eq_add x - 0076
specialize mod_eq_add d - 0077
specialize mod_eq_add d - 0078
apply mod_eq_add - 0079
exact hprev_witness_right - 0080
specialize mod_eq_refl p - 0081
specialize mod_eq_refl d - 0082
apply mod_eq_refl - 0083
specialize mod_eq_trans p - 0084
specialize mod_eq_trans x+d - 0085
specialize mod_eq_trans (a+n*d)+d - 0086
specialize mod_eq_trans r - 0087
apply mod_eq_trans - 0088
specialize mod_eq_symm p - 0089
specialize mod_eq_symm (a+n*d)+d - 0090
specialize mod_eq_symm x+d - 0091
apply mod_eq_symm - 0092
exact hadd - 0093
have he : a+(S n)*d=(a+n*d)+d - 0094
have hs : (S n)*d=n*d+d - 0095
specialize mul_succ_left n - 0096
specialize mul_succ_left d - 0097
apply mul_succ_left - 0098
rewrite hs - 0099
symm - 0100
specialize add_assoc a - 0101
specialize add_assoc n*d - 0102
specialize add_assoc d - 0103
apply add_assoc - 0104
rewrite <- he - 0105
exact hmod - 0106
exact hdec_right - 0107
right - 0108
exact hcase_right