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. ∀ B. ∀ A. ∀ E. Sum(b,c,l,B) → Sum(d,e,l,A) → (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (BetaAt(d,e,x,z) ∧ (BetaAt(f,g,x,n) ∧ (n = 0 ∧ z = y + y ∨ n = 1 ∧ z = S (y + y))))) → BitCount(f,g,l,E) → A = B + B + EEvery 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
13 occurrences
Exact expanded native-PA statement
forall b c d e f g l B A E. (exists ff_u_b5ccsdce_left_sum ff_v_b5ccsdce_left_sum. ((((exists ff_h_b5ccsdce_left_sum_start. ff_h_b5ccsdce_left_sum_start + S (0) = S ((S (0)) * ff_v_b5ccsdce_left_sum)) /\ exists ff_q_b5ccsdce_left_sum_start. ff_u_b5ccsdce_left_sum = ff_q_b5ccsdce_left_sum_start * S ((S (0)) * ff_v_b5ccsdce_left_sum) + (0))) /\ ((((exists ff_h_b5ccsdce_left_sum_terminal. ff_h_b5ccsdce_left_sum_terminal + S (B) = S ((S (l)) * ff_v_b5ccsdce_left_sum)) /\ exists ff_q_b5ccsdce_left_sum_terminal. ff_u_b5ccsdce_left_sum = ff_q_b5ccsdce_left_sum_terminal * S ((S (l)) * ff_v_b5ccsdce_left_sum) + (B))) /\ forall ff_i_b5ccsdce_left_sum. (exists ff_lt_b5ccsdce_left_sum_bound. ff_lt_b5ccsdce_left_sum_bound + S ff_i_b5ccsdce_left_sum = l) -> exists ff_a_b5ccsdce_left_sum ff_r_b5ccsdce_left_sum ff_s_b5ccsdce_left_sum. ((((exists ff_h_b5ccsdce_left_sum_summand. ff_h_b5ccsdce_left_sum_summand + S (ff_a_b5ccsdce_left_sum) = S ((S (ff_i_b5ccsdce_left_sum)) * c)) /\ exists ff_q_b5ccsdce_left_sum_summand. b = ff_q_b5ccsdce_left_sum_summand * S ((S (ff_i_b5ccsdce_left_sum)) * c) + (ff_a_b5ccsdce_left_sum))) /\ ((((exists ff_h_b5ccsdce_left_sum_partial. ff_h_b5ccsdce_left_sum_partial + S (ff_r_b5ccsdce_left_sum) = S ((S (ff_i_b5ccsdce_left_sum)) * ff_v_b5ccsdce_left_sum)) /\ exists ff_q_b5ccsdce_left_sum_partial. ff_u_b5ccsdce_left_sum = ff_q_b5ccsdce_left_sum_partial * S ((S (ff_i_b5ccsdce_left_sum)) * ff_v_b5ccsdce_left_sum) + (ff_r_b5ccsdce_left_sum))) /\ ((((exists ff_h_b5ccsdce_left_sum_successor. ff_h_b5ccsdce_left_sum_successor + S (ff_s_b5ccsdce_left_sum) = S ((S (S ff_i_b5ccsdce_left_sum)) * ff_v_b5ccsdce_left_sum)) /\ exists ff_q_b5ccsdce_left_sum_successor. ff_u_b5ccsdce_left_sum = ff_q_b5ccsdce_left_sum_successor * S ((S (S ff_i_b5ccsdce_left_sum)) * ff_v_b5ccsdce_left_sum) + (ff_s_b5ccsdce_left_sum))) /\ ff_s_b5ccsdce_left_sum = ff_r_b5ccsdce_left_sum + ff_a_b5ccsdce_left_sum)))))) -> (exists ff_u_b5ccsdce_right_sum ff_v_b5ccsdce_right_sum. ((((exists ff_h_b5ccsdce_right_sum_start. ff_h_b5ccsdce_right_sum_start + S (0) = S ((S (0)) * ff_v_b5ccsdce_right_sum)) /\ exists ff_q_b5ccsdce_right_sum_start. ff_u_b5ccsdce_right_sum = ff_q_b5ccsdce_right_sum_start * S ((S (0)) * ff_v_b5ccsdce_right_sum) + (0))) /\ ((((exists ff_h_b5ccsdce_right_sum_terminal. ff_h_b5ccsdce_right_sum_terminal + S (A) = S ((S (l)) * ff_v_b5ccsdce_right_sum)) /\ exists ff_q_b5ccsdce_right_sum_terminal. ff_u_b5ccsdce_right_sum = ff_q_b5ccsdce_right_sum_terminal * S ((S (l)) * ff_v_b5ccsdce_right_sum) + (A))) /\ forall ff_i_b5ccsdce_right_sum. (exists ff_lt_b5ccsdce_right_sum_bound. ff_lt_b5ccsdce_right_sum_bound + S ff_i_b5ccsdce_right_sum = l) -> exists ff_a_b5ccsdce_right_sum ff_r_b5ccsdce_right_sum ff_s_b5ccsdce_right_sum. ((((exists ff_h_b5ccsdce_right_sum_summand. ff_h_b5ccsdce_right_sum_summand + S (ff_a_b5ccsdce_right_sum) = S ((S (ff_i_b5ccsdce_right_sum)) * e)) /\ exists ff_q_b5ccsdce_right_sum_summand. d = ff_q_b5ccsdce_right_sum_summand * S ((S (ff_i_b5ccsdce_right_sum)) * e) + (ff_a_b5ccsdce_right_sum))) /\ ((((exists ff_h_b5ccsdce_right_sum_partial. ff_h_b5ccsdce_right_sum_partial + S (ff_r_b5ccsdce_right_sum) = S ((S (ff_i_b5ccsdce_right_sum)) * ff_v_b5ccsdce_right_sum)) /\ exists ff_q_b5ccsdce_right_sum_partial. ff_u_b5ccsdce_right_sum = ff_q_b5ccsdce_right_sum_partial * S ((S (ff_i_b5ccsdce_right_sum)) * ff_v_b5ccsdce_right_sum) + (ff_r_b5ccsdce_right_sum))) /\ ((((exists ff_h_b5ccsdce_right_sum_successor. ff_h_b5ccsdce_right_sum_successor + S (ff_s_b5ccsdce_right_sum) = S ((S (S ff_i_b5ccsdce_right_sum)) * ff_v_b5ccsdce_right_sum)) /\ exists ff_q_b5ccsdce_right_sum_successor. ff_u_b5ccsdce_right_sum = ff_q_b5ccsdce_right_sum_successor * S ((S (S ff_i_b5ccsdce_right_sum)) * ff_v_b5ccsdce_right_sum) + (ff_s_b5ccsdce_right_sum))) /\ ff_s_b5ccsdce_right_sum = ff_r_b5ccsdce_right_sum + ff_a_b5ccsdce_right_sum)))))) -> (forall b5cc_index_b5ccsdce_prefix. (exists bcf_lt_gap_b5ccsdce_prefix_bound. bcf_lt_gap_b5ccsdce_prefix_bound + S (b5cc_index_b5ccsdce_prefix) = l) -> exists b5cc_left_b5ccsdce_prefix b5cc_right_b5ccsdce_prefix b5cc_bit_b5ccsdce_prefix. (((exists fs_h_b5cc_b5ccsdce_prefix_left. fs_h_b5cc_b5ccsdce_prefix_left + S (b5cc_left_b5ccsdce_prefix) = S ((S (b5cc_index_b5ccsdce_prefix)) * c)) /\ exists fs_q_b5cc_b5ccsdce_prefix_left. b = fs_q_b5cc_b5ccsdce_prefix_left * S ((S (b5cc_index_b5ccsdce_prefix)) * c) + (b5cc_left_b5ccsdce_prefix))) /\ ((((exists fs_h_b5cc_b5ccsdce_prefix_right. fs_h_b5cc_b5ccsdce_prefix_right + S (b5cc_right_b5ccsdce_prefix) = S ((S (b5cc_index_b5ccsdce_prefix)) * e)) /\ exists fs_q_b5cc_b5ccsdce_prefix_right. d = fs_q_b5cc_b5ccsdce_prefix_right * S ((S (b5cc_index_b5ccsdce_prefix)) * e) + (b5cc_right_b5ccsdce_prefix))) /\ ((((exists fs_h_b5cc_b5ccsdce_prefix_bit. fs_h_b5cc_b5ccsdce_prefix_bit + S (b5cc_bit_b5ccsdce_prefix) = S ((S (b5cc_index_b5ccsdce_prefix)) * g)) /\ exists fs_q_b5cc_b5ccsdce_prefix_bit. f = fs_q_b5cc_b5ccsdce_prefix_bit * S ((S (b5cc_index_b5ccsdce_prefix)) * g) + (b5cc_bit_b5ccsdce_prefix))) /\ (((b5cc_bit_b5ccsdce_prefix = 0 /\ b5cc_right_b5ccsdce_prefix = b5cc_left_b5ccsdce_prefix + b5cc_left_b5ccsdce_prefix) \/ (b5cc_bit_b5ccsdce_prefix = 1 /\ b5cc_right_b5ccsdce_prefix = S (b5cc_left_b5ccsdce_prefix + b5cc_left_b5ccsdce_prefix))))))) -> (((exists ff_u_b5ccsdce_count_sum ff_v_b5ccsdce_count_sum. ((((exists ff_h_b5ccsdce_count_sum_start. ff_h_b5ccsdce_count_sum_start + S (0) = S ((S (0)) * ff_v_b5ccsdce_count_sum)) /\ exists ff_q_b5ccsdce_count_sum_start. ff_u_b5ccsdce_count_sum = ff_q_b5ccsdce_count_sum_start * S ((S (0)) * ff_v_b5ccsdce_count_sum) + (0))) /\ ((((exists ff_h_b5ccsdce_count_sum_terminal. ff_h_b5ccsdce_count_sum_terminal + S (E) = S ((S (l)) * ff_v_b5ccsdce_count_sum)) /\ exists ff_q_b5ccsdce_count_sum_terminal. ff_u_b5ccsdce_count_sum = ff_q_b5ccsdce_count_sum_terminal * S ((S (l)) * ff_v_b5ccsdce_count_sum) + (E))) /\ forall ff_i_b5ccsdce_count_sum. (exists ff_lt_b5ccsdce_count_sum_bound. ff_lt_b5ccsdce_count_sum_bound + S ff_i_b5ccsdce_count_sum = l) -> exists ff_a_b5ccsdce_count_sum ff_r_b5ccsdce_count_sum ff_s_b5ccsdce_count_sum. ((((exists ff_h_b5ccsdce_count_sum_summand. ff_h_b5ccsdce_count_sum_summand + S (ff_a_b5ccsdce_count_sum) = S ((S (ff_i_b5ccsdce_count_sum)) * g)) /\ exists ff_q_b5ccsdce_count_sum_summand. f = ff_q_b5ccsdce_count_sum_summand * S ((S (ff_i_b5ccsdce_count_sum)) * g) + (ff_a_b5ccsdce_count_sum))) /\ ((((exists ff_h_b5ccsdce_count_sum_partial. ff_h_b5ccsdce_count_sum_partial + S (ff_r_b5ccsdce_count_sum) = S ((S (ff_i_b5ccsdce_count_sum)) * ff_v_b5ccsdce_count_sum)) /\ exists ff_q_b5ccsdce_count_sum_partial. ff_u_b5ccsdce_count_sum = ff_q_b5ccsdce_count_sum_partial * S ((S (ff_i_b5ccsdce_count_sum)) * ff_v_b5ccsdce_count_sum) + (ff_r_b5ccsdce_count_sum))) /\ ((((exists ff_h_b5ccsdce_count_sum_successor. ff_h_b5ccsdce_count_sum_successor + S (ff_s_b5ccsdce_count_sum) = S ((S (S ff_i_b5ccsdce_count_sum)) * ff_v_b5ccsdce_count_sum)) /\ exists ff_q_b5ccsdce_count_sum_successor. ff_u_b5ccsdce_count_sum = ff_q_b5ccsdce_count_sum_successor * S ((S (S ff_i_b5ccsdce_count_sum)) * ff_v_b5ccsdce_count_sum) + (ff_s_b5ccsdce_count_sum))) /\ ff_s_b5ccsdce_count_sum = ff_r_b5ccsdce_count_sum + ff_a_b5ccsdce_count_sum)))))) /\ (forall ff_i_b5ccsdce_count_bits. (exists ff_lt_b5ccsdce_count_bits_bound. ff_lt_b5ccsdce_count_bits_bound + S ff_i_b5ccsdce_count_bits = l) -> exists ff_bit_b5ccsdce_count_bits. ((((exists ff_h_b5ccsdce_count_bits_decoded. ff_h_b5ccsdce_count_bits_decoded + S (ff_bit_b5ccsdce_count_bits) = S ((S (ff_i_b5ccsdce_count_bits)) * g)) /\ exists ff_q_b5ccsdce_count_bits_decoded. f = ff_q_b5ccsdce_count_bits_decoded * S ((S (ff_i_b5ccsdce_count_bits)) * g) + (ff_bit_b5ccsdce_count_bits))) /\ (ff_bit_b5ccsdce_count_bits = 0 \/ ff_bit_b5ccsdce_count_bits = 1))))) -> A = (B + B) + EProof neighborhood
Direct theorem prerequisites
BT008E beta_sum_zero BT008F beta_sum_succ_decompose BT008N bit_count_zero BT008O bit_count_succ_decompose BT0042 beta_at_unique BT000E le_refl BT00Y0 double_quotient_carry_prefix_restrict BT0003 add_assoc BT0032 add_permute_outer 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 (9)
01Fix variables and assumptionsL1–6
02Induction on lL7–14
03Establish hBL15–20
04Establish hAL21–26
05Establish hEL27–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count zero.
06Calculate and transport equalitiesL37–39
07Fix variables and assumptionsL40–46
08Establish hleft_decompL47–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L47
have hleft_decomp : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ B = r + a)Definitions: BetaAt(b,c,l,a)Sum(b,c,l,r)Original native command in the exact edition - L48
specialize beta_sum_succ_decompose b - L49
specialize beta_sum_succ_decompose c - L50
specialize beta_sum_succ_decompose l - L51
specialize beta_sum_succ_decompose B - L52
apply beta_sum_succ_decompose - L53
exact hleft
09Separate the logical casesL54–57
10Establish hright_decompL58–64
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
- L58
have hright_decomp : ∃ a. ∃ r. BetaAt(d,e,l,a) ∧ (Sum(d,e,l,r) ∧ A = r + a)Definitions: BetaAt(d,e,l,a)Sum(d,e,l,r)Original native command in the exact edition - L59
specialize beta_sum_succ_decompose d - L60
specialize beta_sum_succ_decompose e - L61
specialize beta_sum_succ_decompose l - L62
specialize beta_sum_succ_decompose A - L63
apply beta_sum_succ_decompose - L64
exact hright
11Separate the logical casesL65–68
12Establish hcount_decompL69–77
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count succ decompose.
- L69
have hcount_decomp : ∃ bit. ∃ r. BetaAt(f,g,l,bit) ∧ (BitCount(f,g,l,r) ∧ ((bit = 0 ∨ bit = 1) ∧ E = r + bit))Definitions: BetaAt(f,g,l,bit)BitCount(f,g,l,r)Original native command in the exact edition - L70
specialize bit_count_succ_decompose f - L71
specialize bit_count_succ_decompose g - L72
specialize bit_count_succ_decompose l - L73
specialize bit_count_succ_decompose (S l) - L74
specialize bit_count_succ_decompose E - L75
apply bit_count_succ_decompose - L76
refl - L77
exact hcount
13Separate the logical casesL78–82
14Establish hterminalL83–87
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hcarry.
- L83
have hterminal : ∃ q. ∃ Q. ∃ bit. BetaAt(b,c,l,q) ∧ (BetaAt(d,e,l,Q) ∧ (BetaAt(f,g,l,bit) ∧ (bit = 0 ∧ Q = q + q ∨ bit = 1 ∧ Q = S (q + q))))Definitions: BetaAt(b,c,l,q)BetaAt(d,e,l,Q)BetaAt(f,g,l,bit)Original native command in the exact edition - L84
specialize hcarry l - L85
apply hcarry - L86
specialize le_refl (S l) - L87
exact le_refl
15Separate the logical casesL88–93
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
16Establish hqL94–102
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
17Establish hQL103–111
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L103
have hQ : x2 = x7 - L104
specialize beta_at_unique d - L105
specialize beta_at_unique e - L106
specialize beta_at_unique l - L107
specialize beta_at_unique x2 - L108
specialize beta_at_unique x7 - L109
apply beta_at_unique - L110
exact hright_decomp_witness_witness_left - L111
exact hterminal_witness_witness_witness_right_left
18Establish hbitL112–121
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L112
have hbit : x4 = x8 - L113
specialize beta_at_unique f - L114
specialize beta_at_unique g - L115
specialize beta_at_unique l - L116
specialize beta_at_unique x4 - L117
specialize beta_at_unique x8 - L118
apply beta_at_unique - L119
exact hcount_decomp_witness_witness_left - L120
exact hterminal_witness_witness_witness_right_right_left - L121
rewrite hq at hleft_decomp_witness_witness_right_right
19Calculate and transport equalitiesL122–123
20Establish hprefixL124–133
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply double quotient carry prefix restrict.
- L124
have hprefix : ∀ b5cc_index_b5ccsdce_restricted. Lt(b5cc_index_b5ccsdce_restricted,l) → ∃ x. ∃ y. ∃ z. BetaAt(b,c,b5cc_index_b5ccsdce_restricted,x) ∧ (BetaAt(d,e,b5cc_index_b5ccsdce_restricted,y) ∧ (BetaAt(f,g,b5cc_index_b5ccsdce_restricted,z) ∧ (z = 0 ∧ y = x + x ∨ z = 1 ∧ y = S (x + x))))Definitions: Lt(b5cc_index_b5ccsdce_restricted,l)BetaAt(b,c,b5cc_index_b5ccsdce_restricted,x)BetaAt(d,e,b5cc_index_b5ccsdce_restricted,y)BetaAt(f,g,b5cc_index_b5ccsdce_restricted,z)Original native command in the exact edition - L125
specialize double_quotient_carry_prefix_restrict b - L126
specialize double_quotient_carry_prefix_restrict c - L127
specialize double_quotient_carry_prefix_restrict d - L128
specialize double_quotient_carry_prefix_restrict e - L129
specialize double_quotient_carry_prefix_restrict f - L130
specialize double_quotient_carry_prefix_restrict g - L131
specialize double_quotient_carry_prefix_restrict l - L132
apply double_quotient_carry_prefix_restrict - L133
exact hcarry
21Establish hbalanceL134–142
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
22Establish hinnerL143–143
Establish this local claim before using it. It is not an additional assumption.
- L143
have hinner : x5 + (x6 + (x6 + x1)) = x6 + (x6 + (x5 + x1))
23Establish hleft_assocL144–146
24Establish hpermuteL147–148
25Establish hright_assocL149–155
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
26Separate the logical casesL156–157
27Calculate and transport equalitiesL158–165
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L158
rewrite hright_decomp_witness_witness_right_right - L159
rewrite hleft_decomp_witness_witness_right_right - L160
rewrite hleft_decomp_witness_witness_right_right - L161
rewrite hcount_decomp_witness_witness_right_right_right - L162
rewrite hbalance - L163
rewrite hterminal_witness_witness_witness_right_right_right_left_left - L164
rewrite hterminal_witness_witness_witness_right_right_right_left_right - L165
simp [add_assoc, add_comm]
28Separate the logical casesL166–166
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L166
cases hterminal_witness_witness_witness_right_right_right_right
29Calculate and transport equalitiesL167–174
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L167
rewrite hright_decomp_witness_witness_right_right - L168
rewrite hleft_decomp_witness_witness_right_right - L169
rewrite hleft_decomp_witness_witness_right_right - L170
rewrite hcount_decomp_witness_witness_right_right_right - L171
rewrite hbalance - L172
rewrite hterminal_witness_witness_witness_right_right_right_right_left - L173
rewrite hterminal_witness_witness_witness_right_right_right_right_right - L174
simp [add_assoc, add_comm]
Original defined command ledger · 174 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro e - 0005
intro f - 0006
intro g - 0007
induction l - 0008
intro B - 0009
intro A - 0010
intro E - 0011
intro hleft - 0012
intro hright - 0013
intro hcarry - 0014
intro hcount - 0015
have hB : B = 0 - 0016
specialize beta_sum_zero b - 0017
specialize beta_sum_zero c - 0018
specialize beta_sum_zero B - 0019
apply beta_sum_zero - 0020
exact hleft - 0021
have hA : A = 0 - 0022
specialize beta_sum_zero d - 0023
specialize beta_sum_zero e - 0024
specialize beta_sum_zero A - 0025
apply beta_sum_zero - 0026
exact hright - 0027
have hE : E = 0 - 0028
specialize bit_count_zero f - 0029
specialize bit_count_zero g - 0030
specialize bit_count_zero 0 - 0031
specialize bit_count_zero E - 0032
apply bit_count_zero - 0033
refl - 0034
exact hcount - 0035
rewrite hA - 0036
rewrite hB - 0037
rewrite hB - 0038
rewrite hE - 0039
simp - 0040
intro B - 0041
intro A - 0042
intro E - 0043
intro hleft - 0044
intro hright - 0045
intro hcarry - 0046
intro hcount - 0047
have hleft_decomp : ∃ a. ∃ r. BetaAt(b,c,l,a) ∧ (Sum(b,c,l,r) ∧ B = r + a)Exact native replay line
have hleft_decomp : exists a r. (((exists fs_h_b5ccsdce_left_decomp_entry. fs_h_b5ccsdce_left_decomp_entry + S (a) = S ((S (l)) * c)) /\ exists fs_q_b5ccsdce_left_decomp_entry. b = fs_q_b5ccsdce_left_decomp_entry * S ((S (l)) * c) + (a))) /\ ((exists fs_u_b5ccsdce_left_decomp_prefix fs_v_b5ccsdce_left_decomp_prefix. ((((exists fs_h_b5ccsdce_left_decomp_prefix_body_start. fs_h_b5ccsdce_left_decomp_prefix_body_start + S (0) = S ((S (0)) * fs_v_b5ccsdce_left_decomp_prefix)) /\ exists fs_q_b5ccsdce_left_decomp_prefix_body_start. fs_u_b5ccsdce_left_decomp_prefix = fs_q_b5ccsdce_left_decomp_prefix_body_start * S ((S (0)) * fs_v_b5ccsdce_left_decomp_prefix) + (0))) /\ ((((exists fs_h_b5ccsdce_left_decomp_prefix_body_terminal. fs_h_b5ccsdce_left_decomp_prefix_body_terminal + S (r) = S ((S (l)) * fs_v_b5ccsdce_left_decomp_prefix)) /\ exists fs_q_b5ccsdce_left_decomp_prefix_body_terminal. fs_u_b5ccsdce_left_decomp_prefix = fs_q_b5ccsdce_left_decomp_prefix_body_terminal * S ((S (l)) * fs_v_b5ccsdce_left_decomp_prefix) + (r))) /\ forall fs_i_b5ccsdce_left_decomp_prefix_body_steps. (exists fs_lt_b5ccsdce_left_decomp_prefix_body_steps_bound. fs_lt_b5ccsdce_left_decomp_prefix_body_steps_bound + S fs_i_b5ccsdce_left_decomp_prefix_body_steps = l) -> exists fs_a_b5ccsdce_left_decomp_prefix_body_steps fs_r_b5ccsdce_left_decomp_prefix_body_steps fs_s_b5ccsdce_left_decomp_prefix_body_steps. ((((exists fs_h_b5ccsdce_left_decomp_prefix_body_steps_summand. fs_h_b5ccsdce_left_decomp_prefix_body_steps_summand + S (fs_a_b5ccsdce_left_decomp_prefix_body_steps) = S ((S (fs_i_b5ccsdce_left_decomp_prefix_body_steps)) * c)) /\ exists fs_q_b5ccsdce_left_decomp_prefix_body_steps_summand. b = fs_q_b5ccsdce_left_decomp_prefix_body_steps_summand * S ((S (fs_i_b5ccsdce_left_decomp_prefix_body_steps)) * c) + (fs_a_b5ccsdce_left_decomp_prefix_body_steps))) /\ ((((exists fs_h_b5ccsdce_left_decomp_prefix_body_steps_partial. fs_h_b5ccsdce_left_decomp_prefix_body_steps_partial + S (fs_r_b5ccsdce_left_decomp_prefix_body_steps) = S ((S (fs_i_b5ccsdce_left_decomp_prefix_body_steps)) * fs_v_b5ccsdce_left_decomp_prefix)) /\ exists fs_q_b5ccsdce_left_decomp_prefix_body_steps_partial. fs_u_b5ccsdce_left_decomp_prefix = fs_q_b5ccsdce_left_decomp_prefix_body_steps_partial * S ((S (fs_i_b5ccsdce_left_decomp_prefix_body_steps)) * fs_v_b5ccsdce_left_decomp_prefix) + (fs_r_b5ccsdce_left_decomp_prefix_body_steps))) /\ ((((exists fs_h_b5ccsdce_left_decomp_prefix_body_steps_successor. fs_h_b5ccsdce_left_decomp_prefix_body_steps_successor + S (fs_s_b5ccsdce_left_decomp_prefix_body_steps) = S ((S (S fs_i_b5ccsdce_left_decomp_prefix_body_steps)) * fs_v_b5ccsdce_left_decomp_prefix)) /\ exists fs_q_b5ccsdce_left_decomp_prefix_body_steps_successor. fs_u_b5ccsdce_left_decomp_prefix = fs_q_b5ccsdce_left_decomp_prefix_body_steps_successor * S ((S (S fs_i_b5ccsdce_left_decomp_prefix_body_steps)) * fs_v_b5ccsdce_left_decomp_prefix) + (fs_s_b5ccsdce_left_decomp_prefix_body_steps))) /\ fs_s_b5ccsdce_left_decomp_prefix_body_steps = fs_r_b5ccsdce_left_decomp_prefix_body_steps + fs_a_b5ccsdce_left_decomp_prefix_body_steps)))))) /\ B = r + a) - 0048
specialize beta_sum_succ_decompose b - 0049
specialize beta_sum_succ_decompose c - 0050
specialize beta_sum_succ_decompose l - 0051
specialize beta_sum_succ_decompose B - 0052
apply beta_sum_succ_decompose - 0053
exact hleft - 0054
cases hleft_decomp - 0055
cases hleft_decomp_witness - 0056
cases hleft_decomp_witness_witness - 0057
cases hleft_decomp_witness_witness_right - 0058
have hright_decomp : ∃ a. ∃ r. BetaAt(d,e,l,a) ∧ (Sum(d,e,l,r) ∧ A = r + a)Exact native replay line
have hright_decomp : exists a r. (((exists fs_h_b5ccsdce_right_decomp_entry. fs_h_b5ccsdce_right_decomp_entry + S (a) = S ((S (l)) * e)) /\ exists fs_q_b5ccsdce_right_decomp_entry. d = fs_q_b5ccsdce_right_decomp_entry * S ((S (l)) * e) + (a))) /\ ((exists fs_u_b5ccsdce_right_decomp_prefix fs_v_b5ccsdce_right_decomp_prefix. ((((exists fs_h_b5ccsdce_right_decomp_prefix_body_start. fs_h_b5ccsdce_right_decomp_prefix_body_start + S (0) = S ((S (0)) * fs_v_b5ccsdce_right_decomp_prefix)) /\ exists fs_q_b5ccsdce_right_decomp_prefix_body_start. fs_u_b5ccsdce_right_decomp_prefix = fs_q_b5ccsdce_right_decomp_prefix_body_start * S ((S (0)) * fs_v_b5ccsdce_right_decomp_prefix) + (0))) /\ ((((exists fs_h_b5ccsdce_right_decomp_prefix_body_terminal. fs_h_b5ccsdce_right_decomp_prefix_body_terminal + S (r) = S ((S (l)) * fs_v_b5ccsdce_right_decomp_prefix)) /\ exists fs_q_b5ccsdce_right_decomp_prefix_body_terminal. fs_u_b5ccsdce_right_decomp_prefix = fs_q_b5ccsdce_right_decomp_prefix_body_terminal * S ((S (l)) * fs_v_b5ccsdce_right_decomp_prefix) + (r))) /\ forall fs_i_b5ccsdce_right_decomp_prefix_body_steps. (exists fs_lt_b5ccsdce_right_decomp_prefix_body_steps_bound. fs_lt_b5ccsdce_right_decomp_prefix_body_steps_bound + S fs_i_b5ccsdce_right_decomp_prefix_body_steps = l) -> exists fs_a_b5ccsdce_right_decomp_prefix_body_steps fs_r_b5ccsdce_right_decomp_prefix_body_steps fs_s_b5ccsdce_right_decomp_prefix_body_steps. ((((exists fs_h_b5ccsdce_right_decomp_prefix_body_steps_summand. fs_h_b5ccsdce_right_decomp_prefix_body_steps_summand + S (fs_a_b5ccsdce_right_decomp_prefix_body_steps) = S ((S (fs_i_b5ccsdce_right_decomp_prefix_body_steps)) * e)) /\ exists fs_q_b5ccsdce_right_decomp_prefix_body_steps_summand. d = fs_q_b5ccsdce_right_decomp_prefix_body_steps_summand * S ((S (fs_i_b5ccsdce_right_decomp_prefix_body_steps)) * e) + (fs_a_b5ccsdce_right_decomp_prefix_body_steps))) /\ ((((exists fs_h_b5ccsdce_right_decomp_prefix_body_steps_partial. fs_h_b5ccsdce_right_decomp_prefix_body_steps_partial + S (fs_r_b5ccsdce_right_decomp_prefix_body_steps) = S ((S (fs_i_b5ccsdce_right_decomp_prefix_body_steps)) * fs_v_b5ccsdce_right_decomp_prefix)) /\ exists fs_q_b5ccsdce_right_decomp_prefix_body_steps_partial. fs_u_b5ccsdce_right_decomp_prefix = fs_q_b5ccsdce_right_decomp_prefix_body_steps_partial * S ((S (fs_i_b5ccsdce_right_decomp_prefix_body_steps)) * fs_v_b5ccsdce_right_decomp_prefix) + (fs_r_b5ccsdce_right_decomp_prefix_body_steps))) /\ ((((exists fs_h_b5ccsdce_right_decomp_prefix_body_steps_successor. fs_h_b5ccsdce_right_decomp_prefix_body_steps_successor + S (fs_s_b5ccsdce_right_decomp_prefix_body_steps) = S ((S (S fs_i_b5ccsdce_right_decomp_prefix_body_steps)) * fs_v_b5ccsdce_right_decomp_prefix)) /\ exists fs_q_b5ccsdce_right_decomp_prefix_body_steps_successor. fs_u_b5ccsdce_right_decomp_prefix = fs_q_b5ccsdce_right_decomp_prefix_body_steps_successor * S ((S (S fs_i_b5ccsdce_right_decomp_prefix_body_steps)) * fs_v_b5ccsdce_right_decomp_prefix) + (fs_s_b5ccsdce_right_decomp_prefix_body_steps))) /\ fs_s_b5ccsdce_right_decomp_prefix_body_steps = fs_r_b5ccsdce_right_decomp_prefix_body_steps + fs_a_b5ccsdce_right_decomp_prefix_body_steps)))))) /\ A = r + a) - 0059
specialize beta_sum_succ_decompose d - 0060
specialize beta_sum_succ_decompose e - 0061
specialize beta_sum_succ_decompose l - 0062
specialize beta_sum_succ_decompose A - 0063
apply beta_sum_succ_decompose - 0064
exact hright - 0065
cases hright_decomp - 0066
cases hright_decomp_witness - 0067
cases hright_decomp_witness_witness - 0068
cases hright_decomp_witness_witness_right - 0069
have hcount_decomp : ∃ bit. ∃ r. BetaAt(f,g,l,bit) ∧ (BitCount(f,g,l,r) ∧ ((bit = 0 ∨ bit = 1) ∧ E = r + bit))Exact native replay line
have hcount_decomp : exists bit r. (((exists fs_h_b5ccsdce_count_last. fs_h_b5ccsdce_count_last + S (bit) = S ((S (l)) * g)) /\ exists fs_q_b5ccsdce_count_last. f = fs_q_b5ccsdce_count_last * S ((S (l)) * g) + (bit))) /\ ((((exists ff_u_b5ccsdce_count_prefix_sum ff_v_b5ccsdce_count_prefix_sum. ((((exists ff_h_b5ccsdce_count_prefix_sum_start. ff_h_b5ccsdce_count_prefix_sum_start + S (0) = S ((S (0)) * ff_v_b5ccsdce_count_prefix_sum)) /\ exists ff_q_b5ccsdce_count_prefix_sum_start. ff_u_b5ccsdce_count_prefix_sum = ff_q_b5ccsdce_count_prefix_sum_start * S ((S (0)) * ff_v_b5ccsdce_count_prefix_sum) + (0))) /\ ((((exists ff_h_b5ccsdce_count_prefix_sum_terminal. ff_h_b5ccsdce_count_prefix_sum_terminal + S (r) = S ((S (l)) * ff_v_b5ccsdce_count_prefix_sum)) /\ exists ff_q_b5ccsdce_count_prefix_sum_terminal. ff_u_b5ccsdce_count_prefix_sum = ff_q_b5ccsdce_count_prefix_sum_terminal * S ((S (l)) * ff_v_b5ccsdce_count_prefix_sum) + (r))) /\ forall ff_i_b5ccsdce_count_prefix_sum. (exists ff_lt_b5ccsdce_count_prefix_sum_bound. ff_lt_b5ccsdce_count_prefix_sum_bound + S ff_i_b5ccsdce_count_prefix_sum = l) -> exists ff_a_b5ccsdce_count_prefix_sum ff_r_b5ccsdce_count_prefix_sum ff_s_b5ccsdce_count_prefix_sum. ((((exists ff_h_b5ccsdce_count_prefix_sum_summand. ff_h_b5ccsdce_count_prefix_sum_summand + S (ff_a_b5ccsdce_count_prefix_sum) = S ((S (ff_i_b5ccsdce_count_prefix_sum)) * g)) /\ exists ff_q_b5ccsdce_count_prefix_sum_summand. f = ff_q_b5ccsdce_count_prefix_sum_summand * S ((S (ff_i_b5ccsdce_count_prefix_sum)) * g) + (ff_a_b5ccsdce_count_prefix_sum))) /\ ((((exists ff_h_b5ccsdce_count_prefix_sum_partial. ff_h_b5ccsdce_count_prefix_sum_partial + S (ff_r_b5ccsdce_count_prefix_sum) = S ((S (ff_i_b5ccsdce_count_prefix_sum)) * ff_v_b5ccsdce_count_prefix_sum)) /\ exists ff_q_b5ccsdce_count_prefix_sum_partial. ff_u_b5ccsdce_count_prefix_sum = ff_q_b5ccsdce_count_prefix_sum_partial * S ((S (ff_i_b5ccsdce_count_prefix_sum)) * ff_v_b5ccsdce_count_prefix_sum) + (ff_r_b5ccsdce_count_prefix_sum))) /\ ((((exists ff_h_b5ccsdce_count_prefix_sum_successor. ff_h_b5ccsdce_count_prefix_sum_successor + S (ff_s_b5ccsdce_count_prefix_sum) = S ((S (S ff_i_b5ccsdce_count_prefix_sum)) * ff_v_b5ccsdce_count_prefix_sum)) /\ exists ff_q_b5ccsdce_count_prefix_sum_successor. ff_u_b5ccsdce_count_prefix_sum = ff_q_b5ccsdce_count_prefix_sum_successor * S ((S (S ff_i_b5ccsdce_count_prefix_sum)) * ff_v_b5ccsdce_count_prefix_sum) + (ff_s_b5ccsdce_count_prefix_sum))) /\ ff_s_b5ccsdce_count_prefix_sum = ff_r_b5ccsdce_count_prefix_sum + ff_a_b5ccsdce_count_prefix_sum)))))) /\ (forall ff_i_b5ccsdce_count_prefix_bits. (exists ff_lt_b5ccsdce_count_prefix_bits_bound. ff_lt_b5ccsdce_count_prefix_bits_bound + S ff_i_b5ccsdce_count_prefix_bits = l) -> exists ff_bit_b5ccsdce_count_prefix_bits. ((((exists ff_h_b5ccsdce_count_prefix_bits_decoded. ff_h_b5ccsdce_count_prefix_bits_decoded + S (ff_bit_b5ccsdce_count_prefix_bits) = S ((S (ff_i_b5ccsdce_count_prefix_bits)) * g)) /\ exists ff_q_b5ccsdce_count_prefix_bits_decoded. f = ff_q_b5ccsdce_count_prefix_bits_decoded * S ((S (ff_i_b5ccsdce_count_prefix_bits)) * g) + (ff_bit_b5ccsdce_count_prefix_bits))) /\ (ff_bit_b5ccsdce_count_prefix_bits = 0 \/ ff_bit_b5ccsdce_count_prefix_bits = 1))))) /\ ((bit = 0 \/ bit = 1) /\ E = r + bit)) - 0070
specialize bit_count_succ_decompose f - 0071
specialize bit_count_succ_decompose g - 0072
specialize bit_count_succ_decompose l - 0073
specialize bit_count_succ_decompose (S l) - 0074
specialize bit_count_succ_decompose E - 0075
apply bit_count_succ_decompose - 0076
refl - 0077
exact hcount - 0078
cases hcount_decomp - 0079
cases hcount_decomp_witness - 0080
cases hcount_decomp_witness_witness - 0081
cases hcount_decomp_witness_witness_right - 0082
cases hcount_decomp_witness_witness_right_right - 0083
have hterminal : ∃ q. ∃ Q. ∃ bit. BetaAt(b,c,l,q) ∧ (BetaAt(d,e,l,Q) ∧ (BetaAt(f,g,l,bit) ∧ (bit = 0 ∧ Q = q + q ∨ bit = 1 ∧ Q = S (q + q))))Exact native replay line
have hterminal : exists q Q bit. (((exists fs_h_b5ccsdce_terminal_left. fs_h_b5ccsdce_terminal_left + S (q) = S ((S (l)) * c)) /\ exists fs_q_b5ccsdce_terminal_left. b = fs_q_b5ccsdce_terminal_left * S ((S (l)) * c) + (q))) /\ ((((exists fs_h_b5ccsdce_terminal_right. fs_h_b5ccsdce_terminal_right + S (Q) = S ((S (l)) * e)) /\ exists fs_q_b5ccsdce_terminal_right. d = fs_q_b5ccsdce_terminal_right * S ((S (l)) * e) + (Q))) /\ ((((exists fs_h_b5ccsdce_terminal_bit. fs_h_b5ccsdce_terminal_bit + S (bit) = S ((S (l)) * g)) /\ exists fs_q_b5ccsdce_terminal_bit. f = fs_q_b5ccsdce_terminal_bit * S ((S (l)) * g) + (bit))) /\ (((bit = 0 /\ Q = q + q) \/ (bit = 1 /\ Q = S (q + q)))))) - 0084
specialize hcarry l - 0085
apply hcarry - 0086
specialize le_refl (S l) - 0087
exact le_refl - 0088
cases hterminal - 0089
cases hterminal_witness - 0090
cases hterminal_witness_witness - 0091
cases hterminal_witness_witness_witness - 0092
cases hterminal_witness_witness_witness_right - 0093
cases hterminal_witness_witness_witness_right_right - 0094
have hq : x = x6 - 0095
specialize beta_at_unique b - 0096
specialize beta_at_unique c - 0097
specialize beta_at_unique l - 0098
specialize beta_at_unique x - 0099
specialize beta_at_unique x6 - 0100
apply beta_at_unique - 0101
exact hleft_decomp_witness_witness_left - 0102
exact hterminal_witness_witness_witness_left - 0103
have hQ : x2 = x7 - 0104
specialize beta_at_unique d - 0105
specialize beta_at_unique e - 0106
specialize beta_at_unique l - 0107
specialize beta_at_unique x2 - 0108
specialize beta_at_unique x7 - 0109
apply beta_at_unique - 0110
exact hright_decomp_witness_witness_left - 0111
exact hterminal_witness_witness_witness_right_left - 0112
have hbit : x4 = x8 - 0113
specialize beta_at_unique f - 0114
specialize beta_at_unique g - 0115
specialize beta_at_unique l - 0116
specialize beta_at_unique x4 - 0117
specialize beta_at_unique x8 - 0118
apply beta_at_unique - 0119
exact hcount_decomp_witness_witness_left - 0120
exact hterminal_witness_witness_witness_right_right_left - 0121
rewrite hq at hleft_decomp_witness_witness_right_right - 0122
rewrite hQ at hright_decomp_witness_witness_right_right - 0123
rewrite hbit at hcount_decomp_witness_witness_right_right_right - 0124
have hprefix : ∀ b5cc_index_b5ccsdce_restricted. Lt(b5cc_index_b5ccsdce_restricted,l) → ∃ x. ∃ y. ∃ z. BetaAt(b,c,b5cc_index_b5ccsdce_restricted,x) ∧ (BetaAt(d,e,b5cc_index_b5ccsdce_restricted,y) ∧ (BetaAt(f,g,b5cc_index_b5ccsdce_restricted,z) ∧ (z = 0 ∧ y = x + x ∨ z = 1 ∧ y = S (x + x))))Exact native replay line
have hprefix : forall b5cc_index_b5ccsdce_restricted. (exists bcf_lt_gap_b5ccsdce_restricted_bound. bcf_lt_gap_b5ccsdce_restricted_bound + S (b5cc_index_b5ccsdce_restricted) = l) -> exists b5cc_left_b5ccsdce_restricted b5cc_right_b5ccsdce_restricted b5cc_bit_b5ccsdce_restricted. (((exists fs_h_b5cc_b5ccsdce_restricted_left. fs_h_b5cc_b5ccsdce_restricted_left + S (b5cc_left_b5ccsdce_restricted) = S ((S (b5cc_index_b5ccsdce_restricted)) * c)) /\ exists fs_q_b5cc_b5ccsdce_restricted_left. b = fs_q_b5cc_b5ccsdce_restricted_left * S ((S (b5cc_index_b5ccsdce_restricted)) * c) + (b5cc_left_b5ccsdce_restricted))) /\ ((((exists fs_h_b5cc_b5ccsdce_restricted_right. fs_h_b5cc_b5ccsdce_restricted_right + S (b5cc_right_b5ccsdce_restricted) = S ((S (b5cc_index_b5ccsdce_restricted)) * e)) /\ exists fs_q_b5cc_b5ccsdce_restricted_right. d = fs_q_b5cc_b5ccsdce_restricted_right * S ((S (b5cc_index_b5ccsdce_restricted)) * e) + (b5cc_right_b5ccsdce_restricted))) /\ ((((exists fs_h_b5cc_b5ccsdce_restricted_bit. fs_h_b5cc_b5ccsdce_restricted_bit + S (b5cc_bit_b5ccsdce_restricted) = S ((S (b5cc_index_b5ccsdce_restricted)) * g)) /\ exists fs_q_b5cc_b5ccsdce_restricted_bit. f = fs_q_b5cc_b5ccsdce_restricted_bit * S ((S (b5cc_index_b5ccsdce_restricted)) * g) + (b5cc_bit_b5ccsdce_restricted))) /\ (((b5cc_bit_b5ccsdce_restricted = 0 /\ b5cc_right_b5ccsdce_restricted = b5cc_left_b5ccsdce_restricted + b5cc_left_b5ccsdce_restricted) \/ (b5cc_bit_b5ccsdce_restricted = 1 /\ b5cc_right_b5ccsdce_restricted = S (b5cc_left_b5ccsdce_restricted + b5cc_left_b5ccsdce_restricted)))))) - 0125
specialize double_quotient_carry_prefix_restrict b - 0126
specialize double_quotient_carry_prefix_restrict c - 0127
specialize double_quotient_carry_prefix_restrict d - 0128
specialize double_quotient_carry_prefix_restrict e - 0129
specialize double_quotient_carry_prefix_restrict f - 0130
specialize double_quotient_carry_prefix_restrict g - 0131
specialize double_quotient_carry_prefix_restrict l - 0132
apply double_quotient_carry_prefix_restrict - 0133
exact hcarry - 0134
have hbalance : x3 = (x1 + x1) + x5 - 0135
specialize IH x1 - 0136
specialize IH x3 - 0137
specialize IH x5 - 0138
apply IH - 0139
exact hleft_decomp_witness_witness_right_left - 0140
exact hright_decomp_witness_witness_right_left - 0141
exact hprefix - 0142
exact hcount_decomp_witness_witness_right_left - 0143
have hinner : x5 + (x6 + (x6 + x1)) = x6 + (x6 + (x5 + x1)) - 0144
have hleft_assoc : x5 + (x6 + (x6 + x1)) = (x5 + x6) + (x6 + x1) - 0145
symm - 0146
apply add_assoc - 0147
have hpermute : (x5 + x6) + (x6 + x1) = (x6 + x6) + (x5 + x1) - 0148
apply add_permute_outer - 0149
have hright_assoc : (x6 + x6) + (x5 + x1) = x6 + (x6 + (x5 + x1)) - 0150
apply add_assoc - 0151
trans (x5 + x6) + (x6 + x1) - 0152
exact hleft_assoc - 0153
trans (x6 + x6) + (x5 + x1) - 0154
exact hpermute - 0155
exact hright_assoc - 0156
cases hterminal_witness_witness_witness_right_right_right - 0157
cases hterminal_witness_witness_witness_right_right_right_left - 0158
rewrite hright_decomp_witness_witness_right_right - 0159
rewrite hleft_decomp_witness_witness_right_right - 0160
rewrite hleft_decomp_witness_witness_right_right - 0161
rewrite hcount_decomp_witness_witness_right_right_right - 0162
rewrite hbalance - 0163
rewrite hterminal_witness_witness_witness_right_right_right_left_left - 0164
rewrite hterminal_witness_witness_witness_right_right_right_left_right - 0165
simp [add_assoc, add_comm] - 0166
cases hterminal_witness_witness_witness_right_right_right_right - 0167
rewrite hright_decomp_witness_witness_right_right - 0168
rewrite hleft_decomp_witness_witness_right_right - 0169
rewrite hleft_decomp_witness_witness_right_right - 0170
rewrite hcount_decomp_witness_witness_right_right_right - 0171
rewrite hbalance - 0172
rewrite hterminal_witness_witness_witness_right_right_right_right_left - 0173
rewrite hterminal_witness_witness_witness_right_right_right_right_right - 0174
simp [add_assoc, add_comm]