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 u b c d f l k L. (forall pc_index_cut_count_bits. (exists pc_lt_cut_count_bits_bound. pc_lt_cut_count_bits_bound + S (pc_index_cut_count_bits) = (l)) -> exists pc_bit_cut_count_bits. (((exists fs_h_pc_cut_count_bits_entry. fs_h_pc_cut_count_bits_entry + S (pc_bit_cut_count_bits) = S ((S (pc_index_cut_count_bits)) * c)) /\ exists fs_q_pc_cut_count_bits_entry. b = fs_q_pc_cut_count_bits_entry * S ((S (pc_index_cut_count_bits)) * c) + (pc_bit_cut_count_bits))) /\ (pc_bit_cut_count_bits = 0 \/ pc_bit_cut_count_bits = 1)) -> (forall pc_index_cut_count_source. (exists pc_lt_cut_count_source_bound. pc_lt_cut_count_source_bound + S (pc_index_cut_count_source) = (l)) -> exists pc_bit_cut_count_source. (((exists fs_h_pc_cut_count_source_entry. fs_h_pc_cut_count_source_entry + S (pc_bit_cut_count_source) = S ((S (pc_index_cut_count_source)) * f)) /\ exists fs_q_pc_cut_count_source_entry. d = fs_q_pc_cut_count_source_entry * S ((S (pc_index_cut_count_source)) * f) + (pc_bit_cut_count_source))) /\ ((((exists pc_lt_cut_count_source_choice_below. pc_lt_cut_count_source_choice_below + S (pc_index_cut_count_source) = (u)) /\ pc_bit_cut_count_source = 0) \/ ((exists pc_le_cut_count_source_choice_above. pc_le_cut_count_source_choice_above + (u) = (pc_index_cut_count_source)) /\ (((exists fs_h_pc_cut_count_source_choice_source. fs_h_pc_cut_count_source_choice_source + S (pc_bit_cut_count_source) = S ((S (pc_index_cut_count_source)) * c)) /\ exists fs_q_pc_cut_count_source_choice_source. b = fs_q_pc_cut_count_source_choice_source * S ((S (pc_index_cut_count_source)) * c) + (pc_bit_cut_count_source))))))) -> (exists fs_u_pc_cut_count_whole fs_v_pc_cut_count_whole. ((((exists fs_h_pc_cut_count_whole_body_start. fs_h_pc_cut_count_whole_body_start + S (0) = S ((S (0)) * fs_v_pc_cut_count_whole)) /\ exists fs_q_pc_cut_count_whole_body_start. fs_u_pc_cut_count_whole = fs_q_pc_cut_count_whole_body_start * S ((S (0)) * fs_v_pc_cut_count_whole) + (0))) /\ ((((exists fs_h_pc_cut_count_whole_body_terminal. fs_h_pc_cut_count_whole_body_terminal + S (k) = S ((S (l)) * fs_v_pc_cut_count_whole)) /\ exists fs_q_pc_cut_count_whole_body_terminal. fs_u_pc_cut_count_whole = fs_q_pc_cut_count_whole_body_terminal * S ((S (l)) * fs_v_pc_cut_count_whole) + (k))) /\ forall fs_i_pc_cut_count_whole_body_steps. (exists fs_lt_pc_cut_count_whole_body_steps_bound. fs_lt_pc_cut_count_whole_body_steps_bound + S fs_i_pc_cut_count_whole_body_steps = l) -> exists fs_a_pc_cut_count_whole_body_steps fs_r_pc_cut_count_whole_body_steps fs_s_pc_cut_count_whole_body_steps. ((((exists fs_h_pc_cut_count_whole_body_steps_summand. fs_h_pc_cut_count_whole_body_steps_summand + S (fs_a_pc_cut_count_whole_body_steps) = S ((S (fs_i_pc_cut_count_whole_body_steps)) * c)) /\ exists fs_q_pc_cut_count_whole_body_steps_summand. b = fs_q_pc_cut_count_whole_body_steps_summand * S ((S (fs_i_pc_cut_count_whole_body_steps)) * c) + (fs_a_pc_cut_count_whole_body_steps))) /\ ((((exists fs_h_pc_cut_count_whole_body_steps_partial. fs_h_pc_cut_count_whole_body_steps_partial + S (fs_r_pc_cut_count_whole_body_steps) = S ((S (fs_i_pc_cut_count_whole_body_steps)) * fs_v_pc_cut_count_whole)) /\ exists fs_q_pc_cut_count_whole_body_steps_partial. fs_u_pc_cut_count_whole = fs_q_pc_cut_count_whole_body_steps_partial * S ((S (fs_i_pc_cut_count_whole_body_steps)) * fs_v_pc_cut_count_whole) + (fs_r_pc_cut_count_whole_body_steps))) /\ ((((exists fs_h_pc_cut_count_whole_body_steps_successor. fs_h_pc_cut_count_whole_body_steps_successor + S (fs_s_pc_cut_count_whole_body_steps) = S ((S (S fs_i_pc_cut_count_whole_body_steps)) * fs_v_pc_cut_count_whole)) /\ exists fs_q_pc_cut_count_whole_body_steps_successor. fs_u_pc_cut_count_whole = fs_q_pc_cut_count_whole_body_steps_successor * S ((S (S fs_i_pc_cut_count_whole_body_steps)) * fs_v_pc_cut_count_whole) + (fs_s_pc_cut_count_whole_body_steps))) /\ fs_s_pc_cut_count_whole_body_steps = fs_r_pc_cut_count_whole_body_steps + fs_a_pc_cut_count_whole_body_steps)))))) -> (exists fs_u_pc_cut_count_tail fs_v_pc_cut_count_tail. ((((exists fs_h_pc_cut_count_tail_body_start. fs_h_pc_cut_count_tail_body_start + S (0) = S ((S (0)) * fs_v_pc_cut_count_tail)) /\ exists fs_q_pc_cut_count_tail_body_start. fs_u_pc_cut_count_tail = fs_q_pc_cut_count_tail_body_start * S ((S (0)) * fs_v_pc_cut_count_tail) + (0))) /\ ((((exists fs_h_pc_cut_count_tail_body_terminal. fs_h_pc_cut_count_tail_body_terminal + S (L) = S ((S (l)) * fs_v_pc_cut_count_tail)) /\ exists fs_q_pc_cut_count_tail_body_terminal. fs_u_pc_cut_count_tail = fs_q_pc_cut_count_tail_body_terminal * S ((S (l)) * fs_v_pc_cut_count_tail) + (L))) /\ forall fs_i_pc_cut_count_tail_body_steps. (exists fs_lt_pc_cut_count_tail_body_steps_bound. fs_lt_pc_cut_count_tail_body_steps_bound + S fs_i_pc_cut_count_tail_body_steps = l) -> exists fs_a_pc_cut_count_tail_body_steps fs_r_pc_cut_count_tail_body_steps fs_s_pc_cut_count_tail_body_steps. ((((exists fs_h_pc_cut_count_tail_body_steps_summand. fs_h_pc_cut_count_tail_body_steps_summand + S (fs_a_pc_cut_count_tail_body_steps) = S ((S (fs_i_pc_cut_count_tail_body_steps)) * f)) /\ exists fs_q_pc_cut_count_tail_body_steps_summand. d = fs_q_pc_cut_count_tail_body_steps_summand * S ((S (fs_i_pc_cut_count_tail_body_steps)) * f) + (fs_a_pc_cut_count_tail_body_steps))) /\ ((((exists fs_h_pc_cut_count_tail_body_steps_partial. fs_h_pc_cut_count_tail_body_steps_partial + S (fs_r_pc_cut_count_tail_body_steps) = S ((S (fs_i_pc_cut_count_tail_body_steps)) * fs_v_pc_cut_count_tail)) /\ exists fs_q_pc_cut_count_tail_body_steps_partial. fs_u_pc_cut_count_tail = fs_q_pc_cut_count_tail_body_steps_partial * S ((S (fs_i_pc_cut_count_tail_body_steps)) * fs_v_pc_cut_count_tail) + (fs_r_pc_cut_count_tail_body_steps))) /\ ((((exists fs_h_pc_cut_count_tail_body_steps_successor. fs_h_pc_cut_count_tail_body_steps_successor + S (fs_s_pc_cut_count_tail_body_steps) = S ((S (S fs_i_pc_cut_count_tail_body_steps)) * fs_v_pc_cut_count_tail)) /\ exists fs_q_pc_cut_count_tail_body_steps_successor. fs_u_pc_cut_count_tail = fs_q_pc_cut_count_tail_body_steps_successor * S ((S (S fs_i_pc_cut_count_tail_body_steps)) * fs_v_pc_cut_count_tail) + (fs_s_pc_cut_count_tail_body_steps))) /\ fs_s_pc_cut_count_tail_body_steps = fs_r_pc_cut_count_tail_body_steps + fs_a_pc_cut_count_tail_body_steps)))))) -> (exists pc_le_cut_count_result. pc_le_cut_count_result + (k) = (u + L))Constructive proof overview
Generated structural guide
The full bit count is at most the cutoff index plus the actual count above that index.
The unchanged tactic script uses 15 declared prerequisites and contains 141 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_sum_zero Stable theorem; checked-use authorized zero_le Stable theorem; checked-use authorized le_or_lt Stable theorem; checked-use authorized bit_count_bounded Stable theorem; checked-use authorized le_trans Stable theorem; checked-use authorized le_add_right Stable theorem; checked-use authorized beta_sum_succ_decompose Stable theorem; checked-use authorized PC0011 beta_cutoff_prefix_entry le_refl Stable theorem; checked-use authorized lt_not_le Stable theorem; checked-use authorized beta_at_unique Stable theorem; checked-use authorized all_bits_prefix_succ Stable theorem; checked-use authorized PC0010 beta_cutoff_prefix_drop_last add_le_add_right Stable theorem; checked-use authorized add_assoc Stable 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 (2)
01Fix variables and assumptionsL1–5
02Induction on lL6–12
03Establish hk0L13–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum zero.
04Fix variables and assumptionsL23–27
05Establish hsL28–31
06Separate the logical casesL32–32
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L32
cases hs
07Establish hdL33–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
08Separate the logical casesL40–43
09Establish heL44–50
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 casesL51–54
11Establish hlastL55–64
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta cutoff prefix entry.
- L55
have hlast : (((exists pc_lt_cut_count_choice_below. pc_lt_cut_count_choice_below + S (l) = (u)) /\ x2 = 0) \/ ((exists pc_le_cut_count_choice_above. pc_le_cut_count_choice_above + (u) = (l)) /\ (((exists fs_h_pc_cut_count_choice_source. fs_h_pc_cut_count_choice_source + S (x2) = S ((S (l)) * c)) /\ exists fs_q_pc_cut_count_choice_source. b = fs_q_pc_cut_count_choice_source * S ((S (l)) * c) + (x2))))) - L56
specialize beta_cutoff_prefix_entry u - L57
specialize beta_cutoff_prefix_entry b - L58
specialize beta_cutoff_prefix_entry c - L59
specialize beta_cutoff_prefix_entry d - L60
specialize beta_cutoff_prefix_entry f - L61
specialize beta_cutoff_prefix_entry (S l) - L62
specialize beta_cutoff_prefix_entry l - L63
specialize beta_cutoff_prefix_entry x2 - L64
apply beta_cutoff_prefix_entry
12Use earlier factsL65–68
13Separate the logical casesL69–71
14Use earlier factsL72–76
15Separate the logical casesL77–77
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L77
cases hlast_right
16Establish heqL78–86
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
17Establish hpreL87–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
18Use earlier factsL97–106
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L97
exact hb - L98
specialize beta_cutoff_prefix_drop_last u - L99
specialize beta_cutoff_prefix_drop_last b - L100
specialize beta_cutoff_prefix_drop_last c - L101
specialize beta_cutoff_prefix_drop_last d - L102
specialize beta_cutoff_prefix_drop_last f - L103
specialize beta_cutoff_prefix_drop_last l - L104
apply beta_cutoff_prefix_drop_last - L105
exact hc - L106
exact hd_witness_witness_right_left
19Use earlier factsL107–107
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L107
exact he_witness_witness_right_left
20Calculate and transport equalitiesL108–110
21Establish hassocL111–119
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
22Establish hsmallL120–129
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
- L120
have hsmall : exists g. g + k = u - L121
specialize le_trans k - L122
specialize le_trans (S l) - L123
specialize le_trans u - L124
apply le_trans - L125
specialize bit_count_bounded b - L126
specialize bit_count_bounded c - L127
specialize bit_count_bounded (S l) - L128
specialize bit_count_bounded k - L129
apply bit_count_bounded
23Separate the logical casesL130–130
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L130
split
24Use earlier factsL131–140
25Use earlier factsL141–141
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L141
apply le_add_right
Original exact command ledger · 141 lines
- 0001
intro u - 0002
intro b - 0003
intro c - 0004
intro d - 0005
intro f - 0006
induction l - 0007
intro k - 0008
intro L - 0009
intro hb - 0010
intro hc - 0011
intro hk - 0012
intro hL - 0013
have hk0 : k = 0 - 0014
specialize beta_sum_zero b - 0015
specialize beta_sum_zero c - 0016
specialize beta_sum_zero k - 0017
apply beta_sum_zero - 0018
exact hk - 0019
rewrite hk0 - 0020
specialize zero_le (u + L) - 0021
apply zero_le - 0022
intro k - 0023
intro L - 0024
intro hb - 0025
intro hc - 0026
intro hk - 0027
intro hL - 0028
have hs : (exists g. g + u = l) \/ (exists g. g + S l = u) - 0029
specialize le_or_lt u - 0030
specialize le_or_lt l - 0031
apply le_or_lt - 0032
cases hs - 0033
have hd : exists e K. (((exists fs_h_pc_cut_count_source_last. fs_h_pc_cut_count_source_last + S (e) = S ((S (l)) * c)) /\ exists fs_q_pc_cut_count_source_last. b = fs_q_pc_cut_count_source_last * S ((S (l)) * c) + (e))) /\ ((exists fs_u_pc_cut_count_source_pre fs_v_pc_cut_count_source_pre. ((((exists fs_h_pc_cut_count_source_pre_body_start. fs_h_pc_cut_count_source_pre_body_start + S (0) = S ((S (0)) * fs_v_pc_cut_count_source_pre)) /\ exists fs_q_pc_cut_count_source_pre_body_start. fs_u_pc_cut_count_source_pre = fs_q_pc_cut_count_source_pre_body_start * S ((S (0)) * fs_v_pc_cut_count_source_pre) + (0))) /\ ((((exists fs_h_pc_cut_count_source_pre_body_terminal. fs_h_pc_cut_count_source_pre_body_terminal + S (K) = S ((S (l)) * fs_v_pc_cut_count_source_pre)) /\ exists fs_q_pc_cut_count_source_pre_body_terminal. fs_u_pc_cut_count_source_pre = fs_q_pc_cut_count_source_pre_body_terminal * S ((S (l)) * fs_v_pc_cut_count_source_pre) + (K))) /\ forall fs_i_pc_cut_count_source_pre_body_steps. (exists fs_lt_pc_cut_count_source_pre_body_steps_bound. fs_lt_pc_cut_count_source_pre_body_steps_bound + S fs_i_pc_cut_count_source_pre_body_steps = l) -> exists fs_a_pc_cut_count_source_pre_body_steps fs_r_pc_cut_count_source_pre_body_steps fs_s_pc_cut_count_source_pre_body_steps. ((((exists fs_h_pc_cut_count_source_pre_body_steps_summand. fs_h_pc_cut_count_source_pre_body_steps_summand + S (fs_a_pc_cut_count_source_pre_body_steps) = S ((S (fs_i_pc_cut_count_source_pre_body_steps)) * c)) /\ exists fs_q_pc_cut_count_source_pre_body_steps_summand. b = fs_q_pc_cut_count_source_pre_body_steps_summand * S ((S (fs_i_pc_cut_count_source_pre_body_steps)) * c) + (fs_a_pc_cut_count_source_pre_body_steps))) /\ ((((exists fs_h_pc_cut_count_source_pre_body_steps_partial. fs_h_pc_cut_count_source_pre_body_steps_partial + S (fs_r_pc_cut_count_source_pre_body_steps) = S ((S (fs_i_pc_cut_count_source_pre_body_steps)) * fs_v_pc_cut_count_source_pre)) /\ exists fs_q_pc_cut_count_source_pre_body_steps_partial. fs_u_pc_cut_count_source_pre = fs_q_pc_cut_count_source_pre_body_steps_partial * S ((S (fs_i_pc_cut_count_source_pre_body_steps)) * fs_v_pc_cut_count_source_pre) + (fs_r_pc_cut_count_source_pre_body_steps))) /\ ((((exists fs_h_pc_cut_count_source_pre_body_steps_successor. fs_h_pc_cut_count_source_pre_body_steps_successor + S (fs_s_pc_cut_count_source_pre_body_steps) = S ((S (S fs_i_pc_cut_count_source_pre_body_steps)) * fs_v_pc_cut_count_source_pre)) /\ exists fs_q_pc_cut_count_source_pre_body_steps_successor. fs_u_pc_cut_count_source_pre = fs_q_pc_cut_count_source_pre_body_steps_successor * S ((S (S fs_i_pc_cut_count_source_pre_body_steps)) * fs_v_pc_cut_count_source_pre) + (fs_s_pc_cut_count_source_pre_body_steps))) /\ fs_s_pc_cut_count_source_pre_body_steps = fs_r_pc_cut_count_source_pre_body_steps + fs_a_pc_cut_count_source_pre_body_steps)))))) /\ k = K + e) - 0034
specialize beta_sum_succ_decompose b - 0035
specialize beta_sum_succ_decompose c - 0036
specialize beta_sum_succ_decompose l - 0037
specialize beta_sum_succ_decompose k - 0038
apply beta_sum_succ_decompose - 0039
exact hk - 0040
cases hd - 0041
cases hd_witness - 0042
cases hd_witness_witness - 0043
cases hd_witness_witness_right - 0044
have he : exists e M. (((exists fs_h_pc_cut_count_tail_last. fs_h_pc_cut_count_tail_last + S (e) = S ((S (l)) * f)) /\ exists fs_q_pc_cut_count_tail_last. d = fs_q_pc_cut_count_tail_last * S ((S (l)) * f) + (e))) /\ ((exists fs_u_pc_cut_count_tail_pre fs_v_pc_cut_count_tail_pre. ((((exists fs_h_pc_cut_count_tail_pre_body_start. fs_h_pc_cut_count_tail_pre_body_start + S (0) = S ((S (0)) * fs_v_pc_cut_count_tail_pre)) /\ exists fs_q_pc_cut_count_tail_pre_body_start. fs_u_pc_cut_count_tail_pre = fs_q_pc_cut_count_tail_pre_body_start * S ((S (0)) * fs_v_pc_cut_count_tail_pre) + (0))) /\ ((((exists fs_h_pc_cut_count_tail_pre_body_terminal. fs_h_pc_cut_count_tail_pre_body_terminal + S (M) = S ((S (l)) * fs_v_pc_cut_count_tail_pre)) /\ exists fs_q_pc_cut_count_tail_pre_body_terminal. fs_u_pc_cut_count_tail_pre = fs_q_pc_cut_count_tail_pre_body_terminal * S ((S (l)) * fs_v_pc_cut_count_tail_pre) + (M))) /\ forall fs_i_pc_cut_count_tail_pre_body_steps. (exists fs_lt_pc_cut_count_tail_pre_body_steps_bound. fs_lt_pc_cut_count_tail_pre_body_steps_bound + S fs_i_pc_cut_count_tail_pre_body_steps = l) -> exists fs_a_pc_cut_count_tail_pre_body_steps fs_r_pc_cut_count_tail_pre_body_steps fs_s_pc_cut_count_tail_pre_body_steps. ((((exists fs_h_pc_cut_count_tail_pre_body_steps_summand. fs_h_pc_cut_count_tail_pre_body_steps_summand + S (fs_a_pc_cut_count_tail_pre_body_steps) = S ((S (fs_i_pc_cut_count_tail_pre_body_steps)) * f)) /\ exists fs_q_pc_cut_count_tail_pre_body_steps_summand. d = fs_q_pc_cut_count_tail_pre_body_steps_summand * S ((S (fs_i_pc_cut_count_tail_pre_body_steps)) * f) + (fs_a_pc_cut_count_tail_pre_body_steps))) /\ ((((exists fs_h_pc_cut_count_tail_pre_body_steps_partial. fs_h_pc_cut_count_tail_pre_body_steps_partial + S (fs_r_pc_cut_count_tail_pre_body_steps) = S ((S (fs_i_pc_cut_count_tail_pre_body_steps)) * fs_v_pc_cut_count_tail_pre)) /\ exists fs_q_pc_cut_count_tail_pre_body_steps_partial. fs_u_pc_cut_count_tail_pre = fs_q_pc_cut_count_tail_pre_body_steps_partial * S ((S (fs_i_pc_cut_count_tail_pre_body_steps)) * fs_v_pc_cut_count_tail_pre) + (fs_r_pc_cut_count_tail_pre_body_steps))) /\ ((((exists fs_h_pc_cut_count_tail_pre_body_steps_successor. fs_h_pc_cut_count_tail_pre_body_steps_successor + S (fs_s_pc_cut_count_tail_pre_body_steps) = S ((S (S fs_i_pc_cut_count_tail_pre_body_steps)) * fs_v_pc_cut_count_tail_pre)) /\ exists fs_q_pc_cut_count_tail_pre_body_steps_successor. fs_u_pc_cut_count_tail_pre = fs_q_pc_cut_count_tail_pre_body_steps_successor * S ((S (S fs_i_pc_cut_count_tail_pre_body_steps)) * fs_v_pc_cut_count_tail_pre) + (fs_s_pc_cut_count_tail_pre_body_steps))) /\ fs_s_pc_cut_count_tail_pre_body_steps = fs_r_pc_cut_count_tail_pre_body_steps + fs_a_pc_cut_count_tail_pre_body_steps)))))) /\ L = M + e) - 0045
specialize beta_sum_succ_decompose d - 0046
specialize beta_sum_succ_decompose f - 0047
specialize beta_sum_succ_decompose l - 0048
specialize beta_sum_succ_decompose L - 0049
apply beta_sum_succ_decompose - 0050
exact hL - 0051
cases he - 0052
cases he_witness - 0053
cases he_witness_witness - 0054
cases he_witness_witness_right - 0055
have hlast : (((exists pc_lt_cut_count_choice_below. pc_lt_cut_count_choice_below + S (l) = (u)) /\ x2 = 0) \/ ((exists pc_le_cut_count_choice_above. pc_le_cut_count_choice_above + (u) = (l)) /\ (((exists fs_h_pc_cut_count_choice_source. fs_h_pc_cut_count_choice_source + S (x2) = S ((S (l)) * c)) /\ exists fs_q_pc_cut_count_choice_source. b = fs_q_pc_cut_count_choice_source * S ((S (l)) * c) + (x2))))) - 0056
specialize beta_cutoff_prefix_entry u - 0057
specialize beta_cutoff_prefix_entry b - 0058
specialize beta_cutoff_prefix_entry c - 0059
specialize beta_cutoff_prefix_entry d - 0060
specialize beta_cutoff_prefix_entry f - 0061
specialize beta_cutoff_prefix_entry (S l) - 0062
specialize beta_cutoff_prefix_entry l - 0063
specialize beta_cutoff_prefix_entry x2 - 0064
apply beta_cutoff_prefix_entry - 0065
exact hc - 0066
specialize le_refl (S l) - 0067
apply le_refl - 0068
exact he_witness_witness_left - 0069
cases hlast - 0070
cases hlast_left - 0071
exfalso - 0072
specialize lt_not_le l - 0073
specialize lt_not_le u - 0074
apply lt_not_le - 0075
exact hlast_left_left - 0076
exact hs_left - 0077
cases hlast_right - 0078
have heq : x = x2 - 0079
specialize beta_at_unique b - 0080
specialize beta_at_unique c - 0081
specialize beta_at_unique l - 0082
specialize beta_at_unique x - 0083
specialize beta_at_unique x2 - 0084
apply beta_at_unique - 0085
exact hd_witness_witness_left - 0086
exact hlast_right_right - 0087
have hpre : exists g. g + x1 = u + x3 - 0088
specialize IH x1 - 0089
specialize IH x3 - 0090
apply IH - 0091
specialize all_bits_prefix_succ b - 0092
specialize all_bits_prefix_succ c - 0093
specialize all_bits_prefix_succ l - 0094
specialize all_bits_prefix_succ (S l) - 0095
apply all_bits_prefix_succ - 0096
refl - 0097
exact hb - 0098
specialize beta_cutoff_prefix_drop_last u - 0099
specialize beta_cutoff_prefix_drop_last b - 0100
specialize beta_cutoff_prefix_drop_last c - 0101
specialize beta_cutoff_prefix_drop_last d - 0102
specialize beta_cutoff_prefix_drop_last f - 0103
specialize beta_cutoff_prefix_drop_last l - 0104
apply beta_cutoff_prefix_drop_last - 0105
exact hc - 0106
exact hd_witness_witness_right_left - 0107
exact he_witness_witness_right_left - 0108
rewrite hd_witness_witness_right_right - 0109
rewrite he_witness_witness_right_right - 0110
rewrite heq - 0111
have hassoc : u + (x3 + x2) = (u + x3) + x2 - 0112
symm - 0113
apply add_assoc - 0114
rewrite hassoc - 0115
specialize add_le_add_right x1 - 0116
specialize add_le_add_right (u + x3) - 0117
specialize add_le_add_right x2 - 0118
apply add_le_add_right - 0119
exact hpre - 0120
have hsmall : exists g. g + k = u - 0121
specialize le_trans k - 0122
specialize le_trans (S l) - 0123
specialize le_trans u - 0124
apply le_trans - 0125
specialize bit_count_bounded b - 0126
specialize bit_count_bounded c - 0127
specialize bit_count_bounded (S l) - 0128
specialize bit_count_bounded k - 0129
apply bit_count_bounded - 0130
split - 0131
exact hk - 0132
exact hb - 0133
exact hs_right - 0134
specialize le_trans k - 0135
specialize le_trans u - 0136
specialize le_trans (u + L) - 0137
apply le_trans - 0138
exact hsmall - 0139
specialize le_add_right u - 0140
specialize le_add_right L - 0141
apply le_add_right