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. ∀ n. ∀ u. ∀ v. ∀ m. ∀ w. ∀ d. BetaAt(u,v,0,0) ∧ (BetaAt(u,v,l,n) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ k. BetaAt(b,c,x,y) ∧ (BetaAt(u,v,x,z) ∧ (BetaAt(u,v,S x,k) ∧ k = z + y)))) → BetaAt(w,d,0,0) ∧ (BetaAt(w,d,l,m) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ k. BetaAt(b,c,x,y) ∧ (BetaAt(w,d,x,z) ∧ (BetaAt(w,d,S x,k) ∧ k = z + y)))) → n = mEvery 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
12 occurrences
In local proof propositions
18 occurrences
Exact expanded native-PA statement
forall b c l n u v m w d. (((((exists fs_h_functional_left_start. fs_h_functional_left_start + S (0) = S ((S (0)) * v)) /\ exists fs_q_functional_left_start. u = fs_q_functional_left_start * S ((S (0)) * v) + (0))) /\ ((((exists fs_h_functional_left_terminal. fs_h_functional_left_terminal + S (n) = S ((S (l)) * v)) /\ exists fs_q_functional_left_terminal. u = fs_q_functional_left_terminal * S ((S (l)) * v) + (n))) /\ forall fs_i_functional_left_steps. (exists fs_lt_functional_left_steps_bound. fs_lt_functional_left_steps_bound + S fs_i_functional_left_steps = l) -> exists fs_a_functional_left_steps fs_r_functional_left_steps fs_s_functional_left_steps. ((((exists fs_h_functional_left_steps_summand. fs_h_functional_left_steps_summand + S (fs_a_functional_left_steps) = S ((S (fs_i_functional_left_steps)) * c)) /\ exists fs_q_functional_left_steps_summand. b = fs_q_functional_left_steps_summand * S ((S (fs_i_functional_left_steps)) * c) + (fs_a_functional_left_steps))) /\ ((((exists fs_h_functional_left_steps_partial. fs_h_functional_left_steps_partial + S (fs_r_functional_left_steps) = S ((S (fs_i_functional_left_steps)) * v)) /\ exists fs_q_functional_left_steps_partial. u = fs_q_functional_left_steps_partial * S ((S (fs_i_functional_left_steps)) * v) + (fs_r_functional_left_steps))) /\ ((((exists fs_h_functional_left_steps_successor. fs_h_functional_left_steps_successor + S (fs_s_functional_left_steps) = S ((S (S fs_i_functional_left_steps)) * v)) /\ exists fs_q_functional_left_steps_successor. u = fs_q_functional_left_steps_successor * S ((S (S fs_i_functional_left_steps)) * v) + (fs_s_functional_left_steps))) /\ fs_s_functional_left_steps = fs_r_functional_left_steps + fs_a_functional_left_steps)))))) -> (((((exists fs_h_functional_right_start. fs_h_functional_right_start + S (0) = S ((S (0)) * d)) /\ exists fs_q_functional_right_start. w = fs_q_functional_right_start * S ((S (0)) * d) + (0))) /\ ((((exists fs_h_functional_right_terminal. fs_h_functional_right_terminal + S (m) = S ((S (l)) * d)) /\ exists fs_q_functional_right_terminal. w = fs_q_functional_right_terminal * S ((S (l)) * d) + (m))) /\ forall fs_i_functional_right_steps. (exists fs_lt_functional_right_steps_bound. fs_lt_functional_right_steps_bound + S fs_i_functional_right_steps = l) -> exists fs_a_functional_right_steps fs_r_functional_right_steps fs_s_functional_right_steps. ((((exists fs_h_functional_right_steps_summand. fs_h_functional_right_steps_summand + S (fs_a_functional_right_steps) = S ((S (fs_i_functional_right_steps)) * c)) /\ exists fs_q_functional_right_steps_summand. b = fs_q_functional_right_steps_summand * S ((S (fs_i_functional_right_steps)) * c) + (fs_a_functional_right_steps))) /\ ((((exists fs_h_functional_right_steps_partial. fs_h_functional_right_steps_partial + S (fs_r_functional_right_steps) = S ((S (fs_i_functional_right_steps)) * d)) /\ exists fs_q_functional_right_steps_partial. w = fs_q_functional_right_steps_partial * S ((S (fs_i_functional_right_steps)) * d) + (fs_r_functional_right_steps))) /\ ((((exists fs_h_functional_right_steps_successor. fs_h_functional_right_steps_successor + S (fs_s_functional_right_steps) = S ((S (S fs_i_functional_right_steps)) * d)) /\ exists fs_q_functional_right_steps_successor. w = fs_q_functional_right_steps_successor * S ((S (S fs_i_functional_right_steps)) * d) + (fs_s_functional_right_steps))) /\ fs_s_functional_right_steps = fs_r_functional_right_steps + fs_a_functional_right_steps)))))) -> n = mProof neighborhood
Direct theorem prerequisites
Direct 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 (4)
01Fix variables and assumptionsL1–2
02Induction on lL3–11
03Separate the logical casesL12–15
04Establish hnL16–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
05Establish hmL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
06Use earlier factsL35–35
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L35
exact hn
07Calculate and transport equalitiesL36–36
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L36
symm
08Use earlier factsL37–37
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
exact hm
09Fix variables and assumptionsL38–45
10Separate the logical casesL46–49
11Establish hstep1L50–54
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply h1 right right.
- L50
have hstep1 : ∃ a. ∃ r. ∃ s. BetaAt(b,c,l,a) ∧ (BetaAt(u,v,l,r) ∧ (BetaAt(u,v,S l,s) ∧ s = r + a))Definitions: BetaAt(b,c,l,a)BetaAt(u,v,l,r)BetaAt(u,v,S l,s)Original native command in the exact edition - L51
specialize h1_right_right l - L52
apply h1_right_right - L53
specialize le_refl (S l) - L54
exact le_refl
12Separate the logical casesL55–60
13Establish hstep2L61–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply h2 right right.
- L61
have hstep2 : ∃ a. ∃ r. ∃ s. BetaAt(b,c,l,a) ∧ (BetaAt(w,d,l,r) ∧ (BetaAt(w,d,S l,s) ∧ s = r + a))Definitions: BetaAt(b,c,l,a)BetaAt(w,d,l,r)BetaAt(w,d,S l,s)Original native command in the exact edition - L62
specialize h2_right_right l - L63
apply h2_right_right - L64
specialize le_refl (S l) - L65
exact le_refl
14Separate the logical casesL66–71
15Establish hnL72–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
16Establish hmL81–89
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
17Establish haL90–98
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
18Establish hsum1L99–99
Establish this local claim before using it. It is not an additional assumption.
- L99
have hsum1 : BetaAt(u,v,0,0) ∧ (BetaAt(u,v,l,x1) ∧ (∀ 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,0)BetaAt(u,v,l,x1)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
19Separate the logical casesL100–100
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L100
split
20Use earlier factsL101–101
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L101
exact h1_left
21Separate the logical casesL102–102
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L102
split
22Use earlier factsL103–103
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L103
exact hstep1_witness_witness_witness_right_left
23Fix variables and assumptionsL104–105
24Use earlier factsL106–111
25Establish hsum2L112–112
Establish this local claim before using it. It is not an additional assumption.
- L112
have hsum2 : BetaAt(w,d,0,0) ∧ (BetaAt(w,d,l,x4) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(w,d,x,z) ∧ (BetaAt(w,d,S x,n) ∧ n = z + y))))Definitions: BetaAt(w,d,0,0)BetaAt(w,d,l,x4)Lt(x,l)BetaAt(b,c,x,y)BetaAt(w,d,x,z)BetaAt(w,d,S x,n)Original native command in the exact edition
26Separate the logical casesL113–113
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L113
split
27Use earlier factsL114–114
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L114
exact h2_left
28Separate the logical casesL115–115
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L115
split
29Use earlier factsL116–116
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L116
exact hstep2_witness_witness_witness_right_left
30Fix variables and assumptionsL117–118
31Use earlier factsL119–124
32Establish hprevL125–134
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
33Establish haddL135–144
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add congr.
34Calculate and transport equalitiesL145–145
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L145
trans x1 + x
35Use earlier factsL146–146
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L146
exact hstep1_witness_witness_witness_right_right_right
36Calculate and transport equalitiesL147–147
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L147
trans x4 + x3
37Use earlier factsL148–148
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L148
exact hadd
38Calculate and transport equalitiesL149–150
39Use earlier factsL151–151
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L151
exact hstep2_witness_witness_witness_right_right_right
40Calculate and transport equalitiesL152–152
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L152
symm
41Use earlier factsL153–153
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L153
exact hm
Original defined command ledger · 153 lines
- 0001
intro b - 0002
intro c - 0003
induction l - 0004
intro n - 0005
intro u - 0006
intro v - 0007
intro m - 0008
intro w - 0009
intro d - 0010
intro h1 - 0011
intro h2 - 0012
cases h1 - 0013
cases h1_right - 0014
cases h2 - 0015
cases h2_right - 0016
have hn : n = 0 - 0017
specialize beta_at_unique u - 0018
specialize beta_at_unique v - 0019
specialize beta_at_unique 0 - 0020
specialize beta_at_unique n - 0021
specialize beta_at_unique 0 - 0022
apply beta_at_unique - 0023
exact h1_right_left - 0024
exact h1_left - 0025
have hm : m = 0 - 0026
specialize beta_at_unique w - 0027
specialize beta_at_unique d - 0028
specialize beta_at_unique 0 - 0029
specialize beta_at_unique m - 0030
specialize beta_at_unique 0 - 0031
apply beta_at_unique - 0032
exact h2_right_left - 0033
exact h2_left - 0034
trans 0 - 0035
exact hn - 0036
symm - 0037
exact hm - 0038
intro n - 0039
intro u - 0040
intro v - 0041
intro m - 0042
intro w - 0043
intro d - 0044
intro h1 - 0045
intro h2 - 0046
cases h1 - 0047
cases h1_right - 0048
cases h2 - 0049
cases h2_right - 0050
have hstep1 : ∃ a. ∃ r. ∃ s. BetaAt(b,c,l,a) ∧ (BetaAt(u,v,l,r) ∧ (BetaAt(u,v,S l,s) ∧ s = r + a))Exact native replay line
have hstep1 : exists a r s. ((((exists fs_h_functional_step1_factor. fs_h_functional_step1_factor + S (a) = S ((S (l)) * c)) /\ exists fs_q_functional_step1_factor. b = fs_q_functional_step1_factor * S ((S (l)) * c) + (a))) /\ ((((exists fs_h_functional_step1_partial. fs_h_functional_step1_partial + S (r) = S ((S (l)) * v)) /\ exists fs_q_functional_step1_partial. u = fs_q_functional_step1_partial * S ((S (l)) * v) + (r))) /\ ((((exists fs_h_functional_step1_successor. fs_h_functional_step1_successor + S (s) = S ((S (S l)) * v)) /\ exists fs_q_functional_step1_successor. u = fs_q_functional_step1_successor * S ((S (S l)) * v) + (s))) /\ s = r + a))) - 0051
specialize h1_right_right l - 0052
apply h1_right_right - 0053
specialize le_refl (S l) - 0054
exact le_refl - 0055
cases hstep1 - 0056
cases hstep1_witness - 0057
cases hstep1_witness_witness - 0058
cases hstep1_witness_witness_witness - 0059
cases hstep1_witness_witness_witness_right - 0060
cases hstep1_witness_witness_witness_right_right - 0061
have hstep2 : ∃ a. ∃ r. ∃ s. BetaAt(b,c,l,a) ∧ (BetaAt(w,d,l,r) ∧ (BetaAt(w,d,S l,s) ∧ s = r + a))Exact native replay line
have hstep2 : exists a r s. ((((exists fs_h_functional_step2_factor. fs_h_functional_step2_factor + S (a) = S ((S (l)) * c)) /\ exists fs_q_functional_step2_factor. b = fs_q_functional_step2_factor * S ((S (l)) * c) + (a))) /\ ((((exists fs_h_functional_step2_partial. fs_h_functional_step2_partial + S (r) = S ((S (l)) * d)) /\ exists fs_q_functional_step2_partial. w = fs_q_functional_step2_partial * S ((S (l)) * d) + (r))) /\ ((((exists fs_h_functional_step2_successor. fs_h_functional_step2_successor + S (s) = S ((S (S l)) * d)) /\ exists fs_q_functional_step2_successor. w = fs_q_functional_step2_successor * S ((S (S l)) * d) + (s))) /\ s = r + a))) - 0062
specialize h2_right_right l - 0063
apply h2_right_right - 0064
specialize le_refl (S l) - 0065
exact le_refl - 0066
cases hstep2 - 0067
cases hstep2_witness - 0068
cases hstep2_witness_witness - 0069
cases hstep2_witness_witness_witness - 0070
cases hstep2_witness_witness_witness_right - 0071
cases hstep2_witness_witness_witness_right_right - 0072
have hn : n = x2 - 0073
specialize beta_at_unique u - 0074
specialize beta_at_unique v - 0075
specialize beta_at_unique (S l) - 0076
specialize beta_at_unique n - 0077
specialize beta_at_unique x2 - 0078
apply beta_at_unique - 0079
exact h1_right_left - 0080
exact hstep1_witness_witness_witness_right_right_left - 0081
have hm : m = x5 - 0082
specialize beta_at_unique w - 0083
specialize beta_at_unique d - 0084
specialize beta_at_unique (S l) - 0085
specialize beta_at_unique m - 0086
specialize beta_at_unique x5 - 0087
apply beta_at_unique - 0088
exact h2_right_left - 0089
exact hstep2_witness_witness_witness_right_right_left - 0090
have ha : x = x3 - 0091
specialize beta_at_unique b - 0092
specialize beta_at_unique c - 0093
specialize beta_at_unique l - 0094
specialize beta_at_unique x - 0095
specialize beta_at_unique x3 - 0096
apply beta_at_unique - 0097
exact hstep1_witness_witness_witness_left - 0098
exact hstep2_witness_witness_witness_left - 0099
have hsum1 : BetaAt(u,v,0,0) ∧ (BetaAt(u,v,l,x1) ∧ (∀ 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 hsum1 : ((((exists fs_h_functional_prefix1_start. fs_h_functional_prefix1_start + S (0) = S ((S (0)) * v)) /\ exists fs_q_functional_prefix1_start. u = fs_q_functional_prefix1_start * S ((S (0)) * v) + (0))) /\ ((((exists fs_h_functional_prefix1_terminal. fs_h_functional_prefix1_terminal + S (x1) = S ((S (l)) * v)) /\ exists fs_q_functional_prefix1_terminal. u = fs_q_functional_prefix1_terminal * S ((S (l)) * v) + (x1))) /\ forall fs_i_functional_prefix1_steps. (exists fs_lt_functional_prefix1_steps_bound. fs_lt_functional_prefix1_steps_bound + S fs_i_functional_prefix1_steps = l) -> exists fs_a_functional_prefix1_steps fs_r_functional_prefix1_steps fs_s_functional_prefix1_steps. ((((exists fs_h_functional_prefix1_steps_summand. fs_h_functional_prefix1_steps_summand + S (fs_a_functional_prefix1_steps) = S ((S (fs_i_functional_prefix1_steps)) * c)) /\ exists fs_q_functional_prefix1_steps_summand. b = fs_q_functional_prefix1_steps_summand * S ((S (fs_i_functional_prefix1_steps)) * c) + (fs_a_functional_prefix1_steps))) /\ ((((exists fs_h_functional_prefix1_steps_partial. fs_h_functional_prefix1_steps_partial + S (fs_r_functional_prefix1_steps) = S ((S (fs_i_functional_prefix1_steps)) * v)) /\ exists fs_q_functional_prefix1_steps_partial. u = fs_q_functional_prefix1_steps_partial * S ((S (fs_i_functional_prefix1_steps)) * v) + (fs_r_functional_prefix1_steps))) /\ ((((exists fs_h_functional_prefix1_steps_successor. fs_h_functional_prefix1_steps_successor + S (fs_s_functional_prefix1_steps) = S ((S (S fs_i_functional_prefix1_steps)) * v)) /\ exists fs_q_functional_prefix1_steps_successor. u = fs_q_functional_prefix1_steps_successor * S ((S (S fs_i_functional_prefix1_steps)) * v) + (fs_s_functional_prefix1_steps))) /\ fs_s_functional_prefix1_steps = fs_r_functional_prefix1_steps + fs_a_functional_prefix1_steps))))) - 0100
split - 0101
exact h1_left - 0102
split - 0103
exact hstep1_witness_witness_witness_right_left - 0104
intro i - 0105
intro hi - 0106
specialize h1_right_right i - 0107
apply h1_right_right - 0108
specialize le_succ (S i) - 0109
specialize le_succ l - 0110
apply le_succ - 0111
exact hi - 0112
have hsum2 : BetaAt(w,d,0,0) ∧ (BetaAt(w,d,l,x4) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(w,d,x,z) ∧ (BetaAt(w,d,S x,n) ∧ n = z + y))))Exact native replay line
have hsum2 : ((((exists fs_h_functional_prefix2_start. fs_h_functional_prefix2_start + S (0) = S ((S (0)) * d)) /\ exists fs_q_functional_prefix2_start. w = fs_q_functional_prefix2_start * S ((S (0)) * d) + (0))) /\ ((((exists fs_h_functional_prefix2_terminal. fs_h_functional_prefix2_terminal + S (x4) = S ((S (l)) * d)) /\ exists fs_q_functional_prefix2_terminal. w = fs_q_functional_prefix2_terminal * S ((S (l)) * d) + (x4))) /\ forall fs_i_functional_prefix2_steps. (exists fs_lt_functional_prefix2_steps_bound. fs_lt_functional_prefix2_steps_bound + S fs_i_functional_prefix2_steps = l) -> exists fs_a_functional_prefix2_steps fs_r_functional_prefix2_steps fs_s_functional_prefix2_steps. ((((exists fs_h_functional_prefix2_steps_summand. fs_h_functional_prefix2_steps_summand + S (fs_a_functional_prefix2_steps) = S ((S (fs_i_functional_prefix2_steps)) * c)) /\ exists fs_q_functional_prefix2_steps_summand. b = fs_q_functional_prefix2_steps_summand * S ((S (fs_i_functional_prefix2_steps)) * c) + (fs_a_functional_prefix2_steps))) /\ ((((exists fs_h_functional_prefix2_steps_partial. fs_h_functional_prefix2_steps_partial + S (fs_r_functional_prefix2_steps) = S ((S (fs_i_functional_prefix2_steps)) * d)) /\ exists fs_q_functional_prefix2_steps_partial. w = fs_q_functional_prefix2_steps_partial * S ((S (fs_i_functional_prefix2_steps)) * d) + (fs_r_functional_prefix2_steps))) /\ ((((exists fs_h_functional_prefix2_steps_successor. fs_h_functional_prefix2_steps_successor + S (fs_s_functional_prefix2_steps) = S ((S (S fs_i_functional_prefix2_steps)) * d)) /\ exists fs_q_functional_prefix2_steps_successor. w = fs_q_functional_prefix2_steps_successor * S ((S (S fs_i_functional_prefix2_steps)) * d) + (fs_s_functional_prefix2_steps))) /\ fs_s_functional_prefix2_steps = fs_r_functional_prefix2_steps + fs_a_functional_prefix2_steps))))) - 0113
split - 0114
exact h2_left - 0115
split - 0116
exact hstep2_witness_witness_witness_right_left - 0117
intro i - 0118
intro hi - 0119
specialize h2_right_right i - 0120
apply h2_right_right - 0121
specialize le_succ (S i) - 0122
specialize le_succ l - 0123
apply le_succ - 0124
exact hi - 0125
have hprev : x1 = x4 - 0126
specialize IH x1 - 0127
specialize IH u - 0128
specialize IH v - 0129
specialize IH x4 - 0130
specialize IH w - 0131
specialize IH d - 0132
apply IH - 0133
exact hsum1 - 0134
exact hsum2 - 0135
have hadd : x1 + x = x4 + x3 - 0136
specialize add_congr x1 - 0137
specialize add_congr x4 - 0138
specialize add_congr x - 0139
specialize add_congr x3 - 0140
apply add_congr - 0141
exact hprev - 0142
exact ha - 0143
trans x2 - 0144
exact hn - 0145
trans x1 + x - 0146
exact hstep1_witness_witness_witness_right_right_right - 0147
trans x4 + x3 - 0148
exact hadd - 0149
trans x5 - 0150
symm - 0151
exact hstep2_witness_witness_witness_right_right_right - 0152
symm - 0153
exact hm