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.
Statement with defined notation
∀ b. ∀ c. ∀ l. ∃ u. ∃ v. BetaAt(u,v,0,1) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(u,v,x,z) ∧ (BetaAt(u,v,S x,n) ∧ n = z · y)))Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
5 occurrences
In local proof propositions
18 occurrences
Exact expanded native-PA statement
forall b c l. exists u v. (((exists h. h + S 1 = S ((S 0) * v)) /\ exists q. u = q * S ((S 0) * v) + 1) /\ forall i. (exists h. h + S i = l) -> exists p r s. (((exists h. h + S p = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + p) /\ (((exists h. h + S r = S ((S i) * v)) /\ exists q. u = q * S ((S i) * v) + r) /\ (((exists h. h + S s = S ((S (S i)) * v)) /\ exists q. u = q * S ((S (S i)) * v) + s) /\ s = r * p))))Proof neighborhood
Direct theorem prerequisites
BT0040 beta_at_self_of_bound BT000L add_eq_zero_right BT000C succ_ne_zero BT0041 beta_at_exists BT005D beta_prefix_extend BT000W zero_le BT0016 succ_le_succ BT000E le_refl BT0017 le_of_succ_le_succ BT001C le_eq_or_lt BT0009 one_mulDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic 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 (11)
01Fix variables and assumptionsL1–2
02Induction on lL3–3
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L3
induction l
03Construct an explicit witnessL4–5
04Separate the logical casesL6–6
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L6
split
05Use earlier factsL7–11
06Calculate and transport equalitiesL12–12
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L12
rewrite one_mul
07Use earlier factsL13–14
08Fix variables and assumptionsL15–16
09Separate the logical casesL17–18
10Establish hsi0L19–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
11Establish htraceL27–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L27
have htrace : ∃ u. ∃ v. BetaAt(u,v,0,1) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(u,v,x,z) ∧ (BetaAt(u,v,S x,n) ∧ n = z · y)))Definitions: BetaAt(u,v,0,1)Lt(x,l)BetaAt(b,c,x,y)BetaAt(u,v,x,z)BetaAt(u,v,S x,n)Original native command in the exact edition - L28
apply IH
12Separate the logical casesL29–31
13Establish hfactorL32–36
Establish this local claim before using it. It is not an additional assumption.
- L32
have hfactor : ∃ p. BetaAt(b,c,l,p)Definitions: BetaAt(b,c,l,p)Original native command in the exact edition - L33
specialize beta_at_exists b - L34
specialize beta_at_exists c - L35
specialize beta_at_exists l - L36
exact beta_at_exists
14Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases hfactor
15Establish hlastL38–42
Establish this local claim before using it. It is not an additional assumption.
- L38
have hlast : ∃ r. BetaAt(x,x1,l,r)Definitions: BetaAt(x,x1,l,r)Original native command in the exact edition - L39
specialize beta_at_exists x - L40
specialize beta_at_exists x1 - L41
specialize beta_at_exists l - L42
exact beta_at_exists
16Separate the logical casesL43–43
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L43
cases hlast
17Establish hextL44–49
Establish this local claim before using it. It is not an additional assumption.
- L44
have hext : ∃ z. ∃ v. BetaAt(z,v,S l,x3 · x2) ∧ (∀ y. ∀ n. Lt(y,S l) → BetaAt(x,x1,y,n) → BetaAt(z,v,y,n))Definitions: BetaAt(z,v,S l,x3 · x2)Lt(y,S l)BetaAt(x,x1,y,n)BetaAt(z,v,y,n)Original native command in the exact edition - L45
specialize beta_prefix_extend (S l) - L46
specialize beta_prefix_extend x - L47
specialize beta_prefix_extend x1 - L48
specialize beta_prefix_extend (x3 * x2) - L49
exact beta_prefix_extend
18Separate the logical casesL50–52
19Construct an explicit witnessL53–54
20Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
split
21Use earlier factsL56–58
22Establish h0L59–59
Establish this local claim before using it. It is not an additional assumption.
23Establish hzeroL60–69
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ le succ.
24Fix variables and assumptionsL70–70
Work with arbitrary variables or the premises of the current implication.
- L70
intro hi
25Establish hilL71–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le of succ le succ.
26Establish hsplitL76–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.
27Separate the logical casesL81–81
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L81
cases hsplit
28Construct an explicit witnessL82–84
29Separate the logical casesL85–85
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L85
split
30Calculate and transport equalitiesL86–87
31Use earlier factsL88–88
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L88
exact hfactor_witness
32Separate the logical casesL89–89
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L89
split
33Calculate and transport equalitiesL90–91
34Use earlier factsL92–97
35Separate the logical casesL98–98
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L98
split
36Calculate and transport equalitiesL99–100
37Use earlier factsL101–101
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L101
exact hext_witness_witness_left
38Calculate and transport equalitiesL102–102
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L102
refl
39Establish holdL103–106
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply htrace witness witness right.
- L103
have hold : ∃ p. ∃ r. ∃ s. BetaAt(b,c,i,p) ∧ (BetaAt(x,x1,i,r) ∧ (BetaAt(x,x1,S i,s) ∧ s = r · p))Definitions: BetaAt(b,c,i,p)BetaAt(x,x1,i,r)BetaAt(x,x1,S i,s)Original native command in the exact edition - L104
specialize htrace_witness_witness_right i - L105
apply htrace_witness_witness_right - L106
exact hsplit_right
40Separate the logical casesL107–112
41Construct an explicit witnessL113–115
42Separate the logical casesL116–116
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L116
split
43Use earlier factsL117–117
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L117
exact hold_witness_witness_witness_left
44Separate the logical casesL118–118
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L118
split
45Use earlier factsL119–123
46Separate the logical casesL124–124
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L124
split
47Use earlier factsL125–133
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L125
specialize hext_witness_witness_right (S i) - L126
specialize hext_witness_witness_right x8 - L127
apply hext_witness_witness_right - L128
specialize succ_le_succ (S i) - L129
specialize succ_le_succ l - L130
apply succ_le_succ - L131
exact hsplit_right - L132
exact hold_witness_witness_witness_right_right_left - L133
exact hold_witness_witness_witness_right_right_right
Original defined command ledger · 133 lines
- 0001
intro b - 0002
intro c - 0003
induction l - 0004
exists 1 - 0005
exists 1 - 0006
split - 0007
specialize beta_at_self_of_bound 1 - 0008
specialize beta_at_self_of_bound 0 - 0009
specialize beta_at_self_of_bound 1 - 0010
apply beta_at_self_of_bound - 0011
specialize one_mul 1 - 0012
rewrite one_mul - 0013
specialize le_refl 2 - 0014
exact le_refl - 0015
intro i - 0016
intro hi - 0017
exfalso - 0018
cases hi - 0019
have hsi0 : S i = 0 - 0020
specialize add_eq_zero_right x - 0021
specialize add_eq_zero_right (S i) - 0022
apply add_eq_zero_right - 0023
exact hi_witness - 0024
specialize succ_ne_zero i - 0025
apply succ_ne_zero - 0026
exact hsi0 - 0027
have htrace : ∃ u. ∃ v. BetaAt(u,v,0,1) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(u,v,x,z) ∧ (BetaAt(u,v,S x,n) ∧ n = z · y)))Exact native replay line
have htrace : exists u v. (((exists h. h + S 1 = S ((S 0) * v)) /\ exists q. u = q * S ((S 0) * v) + 1) /\ forall i. (exists h. h + S i = l) -> exists p r s. (((exists h. h + S p = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + p) /\ (((exists h. h + S r = S ((S i) * v)) /\ exists q. u = q * S ((S i) * v) + r) /\ (((exists h. h + S s = S ((S (S i)) * v)) /\ exists q. u = q * S ((S (S i)) * v) + s) /\ s = r * p)))) - 0028
apply IH - 0029
cases htrace - 0030
cases htrace_witness - 0031
cases htrace_witness_witness - 0032
have hfactor : ∃ p. BetaAt(b,c,l,p)Exact native replay line
have hfactor : exists p. ((exists h. h + S p = S ((S l) * c)) /\ exists q. b = q * S ((S l) * c) + p) - 0033
specialize beta_at_exists b - 0034
specialize beta_at_exists c - 0035
specialize beta_at_exists l - 0036
exact beta_at_exists - 0037
cases hfactor - 0038
have hlast : ∃ r. BetaAt(x,x1,l,r)Exact native replay line
have hlast : exists r. ((exists h. h + S r = S ((S l) * x1)) /\ exists q. x = q * S ((S l) * x1) + r) - 0039
specialize beta_at_exists x - 0040
specialize beta_at_exists x1 - 0041
specialize beta_at_exists l - 0042
exact beta_at_exists - 0043
cases hlast - 0044
have hext : ∃ z. ∃ v. BetaAt(z,v,S l,x3 · x2) ∧ (∀ y. ∀ n. Lt(y,S l) → BetaAt(x,x1,y,n) → BetaAt(z,v,y,n))Exact native replay line
have hext : exists z v. (((exists h. h + S (x3 * x2) = S ((S (S l)) * v)) /\ exists q. z = q * S ((S (S l)) * v) + (x3 * x2)) /\ forall i a. (exists h. h + S i = S l) -> ((exists h. h + S a = S ((S i) * x1)) /\ exists q. x = q * S ((S i) * x1) + a) -> ((exists h. h + S a = S ((S i) * v)) /\ exists q. z = q * S ((S i) * v) + a)) - 0045
specialize beta_prefix_extend (S l) - 0046
specialize beta_prefix_extend x - 0047
specialize beta_prefix_extend x1 - 0048
specialize beta_prefix_extend (x3 * x2) - 0049
exact beta_prefix_extend - 0050
cases hext - 0051
cases hext_witness - 0052
cases hext_witness_witness - 0053
exists x4 - 0054
exists x5 - 0055
split - 0056
specialize hext_witness_witness_right 0 - 0057
specialize hext_witness_witness_right 1 - 0058
apply hext_witness_witness_right - 0059
have h0 : Lt(0,S l)Exact native replay line
have h0 : exists h. h + S 0 = S l - 0060
have hzero : Le(0,l)Exact native replay line
have hzero : exists h. h + 0 = l - 0061
specialize zero_le l - 0062
exact zero_le - 0063
specialize succ_le_succ 0 - 0064
specialize succ_le_succ l - 0065
apply succ_le_succ - 0066
exact hzero - 0067
exact h0 - 0068
exact htrace_witness_witness_left - 0069
intro i - 0070
intro hi - 0071
have hil : Le(i,l)Exact native replay line
have hil : exists h. h + i = l - 0072
specialize le_of_succ_le_succ i - 0073
specialize le_of_succ_le_succ l - 0074
apply le_of_succ_le_succ - 0075
exact hi - 0076
have hsplit : i = l ∨ Lt(i,l)Exact native replay line
have hsplit : i = l \/ exists h. h + S i = l - 0077
specialize le_eq_or_lt i - 0078
specialize le_eq_or_lt l - 0079
apply le_eq_or_lt - 0080
exact hil - 0081
cases hsplit - 0082
exists x2 - 0083
exists x3 - 0084
exists x3 * x2 - 0085
split - 0086
rewrite hsplit_left - 0087
rewrite hsplit_left - 0088
exact hfactor_witness - 0089
split - 0090
rewrite hsplit_left - 0091
rewrite hsplit_left - 0092
specialize hext_witness_witness_right l - 0093
specialize hext_witness_witness_right x3 - 0094
apply hext_witness_witness_right - 0095
specialize le_refl (S l) - 0096
exact le_refl - 0097
exact hlast_witness - 0098
split - 0099
rewrite hsplit_left - 0100
rewrite hsplit_left - 0101
exact hext_witness_witness_left - 0102
refl - 0103
have hold : ∃ p. ∃ r. ∃ s. BetaAt(b,c,i,p) ∧ (BetaAt(x,x1,i,r) ∧ (BetaAt(x,x1,S i,s) ∧ s = r · p))Exact native replay line
have hold : exists p r s. (((exists h. h + S p = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + p) /\ (((exists h. h + S r = S ((S i) * x1)) /\ exists q. x = q * S ((S i) * x1) + r) /\ (((exists h. h + S s = S ((S (S i)) * x1)) /\ exists q. x = q * S ((S (S i)) * x1) + s) /\ s = r * p))) - 0104
specialize htrace_witness_witness_right i - 0105
apply htrace_witness_witness_right - 0106
exact hsplit_right - 0107
cases hold - 0108
cases hold_witness - 0109
cases hold_witness_witness - 0110
cases hold_witness_witness_witness - 0111
cases hold_witness_witness_witness_right - 0112
cases hold_witness_witness_witness_right_right - 0113
exists x6 - 0114
exists x7 - 0115
exists x8 - 0116
split - 0117
exact hold_witness_witness_witness_left - 0118
split - 0119
specialize hext_witness_witness_right i - 0120
specialize hext_witness_witness_right x7 - 0121
apply hext_witness_witness_right - 0122
exact hi - 0123
exact hold_witness_witness_witness_right_left - 0124
split - 0125
specialize hext_witness_witness_right (S i) - 0126
specialize hext_witness_witness_right x8 - 0127
apply hext_witness_witness_right - 0128
specialize succ_le_succ (S i) - 0129
specialize succ_le_succ l - 0130
apply succ_le_succ - 0131
exact hsplit_right - 0132
exact hold_witness_witness_witness_right_right_left - 0133
exact hold_witness_witness_witness_right_right_right