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 n l L. ((((n) = 0 /\ (l) = 1) \/ exists ff_exponent_bl_length ff_lower_bl_length ff_upper_bl_length. (((l) = S ff_exponent_bl_length) /\ ((exists ff_positive_bl_length. ff_positive_bl_length + 1 = (n)) /\ ((exists pa_b_bl_length_lower pa_c_bl_length_lower. ((forall pa_i_bl_length_lower_repeat. (exists pa_lt_bl_length_lower_repeat_bound. pa_lt_bl_length_lower_repeat_bound + S pa_i_bl_length_lower_repeat = ff_exponent_bl_length) -> (((exists pa_h_bl_length_lower_repeat_decoded. pa_h_bl_length_lower_repeat_decoded + S (2) = S ((S (pa_i_bl_length_lower_repeat)) * pa_c_bl_length_lower)) /\ exists pa_q_bl_length_lower_repeat_decoded. pa_b_bl_length_lower = pa_q_bl_length_lower_repeat_decoded * S ((S (pa_i_bl_length_lower_repeat)) * pa_c_bl_length_lower) + (2)))) /\ (exists pa_u_bl_length_lower_product pa_v_bl_length_lower_product. ((((exists pa_h_bl_length_lower_product_start. pa_h_bl_length_lower_product_start + S (1) = S ((S (0)) * pa_v_bl_length_lower_product)) /\ exists pa_q_bl_length_lower_product_start. pa_u_bl_length_lower_product = pa_q_bl_length_lower_product_start * S ((S (0)) * pa_v_bl_length_lower_product) + (1))) /\ ((((exists pa_h_bl_length_lower_product_terminal. pa_h_bl_length_lower_product_terminal + S (ff_lower_bl_length) = S ((S (ff_exponent_bl_length)) * pa_v_bl_length_lower_product)) /\ exists pa_q_bl_length_lower_product_terminal. pa_u_bl_length_lower_product = pa_q_bl_length_lower_product_terminal * S ((S (ff_exponent_bl_length)) * pa_v_bl_length_lower_product) + (ff_lower_bl_length))) /\ forall pa_i_bl_length_lower_product. (exists pa_lt_bl_length_lower_product_bound. pa_lt_bl_length_lower_product_bound + S pa_i_bl_length_lower_product = ff_exponent_bl_length) -> exists pa_p_bl_length_lower_product pa_r_bl_length_lower_product pa_s_bl_length_lower_product. ((((exists pa_h_bl_length_lower_product_factor. pa_h_bl_length_lower_product_factor + S (pa_p_bl_length_lower_product) = S ((S (pa_i_bl_length_lower_product)) * pa_c_bl_length_lower)) /\ exists pa_q_bl_length_lower_product_factor. pa_b_bl_length_lower = pa_q_bl_length_lower_product_factor * S ((S (pa_i_bl_length_lower_product)) * pa_c_bl_length_lower) + (pa_p_bl_length_lower_product))) /\ ((((exists pa_h_bl_length_lower_product_partial. pa_h_bl_length_lower_product_partial + S (pa_r_bl_length_lower_product) = S ((S (pa_i_bl_length_lower_product)) * pa_v_bl_length_lower_product)) /\ exists pa_q_bl_length_lower_product_partial. pa_u_bl_length_lower_product = pa_q_bl_length_lower_product_partial * S ((S (pa_i_bl_length_lower_product)) * pa_v_bl_length_lower_product) + (pa_r_bl_length_lower_product))) /\ ((((exists pa_h_bl_length_lower_product_successor. pa_h_bl_length_lower_product_successor + S (pa_s_bl_length_lower_product) = S ((S (S pa_i_bl_length_lower_product)) * pa_v_bl_length_lower_product)) /\ exists pa_q_bl_length_lower_product_successor. pa_u_bl_length_lower_product = pa_q_bl_length_lower_product_successor * S ((S (S pa_i_bl_length_lower_product)) * pa_v_bl_length_lower_product) + (pa_s_bl_length_lower_product))) /\ pa_s_bl_length_lower_product = pa_r_bl_length_lower_product * pa_p_bl_length_lower_product)))))))) /\ ((exists pa_b_bl_length_upper pa_c_bl_length_upper. ((forall pa_i_bl_length_upper_repeat. (exists pa_lt_bl_length_upper_repeat_bound. pa_lt_bl_length_upper_repeat_bound + S pa_i_bl_length_upper_repeat = l) -> (((exists pa_h_bl_length_upper_repeat_decoded. pa_h_bl_length_upper_repeat_decoded + S (2) = S ((S (pa_i_bl_length_upper_repeat)) * pa_c_bl_length_upper)) /\ exists pa_q_bl_length_upper_repeat_decoded. pa_b_bl_length_upper = pa_q_bl_length_upper_repeat_decoded * S ((S (pa_i_bl_length_upper_repeat)) * pa_c_bl_length_upper) + (2)))) /\ (exists pa_u_bl_length_upper_product pa_v_bl_length_upper_product. ((((exists pa_h_bl_length_upper_product_start. pa_h_bl_length_upper_product_start + S (1) = S ((S (0)) * pa_v_bl_length_upper_product)) /\ exists pa_q_bl_length_upper_product_start. pa_u_bl_length_upper_product = pa_q_bl_length_upper_product_start * S ((S (0)) * pa_v_bl_length_upper_product) + (1))) /\ ((((exists pa_h_bl_length_upper_product_terminal. pa_h_bl_length_upper_product_terminal + S (ff_upper_bl_length) = S ((S (l)) * pa_v_bl_length_upper_product)) /\ exists pa_q_bl_length_upper_product_terminal. pa_u_bl_length_upper_product = pa_q_bl_length_upper_product_terminal * S ((S (l)) * pa_v_bl_length_upper_product) + (ff_upper_bl_length))) /\ forall pa_i_bl_length_upper_product. (exists pa_lt_bl_length_upper_product_bound. pa_lt_bl_length_upper_product_bound + S pa_i_bl_length_upper_product = l) -> exists pa_p_bl_length_upper_product pa_r_bl_length_upper_product pa_s_bl_length_upper_product. ((((exists pa_h_bl_length_upper_product_factor. pa_h_bl_length_upper_product_factor + S (pa_p_bl_length_upper_product) = S ((S (pa_i_bl_length_upper_product)) * pa_c_bl_length_upper)) /\ exists pa_q_bl_length_upper_product_factor. pa_b_bl_length_upper = pa_q_bl_length_upper_product_factor * S ((S (pa_i_bl_length_upper_product)) * pa_c_bl_length_upper) + (pa_p_bl_length_upper_product))) /\ ((((exists pa_h_bl_length_upper_product_partial. pa_h_bl_length_upper_product_partial + S (pa_r_bl_length_upper_product) = S ((S (pa_i_bl_length_upper_product)) * pa_v_bl_length_upper_product)) /\ exists pa_q_bl_length_upper_product_partial. pa_u_bl_length_upper_product = pa_q_bl_length_upper_product_partial * S ((S (pa_i_bl_length_upper_product)) * pa_v_bl_length_upper_product) + (pa_r_bl_length_upper_product))) /\ ((((exists pa_h_bl_length_upper_product_successor. pa_h_bl_length_upper_product_successor + S (pa_s_bl_length_upper_product) = S ((S (S pa_i_bl_length_upper_product)) * pa_v_bl_length_upper_product)) /\ exists pa_q_bl_length_upper_product_successor. pa_u_bl_length_upper_product = pa_q_bl_length_upper_product_successor * S ((S (S pa_i_bl_length_upper_product)) * pa_v_bl_length_upper_product) + (pa_s_bl_length_upper_product))) /\ pa_s_bl_length_upper_product = pa_r_bl_length_upper_product * pa_p_bl_length_upper_product)))))))) /\ ((exists ff_lower_gap_bl_length. ff_lower_gap_bl_length + (ff_lower_bl_length) = (n)) /\ (exists ff_upper_gap_bl_length. ff_upper_gap_bl_length + S (n) = (ff_upper_bl_length))))))))) -> ((((n) = 0 /\ (L) = 1) \/ exists ff_exponent_bl_other_length ff_lower_bl_other_length ff_upper_bl_other_length. (((L) = S ff_exponent_bl_other_length) /\ ((exists ff_positive_bl_other_length. ff_positive_bl_other_length + 1 = (n)) /\ ((exists pa_b_bl_other_length_lower pa_c_bl_other_length_lower. ((forall pa_i_bl_other_length_lower_repeat. (exists pa_lt_bl_other_length_lower_repeat_bound. pa_lt_bl_other_length_lower_repeat_bound + S pa_i_bl_other_length_lower_repeat = ff_exponent_bl_other_length) -> (((exists pa_h_bl_other_length_lower_repeat_decoded. pa_h_bl_other_length_lower_repeat_decoded + S (2) = S ((S (pa_i_bl_other_length_lower_repeat)) * pa_c_bl_other_length_lower)) /\ exists pa_q_bl_other_length_lower_repeat_decoded. pa_b_bl_other_length_lower = pa_q_bl_other_length_lower_repeat_decoded * S ((S (pa_i_bl_other_length_lower_repeat)) * pa_c_bl_other_length_lower) + (2)))) /\ (exists pa_u_bl_other_length_lower_product pa_v_bl_other_length_lower_product. ((((exists pa_h_bl_other_length_lower_product_start. pa_h_bl_other_length_lower_product_start + S (1) = S ((S (0)) * pa_v_bl_other_length_lower_product)) /\ exists pa_q_bl_other_length_lower_product_start. pa_u_bl_other_length_lower_product = pa_q_bl_other_length_lower_product_start * S ((S (0)) * pa_v_bl_other_length_lower_product) + (1))) /\ ((((exists pa_h_bl_other_length_lower_product_terminal. pa_h_bl_other_length_lower_product_terminal + S (ff_lower_bl_other_length) = S ((S (ff_exponent_bl_other_length)) * pa_v_bl_other_length_lower_product)) /\ exists pa_q_bl_other_length_lower_product_terminal. pa_u_bl_other_length_lower_product = pa_q_bl_other_length_lower_product_terminal * S ((S (ff_exponent_bl_other_length)) * pa_v_bl_other_length_lower_product) + (ff_lower_bl_other_length))) /\ forall pa_i_bl_other_length_lower_product. (exists pa_lt_bl_other_length_lower_product_bound. pa_lt_bl_other_length_lower_product_bound + S pa_i_bl_other_length_lower_product = ff_exponent_bl_other_length) -> exists pa_p_bl_other_length_lower_product pa_r_bl_other_length_lower_product pa_s_bl_other_length_lower_product. ((((exists pa_h_bl_other_length_lower_product_factor. pa_h_bl_other_length_lower_product_factor + S (pa_p_bl_other_length_lower_product) = S ((S (pa_i_bl_other_length_lower_product)) * pa_c_bl_other_length_lower)) /\ exists pa_q_bl_other_length_lower_product_factor. pa_b_bl_other_length_lower = pa_q_bl_other_length_lower_product_factor * S ((S (pa_i_bl_other_length_lower_product)) * pa_c_bl_other_length_lower) + (pa_p_bl_other_length_lower_product))) /\ ((((exists pa_h_bl_other_length_lower_product_partial. pa_h_bl_other_length_lower_product_partial + S (pa_r_bl_other_length_lower_product) = S ((S (pa_i_bl_other_length_lower_product)) * pa_v_bl_other_length_lower_product)) /\ exists pa_q_bl_other_length_lower_product_partial. pa_u_bl_other_length_lower_product = pa_q_bl_other_length_lower_product_partial * S ((S (pa_i_bl_other_length_lower_product)) * pa_v_bl_other_length_lower_product) + (pa_r_bl_other_length_lower_product))) /\ ((((exists pa_h_bl_other_length_lower_product_successor. pa_h_bl_other_length_lower_product_successor + S (pa_s_bl_other_length_lower_product) = S ((S (S pa_i_bl_other_length_lower_product)) * pa_v_bl_other_length_lower_product)) /\ exists pa_q_bl_other_length_lower_product_successor. pa_u_bl_other_length_lower_product = pa_q_bl_other_length_lower_product_successor * S ((S (S pa_i_bl_other_length_lower_product)) * pa_v_bl_other_length_lower_product) + (pa_s_bl_other_length_lower_product))) /\ pa_s_bl_other_length_lower_product = pa_r_bl_other_length_lower_product * pa_p_bl_other_length_lower_product)))))))) /\ ((exists pa_b_bl_other_length_upper pa_c_bl_other_length_upper. ((forall pa_i_bl_other_length_upper_repeat. (exists pa_lt_bl_other_length_upper_repeat_bound. pa_lt_bl_other_length_upper_repeat_bound + S pa_i_bl_other_length_upper_repeat = L) -> (((exists pa_h_bl_other_length_upper_repeat_decoded. pa_h_bl_other_length_upper_repeat_decoded + S (2) = S ((S (pa_i_bl_other_length_upper_repeat)) * pa_c_bl_other_length_upper)) /\ exists pa_q_bl_other_length_upper_repeat_decoded. pa_b_bl_other_length_upper = pa_q_bl_other_length_upper_repeat_decoded * S ((S (pa_i_bl_other_length_upper_repeat)) * pa_c_bl_other_length_upper) + (2)))) /\ (exists pa_u_bl_other_length_upper_product pa_v_bl_other_length_upper_product. ((((exists pa_h_bl_other_length_upper_product_start. pa_h_bl_other_length_upper_product_start + S (1) = S ((S (0)) * pa_v_bl_other_length_upper_product)) /\ exists pa_q_bl_other_length_upper_product_start. pa_u_bl_other_length_upper_product = pa_q_bl_other_length_upper_product_start * S ((S (0)) * pa_v_bl_other_length_upper_product) + (1))) /\ ((((exists pa_h_bl_other_length_upper_product_terminal. pa_h_bl_other_length_upper_product_terminal + S (ff_upper_bl_other_length) = S ((S (L)) * pa_v_bl_other_length_upper_product)) /\ exists pa_q_bl_other_length_upper_product_terminal. pa_u_bl_other_length_upper_product = pa_q_bl_other_length_upper_product_terminal * S ((S (L)) * pa_v_bl_other_length_upper_product) + (ff_upper_bl_other_length))) /\ forall pa_i_bl_other_length_upper_product. (exists pa_lt_bl_other_length_upper_product_bound. pa_lt_bl_other_length_upper_product_bound + S pa_i_bl_other_length_upper_product = L) -> exists pa_p_bl_other_length_upper_product pa_r_bl_other_length_upper_product pa_s_bl_other_length_upper_product. ((((exists pa_h_bl_other_length_upper_product_factor. pa_h_bl_other_length_upper_product_factor + S (pa_p_bl_other_length_upper_product) = S ((S (pa_i_bl_other_length_upper_product)) * pa_c_bl_other_length_upper)) /\ exists pa_q_bl_other_length_upper_product_factor. pa_b_bl_other_length_upper = pa_q_bl_other_length_upper_product_factor * S ((S (pa_i_bl_other_length_upper_product)) * pa_c_bl_other_length_upper) + (pa_p_bl_other_length_upper_product))) /\ ((((exists pa_h_bl_other_length_upper_product_partial. pa_h_bl_other_length_upper_product_partial + S (pa_r_bl_other_length_upper_product) = S ((S (pa_i_bl_other_length_upper_product)) * pa_v_bl_other_length_upper_product)) /\ exists pa_q_bl_other_length_upper_product_partial. pa_u_bl_other_length_upper_product = pa_q_bl_other_length_upper_product_partial * S ((S (pa_i_bl_other_length_upper_product)) * pa_v_bl_other_length_upper_product) + (pa_r_bl_other_length_upper_product))) /\ ((((exists pa_h_bl_other_length_upper_product_successor. pa_h_bl_other_length_upper_product_successor + S (pa_s_bl_other_length_upper_product) = S ((S (S pa_i_bl_other_length_upper_product)) * pa_v_bl_other_length_upper_product)) /\ exists pa_q_bl_other_length_upper_product_successor. pa_u_bl_other_length_upper_product = pa_q_bl_other_length_upper_product_successor * S ((S (S pa_i_bl_other_length_upper_product)) * pa_v_bl_other_length_upper_product) + (pa_s_bl_other_length_upper_product))) /\ pa_s_bl_other_length_upper_product = pa_r_bl_other_length_upper_product * pa_p_bl_other_length_upper_product)))))))) /\ ((exists ff_lower_gap_bl_other_length. ff_lower_gap_bl_other_length + (ff_lower_bl_other_length) = (n)) /\ (exists ff_upper_gap_bl_other_length. ff_upper_gap_bl_other_length + S (n) = (ff_upper_bl_other_length))))))))) -> l = LConstructive proof overview
Generated structural guide
Two complete constructive binary-length witnesses for one input agree.
The unchanged tactic script uses 7 declared prerequisites and contains 120 exact native proof lines.
Alpha v34 checked-use · first admitted v22 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
BL0012 binary_length_zero_input_general le_total Stable theorem; checked-use authorized le_eq_or_lt Stable theorem; checked-use authorized le_of_succ_le_succ Stable theorem; checked-use authorized BL000B binary_power_two_exponent_monotone le_trans Stable theorem; checked-use authorized lt_not_le 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
02Separate the logical casesL6–7
03Establish hotherL8–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary length zero input general.
04Separate the logical casesL18–19
05Establish hselfL20–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary length zero input general.
06Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L25
right
07Use earlier factsL26–26
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L26
exact hfirst_right
08Calculate and transport equalitiesL27–27
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L27
trans 1
09Use earlier factsL28–28
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L28
exact hself
10Calculate and transport equalitiesL29–29
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L29
symm
11Use earlier factsL30–30
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L30
exact hsecond_left_right
12Separate the logical casesL31–40
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L31
cases hfirst_right - L32
cases hfirst_right_witness - L33
cases hfirst_right_witness_witness - L34
cases hfirst_right_witness_witness_witness - L35
cases hfirst_right_witness_witness_witness_right - L36
cases hfirst_right_witness_witness_witness_right_right - L37
cases hfirst_right_witness_witness_witness_right_right_right - L38
cases hfirst_right_witness_witness_witness_right_right_right_right - L39
cases hsecond_right - L40
cases hsecond_right_witness
13Separate the logical casesL41–46
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L41
cases hsecond_right_witness_witness - L42
cases hsecond_right_witness_witness_witness - L43
cases hsecond_right_witness_witness_witness_right - L44
cases hsecond_right_witness_witness_witness_right_right - L45
cases hsecond_right_witness_witness_witness_right_right_right - L46
cases hsecond_right_witness_witness_witness_right_right_right_right
14Use earlier factsL47–48
15Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases le_total
16Establish hcasesL50–54
17Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
cases hcases
18Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
exact hcases_left
19Establish hexponentL57–62
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le of succ le succ.
20Establish hpowersL63–71
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary power two exponent monotone.
- L63
have hpowers : exists gap. gap + x2 = x4 - L64
specialize binary_power_two_exponent_monotone l - L65
specialize binary_power_two_exponent_monotone x3 - L66
specialize binary_power_two_exponent_monotone x2 - L67
specialize binary_power_two_exponent_monotone x4 - L68
apply binary_power_two_exponent_monotone - L69
exact hexponent - L70
exact hfirst_right_witness_witness_witness_right_right_right_left - L71
exact hsecond_right_witness_witness_witness_right_right_left
21Establish hreverseL72–78
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
22Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
exfalso
23Use earlier factsL80–84
24Establish hcasesL85–89
25Separate the logical casesL90–90
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L90
cases hcases
26Calculate and transport equalitiesL91–91
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L91
symm
27Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact hcases_left
28Establish hexponentL93–98
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le of succ le succ.
29Establish hpowersL99–107
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary power two exponent monotone.
- L99
have hpowers : exists gap. gap + x5 = x1 - L100
specialize binary_power_two_exponent_monotone L - L101
specialize binary_power_two_exponent_monotone x - L102
specialize binary_power_two_exponent_monotone x5 - L103
specialize binary_power_two_exponent_monotone x1 - L104
apply binary_power_two_exponent_monotone - L105
exact hexponent - L106
exact hsecond_right_witness_witness_witness_right_right_right_left - L107
exact hfirst_right_witness_witness_witness_right_right_left
30Establish hreverseL108–114
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
31Separate the logical casesL115–115
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L115
exfalso
Original exact command ledger · 120 lines
- 0001
intro n - 0002
intro l - 0003
intro L - 0004
intro hfirst - 0005
intro hsecond - 0006
cases hfirst - 0007
cases hfirst_left - 0008
have hother : L = 1 - 0009
specialize binary_length_zero_input_general n - 0010
specialize binary_length_zero_input_general L - 0011
apply binary_length_zero_input_general - 0012
exact hfirst_left_left - 0013
exact hsecond - 0014
trans 1 - 0015
exact hfirst_left_right - 0016
symm - 0017
exact hother - 0018
cases hsecond - 0019
cases hsecond_left - 0020
have hself : l = 1 - 0021
specialize binary_length_zero_input_general n - 0022
specialize binary_length_zero_input_general l - 0023
apply binary_length_zero_input_general - 0024
exact hsecond_left_left - 0025
right - 0026
exact hfirst_right - 0027
trans 1 - 0028
exact hself - 0029
symm - 0030
exact hsecond_left_right - 0031
cases hfirst_right - 0032
cases hfirst_right_witness - 0033
cases hfirst_right_witness_witness - 0034
cases hfirst_right_witness_witness_witness - 0035
cases hfirst_right_witness_witness_witness_right - 0036
cases hfirst_right_witness_witness_witness_right_right - 0037
cases hfirst_right_witness_witness_witness_right_right_right - 0038
cases hfirst_right_witness_witness_witness_right_right_right_right - 0039
cases hsecond_right - 0040
cases hsecond_right_witness - 0041
cases hsecond_right_witness_witness - 0042
cases hsecond_right_witness_witness_witness - 0043
cases hsecond_right_witness_witness_witness_right - 0044
cases hsecond_right_witness_witness_witness_right_right - 0045
cases hsecond_right_witness_witness_witness_right_right_right - 0046
cases hsecond_right_witness_witness_witness_right_right_right_right - 0047
specialize le_total l - 0048
specialize le_total L - 0049
cases le_total - 0050
have hcases : l = L \/ exists gap. gap + S l = L - 0051
specialize le_eq_or_lt l - 0052
specialize le_eq_or_lt L - 0053
apply le_eq_or_lt - 0054
exact le_total_left - 0055
cases hcases - 0056
exact hcases_left - 0057
have hexponent : exists gap. gap + l = x3 - 0058
specialize le_of_succ_le_succ l - 0059
specialize le_of_succ_le_succ x3 - 0060
apply le_of_succ_le_succ - 0061
rewrite hsecond_right_witness_witness_witness_left at hcases_right - 0062
exact hcases_right - 0063
have hpowers : exists gap. gap + x2 = x4 - 0064
specialize binary_power_two_exponent_monotone l - 0065
specialize binary_power_two_exponent_monotone x3 - 0066
specialize binary_power_two_exponent_monotone x2 - 0067
specialize binary_power_two_exponent_monotone x4 - 0068
apply binary_power_two_exponent_monotone - 0069
exact hexponent - 0070
exact hfirst_right_witness_witness_witness_right_right_right_left - 0071
exact hsecond_right_witness_witness_witness_right_right_left - 0072
have hreverse : exists gap. gap + x2 = n - 0073
specialize le_trans x2 - 0074
specialize le_trans x4 - 0075
specialize le_trans n - 0076
apply le_trans - 0077
exact hpowers - 0078
exact hsecond_right_witness_witness_witness_right_right_right_right_left - 0079
exfalso - 0080
specialize lt_not_le n - 0081
specialize lt_not_le x2 - 0082
apply lt_not_le - 0083
exact hfirst_right_witness_witness_witness_right_right_right_right_right - 0084
exact hreverse - 0085
have hcases : L = l \/ exists gap. gap + S L = l - 0086
specialize le_eq_or_lt L - 0087
specialize le_eq_or_lt l - 0088
apply le_eq_or_lt - 0089
exact le_total_right - 0090
cases hcases - 0091
symm - 0092
exact hcases_left - 0093
have hexponent : exists gap. gap + L = x - 0094
specialize le_of_succ_le_succ L - 0095
specialize le_of_succ_le_succ x - 0096
apply le_of_succ_le_succ - 0097
rewrite hfirst_right_witness_witness_witness_left at hcases_right - 0098
exact hcases_right - 0099
have hpowers : exists gap. gap + x5 = x1 - 0100
specialize binary_power_two_exponent_monotone L - 0101
specialize binary_power_two_exponent_monotone x - 0102
specialize binary_power_two_exponent_monotone x5 - 0103
specialize binary_power_two_exponent_monotone x1 - 0104
apply binary_power_two_exponent_monotone - 0105
exact hexponent - 0106
exact hsecond_right_witness_witness_witness_right_right_right_left - 0107
exact hfirst_right_witness_witness_witness_right_right_left - 0108
have hreverse : exists gap. gap + x5 = n - 0109
specialize le_trans x5 - 0110
specialize le_trans x1 - 0111
specialize le_trans n - 0112
apply le_trans - 0113
exact hpowers - 0114
exact hfirst_right_witness_witness_witness_right_right_right_right_left - 0115
exfalso - 0116
specialize lt_not_le n - 0117
specialize lt_not_le x5 - 0118
apply lt_not_le - 0119
exact hsecond_right_witness_witness_witness_right_right_right_right_right - 0120
exact hreverse