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 b c d f B l z k Q. (forall pc_index_weight_lower_source pc_factor_weight_lower_source pc_bit_weight_lower_source. (exists pc_lt_weight_lower_source_index. pc_lt_weight_lower_source_index + S (pc_index_weight_lower_source) = (l)) -> (((exists fs_h_pc_weight_lower_source_factor. fs_h_pc_weight_lower_source_factor + S (pc_factor_weight_lower_source) = S ((S (pc_index_weight_lower_source)) * c)) /\ exists fs_q_pc_weight_lower_source_factor. b = fs_q_pc_weight_lower_source_factor * S ((S (pc_index_weight_lower_source)) * c) + (pc_factor_weight_lower_source))) -> (((exists fs_h_pc_weight_lower_source_bit. fs_h_pc_weight_lower_source_bit + S (pc_bit_weight_lower_source) = S ((S (pc_index_weight_lower_source)) * f)) /\ exists fs_q_pc_weight_lower_source_bit. d = fs_q_pc_weight_lower_source_bit * S ((S (pc_index_weight_lower_source)) * f) + (pc_bit_weight_lower_source))) -> ((pc_bit_weight_lower_source = 0 /\ (exists pc_le_weight_lower_source_zero. pc_le_weight_lower_source_zero + (1) = (pc_factor_weight_lower_source))) \/ (pc_bit_weight_lower_source = 1 /\ (exists pc_le_weight_lower_source_one. pc_le_weight_lower_source_one + (B) = (pc_factor_weight_lower_source))))) -> (exists ff_u_pc_weight_lower_product ff_v_pc_weight_lower_product. ((((exists ff_h_pc_weight_lower_product_start. ff_h_pc_weight_lower_product_start + S (1) = S ((S (0)) * ff_v_pc_weight_lower_product)) /\ exists ff_q_pc_weight_lower_product_start. ff_u_pc_weight_lower_product = ff_q_pc_weight_lower_product_start * S ((S (0)) * ff_v_pc_weight_lower_product) + (1))) /\ ((((exists ff_h_pc_weight_lower_product_terminal. ff_h_pc_weight_lower_product_terminal + S (z) = S ((S (l)) * ff_v_pc_weight_lower_product)) /\ exists ff_q_pc_weight_lower_product_terminal. ff_u_pc_weight_lower_product = ff_q_pc_weight_lower_product_terminal * S ((S (l)) * ff_v_pc_weight_lower_product) + (z))) /\ forall ff_i_pc_weight_lower_product. (exists ff_lt_pc_weight_lower_product_bound. ff_lt_pc_weight_lower_product_bound + S ff_i_pc_weight_lower_product = l) -> exists ff_p_pc_weight_lower_product ff_r_pc_weight_lower_product ff_s_pc_weight_lower_product. ((((exists ff_h_pc_weight_lower_product_factor. ff_h_pc_weight_lower_product_factor + S (ff_p_pc_weight_lower_product) = S ((S (ff_i_pc_weight_lower_product)) * c)) /\ exists ff_q_pc_weight_lower_product_factor. b = ff_q_pc_weight_lower_product_factor * S ((S (ff_i_pc_weight_lower_product)) * c) + (ff_p_pc_weight_lower_product))) /\ ((((exists ff_h_pc_weight_lower_product_partial. ff_h_pc_weight_lower_product_partial + S (ff_r_pc_weight_lower_product) = S ((S (ff_i_pc_weight_lower_product)) * ff_v_pc_weight_lower_product)) /\ exists ff_q_pc_weight_lower_product_partial. ff_u_pc_weight_lower_product = ff_q_pc_weight_lower_product_partial * S ((S (ff_i_pc_weight_lower_product)) * ff_v_pc_weight_lower_product) + (ff_r_pc_weight_lower_product))) /\ ((((exists ff_h_pc_weight_lower_product_successor. ff_h_pc_weight_lower_product_successor + S (ff_s_pc_weight_lower_product) = S ((S (S ff_i_pc_weight_lower_product)) * ff_v_pc_weight_lower_product)) /\ exists ff_q_pc_weight_lower_product_successor. ff_u_pc_weight_lower_product = ff_q_pc_weight_lower_product_successor * S ((S (S ff_i_pc_weight_lower_product)) * ff_v_pc_weight_lower_product) + (ff_s_pc_weight_lower_product))) /\ ff_s_pc_weight_lower_product = ff_r_pc_weight_lower_product * ff_p_pc_weight_lower_product)))))) -> (exists fs_u_pc_weight_lower_sum fs_v_pc_weight_lower_sum. ((((exists fs_h_pc_weight_lower_sum_body_start. fs_h_pc_weight_lower_sum_body_start + S (0) = S ((S (0)) * fs_v_pc_weight_lower_sum)) /\ exists fs_q_pc_weight_lower_sum_body_start. fs_u_pc_weight_lower_sum = fs_q_pc_weight_lower_sum_body_start * S ((S (0)) * fs_v_pc_weight_lower_sum) + (0))) /\ ((((exists fs_h_pc_weight_lower_sum_body_terminal. fs_h_pc_weight_lower_sum_body_terminal + S (k) = S ((S (l)) * fs_v_pc_weight_lower_sum)) /\ exists fs_q_pc_weight_lower_sum_body_terminal. fs_u_pc_weight_lower_sum = fs_q_pc_weight_lower_sum_body_terminal * S ((S (l)) * fs_v_pc_weight_lower_sum) + (k))) /\ forall fs_i_pc_weight_lower_sum_body_steps. (exists fs_lt_pc_weight_lower_sum_body_steps_bound. fs_lt_pc_weight_lower_sum_body_steps_bound + S fs_i_pc_weight_lower_sum_body_steps = l) -> exists fs_a_pc_weight_lower_sum_body_steps fs_r_pc_weight_lower_sum_body_steps fs_s_pc_weight_lower_sum_body_steps. ((((exists fs_h_pc_weight_lower_sum_body_steps_summand. fs_h_pc_weight_lower_sum_body_steps_summand + S (fs_a_pc_weight_lower_sum_body_steps) = S ((S (fs_i_pc_weight_lower_sum_body_steps)) * f)) /\ exists fs_q_pc_weight_lower_sum_body_steps_summand. d = fs_q_pc_weight_lower_sum_body_steps_summand * S ((S (fs_i_pc_weight_lower_sum_body_steps)) * f) + (fs_a_pc_weight_lower_sum_body_steps))) /\ ((((exists fs_h_pc_weight_lower_sum_body_steps_partial. fs_h_pc_weight_lower_sum_body_steps_partial + S (fs_r_pc_weight_lower_sum_body_steps) = S ((S (fs_i_pc_weight_lower_sum_body_steps)) * fs_v_pc_weight_lower_sum)) /\ exists fs_q_pc_weight_lower_sum_body_steps_partial. fs_u_pc_weight_lower_sum = fs_q_pc_weight_lower_sum_body_steps_partial * S ((S (fs_i_pc_weight_lower_sum_body_steps)) * fs_v_pc_weight_lower_sum) + (fs_r_pc_weight_lower_sum_body_steps))) /\ ((((exists fs_h_pc_weight_lower_sum_body_steps_successor. fs_h_pc_weight_lower_sum_body_steps_successor + S (fs_s_pc_weight_lower_sum_body_steps) = S ((S (S fs_i_pc_weight_lower_sum_body_steps)) * fs_v_pc_weight_lower_sum)) /\ exists fs_q_pc_weight_lower_sum_body_steps_successor. fs_u_pc_weight_lower_sum = fs_q_pc_weight_lower_sum_body_steps_successor * S ((S (S fs_i_pc_weight_lower_sum_body_steps)) * fs_v_pc_weight_lower_sum) + (fs_s_pc_weight_lower_sum_body_steps))) /\ fs_s_pc_weight_lower_sum_body_steps = fs_r_pc_weight_lower_sum_body_steps + fs_a_pc_weight_lower_sum_body_steps)))))) -> (exists pa_b_pc_weight_lower_power pa_c_pc_weight_lower_power. ((forall pa_i_pc_weight_lower_power_repeat. (exists pa_lt_pc_weight_lower_power_repeat_bound. pa_lt_pc_weight_lower_power_repeat_bound + S pa_i_pc_weight_lower_power_repeat = k) -> (((exists pa_h_pc_weight_lower_power_repeat_decoded. pa_h_pc_weight_lower_power_repeat_decoded + S (B) = S ((S (pa_i_pc_weight_lower_power_repeat)) * pa_c_pc_weight_lower_power)) /\ exists pa_q_pc_weight_lower_power_repeat_decoded. pa_b_pc_weight_lower_power = pa_q_pc_weight_lower_power_repeat_decoded * S ((S (pa_i_pc_weight_lower_power_repeat)) * pa_c_pc_weight_lower_power) + (B)))) /\ (exists pa_u_pc_weight_lower_power_product pa_v_pc_weight_lower_power_product. ((((exists pa_h_pc_weight_lower_power_product_start. pa_h_pc_weight_lower_power_product_start + S (1) = S ((S (0)) * pa_v_pc_weight_lower_power_product)) /\ exists pa_q_pc_weight_lower_power_product_start. pa_u_pc_weight_lower_power_product = pa_q_pc_weight_lower_power_product_start * S ((S (0)) * pa_v_pc_weight_lower_power_product) + (1))) /\ ((((exists pa_h_pc_weight_lower_power_product_terminal. pa_h_pc_weight_lower_power_product_terminal + S (Q) = S ((S (k)) * pa_v_pc_weight_lower_power_product)) /\ exists pa_q_pc_weight_lower_power_product_terminal. pa_u_pc_weight_lower_power_product = pa_q_pc_weight_lower_power_product_terminal * S ((S (k)) * pa_v_pc_weight_lower_power_product) + (Q))) /\ forall pa_i_pc_weight_lower_power_product. (exists pa_lt_pc_weight_lower_power_product_bound. pa_lt_pc_weight_lower_power_product_bound + S pa_i_pc_weight_lower_power_product = k) -> exists pa_p_pc_weight_lower_power_product pa_r_pc_weight_lower_power_product pa_s_pc_weight_lower_power_product. ((((exists pa_h_pc_weight_lower_power_product_factor. pa_h_pc_weight_lower_power_product_factor + S (pa_p_pc_weight_lower_power_product) = S ((S (pa_i_pc_weight_lower_power_product)) * pa_c_pc_weight_lower_power)) /\ exists pa_q_pc_weight_lower_power_product_factor. pa_b_pc_weight_lower_power = pa_q_pc_weight_lower_power_product_factor * S ((S (pa_i_pc_weight_lower_power_product)) * pa_c_pc_weight_lower_power) + (pa_p_pc_weight_lower_power_product))) /\ ((((exists pa_h_pc_weight_lower_power_product_partial. pa_h_pc_weight_lower_power_product_partial + S (pa_r_pc_weight_lower_power_product) = S ((S (pa_i_pc_weight_lower_power_product)) * pa_v_pc_weight_lower_power_product)) /\ exists pa_q_pc_weight_lower_power_product_partial. pa_u_pc_weight_lower_power_product = pa_q_pc_weight_lower_power_product_partial * S ((S (pa_i_pc_weight_lower_power_product)) * pa_v_pc_weight_lower_power_product) + (pa_r_pc_weight_lower_power_product))) /\ ((((exists pa_h_pc_weight_lower_power_product_successor. pa_h_pc_weight_lower_power_product_successor + S (pa_s_pc_weight_lower_power_product) = S ((S (S pa_i_pc_weight_lower_power_product)) * pa_v_pc_weight_lower_power_product)) /\ exists pa_q_pc_weight_lower_power_product_successor. pa_u_pc_weight_lower_power_product = pa_q_pc_weight_lower_power_product_successor * S ((S (S pa_i_pc_weight_lower_power_product)) * pa_v_pc_weight_lower_power_product) + (pa_s_pc_weight_lower_power_product))) /\ pa_s_pc_weight_lower_power_product = pa_r_pc_weight_lower_power_product * pa_p_pc_weight_lower_power_product)))))))) -> (exists pc_le_weight_lower_result. pc_le_weight_lower_result + (Q) = (z))Constructive proof overview
Generated structural guide
An actual bit-weighted finite product has the corresponding lower bound by a power of its actual bit sum.
The unchanged tactic script uses 13 declared prerequisites and contains 158 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_product_zero Stable theorem; checked-use authorized beta_sum_zero Stable theorem; checked-use authorized pow_zero Stable theorem; checked-use authorized le_refl Stable theorem; checked-use authorized beta_product_succ_decompose Stable theorem; checked-use authorized beta_sum_succ_decompose Stable theorem; checked-use authorized pow_exists Stable theorem; checked-use authorized le_succ Stable theorem; checked-use authorized pow_functional Stable theorem; checked-use authorized pow_successor_pair_mul Stable theorem; checked-use authorized mul_le_mul Alpha theorem; checked-use authorized le_trans Stable theorem; checked-use authorized le_mul_of_one_le_right 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.
01Fix variables and assumptionsL1–5
02Induction on lL6–13
03Establish hz1L14–19
04Establish hk0L20–25
05Establish hQ1L26–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow zero.
06Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
apply le_refl
07Fix variables and assumptionsL37–43
08Establish hprodL44–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
09Separate the logical casesL51–54
10Establish hsumL55–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta sum succ decompose.
11Separate the logical casesL62–65
12Establish hpL66–69
13Separate the logical casesL70–70
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L70
cases hp
14Establish hpreL71–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
15Fix variables and assumptionsL81–81
Work with arbitrary variables or the premises of the current implication.
- L81
intro he
16Use earlier factsL82–91
17Use earlier factsL92–94
18Establish hlastL95–103
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hw.
- L95
have hlast : (x2 = 0 /\ (exists pc_le_weight_last_zero. pc_le_weight_last_zero + (1) = (x))) \/ (x2 = 1 /\ (exists pc_le_weight_last_one. pc_le_weight_last_one + (B) = (x))) - L96
specialize hw l - L97
specialize hw x - L98
specialize hw x2 - L99
apply hw - L100
specialize le_refl (S l) - L101
apply le_refl - L102
exact hprod_witness_witness_left - L103
exact hsum_witness_witness_left
19Separate the logical casesL104–105
20Establish hk0L106–114
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply PA3.
21Establish hQ0L115–124
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow functional.
22Use earlier factsL125–133
Instantiate or apply named facts and discharge the corresponding proof obligations.
23Separate the logical casesL134–134
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L134
cases hlast_right
24Establish hk1L135–139
25Establish hQ1L140–149
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor pair mul.
26Calculate and transport equalitiesL150–151
Original exact command ledger · 158 lines
- 0001
intro b - 0002
intro c - 0003
intro d - 0004
intro f - 0005
intro B - 0006
induction l - 0007
intro z - 0008
intro k - 0009
intro Q - 0010
intro hw - 0011
intro hz - 0012
intro hk - 0013
intro hQ - 0014
have hz1 : z = 1 - 0015
specialize beta_product_zero b - 0016
specialize beta_product_zero c - 0017
specialize beta_product_zero z - 0018
apply beta_product_zero - 0019
exact hz - 0020
have hk0 : k = 0 - 0021
specialize beta_sum_zero d - 0022
specialize beta_sum_zero f - 0023
specialize beta_sum_zero k - 0024
apply beta_sum_zero - 0025
exact hk - 0026
have hQ1 : Q = 1 - 0027
specialize pow_zero B - 0028
specialize pow_zero k - 0029
specialize pow_zero Q - 0030
apply pow_zero - 0031
exact hk0 - 0032
exact hQ - 0033
rewrite hz1 - 0034
rewrite hQ1 - 0035
specialize le_refl 1 - 0036
apply le_refl - 0037
intro z - 0038
intro k - 0039
intro Q - 0040
intro hw - 0041
intro hz - 0042
intro hk - 0043
intro hQ - 0044
have hprod : exists a w. (((exists fs_h_pc_weight_last_factor. fs_h_pc_weight_last_factor + S (a) = S ((S (l)) * c)) /\ exists fs_q_pc_weight_last_factor. b = fs_q_pc_weight_last_factor * S ((S (l)) * c) + (a))) /\ ((exists ff_u_pc_weight_previous_product ff_v_pc_weight_previous_product. ((((exists ff_h_pc_weight_previous_product_start. ff_h_pc_weight_previous_product_start + S (1) = S ((S (0)) * ff_v_pc_weight_previous_product)) /\ exists ff_q_pc_weight_previous_product_start. ff_u_pc_weight_previous_product = ff_q_pc_weight_previous_product_start * S ((S (0)) * ff_v_pc_weight_previous_product) + (1))) /\ ((((exists ff_h_pc_weight_previous_product_terminal. ff_h_pc_weight_previous_product_terminal + S (w) = S ((S (l)) * ff_v_pc_weight_previous_product)) /\ exists ff_q_pc_weight_previous_product_terminal. ff_u_pc_weight_previous_product = ff_q_pc_weight_previous_product_terminal * S ((S (l)) * ff_v_pc_weight_previous_product) + (w))) /\ forall ff_i_pc_weight_previous_product. (exists ff_lt_pc_weight_previous_product_bound. ff_lt_pc_weight_previous_product_bound + S ff_i_pc_weight_previous_product = l) -> exists ff_p_pc_weight_previous_product ff_r_pc_weight_previous_product ff_s_pc_weight_previous_product. ((((exists ff_h_pc_weight_previous_product_factor. ff_h_pc_weight_previous_product_factor + S (ff_p_pc_weight_previous_product) = S ((S (ff_i_pc_weight_previous_product)) * c)) /\ exists ff_q_pc_weight_previous_product_factor. b = ff_q_pc_weight_previous_product_factor * S ((S (ff_i_pc_weight_previous_product)) * c) + (ff_p_pc_weight_previous_product))) /\ ((((exists ff_h_pc_weight_previous_product_partial. ff_h_pc_weight_previous_product_partial + S (ff_r_pc_weight_previous_product) = S ((S (ff_i_pc_weight_previous_product)) * ff_v_pc_weight_previous_product)) /\ exists ff_q_pc_weight_previous_product_partial. ff_u_pc_weight_previous_product = ff_q_pc_weight_previous_product_partial * S ((S (ff_i_pc_weight_previous_product)) * ff_v_pc_weight_previous_product) + (ff_r_pc_weight_previous_product))) /\ ((((exists ff_h_pc_weight_previous_product_successor. ff_h_pc_weight_previous_product_successor + S (ff_s_pc_weight_previous_product) = S ((S (S ff_i_pc_weight_previous_product)) * ff_v_pc_weight_previous_product)) /\ exists ff_q_pc_weight_previous_product_successor. ff_u_pc_weight_previous_product = ff_q_pc_weight_previous_product_successor * S ((S (S ff_i_pc_weight_previous_product)) * ff_v_pc_weight_previous_product) + (ff_s_pc_weight_previous_product))) /\ ff_s_pc_weight_previous_product = ff_r_pc_weight_previous_product * ff_p_pc_weight_previous_product)))))) /\ z = w * a) - 0045
specialize beta_product_succ_decompose b - 0046
specialize beta_product_succ_decompose c - 0047
specialize beta_product_succ_decompose l - 0048
specialize beta_product_succ_decompose z - 0049
apply beta_product_succ_decompose - 0050
exact hz - 0051
cases hprod - 0052
cases hprod_witness - 0053
cases hprod_witness_witness - 0054
cases hprod_witness_witness_right - 0055
have hsum : exists e K. (((exists fs_h_pc_weight_last_bit. fs_h_pc_weight_last_bit + S (e) = S ((S (l)) * f)) /\ exists fs_q_pc_weight_last_bit. d = fs_q_pc_weight_last_bit * S ((S (l)) * f) + (e))) /\ ((exists fs_u_pc_weight_previous_sum fs_v_pc_weight_previous_sum. ((((exists fs_h_pc_weight_previous_sum_body_start. fs_h_pc_weight_previous_sum_body_start + S (0) = S ((S (0)) * fs_v_pc_weight_previous_sum)) /\ exists fs_q_pc_weight_previous_sum_body_start. fs_u_pc_weight_previous_sum = fs_q_pc_weight_previous_sum_body_start * S ((S (0)) * fs_v_pc_weight_previous_sum) + (0))) /\ ((((exists fs_h_pc_weight_previous_sum_body_terminal. fs_h_pc_weight_previous_sum_body_terminal + S (K) = S ((S (l)) * fs_v_pc_weight_previous_sum)) /\ exists fs_q_pc_weight_previous_sum_body_terminal. fs_u_pc_weight_previous_sum = fs_q_pc_weight_previous_sum_body_terminal * S ((S (l)) * fs_v_pc_weight_previous_sum) + (K))) /\ forall fs_i_pc_weight_previous_sum_body_steps. (exists fs_lt_pc_weight_previous_sum_body_steps_bound. fs_lt_pc_weight_previous_sum_body_steps_bound + S fs_i_pc_weight_previous_sum_body_steps = l) -> exists fs_a_pc_weight_previous_sum_body_steps fs_r_pc_weight_previous_sum_body_steps fs_s_pc_weight_previous_sum_body_steps. ((((exists fs_h_pc_weight_previous_sum_body_steps_summand. fs_h_pc_weight_previous_sum_body_steps_summand + S (fs_a_pc_weight_previous_sum_body_steps) = S ((S (fs_i_pc_weight_previous_sum_body_steps)) * f)) /\ exists fs_q_pc_weight_previous_sum_body_steps_summand. d = fs_q_pc_weight_previous_sum_body_steps_summand * S ((S (fs_i_pc_weight_previous_sum_body_steps)) * f) + (fs_a_pc_weight_previous_sum_body_steps))) /\ ((((exists fs_h_pc_weight_previous_sum_body_steps_partial. fs_h_pc_weight_previous_sum_body_steps_partial + S (fs_r_pc_weight_previous_sum_body_steps) = S ((S (fs_i_pc_weight_previous_sum_body_steps)) * fs_v_pc_weight_previous_sum)) /\ exists fs_q_pc_weight_previous_sum_body_steps_partial. fs_u_pc_weight_previous_sum = fs_q_pc_weight_previous_sum_body_steps_partial * S ((S (fs_i_pc_weight_previous_sum_body_steps)) * fs_v_pc_weight_previous_sum) + (fs_r_pc_weight_previous_sum_body_steps))) /\ ((((exists fs_h_pc_weight_previous_sum_body_steps_successor. fs_h_pc_weight_previous_sum_body_steps_successor + S (fs_s_pc_weight_previous_sum_body_steps) = S ((S (S fs_i_pc_weight_previous_sum_body_steps)) * fs_v_pc_weight_previous_sum)) /\ exists fs_q_pc_weight_previous_sum_body_steps_successor. fs_u_pc_weight_previous_sum = fs_q_pc_weight_previous_sum_body_steps_successor * S ((S (S fs_i_pc_weight_previous_sum_body_steps)) * fs_v_pc_weight_previous_sum) + (fs_s_pc_weight_previous_sum_body_steps))) /\ fs_s_pc_weight_previous_sum_body_steps = fs_r_pc_weight_previous_sum_body_steps + fs_a_pc_weight_previous_sum_body_steps)))))) /\ k = K + e) - 0056
specialize beta_sum_succ_decompose d - 0057
specialize beta_sum_succ_decompose f - 0058
specialize beta_sum_succ_decompose l - 0059
specialize beta_sum_succ_decompose k - 0060
apply beta_sum_succ_decompose - 0061
exact hk - 0062
cases hsum - 0063
cases hsum_witness - 0064
cases hsum_witness_witness - 0065
cases hsum_witness_witness_right - 0066
have hp : exists R. exists pa_b_pc_weight_previous_power pa_c_pc_weight_previous_power. ((forall pa_i_pc_weight_previous_power_repeat. (exists pa_lt_pc_weight_previous_power_repeat_bound. pa_lt_pc_weight_previous_power_repeat_bound + S pa_i_pc_weight_previous_power_repeat = x3) -> (((exists pa_h_pc_weight_previous_power_repeat_decoded. pa_h_pc_weight_previous_power_repeat_decoded + S (B) = S ((S (pa_i_pc_weight_previous_power_repeat)) * pa_c_pc_weight_previous_power)) /\ exists pa_q_pc_weight_previous_power_repeat_decoded. pa_b_pc_weight_previous_power = pa_q_pc_weight_previous_power_repeat_decoded * S ((S (pa_i_pc_weight_previous_power_repeat)) * pa_c_pc_weight_previous_power) + (B)))) /\ (exists pa_u_pc_weight_previous_power_product pa_v_pc_weight_previous_power_product. ((((exists pa_h_pc_weight_previous_power_product_start. pa_h_pc_weight_previous_power_product_start + S (1) = S ((S (0)) * pa_v_pc_weight_previous_power_product)) /\ exists pa_q_pc_weight_previous_power_product_start. pa_u_pc_weight_previous_power_product = pa_q_pc_weight_previous_power_product_start * S ((S (0)) * pa_v_pc_weight_previous_power_product) + (1))) /\ ((((exists pa_h_pc_weight_previous_power_product_terminal. pa_h_pc_weight_previous_power_product_terminal + S (R) = S ((S (x3)) * pa_v_pc_weight_previous_power_product)) /\ exists pa_q_pc_weight_previous_power_product_terminal. pa_u_pc_weight_previous_power_product = pa_q_pc_weight_previous_power_product_terminal * S ((S (x3)) * pa_v_pc_weight_previous_power_product) + (R))) /\ forall pa_i_pc_weight_previous_power_product. (exists pa_lt_pc_weight_previous_power_product_bound. pa_lt_pc_weight_previous_power_product_bound + S pa_i_pc_weight_previous_power_product = x3) -> exists pa_p_pc_weight_previous_power_product pa_r_pc_weight_previous_power_product pa_s_pc_weight_previous_power_product. ((((exists pa_h_pc_weight_previous_power_product_factor. pa_h_pc_weight_previous_power_product_factor + S (pa_p_pc_weight_previous_power_product) = S ((S (pa_i_pc_weight_previous_power_product)) * pa_c_pc_weight_previous_power)) /\ exists pa_q_pc_weight_previous_power_product_factor. pa_b_pc_weight_previous_power = pa_q_pc_weight_previous_power_product_factor * S ((S (pa_i_pc_weight_previous_power_product)) * pa_c_pc_weight_previous_power) + (pa_p_pc_weight_previous_power_product))) /\ ((((exists pa_h_pc_weight_previous_power_product_partial. pa_h_pc_weight_previous_power_product_partial + S (pa_r_pc_weight_previous_power_product) = S ((S (pa_i_pc_weight_previous_power_product)) * pa_v_pc_weight_previous_power_product)) /\ exists pa_q_pc_weight_previous_power_product_partial. pa_u_pc_weight_previous_power_product = pa_q_pc_weight_previous_power_product_partial * S ((S (pa_i_pc_weight_previous_power_product)) * pa_v_pc_weight_previous_power_product) + (pa_r_pc_weight_previous_power_product))) /\ ((((exists pa_h_pc_weight_previous_power_product_successor. pa_h_pc_weight_previous_power_product_successor + S (pa_s_pc_weight_previous_power_product) = S ((S (S pa_i_pc_weight_previous_power_product)) * pa_v_pc_weight_previous_power_product)) /\ exists pa_q_pc_weight_previous_power_product_successor. pa_u_pc_weight_previous_power_product = pa_q_pc_weight_previous_power_product_successor * S ((S (S pa_i_pc_weight_previous_power_product)) * pa_v_pc_weight_previous_power_product) + (pa_s_pc_weight_previous_power_product))) /\ pa_s_pc_weight_previous_power_product = pa_r_pc_weight_previous_power_product * pa_p_pc_weight_previous_power_product))))))) - 0067
specialize pow_exists B - 0068
specialize pow_exists x3 - 0069
apply pow_exists - 0070
cases hp - 0071
have hpre : exists pc_le_weight_previous_bound. pc_le_weight_previous_bound + (x4) = (x1) - 0072
specialize IH x1 - 0073
specialize IH x3 - 0074
specialize IH x4 - 0075
apply IH - 0076
intro i - 0077
intro a - 0078
intro e - 0079
intro hi - 0080
intro ha - 0081
intro he - 0082
specialize hw i - 0083
specialize hw a - 0084
specialize hw e - 0085
apply hw - 0086
specialize le_succ (S i) - 0087
specialize le_succ l - 0088
apply le_succ - 0089
exact hi - 0090
exact ha - 0091
exact he - 0092
exact hprod_witness_witness_right_left - 0093
exact hsum_witness_witness_right_left - 0094
exact hp_witness - 0095
have hlast : (x2 = 0 /\ (exists pc_le_weight_last_zero. pc_le_weight_last_zero + (1) = (x))) \/ (x2 = 1 /\ (exists pc_le_weight_last_one. pc_le_weight_last_one + (B) = (x))) - 0096
specialize hw l - 0097
specialize hw x - 0098
specialize hw x2 - 0099
apply hw - 0100
specialize le_refl (S l) - 0101
apply le_refl - 0102
exact hprod_witness_witness_left - 0103
exact hsum_witness_witness_left - 0104
cases hlast - 0105
cases hlast_left - 0106
have hk0 : k = x3 - 0107
trans x3 + x2 - 0108
exact hsum_witness_witness_right_right - 0109
rewrite hlast_left_left - 0110
apply PA3 - 0111
rewrite hk0 at hQ - 0112
rewrite hk0 at hQ - 0113
rewrite hk0 at hQ - 0114
rewrite hk0 at hQ - 0115
have hQ0 : Q = x4 - 0116
specialize pow_functional B - 0117
specialize pow_functional x3 - 0118
specialize pow_functional Q - 0119
specialize pow_functional x4 - 0120
apply pow_functional - 0121
exact hQ - 0122
exact hp_witness - 0123
rewrite hprod_witness_witness_right_right - 0124
rewrite hQ0 - 0125
specialize le_trans x4 - 0126
specialize le_trans x1 - 0127
specialize le_trans (x1 * x) - 0128
apply le_trans - 0129
exact hpre - 0130
specialize le_mul_of_one_le_right x1 - 0131
specialize le_mul_of_one_le_right x - 0132
apply le_mul_of_one_le_right - 0133
exact hlast_left_right - 0134
cases hlast_right - 0135
have hk1 : k = S x3 - 0136
trans x3 + x2 - 0137
exact hsum_witness_witness_right_right - 0138
rewrite hlast_right_left - 0139
simp - 0140
have hQ1 : Q = x4 * B - 0141
specialize pow_successor_pair_mul B - 0142
specialize pow_successor_pair_mul x3 - 0143
specialize pow_successor_pair_mul k - 0144
specialize pow_successor_pair_mul x4 - 0145
specialize pow_successor_pair_mul Q - 0146
apply pow_successor_pair_mul - 0147
exact hk1 - 0148
exact hp_witness - 0149
exact hQ - 0150
rewrite hprod_witness_witness_right_right - 0151
rewrite hQ1 - 0152
specialize mul_le_mul x4 - 0153
specialize mul_le_mul x1 - 0154
specialize mul_le_mul B - 0155
specialize mul_le_mul x - 0156
apply mul_le_mul - 0157
exact hpre - 0158
exact hlast_right_right