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.
Exact expanded first-order arithmetic statement
forall lb lc rb rc tb tc cb cc l L M T E. (exists ff_u_kmcsace_left ff_v_kmcsace_left. ((((exists ff_h_kmcsace_left_start. ff_h_kmcsace_left_start + S (0) = S ((S (0)) * ff_v_kmcsace_left)) /\ exists ff_q_kmcsace_left_start. ff_u_kmcsace_left = ff_q_kmcsace_left_start * S ((S (0)) * ff_v_kmcsace_left) + (0))) /\ ((((exists ff_h_kmcsace_left_terminal. ff_h_kmcsace_left_terminal + S (L) = S ((S (l)) * ff_v_kmcsace_left)) /\ exists ff_q_kmcsace_left_terminal. ff_u_kmcsace_left = ff_q_kmcsace_left_terminal * S ((S (l)) * ff_v_kmcsace_left) + (L))) /\ forall ff_i_kmcsace_left. (exists ff_lt_kmcsace_left_bound. ff_lt_kmcsace_left_bound + S ff_i_kmcsace_left = l) -> exists ff_a_kmcsace_left ff_r_kmcsace_left ff_s_kmcsace_left. ((((exists ff_h_kmcsace_left_summand. ff_h_kmcsace_left_summand + S (ff_a_kmcsace_left) = S ((S (ff_i_kmcsace_left)) * lc)) /\ exists ff_q_kmcsace_left_summand. lb = ff_q_kmcsace_left_summand * S ((S (ff_i_kmcsace_left)) * lc) + (ff_a_kmcsace_left))) /\ ((((exists ff_h_kmcsace_left_partial. ff_h_kmcsace_left_partial + S (ff_r_kmcsace_left) = S ((S (ff_i_kmcsace_left)) * ff_v_kmcsace_left)) /\ exists ff_q_kmcsace_left_partial. ff_u_kmcsace_left = ff_q_kmcsace_left_partial * S ((S (ff_i_kmcsace_left)) * ff_v_kmcsace_left) + (ff_r_kmcsace_left))) /\ ((((exists ff_h_kmcsace_left_successor. ff_h_kmcsace_left_successor + S (ff_s_kmcsace_left) = S ((S (S ff_i_kmcsace_left)) * ff_v_kmcsace_left)) /\ exists ff_q_kmcsace_left_successor. ff_u_kmcsace_left = ff_q_kmcsace_left_successor * S ((S (S ff_i_kmcsace_left)) * ff_v_kmcsace_left) + (ff_s_kmcsace_left))) /\ ff_s_kmcsace_left = ff_r_kmcsace_left + ff_a_kmcsace_left)))))) -> (exists ff_u_kmcsace_right ff_v_kmcsace_right. ((((exists ff_h_kmcsace_right_start. ff_h_kmcsace_right_start + S (0) = S ((S (0)) * ff_v_kmcsace_right)) /\ exists ff_q_kmcsace_right_start. ff_u_kmcsace_right = ff_q_kmcsace_right_start * S ((S (0)) * ff_v_kmcsace_right) + (0))) /\ ((((exists ff_h_kmcsace_right_terminal. ff_h_kmcsace_right_terminal + S (M) = S ((S (l)) * ff_v_kmcsace_right)) /\ exists ff_q_kmcsace_right_terminal. ff_u_kmcsace_right = ff_q_kmcsace_right_terminal * S ((S (l)) * ff_v_kmcsace_right) + (M))) /\ forall ff_i_kmcsace_right. (exists ff_lt_kmcsace_right_bound. ff_lt_kmcsace_right_bound + S ff_i_kmcsace_right = l) -> exists ff_a_kmcsace_right ff_r_kmcsace_right ff_s_kmcsace_right. ((((exists ff_h_kmcsace_right_summand. ff_h_kmcsace_right_summand + S (ff_a_kmcsace_right) = S ((S (ff_i_kmcsace_right)) * rc)) /\ exists ff_q_kmcsace_right_summand. rb = ff_q_kmcsace_right_summand * S ((S (ff_i_kmcsace_right)) * rc) + (ff_a_kmcsace_right))) /\ ((((exists ff_h_kmcsace_right_partial. ff_h_kmcsace_right_partial + S (ff_r_kmcsace_right) = S ((S (ff_i_kmcsace_right)) * ff_v_kmcsace_right)) /\ exists ff_q_kmcsace_right_partial. ff_u_kmcsace_right = ff_q_kmcsace_right_partial * S ((S (ff_i_kmcsace_right)) * ff_v_kmcsace_right) + (ff_r_kmcsace_right))) /\ ((((exists ff_h_kmcsace_right_successor. ff_h_kmcsace_right_successor + S (ff_s_kmcsace_right) = S ((S (S ff_i_kmcsace_right)) * ff_v_kmcsace_right)) /\ exists ff_q_kmcsace_right_successor. ff_u_kmcsace_right = ff_q_kmcsace_right_successor * S ((S (S ff_i_kmcsace_right)) * ff_v_kmcsace_right) + (ff_s_kmcsace_right))) /\ ff_s_kmcsace_right = ff_r_kmcsace_right + ff_a_kmcsace_right)))))) -> (exists ff_u_kmcsace_total ff_v_kmcsace_total. ((((exists ff_h_kmcsace_total_start. ff_h_kmcsace_total_start + S (0) = S ((S (0)) * ff_v_kmcsace_total)) /\ exists ff_q_kmcsace_total_start. ff_u_kmcsace_total = ff_q_kmcsace_total_start * S ((S (0)) * ff_v_kmcsace_total) + (0))) /\ ((((exists ff_h_kmcsace_total_terminal. ff_h_kmcsace_total_terminal + S (T) = S ((S (l)) * ff_v_kmcsace_total)) /\ exists ff_q_kmcsace_total_terminal. ff_u_kmcsace_total = ff_q_kmcsace_total_terminal * S ((S (l)) * ff_v_kmcsace_total) + (T))) /\ forall ff_i_kmcsace_total. (exists ff_lt_kmcsace_total_bound. ff_lt_kmcsace_total_bound + S ff_i_kmcsace_total = l) -> exists ff_a_kmcsace_total ff_r_kmcsace_total ff_s_kmcsace_total. ((((exists ff_h_kmcsace_total_summand. ff_h_kmcsace_total_summand + S (ff_a_kmcsace_total) = S ((S (ff_i_kmcsace_total)) * tc)) /\ exists ff_q_kmcsace_total_summand. tb = ff_q_kmcsace_total_summand * S ((S (ff_i_kmcsace_total)) * tc) + (ff_a_kmcsace_total))) /\ ((((exists ff_h_kmcsace_total_partial. ff_h_kmcsace_total_partial + S (ff_r_kmcsace_total) = S ((S (ff_i_kmcsace_total)) * ff_v_kmcsace_total)) /\ exists ff_q_kmcsace_total_partial. ff_u_kmcsace_total = ff_q_kmcsace_total_partial * S ((S (ff_i_kmcsace_total)) * ff_v_kmcsace_total) + (ff_r_kmcsace_total))) /\ ((((exists ff_h_kmcsace_total_successor. ff_h_kmcsace_total_successor + S (ff_s_kmcsace_total) = S ((S (S ff_i_kmcsace_total)) * ff_v_kmcsace_total)) /\ exists ff_q_kmcsace_total_successor. ff_u_kmcsace_total = ff_q_kmcsace_total_successor * S ((S (S ff_i_kmcsace_total)) * ff_v_kmcsace_total) + (ff_s_kmcsace_total))) /\ ff_s_kmcsace_total = ff_r_kmcsace_total + ff_a_kmcsace_total)))))) -> (forall kmc_index_kmcsace_carry. (exists bcf_lt_gap_kmcsace_carry_bound. bcf_lt_gap_kmcsace_carry_bound + S (kmc_index_kmcsace_carry) = l) -> exists kmc_left_kmcsace_carry kmc_right_kmcsace_carry kmc_total_kmcsace_carry kmc_bit_kmcsace_carry. (((exists fs_h_kmcsace_carry_left. fs_h_kmcsace_carry_left + S (kmc_left_kmcsace_carry) = S ((S (kmc_index_kmcsace_carry)) * lc)) /\ exists fs_q_kmcsace_carry_left. lb = fs_q_kmcsace_carry_left * S ((S (kmc_index_kmcsace_carry)) * lc) + (kmc_left_kmcsace_carry))) /\ ((((exists fs_h_kmcsace_carry_right. fs_h_kmcsace_carry_right + S (kmc_right_kmcsace_carry) = S ((S (kmc_index_kmcsace_carry)) * rc)) /\ exists fs_q_kmcsace_carry_right. rb = fs_q_kmcsace_carry_right * S ((S (kmc_index_kmcsace_carry)) * rc) + (kmc_right_kmcsace_carry))) /\ ((((exists fs_h_kmcsace_carry_total. fs_h_kmcsace_carry_total + S (kmc_total_kmcsace_carry) = S ((S (kmc_index_kmcsace_carry)) * tc)) /\ exists fs_q_kmcsace_carry_total. tb = fs_q_kmcsace_carry_total * S ((S (kmc_index_kmcsace_carry)) * tc) + (kmc_total_kmcsace_carry))) /\ ((((exists fs_h_kmcsace_carry_bit. fs_h_kmcsace_carry_bit + S (kmc_bit_kmcsace_carry) = S ((S (kmc_index_kmcsace_carry)) * cc)) /\ exists fs_q_kmcsace_carry_bit. cb = fs_q_kmcsace_carry_bit * S ((S (kmc_index_kmcsace_carry)) * cc) + (kmc_bit_kmcsace_carry))) /\ (((kmc_bit_kmcsace_carry = 0 /\ kmc_total_kmcsace_carry = kmc_left_kmcsace_carry + kmc_right_kmcsace_carry) \/ (kmc_bit_kmcsace_carry = 1 /\ kmc_total_kmcsace_carry = S (kmc_left_kmcsace_carry + kmc_right_kmcsace_carry)))))))) -> (((exists ff_u_kmcsace_count_sum ff_v_kmcsace_count_sum. ((((exists ff_h_kmcsace_count_sum_start. ff_h_kmcsace_count_sum_start + S (0) = S ((S (0)) * ff_v_kmcsace_count_sum)) /\ exists ff_q_kmcsace_count_sum_start. ff_u_kmcsace_count_sum = ff_q_kmcsace_count_sum_start * S ((S (0)) * ff_v_kmcsace_count_sum) + (0))) /\ ((((exists ff_h_kmcsace_count_sum_terminal. ff_h_kmcsace_count_sum_terminal + S (E) = S ((S (l)) * ff_v_kmcsace_count_sum)) /\ exists ff_q_kmcsace_count_sum_terminal. ff_u_kmcsace_count_sum = ff_q_kmcsace_count_sum_terminal * S ((S (l)) * ff_v_kmcsace_count_sum) + (E))) /\ forall ff_i_kmcsace_count_sum. (exists ff_lt_kmcsace_count_sum_bound. ff_lt_kmcsace_count_sum_bound + S ff_i_kmcsace_count_sum = l) -> exists ff_a_kmcsace_count_sum ff_r_kmcsace_count_sum ff_s_kmcsace_count_sum. ((((exists ff_h_kmcsace_count_sum_summand. ff_h_kmcsace_count_sum_summand + S (ff_a_kmcsace_count_sum) = S ((S (ff_i_kmcsace_count_sum)) * cc)) /\ exists ff_q_kmcsace_count_sum_summand. cb = ff_q_kmcsace_count_sum_summand * S ((S (ff_i_kmcsace_count_sum)) * cc) + (ff_a_kmcsace_count_sum))) /\ ((((exists ff_h_kmcsace_count_sum_partial. ff_h_kmcsace_count_sum_partial + S (ff_r_kmcsace_count_sum) = S ((S (ff_i_kmcsace_count_sum)) * ff_v_kmcsace_count_sum)) /\ exists ff_q_kmcsace_count_sum_partial. ff_u_kmcsace_count_sum = ff_q_kmcsace_count_sum_partial * S ((S (ff_i_kmcsace_count_sum)) * ff_v_kmcsace_count_sum) + (ff_r_kmcsace_count_sum))) /\ ((((exists ff_h_kmcsace_count_sum_successor. ff_h_kmcsace_count_sum_successor + S (ff_s_kmcsace_count_sum) = S ((S (S ff_i_kmcsace_count_sum)) * ff_v_kmcsace_count_sum)) /\ exists ff_q_kmcsace_count_sum_successor. ff_u_kmcsace_count_sum = ff_q_kmcsace_count_sum_successor * S ((S (S ff_i_kmcsace_count_sum)) * ff_v_kmcsace_count_sum) + (ff_s_kmcsace_count_sum))) /\ ff_s_kmcsace_count_sum = ff_r_kmcsace_count_sum + ff_a_kmcsace_count_sum)))))) /\ (forall ff_i_kmcsace_count_bits. (exists ff_lt_kmcsace_count_bits_bound. ff_lt_kmcsace_count_bits_bound + S ff_i_kmcsace_count_bits = l) -> exists ff_bit_kmcsace_count_bits. ((((exists ff_h_kmcsace_count_bits_decoded. ff_h_kmcsace_count_bits_decoded + S (ff_bit_kmcsace_count_bits) = S ((S (ff_i_kmcsace_count_bits)) * cc)) /\ exists ff_q_kmcsace_count_bits_decoded. cb = ff_q_kmcsace_count_bits_decoded * S ((S (ff_i_kmcsace_count_bits)) * cc) + (ff_bit_kmcsace_count_bits))) /\ (ff_bit_kmcsace_count_bits = 0 \/ ff_bit_kmcsace_count_bits = 1))))) -> T = (L + M) + EConstructive proof overview
Generated structural guide
The sum-prefix quotient total equals both addend totals plus the exact carry count.
The unchanged tactic script uses 10 declared prerequisites and contains 228 exact native proof lines.
dependency-curried kernel-checked theorem body; Alpha enrollment and checked-use authority follow separately sealed release evidence; Stable membership remains unchanged
Proof neighborhood
Direct dependencies
beta_sum_zero Stable theorem; checked-use authorized beta_sum_succ_decompose Stable theorem; checked-use authorized bit_count_zero Stable theorem; checked-use authorized bit_count_succ_decompose Stable theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized le_refl Stable theorem; checked-use authorized KU000A add_quotient_carry_prefix_restrict add_assoc Stable theorem; checked-use authorized add_comm Stable theorem; checked-use authorized add_shuffle_middle Alpha theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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 (1)
01Fix variables and assumptionsL1–8
02Induction on lL9–18
03Establish hLL19–24
04Establish hML25–30
05Establish hTL31–36
06Establish hEL37–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count zero.
07Calculate and transport equalitiesL47–49
08Fix variables and assumptionsL50–58
09Establish hleft_decompL59–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
10Separate the logical casesL66–69
11Establish hright_decompL70–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
12Separate the logical casesL77–80
13Establish htotal_decompL81–87
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
14Separate the logical casesL88–91
15Establish hcount_decompL92–100
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bit count succ decompose.
16Separate the logical casesL101–105
17Establish hterminalL106–110
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hcarry.
18Separate the logical casesL111–118
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L111
cases hterminal - L112
cases hterminal_witness - L113
cases hterminal_witness_witness - L114
cases hterminal_witness_witness_witness - L115
cases hterminal_witness_witness_witness_witness - L116
cases hterminal_witness_witness_witness_witness_right - L117
cases hterminal_witness_witness_witness_witness_right_right - L118
cases hterminal_witness_witness_witness_witness_right_right_right
19Establish hqL119–127
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L119
have hq : x = x8 - L120
specialize beta_at_unique lb - L121
specialize beta_at_unique lc - L122
specialize beta_at_unique l - L123
specialize beta_at_unique x - L124
specialize beta_at_unique x8 - L125
apply beta_at_unique - L126
exact hleft_decomp_witness_witness_left - L127
exact hterminal_witness_witness_witness_witness_left
20Establish hsL128–136
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L128
have hs : x2 = x9 - L129
specialize beta_at_unique rb - L130
specialize beta_at_unique rc - L131
specialize beta_at_unique l - L132
specialize beta_at_unique x2 - L133
specialize beta_at_unique x9 - L134
apply beta_at_unique - L135
exact hright_decomp_witness_witness_left - L136
exact hterminal_witness_witness_witness_witness_right_left
21Establish hQL137–145
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L137
have hQ : x4 = x10 - L138
specialize beta_at_unique tb - L139
specialize beta_at_unique tc - L140
specialize beta_at_unique l - L141
specialize beta_at_unique x4 - L142
specialize beta_at_unique x10 - L143
apply beta_at_unique - L144
exact htotal_decomp_witness_witness_left - L145
exact hterminal_witness_witness_witness_witness_right_right_left
22Establish hbitL146–155
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L146
have hbit : x6 = x11 - L147
specialize beta_at_unique cb - L148
specialize beta_at_unique cc - L149
specialize beta_at_unique l - L150
specialize beta_at_unique x6 - L151
specialize beta_at_unique x11 - L152
apply beta_at_unique - L153
exact hcount_decomp_witness_witness_left - L154
exact hterminal_witness_witness_witness_witness_right_right_right_left - L155
rewrite hq at hleft_decomp_witness_witness_right_right
23Calculate and transport equalitiesL156–158
24Establish hprefixL159–168
Establish this local claim before using it. It is not an additional assumption.
- L159
have hprefix : ∀ kmc_index_kmcsace_restricted. Lt(kmc_index_kmcsace_restricted,l) → ∃ x. ∃ y. ∃ z. ∃ n. BetaAt(lb,lc,kmc_index_kmcsace_restricted,x) ∧ (BetaAt(rb,rc,kmc_index_kmcsace_restricted,y) ∧ (BetaAt(tb,tc,kmc_index_kmcsace_restricted,z) ∧ (BetaAt(cb,cc,kmc_index_kmcsace_restricted,n) ∧ (n = 0 ∧ z = x + y ∨ n = 1 ∧ z = S (x + y)))))Definitions: LtBetaAt - L160
specialize add_quotient_carry_prefix_restrict lb - L161
specialize add_quotient_carry_prefix_restrict lc - L162
specialize add_quotient_carry_prefix_restrict rb - L163
specialize add_quotient_carry_prefix_restrict rc - L164
specialize add_quotient_carry_prefix_restrict tb - L165
specialize add_quotient_carry_prefix_restrict tc - L166
specialize add_quotient_carry_prefix_restrict cb - L167
specialize add_quotient_carry_prefix_restrict cc - L168
specialize add_quotient_carry_prefix_restrict l
25Use earlier factsL169–170
26Establish hbalanceL171–180
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
27Use earlier factsL181–181
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L181
exact hcount_decomp_witness_witness_right_left
28Establish hinnerL182–182
Establish this local claim before using it. It is not an additional assumption.
- L182
have hinner : x3 + (x7 + (x8 + (x9 + x1))) = x8 + (x3 + (x9 + (x7 + x1)))
29Establish hleft_assocL183–185
30Establish hshuffleL186–187
31Establish hswapL188–196
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
32Establish hpermuteL197–200
33Establish hright_assocL201–209
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
34Separate the logical casesL210–211
35Calculate and transport equalitiesL212–219
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L212
rewrite htotal_decomp_witness_witness_right_right - L213
rewrite hleft_decomp_witness_witness_right_right - L214
rewrite hright_decomp_witness_witness_right_right - L215
rewrite hcount_decomp_witness_witness_right_right_right - L216
rewrite hbalance - L217
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_left_left - L218
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_left_right - L219
simp [add_assoc, add_comm]
36Separate the logical casesL220–220
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L220
cases hterminal_witness_witness_witness_witness_right_right_right_right_right
37Calculate and transport equalitiesL221–228
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L221
rewrite htotal_decomp_witness_witness_right_right - L222
rewrite hleft_decomp_witness_witness_right_right - L223
rewrite hright_decomp_witness_witness_right_right - L224
rewrite hcount_decomp_witness_witness_right_right_right - L225
rewrite hbalance - L226
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_right_left - L227
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_right_right - L228
simp [add_assoc, add_comm]
Original exact command ledger · 228 lines
- 0001
intro lb - 0002
intro lc - 0003
intro rb - 0004
intro rc - 0005
intro tb - 0006
intro tc - 0007
intro cb - 0008
intro cc - 0009
induction l - 0010
intro L - 0011
intro M - 0012
intro T - 0013
intro E - 0014
intro hleft - 0015
intro hright - 0016
intro htotal - 0017
intro hcarry - 0018
intro hcount - 0019
have hL : L = 0 - 0020
specialize beta_sum_zero lb - 0021
specialize beta_sum_zero lc - 0022
specialize beta_sum_zero L - 0023
apply beta_sum_zero - 0024
exact hleft - 0025
have hM : M = 0 - 0026
specialize beta_sum_zero rb - 0027
specialize beta_sum_zero rc - 0028
specialize beta_sum_zero M - 0029
apply beta_sum_zero - 0030
exact hright - 0031
have hT : T = 0 - 0032
specialize beta_sum_zero tb - 0033
specialize beta_sum_zero tc - 0034
specialize beta_sum_zero T - 0035
apply beta_sum_zero - 0036
exact htotal - 0037
have hE : E = 0 - 0038
specialize bit_count_zero cb - 0039
specialize bit_count_zero cc - 0040
specialize bit_count_zero 0 - 0041
specialize bit_count_zero E - 0042
apply bit_count_zero - 0043
refl - 0044
exact hcount - 0045
rewrite hT - 0046
rewrite hL - 0047
rewrite hM - 0048
rewrite hE - 0049
simp - 0050
intro L - 0051
intro M - 0052
intro T - 0053
intro E - 0054
intro hleft - 0055
intro hright - 0056
intro htotal - 0057
intro hcarry - 0058
intro hcount - 0059
have hleft_decomp : exists z u. (((exists fs_h_kmcsace_left_decomp_entry. fs_h_kmcsace_left_decomp_entry + S (z) = S ((S (l)) * lc)) /\ exists fs_q_kmcsace_left_decomp_entry. lb = fs_q_kmcsace_left_decomp_entry * S ((S (l)) * lc) + (z))) /\ ((exists fs_u_kmcsace_left_decomp_prefix fs_v_kmcsace_left_decomp_prefix. ((((exists fs_h_kmcsace_left_decomp_prefix_body_start. fs_h_kmcsace_left_decomp_prefix_body_start + S (0) = S ((S (0)) * fs_v_kmcsace_left_decomp_prefix)) /\ exists fs_q_kmcsace_left_decomp_prefix_body_start. fs_u_kmcsace_left_decomp_prefix = fs_q_kmcsace_left_decomp_prefix_body_start * S ((S (0)) * fs_v_kmcsace_left_decomp_prefix) + (0))) /\ ((((exists fs_h_kmcsace_left_decomp_prefix_body_terminal. fs_h_kmcsace_left_decomp_prefix_body_terminal + S (u) = S ((S (l)) * fs_v_kmcsace_left_decomp_prefix)) /\ exists fs_q_kmcsace_left_decomp_prefix_body_terminal. fs_u_kmcsace_left_decomp_prefix = fs_q_kmcsace_left_decomp_prefix_body_terminal * S ((S (l)) * fs_v_kmcsace_left_decomp_prefix) + (u))) /\ forall fs_i_kmcsace_left_decomp_prefix_body_steps. (exists fs_lt_kmcsace_left_decomp_prefix_body_steps_bound. fs_lt_kmcsace_left_decomp_prefix_body_steps_bound + S fs_i_kmcsace_left_decomp_prefix_body_steps = l) -> exists fs_a_kmcsace_left_decomp_prefix_body_steps fs_r_kmcsace_left_decomp_prefix_body_steps fs_s_kmcsace_left_decomp_prefix_body_steps. ((((exists fs_h_kmcsace_left_decomp_prefix_body_steps_summand. fs_h_kmcsace_left_decomp_prefix_body_steps_summand + S (fs_a_kmcsace_left_decomp_prefix_body_steps) = S ((S (fs_i_kmcsace_left_decomp_prefix_body_steps)) * lc)) /\ exists fs_q_kmcsace_left_decomp_prefix_body_steps_summand. lb = fs_q_kmcsace_left_decomp_prefix_body_steps_summand * S ((S (fs_i_kmcsace_left_decomp_prefix_body_steps)) * lc) + (fs_a_kmcsace_left_decomp_prefix_body_steps))) /\ ((((exists fs_h_kmcsace_left_decomp_prefix_body_steps_partial. fs_h_kmcsace_left_decomp_prefix_body_steps_partial + S (fs_r_kmcsace_left_decomp_prefix_body_steps) = S ((S (fs_i_kmcsace_left_decomp_prefix_body_steps)) * fs_v_kmcsace_left_decomp_prefix)) /\ exists fs_q_kmcsace_left_decomp_prefix_body_steps_partial. fs_u_kmcsace_left_decomp_prefix = fs_q_kmcsace_left_decomp_prefix_body_steps_partial * S ((S (fs_i_kmcsace_left_decomp_prefix_body_steps)) * fs_v_kmcsace_left_decomp_prefix) + (fs_r_kmcsace_left_decomp_prefix_body_steps))) /\ ((((exists fs_h_kmcsace_left_decomp_prefix_body_steps_successor. fs_h_kmcsace_left_decomp_prefix_body_steps_successor + S (fs_s_kmcsace_left_decomp_prefix_body_steps) = S ((S (S fs_i_kmcsace_left_decomp_prefix_body_steps)) * fs_v_kmcsace_left_decomp_prefix)) /\ exists fs_q_kmcsace_left_decomp_prefix_body_steps_successor. fs_u_kmcsace_left_decomp_prefix = fs_q_kmcsace_left_decomp_prefix_body_steps_successor * S ((S (S fs_i_kmcsace_left_decomp_prefix_body_steps)) * fs_v_kmcsace_left_decomp_prefix) + (fs_s_kmcsace_left_decomp_prefix_body_steps))) /\ fs_s_kmcsace_left_decomp_prefix_body_steps = fs_r_kmcsace_left_decomp_prefix_body_steps + fs_a_kmcsace_left_decomp_prefix_body_steps)))))) /\ L = u + z) - 0060
specialize beta_sum_succ_decompose lb - 0061
specialize beta_sum_succ_decompose lc - 0062
specialize beta_sum_succ_decompose l - 0063
specialize beta_sum_succ_decompose L - 0064
apply beta_sum_succ_decompose - 0065
exact hleft - 0066
cases hleft_decomp - 0067
cases hleft_decomp_witness - 0068
cases hleft_decomp_witness_witness - 0069
cases hleft_decomp_witness_witness_right - 0070
have hright_decomp : exists z u. (((exists fs_h_kmcsace_right_decomp_entry. fs_h_kmcsace_right_decomp_entry + S (z) = S ((S (l)) * rc)) /\ exists fs_q_kmcsace_right_decomp_entry. rb = fs_q_kmcsace_right_decomp_entry * S ((S (l)) * rc) + (z))) /\ ((exists fs_u_kmcsace_right_decomp_prefix fs_v_kmcsace_right_decomp_prefix. ((((exists fs_h_kmcsace_right_decomp_prefix_body_start. fs_h_kmcsace_right_decomp_prefix_body_start + S (0) = S ((S (0)) * fs_v_kmcsace_right_decomp_prefix)) /\ exists fs_q_kmcsace_right_decomp_prefix_body_start. fs_u_kmcsace_right_decomp_prefix = fs_q_kmcsace_right_decomp_prefix_body_start * S ((S (0)) * fs_v_kmcsace_right_decomp_prefix) + (0))) /\ ((((exists fs_h_kmcsace_right_decomp_prefix_body_terminal. fs_h_kmcsace_right_decomp_prefix_body_terminal + S (u) = S ((S (l)) * fs_v_kmcsace_right_decomp_prefix)) /\ exists fs_q_kmcsace_right_decomp_prefix_body_terminal. fs_u_kmcsace_right_decomp_prefix = fs_q_kmcsace_right_decomp_prefix_body_terminal * S ((S (l)) * fs_v_kmcsace_right_decomp_prefix) + (u))) /\ forall fs_i_kmcsace_right_decomp_prefix_body_steps. (exists fs_lt_kmcsace_right_decomp_prefix_body_steps_bound. fs_lt_kmcsace_right_decomp_prefix_body_steps_bound + S fs_i_kmcsace_right_decomp_prefix_body_steps = l) -> exists fs_a_kmcsace_right_decomp_prefix_body_steps fs_r_kmcsace_right_decomp_prefix_body_steps fs_s_kmcsace_right_decomp_prefix_body_steps. ((((exists fs_h_kmcsace_right_decomp_prefix_body_steps_summand. fs_h_kmcsace_right_decomp_prefix_body_steps_summand + S (fs_a_kmcsace_right_decomp_prefix_body_steps) = S ((S (fs_i_kmcsace_right_decomp_prefix_body_steps)) * rc)) /\ exists fs_q_kmcsace_right_decomp_prefix_body_steps_summand. rb = fs_q_kmcsace_right_decomp_prefix_body_steps_summand * S ((S (fs_i_kmcsace_right_decomp_prefix_body_steps)) * rc) + (fs_a_kmcsace_right_decomp_prefix_body_steps))) /\ ((((exists fs_h_kmcsace_right_decomp_prefix_body_steps_partial. fs_h_kmcsace_right_decomp_prefix_body_steps_partial + S (fs_r_kmcsace_right_decomp_prefix_body_steps) = S ((S (fs_i_kmcsace_right_decomp_prefix_body_steps)) * fs_v_kmcsace_right_decomp_prefix)) /\ exists fs_q_kmcsace_right_decomp_prefix_body_steps_partial. fs_u_kmcsace_right_decomp_prefix = fs_q_kmcsace_right_decomp_prefix_body_steps_partial * S ((S (fs_i_kmcsace_right_decomp_prefix_body_steps)) * fs_v_kmcsace_right_decomp_prefix) + (fs_r_kmcsace_right_decomp_prefix_body_steps))) /\ ((((exists fs_h_kmcsace_right_decomp_prefix_body_steps_successor. fs_h_kmcsace_right_decomp_prefix_body_steps_successor + S (fs_s_kmcsace_right_decomp_prefix_body_steps) = S ((S (S fs_i_kmcsace_right_decomp_prefix_body_steps)) * fs_v_kmcsace_right_decomp_prefix)) /\ exists fs_q_kmcsace_right_decomp_prefix_body_steps_successor. fs_u_kmcsace_right_decomp_prefix = fs_q_kmcsace_right_decomp_prefix_body_steps_successor * S ((S (S fs_i_kmcsace_right_decomp_prefix_body_steps)) * fs_v_kmcsace_right_decomp_prefix) + (fs_s_kmcsace_right_decomp_prefix_body_steps))) /\ fs_s_kmcsace_right_decomp_prefix_body_steps = fs_r_kmcsace_right_decomp_prefix_body_steps + fs_a_kmcsace_right_decomp_prefix_body_steps)))))) /\ M = u + z) - 0071
specialize beta_sum_succ_decompose rb - 0072
specialize beta_sum_succ_decompose rc - 0073
specialize beta_sum_succ_decompose l - 0074
specialize beta_sum_succ_decompose M - 0075
apply beta_sum_succ_decompose - 0076
exact hright - 0077
cases hright_decomp - 0078
cases hright_decomp_witness - 0079
cases hright_decomp_witness_witness - 0080
cases hright_decomp_witness_witness_right - 0081
have htotal_decomp : exists z u. (((exists fs_h_kmcsace_total_decomp_entry. fs_h_kmcsace_total_decomp_entry + S (z) = S ((S (l)) * tc)) /\ exists fs_q_kmcsace_total_decomp_entry. tb = fs_q_kmcsace_total_decomp_entry * S ((S (l)) * tc) + (z))) /\ ((exists fs_u_kmcsace_total_decomp_prefix fs_v_kmcsace_total_decomp_prefix. ((((exists fs_h_kmcsace_total_decomp_prefix_body_start. fs_h_kmcsace_total_decomp_prefix_body_start + S (0) = S ((S (0)) * fs_v_kmcsace_total_decomp_prefix)) /\ exists fs_q_kmcsace_total_decomp_prefix_body_start. fs_u_kmcsace_total_decomp_prefix = fs_q_kmcsace_total_decomp_prefix_body_start * S ((S (0)) * fs_v_kmcsace_total_decomp_prefix) + (0))) /\ ((((exists fs_h_kmcsace_total_decomp_prefix_body_terminal. fs_h_kmcsace_total_decomp_prefix_body_terminal + S (u) = S ((S (l)) * fs_v_kmcsace_total_decomp_prefix)) /\ exists fs_q_kmcsace_total_decomp_prefix_body_terminal. fs_u_kmcsace_total_decomp_prefix = fs_q_kmcsace_total_decomp_prefix_body_terminal * S ((S (l)) * fs_v_kmcsace_total_decomp_prefix) + (u))) /\ forall fs_i_kmcsace_total_decomp_prefix_body_steps. (exists fs_lt_kmcsace_total_decomp_prefix_body_steps_bound. fs_lt_kmcsace_total_decomp_prefix_body_steps_bound + S fs_i_kmcsace_total_decomp_prefix_body_steps = l) -> exists fs_a_kmcsace_total_decomp_prefix_body_steps fs_r_kmcsace_total_decomp_prefix_body_steps fs_s_kmcsace_total_decomp_prefix_body_steps. ((((exists fs_h_kmcsace_total_decomp_prefix_body_steps_summand. fs_h_kmcsace_total_decomp_prefix_body_steps_summand + S (fs_a_kmcsace_total_decomp_prefix_body_steps) = S ((S (fs_i_kmcsace_total_decomp_prefix_body_steps)) * tc)) /\ exists fs_q_kmcsace_total_decomp_prefix_body_steps_summand. tb = fs_q_kmcsace_total_decomp_prefix_body_steps_summand * S ((S (fs_i_kmcsace_total_decomp_prefix_body_steps)) * tc) + (fs_a_kmcsace_total_decomp_prefix_body_steps))) /\ ((((exists fs_h_kmcsace_total_decomp_prefix_body_steps_partial. fs_h_kmcsace_total_decomp_prefix_body_steps_partial + S (fs_r_kmcsace_total_decomp_prefix_body_steps) = S ((S (fs_i_kmcsace_total_decomp_prefix_body_steps)) * fs_v_kmcsace_total_decomp_prefix)) /\ exists fs_q_kmcsace_total_decomp_prefix_body_steps_partial. fs_u_kmcsace_total_decomp_prefix = fs_q_kmcsace_total_decomp_prefix_body_steps_partial * S ((S (fs_i_kmcsace_total_decomp_prefix_body_steps)) * fs_v_kmcsace_total_decomp_prefix) + (fs_r_kmcsace_total_decomp_prefix_body_steps))) /\ ((((exists fs_h_kmcsace_total_decomp_prefix_body_steps_successor. fs_h_kmcsace_total_decomp_prefix_body_steps_successor + S (fs_s_kmcsace_total_decomp_prefix_body_steps) = S ((S (S fs_i_kmcsace_total_decomp_prefix_body_steps)) * fs_v_kmcsace_total_decomp_prefix)) /\ exists fs_q_kmcsace_total_decomp_prefix_body_steps_successor. fs_u_kmcsace_total_decomp_prefix = fs_q_kmcsace_total_decomp_prefix_body_steps_successor * S ((S (S fs_i_kmcsace_total_decomp_prefix_body_steps)) * fs_v_kmcsace_total_decomp_prefix) + (fs_s_kmcsace_total_decomp_prefix_body_steps))) /\ fs_s_kmcsace_total_decomp_prefix_body_steps = fs_r_kmcsace_total_decomp_prefix_body_steps + fs_a_kmcsace_total_decomp_prefix_body_steps)))))) /\ T = u + z) - 0082
specialize beta_sum_succ_decompose tb - 0083
specialize beta_sum_succ_decompose tc - 0084
specialize beta_sum_succ_decompose l - 0085
specialize beta_sum_succ_decompose T - 0086
apply beta_sum_succ_decompose - 0087
exact htotal - 0088
cases htotal_decomp - 0089
cases htotal_decomp_witness - 0090
cases htotal_decomp_witness_witness - 0091
cases htotal_decomp_witness_witness_right - 0092
have hcount_decomp : exists bit z. (((exists fs_h_kmcsace_count_last. fs_h_kmcsace_count_last + S (bit) = S ((S (l)) * cc)) /\ exists fs_q_kmcsace_count_last. cb = fs_q_kmcsace_count_last * S ((S (l)) * cc) + (bit))) /\ ((((exists ff_u_kmcsace_count_previous_sum ff_v_kmcsace_count_previous_sum. ((((exists ff_h_kmcsace_count_previous_sum_start. ff_h_kmcsace_count_previous_sum_start + S (0) = S ((S (0)) * ff_v_kmcsace_count_previous_sum)) /\ exists ff_q_kmcsace_count_previous_sum_start. ff_u_kmcsace_count_previous_sum = ff_q_kmcsace_count_previous_sum_start * S ((S (0)) * ff_v_kmcsace_count_previous_sum) + (0))) /\ ((((exists ff_h_kmcsace_count_previous_sum_terminal. ff_h_kmcsace_count_previous_sum_terminal + S (z) = S ((S (l)) * ff_v_kmcsace_count_previous_sum)) /\ exists ff_q_kmcsace_count_previous_sum_terminal. ff_u_kmcsace_count_previous_sum = ff_q_kmcsace_count_previous_sum_terminal * S ((S (l)) * ff_v_kmcsace_count_previous_sum) + (z))) /\ forall ff_i_kmcsace_count_previous_sum. (exists ff_lt_kmcsace_count_previous_sum_bound. ff_lt_kmcsace_count_previous_sum_bound + S ff_i_kmcsace_count_previous_sum = l) -> exists ff_a_kmcsace_count_previous_sum ff_r_kmcsace_count_previous_sum ff_s_kmcsace_count_previous_sum. ((((exists ff_h_kmcsace_count_previous_sum_summand. ff_h_kmcsace_count_previous_sum_summand + S (ff_a_kmcsace_count_previous_sum) = S ((S (ff_i_kmcsace_count_previous_sum)) * cc)) /\ exists ff_q_kmcsace_count_previous_sum_summand. cb = ff_q_kmcsace_count_previous_sum_summand * S ((S (ff_i_kmcsace_count_previous_sum)) * cc) + (ff_a_kmcsace_count_previous_sum))) /\ ((((exists ff_h_kmcsace_count_previous_sum_partial. ff_h_kmcsace_count_previous_sum_partial + S (ff_r_kmcsace_count_previous_sum) = S ((S (ff_i_kmcsace_count_previous_sum)) * ff_v_kmcsace_count_previous_sum)) /\ exists ff_q_kmcsace_count_previous_sum_partial. ff_u_kmcsace_count_previous_sum = ff_q_kmcsace_count_previous_sum_partial * S ((S (ff_i_kmcsace_count_previous_sum)) * ff_v_kmcsace_count_previous_sum) + (ff_r_kmcsace_count_previous_sum))) /\ ((((exists ff_h_kmcsace_count_previous_sum_successor. ff_h_kmcsace_count_previous_sum_successor + S (ff_s_kmcsace_count_previous_sum) = S ((S (S ff_i_kmcsace_count_previous_sum)) * ff_v_kmcsace_count_previous_sum)) /\ exists ff_q_kmcsace_count_previous_sum_successor. ff_u_kmcsace_count_previous_sum = ff_q_kmcsace_count_previous_sum_successor * S ((S (S ff_i_kmcsace_count_previous_sum)) * ff_v_kmcsace_count_previous_sum) + (ff_s_kmcsace_count_previous_sum))) /\ ff_s_kmcsace_count_previous_sum = ff_r_kmcsace_count_previous_sum + ff_a_kmcsace_count_previous_sum)))))) /\ (forall ff_i_kmcsace_count_previous_bits. (exists ff_lt_kmcsace_count_previous_bits_bound. ff_lt_kmcsace_count_previous_bits_bound + S ff_i_kmcsace_count_previous_bits = l) -> exists ff_bit_kmcsace_count_previous_bits. ((((exists ff_h_kmcsace_count_previous_bits_decoded. ff_h_kmcsace_count_previous_bits_decoded + S (ff_bit_kmcsace_count_previous_bits) = S ((S (ff_i_kmcsace_count_previous_bits)) * cc)) /\ exists ff_q_kmcsace_count_previous_bits_decoded. cb = ff_q_kmcsace_count_previous_bits_decoded * S ((S (ff_i_kmcsace_count_previous_bits)) * cc) + (ff_bit_kmcsace_count_previous_bits))) /\ (ff_bit_kmcsace_count_previous_bits = 0 \/ ff_bit_kmcsace_count_previous_bits = 1))))) /\ ((bit = 0 \/ bit = 1) /\ E = z + bit)) - 0093
specialize bit_count_succ_decompose cb - 0094
specialize bit_count_succ_decompose cc - 0095
specialize bit_count_succ_decompose l - 0096
specialize bit_count_succ_decompose (S l) - 0097
specialize bit_count_succ_decompose E - 0098
apply bit_count_succ_decompose - 0099
refl - 0100
exact hcount - 0101
cases hcount_decomp - 0102
cases hcount_decomp_witness - 0103
cases hcount_decomp_witness_witness - 0104
cases hcount_decomp_witness_witness_right - 0105
cases hcount_decomp_witness_witness_right_right - 0106
have hterminal : exists q s Q bit. (((exists fs_h_kmcsace_terminal_left. fs_h_kmcsace_terminal_left + S (q) = S ((S (l)) * lc)) /\ exists fs_q_kmcsace_terminal_left. lb = fs_q_kmcsace_terminal_left * S ((S (l)) * lc) + (q))) /\ ((((exists fs_h_kmcsace_terminal_right. fs_h_kmcsace_terminal_right + S (s) = S ((S (l)) * rc)) /\ exists fs_q_kmcsace_terminal_right. rb = fs_q_kmcsace_terminal_right * S ((S (l)) * rc) + (s))) /\ ((((exists fs_h_kmcsace_terminal_total. fs_h_kmcsace_terminal_total + S (Q) = S ((S (l)) * tc)) /\ exists fs_q_kmcsace_terminal_total. tb = fs_q_kmcsace_terminal_total * S ((S (l)) * tc) + (Q))) /\ ((((exists fs_h_kmcsace_terminal_bit. fs_h_kmcsace_terminal_bit + S (bit) = S ((S (l)) * cc)) /\ exists fs_q_kmcsace_terminal_bit. cb = fs_q_kmcsace_terminal_bit * S ((S (l)) * cc) + (bit))) /\ (((bit = 0 /\ Q = q + s) \/ (bit = 1 /\ Q = S (q + s))))))) - 0107
specialize hcarry l - 0108
apply hcarry - 0109
specialize le_refl (S l) - 0110
exact le_refl - 0111
cases hterminal - 0112
cases hterminal_witness - 0113
cases hterminal_witness_witness - 0114
cases hterminal_witness_witness_witness - 0115
cases hterminal_witness_witness_witness_witness - 0116
cases hterminal_witness_witness_witness_witness_right - 0117
cases hterminal_witness_witness_witness_witness_right_right - 0118
cases hterminal_witness_witness_witness_witness_right_right_right - 0119
have hq : x = x8 - 0120
specialize beta_at_unique lb - 0121
specialize beta_at_unique lc - 0122
specialize beta_at_unique l - 0123
specialize beta_at_unique x - 0124
specialize beta_at_unique x8 - 0125
apply beta_at_unique - 0126
exact hleft_decomp_witness_witness_left - 0127
exact hterminal_witness_witness_witness_witness_left - 0128
have hs : x2 = x9 - 0129
specialize beta_at_unique rb - 0130
specialize beta_at_unique rc - 0131
specialize beta_at_unique l - 0132
specialize beta_at_unique x2 - 0133
specialize beta_at_unique x9 - 0134
apply beta_at_unique - 0135
exact hright_decomp_witness_witness_left - 0136
exact hterminal_witness_witness_witness_witness_right_left - 0137
have hQ : x4 = x10 - 0138
specialize beta_at_unique tb - 0139
specialize beta_at_unique tc - 0140
specialize beta_at_unique l - 0141
specialize beta_at_unique x4 - 0142
specialize beta_at_unique x10 - 0143
apply beta_at_unique - 0144
exact htotal_decomp_witness_witness_left - 0145
exact hterminal_witness_witness_witness_witness_right_right_left - 0146
have hbit : x6 = x11 - 0147
specialize beta_at_unique cb - 0148
specialize beta_at_unique cc - 0149
specialize beta_at_unique l - 0150
specialize beta_at_unique x6 - 0151
specialize beta_at_unique x11 - 0152
apply beta_at_unique - 0153
exact hcount_decomp_witness_witness_left - 0154
exact hterminal_witness_witness_witness_witness_right_right_right_left - 0155
rewrite hq at hleft_decomp_witness_witness_right_right - 0156
rewrite hs at hright_decomp_witness_witness_right_right - 0157
rewrite hQ at htotal_decomp_witness_witness_right_right - 0158
rewrite hbit at hcount_decomp_witness_witness_right_right_right - 0159
have hprefix : forall kmc_index_kmcsace_restricted. (exists bcf_lt_gap_kmcsace_restricted_bound. bcf_lt_gap_kmcsace_restricted_bound + S (kmc_index_kmcsace_restricted) = l) -> exists kmc_left_kmcsace_restricted kmc_right_kmcsace_restricted kmc_total_kmcsace_restricted kmc_bit_kmcsace_restricted. (((exists fs_h_kmcsace_restricted_left. fs_h_kmcsace_restricted_left + S (kmc_left_kmcsace_restricted) = S ((S (kmc_index_kmcsace_restricted)) * lc)) /\ exists fs_q_kmcsace_restricted_left. lb = fs_q_kmcsace_restricted_left * S ((S (kmc_index_kmcsace_restricted)) * lc) + (kmc_left_kmcsace_restricted))) /\ ((((exists fs_h_kmcsace_restricted_right. fs_h_kmcsace_restricted_right + S (kmc_right_kmcsace_restricted) = S ((S (kmc_index_kmcsace_restricted)) * rc)) /\ exists fs_q_kmcsace_restricted_right. rb = fs_q_kmcsace_restricted_right * S ((S (kmc_index_kmcsace_restricted)) * rc) + (kmc_right_kmcsace_restricted))) /\ ((((exists fs_h_kmcsace_restricted_total. fs_h_kmcsace_restricted_total + S (kmc_total_kmcsace_restricted) = S ((S (kmc_index_kmcsace_restricted)) * tc)) /\ exists fs_q_kmcsace_restricted_total. tb = fs_q_kmcsace_restricted_total * S ((S (kmc_index_kmcsace_restricted)) * tc) + (kmc_total_kmcsace_restricted))) /\ ((((exists fs_h_kmcsace_restricted_bit. fs_h_kmcsace_restricted_bit + S (kmc_bit_kmcsace_restricted) = S ((S (kmc_index_kmcsace_restricted)) * cc)) /\ exists fs_q_kmcsace_restricted_bit. cb = fs_q_kmcsace_restricted_bit * S ((S (kmc_index_kmcsace_restricted)) * cc) + (kmc_bit_kmcsace_restricted))) /\ (((kmc_bit_kmcsace_restricted = 0 /\ kmc_total_kmcsace_restricted = kmc_left_kmcsace_restricted + kmc_right_kmcsace_restricted) \/ (kmc_bit_kmcsace_restricted = 1 /\ kmc_total_kmcsace_restricted = S (kmc_left_kmcsace_restricted + kmc_right_kmcsace_restricted))))))) - 0160
specialize add_quotient_carry_prefix_restrict lb - 0161
specialize add_quotient_carry_prefix_restrict lc - 0162
specialize add_quotient_carry_prefix_restrict rb - 0163
specialize add_quotient_carry_prefix_restrict rc - 0164
specialize add_quotient_carry_prefix_restrict tb - 0165
specialize add_quotient_carry_prefix_restrict tc - 0166
specialize add_quotient_carry_prefix_restrict cb - 0167
specialize add_quotient_carry_prefix_restrict cc - 0168
specialize add_quotient_carry_prefix_restrict l - 0169
apply add_quotient_carry_prefix_restrict - 0170
exact hcarry - 0171
have hbalance : x5 = (x1 + x3) + x7 - 0172
specialize IH x1 - 0173
specialize IH x3 - 0174
specialize IH x5 - 0175
specialize IH x7 - 0176
apply IH - 0177
exact hleft_decomp_witness_witness_right_left - 0178
exact hright_decomp_witness_witness_right_left - 0179
exact htotal_decomp_witness_witness_right_left - 0180
exact hprefix - 0181
exact hcount_decomp_witness_witness_right_left - 0182
have hinner : x3 + (x7 + (x8 + (x9 + x1))) = x8 + (x3 + (x9 + (x7 + x1))) - 0183
have hleft_assoc : x3 + (x7 + (x8 + (x9 + x1))) = (x3 + x7) + (x8 + (x9 + x1)) - 0184
symm - 0185
apply add_assoc - 0186
have hshuffle : (x3 + x7) + (x8 + (x9 + x1)) = (x3 + x8) + (x7 + (x9 + x1)) - 0187
apply add_shuffle_middle - 0188
have hswap : x7 + (x9 + x1) = x9 + (x7 + x1) - 0189
trans (x7 + x9) + x1 - 0190
symm - 0191
apply add_assoc - 0192
trans (x9 + x7) + x1 - 0193
congr - 0194
apply add_comm - 0195
refl - 0196
apply add_assoc - 0197
have hpermute : (x3 + x8) + (x7 + (x9 + x1)) = (x8 + x3) + (x9 + (x7 + x1)) - 0198
congr - 0199
apply add_comm - 0200
exact hswap - 0201
have hright_assoc : (x8 + x3) + (x9 + (x7 + x1)) = x8 + (x3 + (x9 + (x7 + x1))) - 0202
apply add_assoc - 0203
trans (x3 + x7) + (x8 + (x9 + x1)) - 0204
exact hleft_assoc - 0205
trans (x3 + x8) + (x7 + (x9 + x1)) - 0206
exact hshuffle - 0207
trans (x8 + x3) + (x9 + (x7 + x1)) - 0208
exact hpermute - 0209
exact hright_assoc - 0210
cases hterminal_witness_witness_witness_witness_right_right_right_right - 0211
cases hterminal_witness_witness_witness_witness_right_right_right_right_left - 0212
rewrite htotal_decomp_witness_witness_right_right - 0213
rewrite hleft_decomp_witness_witness_right_right - 0214
rewrite hright_decomp_witness_witness_right_right - 0215
rewrite hcount_decomp_witness_witness_right_right_right - 0216
rewrite hbalance - 0217
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_left_left - 0218
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_left_right - 0219
simp [add_assoc, add_comm] - 0220
cases hterminal_witness_witness_witness_witness_right_right_right_right_right - 0221
rewrite htotal_decomp_witness_witness_right_right - 0222
rewrite hleft_decomp_witness_witness_right_right - 0223
rewrite hright_decomp_witness_witness_right_right - 0224
rewrite hcount_decomp_witness_witness_right_right_right - 0225
rewrite hbalance - 0226
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_right_left - 0227
rewrite hterminal_witness_witness_witness_witness_right_right_right_right_right_right - 0228
simp [add_assoc, add_comm]