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. ((((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))))))))) -> exists L. ((((S n) = 0 /\ (L) = 1) \/ exists ff_exponent_bl_successor ff_lower_bl_successor ff_upper_bl_successor. (((L) = S ff_exponent_bl_successor) /\ ((exists ff_positive_bl_successor. ff_positive_bl_successor + 1 = (S n)) /\ ((exists pa_b_bl_successor_lower pa_c_bl_successor_lower. ((forall pa_i_bl_successor_lower_repeat. (exists pa_lt_bl_successor_lower_repeat_bound. pa_lt_bl_successor_lower_repeat_bound + S pa_i_bl_successor_lower_repeat = ff_exponent_bl_successor) -> (((exists pa_h_bl_successor_lower_repeat_decoded. pa_h_bl_successor_lower_repeat_decoded + S (2) = S ((S (pa_i_bl_successor_lower_repeat)) * pa_c_bl_successor_lower)) /\ exists pa_q_bl_successor_lower_repeat_decoded. pa_b_bl_successor_lower = pa_q_bl_successor_lower_repeat_decoded * S ((S (pa_i_bl_successor_lower_repeat)) * pa_c_bl_successor_lower) + (2)))) /\ (exists pa_u_bl_successor_lower_product pa_v_bl_successor_lower_product. ((((exists pa_h_bl_successor_lower_product_start. pa_h_bl_successor_lower_product_start + S (1) = S ((S (0)) * pa_v_bl_successor_lower_product)) /\ exists pa_q_bl_successor_lower_product_start. pa_u_bl_successor_lower_product = pa_q_bl_successor_lower_product_start * S ((S (0)) * pa_v_bl_successor_lower_product) + (1))) /\ ((((exists pa_h_bl_successor_lower_product_terminal. pa_h_bl_successor_lower_product_terminal + S (ff_lower_bl_successor) = S ((S (ff_exponent_bl_successor)) * pa_v_bl_successor_lower_product)) /\ exists pa_q_bl_successor_lower_product_terminal. pa_u_bl_successor_lower_product = pa_q_bl_successor_lower_product_terminal * S ((S (ff_exponent_bl_successor)) * pa_v_bl_successor_lower_product) + (ff_lower_bl_successor))) /\ forall pa_i_bl_successor_lower_product. (exists pa_lt_bl_successor_lower_product_bound. pa_lt_bl_successor_lower_product_bound + S pa_i_bl_successor_lower_product = ff_exponent_bl_successor) -> exists pa_p_bl_successor_lower_product pa_r_bl_successor_lower_product pa_s_bl_successor_lower_product. ((((exists pa_h_bl_successor_lower_product_factor. pa_h_bl_successor_lower_product_factor + S (pa_p_bl_successor_lower_product) = S ((S (pa_i_bl_successor_lower_product)) * pa_c_bl_successor_lower)) /\ exists pa_q_bl_successor_lower_product_factor. pa_b_bl_successor_lower = pa_q_bl_successor_lower_product_factor * S ((S (pa_i_bl_successor_lower_product)) * pa_c_bl_successor_lower) + (pa_p_bl_successor_lower_product))) /\ ((((exists pa_h_bl_successor_lower_product_partial. pa_h_bl_successor_lower_product_partial + S (pa_r_bl_successor_lower_product) = S ((S (pa_i_bl_successor_lower_product)) * pa_v_bl_successor_lower_product)) /\ exists pa_q_bl_successor_lower_product_partial. pa_u_bl_successor_lower_product = pa_q_bl_successor_lower_product_partial * S ((S (pa_i_bl_successor_lower_product)) * pa_v_bl_successor_lower_product) + (pa_r_bl_successor_lower_product))) /\ ((((exists pa_h_bl_successor_lower_product_successor. pa_h_bl_successor_lower_product_successor + S (pa_s_bl_successor_lower_product) = S ((S (S pa_i_bl_successor_lower_product)) * pa_v_bl_successor_lower_product)) /\ exists pa_q_bl_successor_lower_product_successor. pa_u_bl_successor_lower_product = pa_q_bl_successor_lower_product_successor * S ((S (S pa_i_bl_successor_lower_product)) * pa_v_bl_successor_lower_product) + (pa_s_bl_successor_lower_product))) /\ pa_s_bl_successor_lower_product = pa_r_bl_successor_lower_product * pa_p_bl_successor_lower_product)))))))) /\ ((exists pa_b_bl_successor_upper pa_c_bl_successor_upper. ((forall pa_i_bl_successor_upper_repeat. (exists pa_lt_bl_successor_upper_repeat_bound. pa_lt_bl_successor_upper_repeat_bound + S pa_i_bl_successor_upper_repeat = L) -> (((exists pa_h_bl_successor_upper_repeat_decoded. pa_h_bl_successor_upper_repeat_decoded + S (2) = S ((S (pa_i_bl_successor_upper_repeat)) * pa_c_bl_successor_upper)) /\ exists pa_q_bl_successor_upper_repeat_decoded. pa_b_bl_successor_upper = pa_q_bl_successor_upper_repeat_decoded * S ((S (pa_i_bl_successor_upper_repeat)) * pa_c_bl_successor_upper) + (2)))) /\ (exists pa_u_bl_successor_upper_product pa_v_bl_successor_upper_product. ((((exists pa_h_bl_successor_upper_product_start. pa_h_bl_successor_upper_product_start + S (1) = S ((S (0)) * pa_v_bl_successor_upper_product)) /\ exists pa_q_bl_successor_upper_product_start. pa_u_bl_successor_upper_product = pa_q_bl_successor_upper_product_start * S ((S (0)) * pa_v_bl_successor_upper_product) + (1))) /\ ((((exists pa_h_bl_successor_upper_product_terminal. pa_h_bl_successor_upper_product_terminal + S (ff_upper_bl_successor) = S ((S (L)) * pa_v_bl_successor_upper_product)) /\ exists pa_q_bl_successor_upper_product_terminal. pa_u_bl_successor_upper_product = pa_q_bl_successor_upper_product_terminal * S ((S (L)) * pa_v_bl_successor_upper_product) + (ff_upper_bl_successor))) /\ forall pa_i_bl_successor_upper_product. (exists pa_lt_bl_successor_upper_product_bound. pa_lt_bl_successor_upper_product_bound + S pa_i_bl_successor_upper_product = L) -> exists pa_p_bl_successor_upper_product pa_r_bl_successor_upper_product pa_s_bl_successor_upper_product. ((((exists pa_h_bl_successor_upper_product_factor. pa_h_bl_successor_upper_product_factor + S (pa_p_bl_successor_upper_product) = S ((S (pa_i_bl_successor_upper_product)) * pa_c_bl_successor_upper)) /\ exists pa_q_bl_successor_upper_product_factor. pa_b_bl_successor_upper = pa_q_bl_successor_upper_product_factor * S ((S (pa_i_bl_successor_upper_product)) * pa_c_bl_successor_upper) + (pa_p_bl_successor_upper_product))) /\ ((((exists pa_h_bl_successor_upper_product_partial. pa_h_bl_successor_upper_product_partial + S (pa_r_bl_successor_upper_product) = S ((S (pa_i_bl_successor_upper_product)) * pa_v_bl_successor_upper_product)) /\ exists pa_q_bl_successor_upper_product_partial. pa_u_bl_successor_upper_product = pa_q_bl_successor_upper_product_partial * S ((S (pa_i_bl_successor_upper_product)) * pa_v_bl_successor_upper_product) + (pa_r_bl_successor_upper_product))) /\ ((((exists pa_h_bl_successor_upper_product_successor. pa_h_bl_successor_upper_product_successor + S (pa_s_bl_successor_upper_product) = S ((S (S pa_i_bl_successor_upper_product)) * pa_v_bl_successor_upper_product)) /\ exists pa_q_bl_successor_upper_product_successor. pa_u_bl_successor_upper_product = pa_q_bl_successor_upper_product_successor * S ((S (S pa_i_bl_successor_upper_product)) * pa_v_bl_successor_upper_product) + (pa_s_bl_successor_upper_product))) /\ pa_s_bl_successor_upper_product = pa_r_bl_successor_upper_product * pa_p_bl_successor_upper_product)))))))) /\ ((exists ff_lower_gap_bl_successor. ff_lower_gap_bl_successor + (ff_lower_bl_successor) = (S n)) /\ (exists ff_upper_gap_bl_successor. ff_upper_gap_bl_successor + S (S n) = (ff_upper_bl_successor)))))))))Constructive proof overview
Generated structural guide
A binary-length witness for n constructively produces one for S n.
The unchanged tactic script uses 6 declared prerequisites and contains 75 exact native proof lines.
Alpha v34 checked-use · first admitted v22 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
BL000E binary_length_one BL0005 binary_power_two_exists BL000A binary_power_two_strict_growth le_eq_or_lt Stable theorem; checked-use authorized le_succ Stable theorem; checked-use authorized le_refl 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 (3)
01Fix variables and assumptionsL1–3
02Separate the logical casesL4–5
03Construct an explicit witnessL6–6
Supply the displayed value, then prove that it has the required property.
- L6
exists 1
04Calculate and transport equalitiesL7–10
05Use earlier factsL11–11
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L11
exact binary_length_one
06Separate the logical casesL12–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L12
cases hlength_right - L13
cases hlength_right_witness - L14
cases hlength_right_witness_witness - L15
cases hlength_right_witness_witness_witness - L16
cases hlength_right_witness_witness_witness_right - L17
cases hlength_right_witness_witness_witness_right_right - L18
cases hlength_right_witness_witness_witness_right_right_right - L19
cases hlength_right_witness_witness_witness_right_right_right_right
07Establish hcasesL20–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le eq or lt.
08Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L25
cases hcases
09Establish hnextL26–28
10Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
cases hnext
11Establish hstrictL30–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply binary power two strict growth.
- L30
have hstrict : exists gap. gap + S x2 = x3 - L31
specialize binary_power_two_strict_growth l - L32
specialize binary_power_two_strict_growth x2 - L33
specialize binary_power_two_strict_growth x3 - L34
apply binary_power_two_strict_growth - L35
exact hlength_right_witness_witness_witness_right_right_right_left - L36
exact hnext_witness
12Construct an explicit witnessL37–37
Supply the displayed value, then prove that it has the required property.
- L37
exists S l
13Separate the logical casesL38–38
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L38
right
14Construct an explicit witnessL39–41
15Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
split
16Calculate and transport equalitiesL43–43
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L43
refl
17Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
split
18Construct an explicit witnessL45–45
Supply the displayed value, then prove that it has the required property.
- L45
exists n
19Calculate and transport equalitiesL46–46
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L46
simp
20Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
21Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
exact hlength_right_witness_witness_witness_right_right_right_left
22Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
split
23Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
exact hnext_witness
24Separate the logical casesL51–51
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L51
split
25Calculate and transport equalitiesL52–52
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L52
rewrite hcases_left
26Use earlier factsL53–53
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L53
apply le_refl
27Calculate and transport equalitiesL54–54
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L54
rewrite hcases_left
28Use earlier factsL55–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
exact hstrict
29Construct an explicit witnessL56–56
Supply the displayed value, then prove that it has the required property.
- L56
exists l
30Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
right
31Construct an explicit witnessL58–60
32Separate the logical casesL61–61
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L61
split
33Use earlier factsL62–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
exact hlength_right_witness_witness_witness_left
34Separate the logical casesL63–63
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L63
split
35Construct an explicit witnessL64–64
Supply the displayed value, then prove that it has the required property.
- L64
exists n
36Calculate and transport equalitiesL65–65
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L65
simp
37Separate the logical casesL66–66
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L66
split
38Use earlier factsL67–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
exact hlength_right_witness_witness_witness_right_right_left
39Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
split
40Use earlier factsL69–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
exact hlength_right_witness_witness_witness_right_right_right_left
41Separate the logical casesL70–70
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L70
split
Original exact command ledger · 75 lines
- 0001
intro n - 0002
intro l - 0003
intro hlength - 0004
cases hlength - 0005
cases hlength_left - 0006
exists 1 - 0007
rewrite hlength_left_left - 0008
rewrite hlength_left_left - 0009
rewrite hlength_left_left - 0010
rewrite hlength_left_left - 0011
exact binary_length_one - 0012
cases hlength_right - 0013
cases hlength_right_witness - 0014
cases hlength_right_witness_witness - 0015
cases hlength_right_witness_witness_witness - 0016
cases hlength_right_witness_witness_witness_right - 0017
cases hlength_right_witness_witness_witness_right_right - 0018
cases hlength_right_witness_witness_witness_right_right_right - 0019
cases hlength_right_witness_witness_witness_right_right_right_right - 0020
have hcases : S n = x2 \/ exists gap. gap + S (S n) = x2 - 0021
specialize le_eq_or_lt (S n) - 0022
specialize le_eq_or_lt x2 - 0023
apply le_eq_or_lt - 0024
exact hlength_right_witness_witness_witness_right_right_right_right_right - 0025
cases hcases - 0026
have hnext : exists q. (exists pa_b_bl_successor_next pa_c_bl_successor_next. ((forall pa_i_bl_successor_next_repeat. (exists pa_lt_bl_successor_next_repeat_bound. pa_lt_bl_successor_next_repeat_bound + S pa_i_bl_successor_next_repeat = S l) -> (((exists pa_h_bl_successor_next_repeat_decoded. pa_h_bl_successor_next_repeat_decoded + S (2) = S ((S (pa_i_bl_successor_next_repeat)) * pa_c_bl_successor_next)) /\ exists pa_q_bl_successor_next_repeat_decoded. pa_b_bl_successor_next = pa_q_bl_successor_next_repeat_decoded * S ((S (pa_i_bl_successor_next_repeat)) * pa_c_bl_successor_next) + (2)))) /\ (exists pa_u_bl_successor_next_product pa_v_bl_successor_next_product. ((((exists pa_h_bl_successor_next_product_start. pa_h_bl_successor_next_product_start + S (1) = S ((S (0)) * pa_v_bl_successor_next_product)) /\ exists pa_q_bl_successor_next_product_start. pa_u_bl_successor_next_product = pa_q_bl_successor_next_product_start * S ((S (0)) * pa_v_bl_successor_next_product) + (1))) /\ ((((exists pa_h_bl_successor_next_product_terminal. pa_h_bl_successor_next_product_terminal + S (q) = S ((S (S l)) * pa_v_bl_successor_next_product)) /\ exists pa_q_bl_successor_next_product_terminal. pa_u_bl_successor_next_product = pa_q_bl_successor_next_product_terminal * S ((S (S l)) * pa_v_bl_successor_next_product) + (q))) /\ forall pa_i_bl_successor_next_product. (exists pa_lt_bl_successor_next_product_bound. pa_lt_bl_successor_next_product_bound + S pa_i_bl_successor_next_product = S l) -> exists pa_p_bl_successor_next_product pa_r_bl_successor_next_product pa_s_bl_successor_next_product. ((((exists pa_h_bl_successor_next_product_factor. pa_h_bl_successor_next_product_factor + S (pa_p_bl_successor_next_product) = S ((S (pa_i_bl_successor_next_product)) * pa_c_bl_successor_next)) /\ exists pa_q_bl_successor_next_product_factor. pa_b_bl_successor_next = pa_q_bl_successor_next_product_factor * S ((S (pa_i_bl_successor_next_product)) * pa_c_bl_successor_next) + (pa_p_bl_successor_next_product))) /\ ((((exists pa_h_bl_successor_next_product_partial. pa_h_bl_successor_next_product_partial + S (pa_r_bl_successor_next_product) = S ((S (pa_i_bl_successor_next_product)) * pa_v_bl_successor_next_product)) /\ exists pa_q_bl_successor_next_product_partial. pa_u_bl_successor_next_product = pa_q_bl_successor_next_product_partial * S ((S (pa_i_bl_successor_next_product)) * pa_v_bl_successor_next_product) + (pa_r_bl_successor_next_product))) /\ ((((exists pa_h_bl_successor_next_product_successor. pa_h_bl_successor_next_product_successor + S (pa_s_bl_successor_next_product) = S ((S (S pa_i_bl_successor_next_product)) * pa_v_bl_successor_next_product)) /\ exists pa_q_bl_successor_next_product_successor. pa_u_bl_successor_next_product = pa_q_bl_successor_next_product_successor * S ((S (S pa_i_bl_successor_next_product)) * pa_v_bl_successor_next_product) + (pa_s_bl_successor_next_product))) /\ pa_s_bl_successor_next_product = pa_r_bl_successor_next_product * pa_p_bl_successor_next_product)))))))) - 0027
specialize binary_power_two_exists (S l) - 0028
exact binary_power_two_exists - 0029
cases hnext - 0030
have hstrict : exists gap. gap + S x2 = x3 - 0031
specialize binary_power_two_strict_growth l - 0032
specialize binary_power_two_strict_growth x2 - 0033
specialize binary_power_two_strict_growth x3 - 0034
apply binary_power_two_strict_growth - 0035
exact hlength_right_witness_witness_witness_right_right_right_left - 0036
exact hnext_witness - 0037
exists S l - 0038
right - 0039
exists l - 0040
exists x2 - 0041
exists x3 - 0042
split - 0043
refl - 0044
split - 0045
exists n - 0046
simp - 0047
split - 0048
exact hlength_right_witness_witness_witness_right_right_right_left - 0049
split - 0050
exact hnext_witness - 0051
split - 0052
rewrite hcases_left - 0053
apply le_refl - 0054
rewrite hcases_left - 0055
exact hstrict - 0056
exists l - 0057
right - 0058
exists x - 0059
exists x1 - 0060
exists x2 - 0061
split - 0062
exact hlength_right_witness_witness_witness_left - 0063
split - 0064
exists n - 0065
simp - 0066
split - 0067
exact hlength_right_witness_witness_witness_right_right_left - 0068
split - 0069
exact hlength_right_witness_witness_witness_right_right_right_left - 0070
split - 0071
specialize le_succ x1 - 0072
specialize le_succ n - 0073
apply le_succ - 0074
exact hlength_right_witness_witness_witness_right_right_right_right_left - 0075
exact hcases_right