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. ∀ r. ∀ p. Product(b,c,l,r) → BetaAt(b,c,l,p) → Product(b,c,S l,r · p)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
3 occurrences
In local proof propositions
10 occurrences
Exact expanded native-PA statement
forall b c l r p. (exists u v. (((exists h. h + S 1 = S ((S 0) * v)) /\ exists q. u = q * S ((S 0) * v) + 1) /\ (((exists h. h + S r = S ((S l) * v)) /\ exists q. u = q * S ((S l) * v) + r) /\ 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)))))) -> ((exists h. h + S p = S ((S l) * c)) /\ exists q. b = q * S ((S l) * c) + p) -> (exists u v. (((exists h. h + S 1 = S ((S 0) * v)) /\ exists q. u = q * S ((S 0) * v) + 1) /\ (((exists h. h + S (r * p) = S ((S S l) * v)) /\ exists q. u = q * S ((S S l) * v) + (r * p)) /\ forall i. (exists h. h + S i = S 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
BT005D beta_prefix_extend BT000W zero_le BT0016 succ_le_succ BT000E le_refl BT0017 le_of_succ_le_succ BT001C le_eq_or_ltDirect 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 (6)
01Fix variables and assumptionsL1–7
02Separate the logical casesL8–11
03Establish hextL12–17
Establish this local claim before using it. It is not an additional assumption.
- L12
have hext : ∃ z. ∃ d. BetaAt(z,d,S l,r · p) ∧ (∀ y. ∀ n. Lt(y,S l) → BetaAt(x,x1,y,n) → BetaAt(z,d,y,n))Definitions: BetaAt(z,d,S l,r · p)Lt(y,S l)BetaAt(x,x1,y,n)BetaAt(z,d,y,n)Original native command in the exact edition - L13
specialize beta_prefix_extend (S l) - L14
specialize beta_prefix_extend x - L15
specialize beta_prefix_extend x1 - L16
specialize beta_prefix_extend (r * p) - L17
exact beta_prefix_extend
04Separate the logical casesL18–20
05Construct an explicit witnessL21–22
06Separate the logical casesL23–23
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L23
split
07Use earlier factsL24–26
08Establish hzeroL27–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ le succ.
09Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
split
10Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact hext_witness_witness_left
11Fix variables and assumptionsL37–38
12Establish hilL39–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le of succ le succ.
13Establish hsplitL44–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.
14Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases hsplit
15Construct an explicit witnessL50–52
16Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
split
17Calculate and transport equalitiesL54–55
18Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
exact hp
19Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
split
20Calculate and transport equalitiesL58–59
21Use earlier factsL60–65
22Separate the logical casesL66–66
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L66
split
23Calculate and transport equalitiesL67–68
24Use earlier factsL69–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
exact hext_witness_witness_left
25Calculate and transport equalitiesL70–70
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L70
refl
26Establish holdL71–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hproduct witness witness right right.
- L71
have hold : ∃ p0. ∃ r0. ∃ s0. BetaAt(b,c,i,p0) ∧ (BetaAt(x,x1,i,r0) ∧ (BetaAt(x,x1,S i,s0) ∧ s0 = r0 · p0))Definitions: BetaAt(b,c,i,p0)BetaAt(x,x1,i,r0)BetaAt(x,x1,S i,s0)Original native command in the exact edition - L72
specialize hproduct_witness_witness_right_right i - L73
apply hproduct_witness_witness_right_right - L74
exact hsplit_right
27Separate the logical casesL75–80
28Construct an explicit witnessL81–83
29Separate the logical casesL84–84
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L84
split
30Use earlier factsL85–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L85
exact hold_witness_witness_witness_left
31Separate the logical casesL86–86
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L86
split
32Use earlier factsL87–91
33Separate the logical casesL92–92
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L92
split
34Use earlier factsL93–101
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L93
specialize hext_witness_witness_right (S i) - L94
specialize hext_witness_witness_right x6 - L95
apply hext_witness_witness_right - L96
specialize succ_le_succ (S i) - L97
specialize succ_le_succ l - L98
apply succ_le_succ - L99
exact hsplit_right - L100
exact hold_witness_witness_witness_right_right_left - L101
exact hold_witness_witness_witness_right_right_right
Original defined command ledger · 101 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro r - 0005
intro p - 0006
intro hproduct - 0007
intro hp - 0008
cases hproduct - 0009
cases hproduct_witness - 0010
cases hproduct_witness_witness - 0011
cases hproduct_witness_witness_right - 0012
have hext : ∃ z. ∃ d. BetaAt(z,d,S l,r · p) ∧ (∀ y. ∀ n. Lt(y,S l) → BetaAt(x,x1,y,n) → BetaAt(z,d,y,n))Exact native replay line
have hext : exists z d. (((exists h. h + S (r * p) = S ((S S l) * d)) /\ exists q. z = q * S ((S S l) * d) + (r * p)) /\ 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) * d)) /\ exists q. z = q * S ((S i) * d) + a)) - 0013
specialize beta_prefix_extend (S l) - 0014
specialize beta_prefix_extend x - 0015
specialize beta_prefix_extend x1 - 0016
specialize beta_prefix_extend (r * p) - 0017
exact beta_prefix_extend - 0018
cases hext - 0019
cases hext_witness - 0020
cases hext_witness_witness - 0021
exists x2 - 0022
exists x3 - 0023
split - 0024
specialize hext_witness_witness_right 0 - 0025
specialize hext_witness_witness_right 1 - 0026
apply hext_witness_witness_right - 0027
have hzero : Le(0,l)Exact native replay line
have hzero : exists h. h + 0 = l - 0028
specialize zero_le l - 0029
exact zero_le - 0030
specialize succ_le_succ 0 - 0031
specialize succ_le_succ l - 0032
apply succ_le_succ - 0033
exact hzero - 0034
exact hproduct_witness_witness_left - 0035
split - 0036
exact hext_witness_witness_left - 0037
intro i - 0038
intro hi - 0039
have hil : Le(i,l)Exact native replay line
have hil : exists h. h + i = l - 0040
specialize le_of_succ_le_succ i - 0041
specialize le_of_succ_le_succ l - 0042
apply le_of_succ_le_succ - 0043
exact hi - 0044
have hsplit : i = l ∨ Lt(i,l)Exact native replay line
have hsplit : i = l \/ exists h. h + S i = l - 0045
specialize le_eq_or_lt i - 0046
specialize le_eq_or_lt l - 0047
apply le_eq_or_lt - 0048
exact hil - 0049
cases hsplit - 0050
exists p - 0051
exists r - 0052
exists r * p - 0053
split - 0054
rewrite hsplit_left - 0055
rewrite hsplit_left - 0056
exact hp - 0057
split - 0058
rewrite hsplit_left - 0059
rewrite hsplit_left - 0060
specialize hext_witness_witness_right l - 0061
specialize hext_witness_witness_right r - 0062
apply hext_witness_witness_right - 0063
specialize le_refl (S l) - 0064
exact le_refl - 0065
exact hproduct_witness_witness_right_left - 0066
split - 0067
rewrite hsplit_left - 0068
rewrite hsplit_left - 0069
exact hext_witness_witness_left - 0070
refl - 0071
have hold : ∃ p0. ∃ r0. ∃ s0. BetaAt(b,c,i,p0) ∧ (BetaAt(x,x1,i,r0) ∧ (BetaAt(x,x1,S i,s0) ∧ s0 = r0 · p0))Exact native replay line
have hold : exists p0 r0 s0. (((exists h. h + S p0 = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + p0) /\ (((exists h. h + S r0 = S ((S i) * x1)) /\ exists q. x = q * S ((S i) * x1) + r0) /\ (((exists h. h + S s0 = S ((S S i) * x1)) /\ exists q. x = q * S ((S S i) * x1) + s0) /\ s0 = r0 * p0))) - 0072
specialize hproduct_witness_witness_right_right i - 0073
apply hproduct_witness_witness_right_right - 0074
exact hsplit_right - 0075
cases hold - 0076
cases hold_witness - 0077
cases hold_witness_witness - 0078
cases hold_witness_witness_witness - 0079
cases hold_witness_witness_witness_right - 0080
cases hold_witness_witness_witness_right_right - 0081
exists x4 - 0082
exists x5 - 0083
exists x6 - 0084
split - 0085
exact hold_witness_witness_witness_left - 0086
split - 0087
specialize hext_witness_witness_right i - 0088
specialize hext_witness_witness_right x5 - 0089
apply hext_witness_witness_right - 0090
exact hi - 0091
exact hold_witness_witness_witness_right_left - 0092
split - 0093
specialize hext_witness_witness_right (S i) - 0094
specialize hext_witness_witness_right x6 - 0095
apply hext_witness_witness_right - 0096
specialize succ_le_succ (S i) - 0097
specialize succ_le_succ l - 0098
apply succ_le_succ - 0099
exact hsplit_right - 0100
exact hold_witness_witness_witness_right_right_left - 0101
exact hold_witness_witness_witness_right_right_right