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. ∀ d. ∀ e. ∀ f. ∀ g. ∀ l. ∀ n. ∀ m. ∀ q. Sum(b,c,l,n) → Sum(d,e,l,m) → Sum(f,g,l,q) → (∀ x. ∀ y. ∀ z. ∀ k. Lt(x,l) → BetaAt(b,c,x,y) → BetaAt(d,e,x,z) → BetaAt(f,g,x,k) → k = y + z) → n + m = qEvery 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
7 occurrences
In local proof propositions
10 occurrences
Exact expanded native-PA statement
forall b c d e f g l n m q. (exists ff_u_pointadd_left ff_v_pointadd_left. ((((exists ff_h_pointadd_left_start. ff_h_pointadd_left_start + S (0) = S ((S (0)) * ff_v_pointadd_left)) /\ exists ff_q_pointadd_left_start. ff_u_pointadd_left = ff_q_pointadd_left_start * S ((S (0)) * ff_v_pointadd_left) + (0))) /\ ((((exists ff_h_pointadd_left_terminal. ff_h_pointadd_left_terminal + S (n) = S ((S (l)) * ff_v_pointadd_left)) /\ exists ff_q_pointadd_left_terminal. ff_u_pointadd_left = ff_q_pointadd_left_terminal * S ((S (l)) * ff_v_pointadd_left) + (n))) /\ forall ff_i_pointadd_left. (exists ff_lt_pointadd_left_bound. ff_lt_pointadd_left_bound + S ff_i_pointadd_left = l) -> exists ff_a_pointadd_left ff_r_pointadd_left ff_s_pointadd_left. ((((exists ff_h_pointadd_left_summand. ff_h_pointadd_left_summand + S (ff_a_pointadd_left) = S ((S (ff_i_pointadd_left)) * c)) /\ exists ff_q_pointadd_left_summand. b = ff_q_pointadd_left_summand * S ((S (ff_i_pointadd_left)) * c) + (ff_a_pointadd_left))) /\ ((((exists ff_h_pointadd_left_partial. ff_h_pointadd_left_partial + S (ff_r_pointadd_left) = S ((S (ff_i_pointadd_left)) * ff_v_pointadd_left)) /\ exists ff_q_pointadd_left_partial. ff_u_pointadd_left = ff_q_pointadd_left_partial * S ((S (ff_i_pointadd_left)) * ff_v_pointadd_left) + (ff_r_pointadd_left))) /\ ((((exists ff_h_pointadd_left_successor. ff_h_pointadd_left_successor + S (ff_s_pointadd_left) = S ((S (S ff_i_pointadd_left)) * ff_v_pointadd_left)) /\ exists ff_q_pointadd_left_successor. ff_u_pointadd_left = ff_q_pointadd_left_successor * S ((S (S ff_i_pointadd_left)) * ff_v_pointadd_left) + (ff_s_pointadd_left))) /\ ff_s_pointadd_left = ff_r_pointadd_left + ff_a_pointadd_left)))))) -> (exists ff_u_pointadd_right ff_v_pointadd_right. ((((exists ff_h_pointadd_right_start. ff_h_pointadd_right_start + S (0) = S ((S (0)) * ff_v_pointadd_right)) /\ exists ff_q_pointadd_right_start. ff_u_pointadd_right = ff_q_pointadd_right_start * S ((S (0)) * ff_v_pointadd_right) + (0))) /\ ((((exists ff_h_pointadd_right_terminal. ff_h_pointadd_right_terminal + S (m) = S ((S (l)) * ff_v_pointadd_right)) /\ exists ff_q_pointadd_right_terminal. ff_u_pointadd_right = ff_q_pointadd_right_terminal * S ((S (l)) * ff_v_pointadd_right) + (m))) /\ forall ff_i_pointadd_right. (exists ff_lt_pointadd_right_bound. ff_lt_pointadd_right_bound + S ff_i_pointadd_right = l) -> exists ff_a_pointadd_right ff_r_pointadd_right ff_s_pointadd_right. ((((exists ff_h_pointadd_right_summand. ff_h_pointadd_right_summand + S (ff_a_pointadd_right) = S ((S (ff_i_pointadd_right)) * e)) /\ exists ff_q_pointadd_right_summand. d = ff_q_pointadd_right_summand * S ((S (ff_i_pointadd_right)) * e) + (ff_a_pointadd_right))) /\ ((((exists ff_h_pointadd_right_partial. ff_h_pointadd_right_partial + S (ff_r_pointadd_right) = S ((S (ff_i_pointadd_right)) * ff_v_pointadd_right)) /\ exists ff_q_pointadd_right_partial. ff_u_pointadd_right = ff_q_pointadd_right_partial * S ((S (ff_i_pointadd_right)) * ff_v_pointadd_right) + (ff_r_pointadd_right))) /\ ((((exists ff_h_pointadd_right_successor. ff_h_pointadd_right_successor + S (ff_s_pointadd_right) = S ((S (S ff_i_pointadd_right)) * ff_v_pointadd_right)) /\ exists ff_q_pointadd_right_successor. ff_u_pointadd_right = ff_q_pointadd_right_successor * S ((S (S ff_i_pointadd_right)) * ff_v_pointadd_right) + (ff_s_pointadd_right))) /\ ff_s_pointadd_right = ff_r_pointadd_right + ff_a_pointadd_right)))))) -> (exists ff_u_pointadd_total ff_v_pointadd_total. ((((exists ff_h_pointadd_total_start. ff_h_pointadd_total_start + S (0) = S ((S (0)) * ff_v_pointadd_total)) /\ exists ff_q_pointadd_total_start. ff_u_pointadd_total = ff_q_pointadd_total_start * S ((S (0)) * ff_v_pointadd_total) + (0))) /\ ((((exists ff_h_pointadd_total_terminal. ff_h_pointadd_total_terminal + S (q) = S ((S (l)) * ff_v_pointadd_total)) /\ exists ff_q_pointadd_total_terminal. ff_u_pointadd_total = ff_q_pointadd_total_terminal * S ((S (l)) * ff_v_pointadd_total) + (q))) /\ forall ff_i_pointadd_total. (exists ff_lt_pointadd_total_bound. ff_lt_pointadd_total_bound + S ff_i_pointadd_total = l) -> exists ff_a_pointadd_total ff_r_pointadd_total ff_s_pointadd_total. ((((exists ff_h_pointadd_total_summand. ff_h_pointadd_total_summand + S (ff_a_pointadd_total) = S ((S (ff_i_pointadd_total)) * g)) /\ exists ff_q_pointadd_total_summand. f = ff_q_pointadd_total_summand * S ((S (ff_i_pointadd_total)) * g) + (ff_a_pointadd_total))) /\ ((((exists ff_h_pointadd_total_partial. ff_h_pointadd_total_partial + S (ff_r_pointadd_total) = S ((S (ff_i_pointadd_total)) * ff_v_pointadd_total)) /\ exists ff_q_pointadd_total_partial. ff_u_pointadd_total = ff_q_pointadd_total_partial * S ((S (ff_i_pointadd_total)) * ff_v_pointadd_total) + (ff_r_pointadd_total))) /\ ((((exists ff_h_pointadd_total_successor. ff_h_pointadd_total_successor + S (ff_s_pointadd_total) = S ((S (S ff_i_pointadd_total)) * ff_v_pointadd_total)) /\ exists ff_q_pointadd_total_successor. ff_u_pointadd_total = ff_q_pointadd_total_successor * S ((S (S ff_i_pointadd_total)) * ff_v_pointadd_total) + (ff_s_pointadd_total))) /\ ff_s_pointadd_total = ff_r_pointadd_total + ff_a_pointadd_total)))))) -> (forall i a z s. (exists h. h + S i = l) -> (((exists ff_h_pointadd_left_entry. ff_h_pointadd_left_entry + S (a) = S ((S (i)) * c)) /\ exists ff_q_pointadd_left_entry. b = ff_q_pointadd_left_entry * S ((S (i)) * c) + (a))) -> (((exists ff_h_pointadd_right_entry. ff_h_pointadd_right_entry + S (z) = S ((S (i)) * e)) /\ exists ff_q_pointadd_right_entry. d = ff_q_pointadd_right_entry * S ((S (i)) * e) + (z))) -> (((exists ff_h_pointadd_total_entry. ff_h_pointadd_total_entry + S (s) = S ((S (i)) * g)) /\ exists ff_q_pointadd_total_entry. f = ff_q_pointadd_total_entry * S ((S (i)) * g) + (s))) -> s = a + z) -> n + m = qProof neighborhood
Direct theorem prerequisites
BT008E beta_sum_zero BT008F beta_sum_succ_decompose BT0018 le_succ BT000E le_refl BT0003 add_assoc BT0002 add_commDirect 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 (5)
01Fix variables and assumptionsL1–6
02Induction on lL7–14
03Establish hnL15–20
04Establish hmL21–26
05Establish hqL27–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum zero.
06Fix variables and assumptionsL37–43
07Establish hleft_decompL44–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L44
have hleft_decomp : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ n = r + a)Definitions: BetaAt(b,c,l,a)Sum(b,c,l,r)Original native command in the exact edition - L45
specialize beta_sum_succ_decompose b - L46
specialize beta_sum_succ_decompose c - L47
specialize beta_sum_succ_decompose l - L48
specialize beta_sum_succ_decompose n - L49
apply beta_sum_succ_decompose - L50
exact hleft
08Separate the logical casesL51–54
09Establish hright_decompL55–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L55
have hright_decomp : ∃ a. ∃ r. BetaAt(d,e,l,a) ∧ (Sum(d,e,l,r) ∧ m = r + a)Definitions: BetaAt(d,e,l,a)Sum(d,e,l,r)Original native command in the exact edition - L56
specialize beta_sum_succ_decompose d - L57
specialize beta_sum_succ_decompose e - L58
specialize beta_sum_succ_decompose l - L59
specialize beta_sum_succ_decompose m - L60
apply beta_sum_succ_decompose - L61
exact hright
10Separate the logical casesL62–65
11Establish htotal_decompL66–72
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L66
have htotal_decomp : ∃ a. ∃ r. BetaAt(f,g,l,a) ∧ (Sum(f,g,l,r) ∧ q = r + a)Definitions: BetaAt(f,g,l,a)Sum(f,g,l,r)Original native command in the exact edition - L67
specialize beta_sum_succ_decompose f - L68
specialize beta_sum_succ_decompose g - L69
specialize beta_sum_succ_decompose l - L70
specialize beta_sum_succ_decompose q - L71
apply beta_sum_succ_decompose - L72
exact htotal
12Separate the logical casesL73–76
13Establish hprefix_pointwiseL77–86
Establish this local claim before using it. It is not an additional assumption.
- L77
have hprefix_pointwise : ∀ i. ∀ a. ∀ z. ∀ s. Lt(i,l) → BetaAt(b,c,i,a) → BetaAt(d,e,i,z) → BetaAt(f,g,i,s) → s = a + zDefinitions: Lt(i,l)BetaAt(b,c,i,a)BetaAt(d,e,i,z)BetaAt(f,g,i,s)Original native command in the exact edition - L78
intro i - L79
intro a - L80
intro z - L81
intro s - L82
intro hi - L83
intro ha - L84
intro hz - L85
intro hs - L86
specialize hpointwise i
14Use earlier factsL87–96
15Use earlier factsL97–97
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L97
exact hs
16Establish hprefixL98–106
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
17Establish hlastL107–116
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpointwise.
18Use earlier factsL117–117
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L117
exact htotal_decomp_witness_witness_left
19Calculate and transport equalitiesL118–124
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
20Use earlier factsL125–125
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L125
apply add_assoc
Original defined command ledger · 127 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
intro f - 0006
intro g - 0007
induction l - 0008
intro n - 0009
intro m - 0010
intro q - 0011
intro hleft - 0012
intro hright - 0013
intro htotal - 0014
intro hpointwise - 0015
have hn : n = 0 - 0016
specialize beta_sum_zero b - 0017
specialize beta_sum_zero c - 0018
specialize beta_sum_zero n - 0019
apply beta_sum_zero - 0020
exact hleft - 0021
have hm : m = 0 - 0022
specialize beta_sum_zero d - 0023
specialize beta_sum_zero e - 0024
specialize beta_sum_zero m - 0025
apply beta_sum_zero - 0026
exact hright - 0027
have hq : q = 0 - 0028
specialize beta_sum_zero f - 0029
specialize beta_sum_zero g - 0030
specialize beta_sum_zero q - 0031
apply beta_sum_zero - 0032
exact htotal - 0033
rewrite hn - 0034
rewrite hm - 0035
rewrite hq - 0036
simp - 0037
intro n - 0038
intro m - 0039
intro q - 0040
intro hleft - 0041
intro hright - 0042
intro htotal - 0043
intro hpointwise - 0044
have hleft_decomp : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ n = r + a)Exact native replay line
have hleft_decomp : exists a r. (((exists ff_h_pointadd_left_decomp_entry. ff_h_pointadd_left_decomp_entry + S (a) = S ((S (l)) * c)) /\ exists ff_q_pointadd_left_decomp_entry. b = ff_q_pointadd_left_decomp_entry * S ((S (l)) * c) + (a))) /\ ((exists ff_u_pointadd_left_decomp_prefix ff_v_pointadd_left_decomp_prefix. ((((exists ff_h_pointadd_left_decomp_prefix_start. ff_h_pointadd_left_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_pointadd_left_decomp_prefix)) /\ exists ff_q_pointadd_left_decomp_prefix_start. ff_u_pointadd_left_decomp_prefix = ff_q_pointadd_left_decomp_prefix_start * S ((S (0)) * ff_v_pointadd_left_decomp_prefix) + (0))) /\ ((((exists ff_h_pointadd_left_decomp_prefix_terminal. ff_h_pointadd_left_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_pointadd_left_decomp_prefix)) /\ exists ff_q_pointadd_left_decomp_prefix_terminal. ff_u_pointadd_left_decomp_prefix = ff_q_pointadd_left_decomp_prefix_terminal * S ((S (l)) * ff_v_pointadd_left_decomp_prefix) + (r))) /\ forall ff_i_pointadd_left_decomp_prefix. (exists ff_lt_pointadd_left_decomp_prefix_bound. ff_lt_pointadd_left_decomp_prefix_bound + S ff_i_pointadd_left_decomp_prefix = l) -> exists ff_a_pointadd_left_decomp_prefix ff_r_pointadd_left_decomp_prefix ff_s_pointadd_left_decomp_prefix. ((((exists ff_h_pointadd_left_decomp_prefix_summand. ff_h_pointadd_left_decomp_prefix_summand + S (ff_a_pointadd_left_decomp_prefix) = S ((S (ff_i_pointadd_left_decomp_prefix)) * c)) /\ exists ff_q_pointadd_left_decomp_prefix_summand. b = ff_q_pointadd_left_decomp_prefix_summand * S ((S (ff_i_pointadd_left_decomp_prefix)) * c) + (ff_a_pointadd_left_decomp_prefix))) /\ ((((exists ff_h_pointadd_left_decomp_prefix_partial. ff_h_pointadd_left_decomp_prefix_partial + S (ff_r_pointadd_left_decomp_prefix) = S ((S (ff_i_pointadd_left_decomp_prefix)) * ff_v_pointadd_left_decomp_prefix)) /\ exists ff_q_pointadd_left_decomp_prefix_partial. ff_u_pointadd_left_decomp_prefix = ff_q_pointadd_left_decomp_prefix_partial * S ((S (ff_i_pointadd_left_decomp_prefix)) * ff_v_pointadd_left_decomp_prefix) + (ff_r_pointadd_left_decomp_prefix))) /\ ((((exists ff_h_pointadd_left_decomp_prefix_successor. ff_h_pointadd_left_decomp_prefix_successor + S (ff_s_pointadd_left_decomp_prefix) = S ((S (S ff_i_pointadd_left_decomp_prefix)) * ff_v_pointadd_left_decomp_prefix)) /\ exists ff_q_pointadd_left_decomp_prefix_successor. ff_u_pointadd_left_decomp_prefix = ff_q_pointadd_left_decomp_prefix_successor * S ((S (S ff_i_pointadd_left_decomp_prefix)) * ff_v_pointadd_left_decomp_prefix) + (ff_s_pointadd_left_decomp_prefix))) /\ ff_s_pointadd_left_decomp_prefix = ff_r_pointadd_left_decomp_prefix + ff_a_pointadd_left_decomp_prefix)))))) /\ n = r + a) - 0045
specialize beta_sum_succ_decompose b - 0046
specialize beta_sum_succ_decompose c - 0047
specialize beta_sum_succ_decompose l - 0048
specialize beta_sum_succ_decompose n - 0049
apply beta_sum_succ_decompose - 0050
exact hleft - 0051
cases hleft_decomp - 0052
cases hleft_decomp_witness - 0053
cases hleft_decomp_witness_witness - 0054
cases hleft_decomp_witness_witness_right - 0055
have hright_decomp : ∃ a. ∃ r. BetaAt(d,e,l,a) ∧ (Sum(d,e,l,r) ∧ m = r + a)Exact native replay line
have hright_decomp : exists a r. (((exists ff_h_pointadd_right_decomp_entry. ff_h_pointadd_right_decomp_entry + S (a) = S ((S (l)) * e)) /\ exists ff_q_pointadd_right_decomp_entry. d = ff_q_pointadd_right_decomp_entry * S ((S (l)) * e) + (a))) /\ ((exists ff_u_pointadd_right_decomp_prefix ff_v_pointadd_right_decomp_prefix. ((((exists ff_h_pointadd_right_decomp_prefix_start. ff_h_pointadd_right_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_pointadd_right_decomp_prefix)) /\ exists ff_q_pointadd_right_decomp_prefix_start. ff_u_pointadd_right_decomp_prefix = ff_q_pointadd_right_decomp_prefix_start * S ((S (0)) * ff_v_pointadd_right_decomp_prefix) + (0))) /\ ((((exists ff_h_pointadd_right_decomp_prefix_terminal. ff_h_pointadd_right_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_pointadd_right_decomp_prefix)) /\ exists ff_q_pointadd_right_decomp_prefix_terminal. ff_u_pointadd_right_decomp_prefix = ff_q_pointadd_right_decomp_prefix_terminal * S ((S (l)) * ff_v_pointadd_right_decomp_prefix) + (r))) /\ forall ff_i_pointadd_right_decomp_prefix. (exists ff_lt_pointadd_right_decomp_prefix_bound. ff_lt_pointadd_right_decomp_prefix_bound + S ff_i_pointadd_right_decomp_prefix = l) -> exists ff_a_pointadd_right_decomp_prefix ff_r_pointadd_right_decomp_prefix ff_s_pointadd_right_decomp_prefix. ((((exists ff_h_pointadd_right_decomp_prefix_summand. ff_h_pointadd_right_decomp_prefix_summand + S (ff_a_pointadd_right_decomp_prefix) = S ((S (ff_i_pointadd_right_decomp_prefix)) * e)) /\ exists ff_q_pointadd_right_decomp_prefix_summand. d = ff_q_pointadd_right_decomp_prefix_summand * S ((S (ff_i_pointadd_right_decomp_prefix)) * e) + (ff_a_pointadd_right_decomp_prefix))) /\ ((((exists ff_h_pointadd_right_decomp_prefix_partial. ff_h_pointadd_right_decomp_prefix_partial + S (ff_r_pointadd_right_decomp_prefix) = S ((S (ff_i_pointadd_right_decomp_prefix)) * ff_v_pointadd_right_decomp_prefix)) /\ exists ff_q_pointadd_right_decomp_prefix_partial. ff_u_pointadd_right_decomp_prefix = ff_q_pointadd_right_decomp_prefix_partial * S ((S (ff_i_pointadd_right_decomp_prefix)) * ff_v_pointadd_right_decomp_prefix) + (ff_r_pointadd_right_decomp_prefix))) /\ ((((exists ff_h_pointadd_right_decomp_prefix_successor. ff_h_pointadd_right_decomp_prefix_successor + S (ff_s_pointadd_right_decomp_prefix) = S ((S (S ff_i_pointadd_right_decomp_prefix)) * ff_v_pointadd_right_decomp_prefix)) /\ exists ff_q_pointadd_right_decomp_prefix_successor. ff_u_pointadd_right_decomp_prefix = ff_q_pointadd_right_decomp_prefix_successor * S ((S (S ff_i_pointadd_right_decomp_prefix)) * ff_v_pointadd_right_decomp_prefix) + (ff_s_pointadd_right_decomp_prefix))) /\ ff_s_pointadd_right_decomp_prefix = ff_r_pointadd_right_decomp_prefix + ff_a_pointadd_right_decomp_prefix)))))) /\ m = r + a) - 0056
specialize beta_sum_succ_decompose d - 0057
specialize beta_sum_succ_decompose e - 0058
specialize beta_sum_succ_decompose l - 0059
specialize beta_sum_succ_decompose m - 0060
apply beta_sum_succ_decompose - 0061
exact hright - 0062
cases hright_decomp - 0063
cases hright_decomp_witness - 0064
cases hright_decomp_witness_witness - 0065
cases hright_decomp_witness_witness_right - 0066
have htotal_decomp : ∃ a. ∃ r. BetaAt(f,g,l,a) ∧ (Sum(f,g,l,r) ∧ q = r + a)Exact native replay line
have htotal_decomp : exists a r. (((exists ff_h_pointadd_total_decomp_entry. ff_h_pointadd_total_decomp_entry + S (a) = S ((S (l)) * g)) /\ exists ff_q_pointadd_total_decomp_entry. f = ff_q_pointadd_total_decomp_entry * S ((S (l)) * g) + (a))) /\ ((exists ff_u_pointadd_total_decomp_prefix ff_v_pointadd_total_decomp_prefix. ((((exists ff_h_pointadd_total_decomp_prefix_start. ff_h_pointadd_total_decomp_prefix_start + S (0) = S ((S (0)) * ff_v_pointadd_total_decomp_prefix)) /\ exists ff_q_pointadd_total_decomp_prefix_start. ff_u_pointadd_total_decomp_prefix = ff_q_pointadd_total_decomp_prefix_start * S ((S (0)) * ff_v_pointadd_total_decomp_prefix) + (0))) /\ ((((exists ff_h_pointadd_total_decomp_prefix_terminal. ff_h_pointadd_total_decomp_prefix_terminal + S (r) = S ((S (l)) * ff_v_pointadd_total_decomp_prefix)) /\ exists ff_q_pointadd_total_decomp_prefix_terminal. ff_u_pointadd_total_decomp_prefix = ff_q_pointadd_total_decomp_prefix_terminal * S ((S (l)) * ff_v_pointadd_total_decomp_prefix) + (r))) /\ forall ff_i_pointadd_total_decomp_prefix. (exists ff_lt_pointadd_total_decomp_prefix_bound. ff_lt_pointadd_total_decomp_prefix_bound + S ff_i_pointadd_total_decomp_prefix = l) -> exists ff_a_pointadd_total_decomp_prefix ff_r_pointadd_total_decomp_prefix ff_s_pointadd_total_decomp_prefix. ((((exists ff_h_pointadd_total_decomp_prefix_summand. ff_h_pointadd_total_decomp_prefix_summand + S (ff_a_pointadd_total_decomp_prefix) = S ((S (ff_i_pointadd_total_decomp_prefix)) * g)) /\ exists ff_q_pointadd_total_decomp_prefix_summand. f = ff_q_pointadd_total_decomp_prefix_summand * S ((S (ff_i_pointadd_total_decomp_prefix)) * g) + (ff_a_pointadd_total_decomp_prefix))) /\ ((((exists ff_h_pointadd_total_decomp_prefix_partial. ff_h_pointadd_total_decomp_prefix_partial + S (ff_r_pointadd_total_decomp_prefix) = S ((S (ff_i_pointadd_total_decomp_prefix)) * ff_v_pointadd_total_decomp_prefix)) /\ exists ff_q_pointadd_total_decomp_prefix_partial. ff_u_pointadd_total_decomp_prefix = ff_q_pointadd_total_decomp_prefix_partial * S ((S (ff_i_pointadd_total_decomp_prefix)) * ff_v_pointadd_total_decomp_prefix) + (ff_r_pointadd_total_decomp_prefix))) /\ ((((exists ff_h_pointadd_total_decomp_prefix_successor. ff_h_pointadd_total_decomp_prefix_successor + S (ff_s_pointadd_total_decomp_prefix) = S ((S (S ff_i_pointadd_total_decomp_prefix)) * ff_v_pointadd_total_decomp_prefix)) /\ exists ff_q_pointadd_total_decomp_prefix_successor. ff_u_pointadd_total_decomp_prefix = ff_q_pointadd_total_decomp_prefix_successor * S ((S (S ff_i_pointadd_total_decomp_prefix)) * ff_v_pointadd_total_decomp_prefix) + (ff_s_pointadd_total_decomp_prefix))) /\ ff_s_pointadd_total_decomp_prefix = ff_r_pointadd_total_decomp_prefix + ff_a_pointadd_total_decomp_prefix)))))) /\ q = r + a) - 0067
specialize beta_sum_succ_decompose f - 0068
specialize beta_sum_succ_decompose g - 0069
specialize beta_sum_succ_decompose l - 0070
specialize beta_sum_succ_decompose q - 0071
apply beta_sum_succ_decompose - 0072
exact htotal - 0073
cases htotal_decomp - 0074
cases htotal_decomp_witness - 0075
cases htotal_decomp_witness_witness - 0076
cases htotal_decomp_witness_witness_right - 0077
have hprefix_pointwise : ∀ i. ∀ a. ∀ z. ∀ s. Lt(i,l) → BetaAt(b,c,i,a) → BetaAt(d,e,i,z) → BetaAt(f,g,i,s) → s = a + zExact native replay line
have hprefix_pointwise : forall i a z s. (exists h. h + S i = l) -> (((exists ff_h_pointadd_prefix_left_entry. ff_h_pointadd_prefix_left_entry + S (a) = S ((S (i)) * c)) /\ exists ff_q_pointadd_prefix_left_entry. b = ff_q_pointadd_prefix_left_entry * S ((S (i)) * c) + (a))) -> (((exists ff_h_pointadd_prefix_right_entry. ff_h_pointadd_prefix_right_entry + S (z) = S ((S (i)) * e)) /\ exists ff_q_pointadd_prefix_right_entry. d = ff_q_pointadd_prefix_right_entry * S ((S (i)) * e) + (z))) -> (((exists ff_h_pointadd_prefix_total_entry. ff_h_pointadd_prefix_total_entry + S (s) = S ((S (i)) * g)) /\ exists ff_q_pointadd_prefix_total_entry. f = ff_q_pointadd_prefix_total_entry * S ((S (i)) * g) + (s))) -> s = a + z - 0078
intro i - 0079
intro a - 0080
intro z - 0081
intro s - 0082
intro hi - 0083
intro ha - 0084
intro hz - 0085
intro hs - 0086
specialize hpointwise i - 0087
specialize hpointwise a - 0088
specialize hpointwise z - 0089
specialize hpointwise s - 0090
apply hpointwise - 0091
specialize le_succ (S i) - 0092
specialize le_succ l - 0093
apply le_succ - 0094
exact hi - 0095
exact ha - 0096
exact hz - 0097
exact hs - 0098
have hprefix : x1 + x3 = x5 - 0099
specialize IH x1 - 0100
specialize IH x3 - 0101
specialize IH x5 - 0102
apply IH - 0103
exact hleft_decomp_witness_witness_right_left - 0104
exact hright_decomp_witness_witness_right_left - 0105
exact htotal_decomp_witness_witness_right_left - 0106
exact hprefix_pointwise - 0107
have hlast : x4 = x + x2 - 0108
specialize hpointwise l - 0109
specialize hpointwise x - 0110
specialize hpointwise x2 - 0111
specialize hpointwise x4 - 0112
apply hpointwise - 0113
specialize le_refl (S l) - 0114
exact le_refl - 0115
exact hleft_decomp_witness_witness_left - 0116
exact hright_decomp_witness_witness_left - 0117
exact htotal_decomp_witness_witness_left - 0118
rewrite hleft_decomp_witness_witness_right_right - 0119
rewrite hright_decomp_witness_witness_right_right - 0120
rewrite htotal_decomp_witness_witness_right_right - 0121
rewrite hlast - 0122
simp [add_assoc, add_comm] - 0123
trans (x1 + x3) + (x2 + x) - 0124
symm - 0125
apply add_assoc - 0126
rewrite hprefix - 0127
refl