Exact expanded first-order arithmetic statement
forall l a m b c d e t P Q w. (exists eut_code_eu_balance_count eut_scale_eu_balance_count. (forall eut_index_eu_balance_count_mask. (exists eut_gap_eu_balance_count_mask_bound. eut_gap_eu_balance_count_mask_bound + S (eut_index_eu_balance_count_mask) = (l)) -> exists eut_bit_eu_balance_count_mask. (((exists fs_h_eut_eu_balance_count_mask_entry. fs_h_eut_eu_balance_count_mask_entry + S (eut_bit_eu_balance_count_mask) = S ((S (eut_index_eu_balance_count_mask)) * eut_scale_eu_balance_count)) /\ exists fs_q_eut_eu_balance_count_mask_entry. eut_code_eu_balance_count = fs_q_eut_eu_balance_count_mask_entry * S ((S (eut_index_eu_balance_count_mask)) * eut_scale_eu_balance_count) + (eut_bit_eu_balance_count_mask))) /\ ((((forall eut_divisor_eu_balance_count_mask_choice_coprime. (exists eut_left_eu_balance_count_mask_choice_coprime. (eut_index_eu_balance_count_mask) = eut_divisor_eu_balance_count_mask_choice_coprime * eut_left_eu_balance_count_mask_choice_coprime) -> (exists eut_right_eu_balance_count_mask_choice_coprime. (m) = eut_divisor_eu_balance_count_mask_choice_coprime * eut_right_eu_balance_count_mask_choice_coprime) -> eut_divisor_eu_balance_count_mask_choice_coprime = 1) /\ (eut_bit_eu_balance_count_mask) = 1) \/ (~(forall eut_divisor_eu_balance_count_mask_choice_coprime. (exists eut_left_eu_balance_count_mask_choice_coprime. (eut_index_eu_balance_count_mask) = eut_divisor_eu_balance_count_mask_choice_coprime * eut_left_eu_balance_count_mask_choice_coprime) -> (exists eut_right_eu_balance_count_mask_choice_coprime. (m) = eut_divisor_eu_balance_count_mask_choice_coprime * eut_right_eu_balance_count_mask_choice_coprime) -> eut_divisor_eu_balance_count_mask_choice_coprime = 1) /\ (eut_bit_eu_balance_count_mask) = 0)))) /\ (exists fs_u_eut_eu_balance_count_sum fs_v_eut_eu_balance_count_sum. ((((exists fs_h_eut_eu_balance_count_sum_body_start. fs_h_eut_eu_balance_count_sum_body_start + S (0) = S ((S (0)) * fs_v_eut_eu_balance_count_sum)) /\ exists fs_q_eut_eu_balance_count_sum_body_start. fs_u_eut_eu_balance_count_sum = fs_q_eut_eu_balance_count_sum_body_start * S ((S (0)) * fs_v_eut_eu_balance_count_sum) + (0))) /\ ((((exists fs_h_eut_eu_balance_count_sum_body_terminal. fs_h_eut_eu_balance_count_sum_body_terminal + S (t) = S ((S (l)) * fs_v_eut_eu_balance_count_sum)) /\ exists fs_q_eut_eu_balance_count_sum_body_terminal. fs_u_eut_eu_balance_count_sum = fs_q_eut_eu_balance_count_sum_body_terminal * S ((S (l)) * fs_v_eut_eu_balance_count_sum) + (t))) /\ forall fs_i_eut_eu_balance_count_sum_body_steps. (exists fs_lt_eut_eu_balance_count_sum_body_steps_bound. fs_lt_eut_eu_balance_count_sum_body_steps_bound + S fs_i_eut_eu_balance_count_sum_body_steps = l) -> exists fs_a_eut_eu_balance_count_sum_body_steps fs_r_eut_eu_balance_count_sum_body_steps fs_s_eut_eu_balance_count_sum_body_steps. ((((exists fs_h_eut_eu_balance_count_sum_body_steps_summand. fs_h_eut_eu_balance_count_sum_body_steps_summand + S (fs_a_eut_eu_balance_count_sum_body_steps) = S ((S (fs_i_eut_eu_balance_count_sum_body_steps)) * eut_scale_eu_balance_count)) /\ exists fs_q_eut_eu_balance_count_sum_body_steps_summand. eut_code_eu_balance_count = fs_q_eut_eu_balance_count_sum_body_steps_summand * S ((S (fs_i_eut_eu_balance_count_sum_body_steps)) * eut_scale_eu_balance_count) + (fs_a_eut_eu_balance_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_balance_count_sum_body_steps_partial. fs_h_eut_eu_balance_count_sum_body_steps_partial + S (fs_r_eut_eu_balance_count_sum_body_steps) = S ((S (fs_i_eut_eu_balance_count_sum_body_steps)) * fs_v_eut_eu_balance_count_sum)) /\ exists fs_q_eut_eu_balance_count_sum_body_steps_partial. fs_u_eut_eu_balance_count_sum = fs_q_eut_eu_balance_count_sum_body_steps_partial * S ((S (fs_i_eut_eu_balance_count_sum_body_steps)) * fs_v_eut_eu_balance_count_sum) + (fs_r_eut_eu_balance_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_balance_count_sum_body_steps_successor. fs_h_eut_eu_balance_count_sum_body_steps_successor + S (fs_s_eut_eu_balance_count_sum_body_steps) = S ((S (S fs_i_eut_eu_balance_count_sum_body_steps)) * fs_v_eut_eu_balance_count_sum)) /\ exists fs_q_eut_eu_balance_count_sum_body_steps_successor. fs_u_eut_eu_balance_count_sum = fs_q_eut_eu_balance_count_sum_body_steps_successor * S ((S (S fs_i_eut_eu_balance_count_sum_body_steps)) * fs_v_eut_eu_balance_count_sum) + (fs_s_eut_eu_balance_count_sum_body_steps))) /\ fs_s_eut_eu_balance_count_sum_body_steps = fs_r_eut_eu_balance_count_sum_body_steps + fs_a_eut_eu_balance_count_sum_body_steps))))))) -> (forall eu_scale_index_balance_scale eu_scale_source_balance_scale eu_scale_target_balance_scale. (exists eut_gap_eu_balance_scale_index. eut_gap_eu_balance_scale_index + S (eu_scale_index_balance_scale) = (l)) -> (((exists fs_h_eu_balance_scale_source. fs_h_eu_balance_scale_source + S (eu_scale_source_balance_scale) = S ((S (eu_scale_index_balance_scale)) * c)) /\ exists fs_q_eu_balance_scale_source. b = fs_q_eu_balance_scale_source * S ((S (eu_scale_index_balance_scale)) * c) + (eu_scale_source_balance_scale))) -> (((exists fs_h_eu_balance_scale_target. fs_h_eu_balance_scale_target + S (eu_scale_target_balance_scale) = S ((S (eu_scale_index_balance_scale)) * e)) /\ exists fs_q_eu_balance_scale_target. d = fs_q_eu_balance_scale_target * S ((S (eu_scale_index_balance_scale)) * e) + (eu_scale_target_balance_scale))) -> (((forall eut_divisor_eu_balance_scale_unit. (exists eut_left_eu_balance_scale_unit. (eu_scale_index_balance_scale) = eut_divisor_eu_balance_scale_unit * eut_left_eu_balance_scale_unit) -> (exists eut_right_eu_balance_scale_unit. (m) = eut_divisor_eu_balance_scale_unit * eut_right_eu_balance_scale_unit) -> eut_divisor_eu_balance_scale_unit = 1) -> (exists eu_mod_left_balance_scale_scaled eu_mod_right_balance_scale_scaled. ((a)*eu_scale_source_balance_scale) + (m) * eu_mod_left_balance_scale_scaled = (eu_scale_target_balance_scale) + (m) * eu_mod_right_balance_scale_scaled)) /\ (~(forall eut_divisor_eu_balance_scale_unit. (exists eut_left_eu_balance_scale_unit. (eu_scale_index_balance_scale) = eut_divisor_eu_balance_scale_unit * eut_left_eu_balance_scale_unit) -> (exists eut_right_eu_balance_scale_unit. (m) = eut_divisor_eu_balance_scale_unit * eut_right_eu_balance_scale_unit) -> eut_divisor_eu_balance_scale_unit = 1) -> (exists eu_mod_left_balance_scale_unchanged eu_mod_right_balance_scale_unchanged. (eu_scale_source_balance_scale) + (m) * eu_mod_left_balance_scale_unchanged = (eu_scale_target_balance_scale) + (m) * eu_mod_right_balance_scale_unchanged)))) -> (exists ff_u_fsat_eu_balance_source ff_v_fsat_eu_balance_source. ((((exists ff_h_fsat_eu_balance_source_start. ff_h_fsat_eu_balance_source_start + S (1) = S ((S (0)) * ff_v_fsat_eu_balance_source)) /\ exists ff_q_fsat_eu_balance_source_start. ff_u_fsat_eu_balance_source = ff_q_fsat_eu_balance_source_start * S ((S (0)) * ff_v_fsat_eu_balance_source) + (1))) /\ ((((exists ff_h_fsat_eu_balance_source_terminal. ff_h_fsat_eu_balance_source_terminal + S (P) = S ((S (l)) * ff_v_fsat_eu_balance_source)) /\ exists ff_q_fsat_eu_balance_source_terminal. ff_u_fsat_eu_balance_source = ff_q_fsat_eu_balance_source_terminal * S ((S (l)) * ff_v_fsat_eu_balance_source) + (P))) /\ forall ff_i_fsat_eu_balance_source. (exists ff_lt_fsat_eu_balance_source_bound. ff_lt_fsat_eu_balance_source_bound + S ff_i_fsat_eu_balance_source = l) -> exists ff_p_fsat_eu_balance_source ff_r_fsat_eu_balance_source ff_s_fsat_eu_balance_source. ((((exists ff_h_fsat_eu_balance_source_factor. ff_h_fsat_eu_balance_source_factor + S (ff_p_fsat_eu_balance_source) = S ((S (ff_i_fsat_eu_balance_source)) * c)) /\ exists ff_q_fsat_eu_balance_source_factor. b = ff_q_fsat_eu_balance_source_factor * S ((S (ff_i_fsat_eu_balance_source)) * c) + (ff_p_fsat_eu_balance_source))) /\ ((((exists ff_h_fsat_eu_balance_source_partial. ff_h_fsat_eu_balance_source_partial + S (ff_r_fsat_eu_balance_source) = S ((S (ff_i_fsat_eu_balance_source)) * ff_v_fsat_eu_balance_source)) /\ exists ff_q_fsat_eu_balance_source_partial. ff_u_fsat_eu_balance_source = ff_q_fsat_eu_balance_source_partial * S ((S (ff_i_fsat_eu_balance_source)) * ff_v_fsat_eu_balance_source) + (ff_r_fsat_eu_balance_source))) /\ ((((exists ff_h_fsat_eu_balance_source_successor. ff_h_fsat_eu_balance_source_successor + S (ff_s_fsat_eu_balance_source) = S ((S (S ff_i_fsat_eu_balance_source)) * ff_v_fsat_eu_balance_source)) /\ exists ff_q_fsat_eu_balance_source_successor. ff_u_fsat_eu_balance_source = ff_q_fsat_eu_balance_source_successor * S ((S (S ff_i_fsat_eu_balance_source)) * ff_v_fsat_eu_balance_source) + (ff_s_fsat_eu_balance_source))) /\ ff_s_fsat_eu_balance_source = ff_r_fsat_eu_balance_source * ff_p_fsat_eu_balance_source)))))) -> (exists ff_u_fsat_eu_balance_target ff_v_fsat_eu_balance_target. ((((exists ff_h_fsat_eu_balance_target_start. ff_h_fsat_eu_balance_target_start + S (1) = S ((S (0)) * ff_v_fsat_eu_balance_target)) /\ exists ff_q_fsat_eu_balance_target_start. ff_u_fsat_eu_balance_target = ff_q_fsat_eu_balance_target_start * S ((S (0)) * ff_v_fsat_eu_balance_target) + (1))) /\ ((((exists ff_h_fsat_eu_balance_target_terminal. ff_h_fsat_eu_balance_target_terminal + S (Q) = S ((S (l)) * ff_v_fsat_eu_balance_target)) /\ exists ff_q_fsat_eu_balance_target_terminal. ff_u_fsat_eu_balance_target = ff_q_fsat_eu_balance_target_terminal * S ((S (l)) * ff_v_fsat_eu_balance_target) + (Q))) /\ forall ff_i_fsat_eu_balance_target. (exists ff_lt_fsat_eu_balance_target_bound. ff_lt_fsat_eu_balance_target_bound + S ff_i_fsat_eu_balance_target = l) -> exists ff_p_fsat_eu_balance_target ff_r_fsat_eu_balance_target ff_s_fsat_eu_balance_target. ((((exists ff_h_fsat_eu_balance_target_factor. ff_h_fsat_eu_balance_target_factor + S (ff_p_fsat_eu_balance_target) = S ((S (ff_i_fsat_eu_balance_target)) * e)) /\ exists ff_q_fsat_eu_balance_target_factor. d = ff_q_fsat_eu_balance_target_factor * S ((S (ff_i_fsat_eu_balance_target)) * e) + (ff_p_fsat_eu_balance_target))) /\ ((((exists ff_h_fsat_eu_balance_target_partial. ff_h_fsat_eu_balance_target_partial + S (ff_r_fsat_eu_balance_target) = S ((S (ff_i_fsat_eu_balance_target)) * ff_v_fsat_eu_balance_target)) /\ exists ff_q_fsat_eu_balance_target_partial. ff_u_fsat_eu_balance_target = ff_q_fsat_eu_balance_target_partial * S ((S (ff_i_fsat_eu_balance_target)) * ff_v_fsat_eu_balance_target) + (ff_r_fsat_eu_balance_target))) /\ ((((exists ff_h_fsat_eu_balance_target_successor. ff_h_fsat_eu_balance_target_successor + S (ff_s_fsat_eu_balance_target) = S ((S (S ff_i_fsat_eu_balance_target)) * ff_v_fsat_eu_balance_target)) /\ exists ff_q_fsat_eu_balance_target_successor. ff_u_fsat_eu_balance_target = ff_q_fsat_eu_balance_target_successor * S ((S (S ff_i_fsat_eu_balance_target)) * ff_v_fsat_eu_balance_target) + (ff_s_fsat_eu_balance_target))) /\ ff_s_fsat_eu_balance_target = ff_r_fsat_eu_balance_target * ff_p_fsat_eu_balance_target)))))) -> (exists pa_b_euta_eu_balance_power pa_c_euta_eu_balance_power. ((forall pa_i_euta_eu_balance_power_repeat. (exists pa_lt_euta_eu_balance_power_repeat_bound. pa_lt_euta_eu_balance_power_repeat_bound + S pa_i_euta_eu_balance_power_repeat = t) -> (((exists pa_h_euta_eu_balance_power_repeat_decoded. pa_h_euta_eu_balance_power_repeat_decoded + S (a) = S ((S (pa_i_euta_eu_balance_power_repeat)) * pa_c_euta_eu_balance_power)) /\ exists pa_q_euta_eu_balance_power_repeat_decoded. pa_b_euta_eu_balance_power = pa_q_euta_eu_balance_power_repeat_decoded * S ((S (pa_i_euta_eu_balance_power_repeat)) * pa_c_euta_eu_balance_power) + (a)))) /\ (exists pa_u_euta_eu_balance_power_product pa_v_euta_eu_balance_power_product. ((((exists pa_h_euta_eu_balance_power_product_start. pa_h_euta_eu_balance_power_product_start + S (1) = S ((S (0)) * pa_v_euta_eu_balance_power_product)) /\ exists pa_q_euta_eu_balance_power_product_start. pa_u_euta_eu_balance_power_product = pa_q_euta_eu_balance_power_product_start * S ((S (0)) * pa_v_euta_eu_balance_power_product) + (1))) /\ ((((exists pa_h_euta_eu_balance_power_product_terminal. pa_h_euta_eu_balance_power_product_terminal + S (w) = S ((S (t)) * pa_v_euta_eu_balance_power_product)) /\ exists pa_q_euta_eu_balance_power_product_terminal. pa_u_euta_eu_balance_power_product = pa_q_euta_eu_balance_power_product_terminal * S ((S (t)) * pa_v_euta_eu_balance_power_product) + (w))) /\ forall pa_i_euta_eu_balance_power_product. (exists pa_lt_euta_eu_balance_power_product_bound. pa_lt_euta_eu_balance_power_product_bound + S pa_i_euta_eu_balance_power_product = t) -> exists pa_p_euta_eu_balance_power_product pa_r_euta_eu_balance_power_product pa_s_euta_eu_balance_power_product. ((((exists pa_h_euta_eu_balance_power_product_factor. pa_h_euta_eu_balance_power_product_factor + S (pa_p_euta_eu_balance_power_product) = S ((S (pa_i_euta_eu_balance_power_product)) * pa_c_euta_eu_balance_power)) /\ exists pa_q_euta_eu_balance_power_product_factor. pa_b_euta_eu_balance_power = pa_q_euta_eu_balance_power_product_factor * S ((S (pa_i_euta_eu_balance_power_product)) * pa_c_euta_eu_balance_power) + (pa_p_euta_eu_balance_power_product))) /\ ((((exists pa_h_euta_eu_balance_power_product_partial. pa_h_euta_eu_balance_power_product_partial + S (pa_r_euta_eu_balance_power_product) = S ((S (pa_i_euta_eu_balance_power_product)) * pa_v_euta_eu_balance_power_product)) /\ exists pa_q_euta_eu_balance_power_product_partial. pa_u_euta_eu_balance_power_product = pa_q_euta_eu_balance_power_product_partial * S ((S (pa_i_euta_eu_balance_power_product)) * pa_v_euta_eu_balance_power_product) + (pa_r_euta_eu_balance_power_product))) /\ ((((exists pa_h_euta_eu_balance_power_product_successor. pa_h_euta_eu_balance_power_product_successor + S (pa_s_euta_eu_balance_power_product) = S ((S (S pa_i_euta_eu_balance_power_product)) * pa_v_euta_eu_balance_power_product)) /\ exists pa_q_euta_eu_balance_power_product_successor. pa_u_euta_eu_balance_power_product = pa_q_euta_eu_balance_power_product_successor * S ((S (S pa_i_euta_eu_balance_power_product)) * pa_v_euta_eu_balance_power_product) + (pa_s_euta_eu_balance_power_product))) /\ pa_s_euta_eu_balance_power_product = pa_r_euta_eu_balance_power_product * pa_p_euta_eu_balance_power_product)))))))) -> (exists eu_mod_left_balance_result eu_mod_right_balance_result. (w*P) + (m) * eu_mod_left_balance_result = (Q) + (m) * eu_mod_right_balance_result)Constructive proof overview
Generated structural guide
Induction on the actual independently counted zero-based unit prefix proves the exact power/product congruence; no Euler conclusion or unit-count oracle is a premise.
The unchanged tactic script uses 15 declared prerequisites and contains 208 exact native proof lines.
Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable
Proof neighborhood
Direct dependencies
totient_unit_count_zero_length Alpha theorem; checked-use authorized pow_zero Alpha theorem; checked-use authorized beta_product_zero Alpha theorem; checked-use authorized one_mul Alpha theorem; checked-use authorized mod_eq_refl Alpha theorem; checked-use authorized totient_unit_count_succ_decompose Alpha theorem; checked-use authorized beta_product_succ_decompose Alpha theorem; checked-use authorized pow_exists Alpha theorem; checked-use authorized EU001A euler_unit_scaled_prefix_drop_last le_refl Alpha theorem; checked-use authorized pow_successor_pair_mul Alpha theorem; checked-use authorized mul_shuffle_four Alpha theorem; checked-use authorized mod_eq_mul Alpha theorem; checked-use authorized pow_functional Alpha theorem; checked-use authorized mul_assoc 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. The literal dependency-closed bundle is checked by original HA and the independently compiled Lean verifier. Public delivery grants no Alpha checked-use authority or Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (1)
01Induction on lL1–10
02Fix variables and assumptionsL11–16
03Establish ht0L17–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply totient unit count zero length.
04Establish hw1L22–28
05Establish hP1L29–34
06Establish hQ1L35–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product zero.
07Establish heL42–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply one mul.
08Fix variables and assumptionsL52–61
09Fix variables and assumptionsL62–65
10Establish hcL66–71
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply totient unit count succ decompose.
11Separate the logical casesL72–75
12Establish hpL76–82
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
13Separate the logical casesL83–86
14Establish hqL87–93
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
15Separate the logical casesL94–97
16Establish hzL98–101
17Separate the logical casesL102–102
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L102
cases hz
18Establish hpreviousL103–112
Establish this local claim before using it. It is not an additional assumption.
- L103
have hprevious : exists eu_mod_left_balance_previous eu_mod_right_balance_previous. (x6*x3) + (m) * eu_mod_left_balance_previous = (x5) + (m) * eu_mod_right_balance_previous - L104
specialize IH (a) - L105
specialize IH (m) - L106
specialize IH (b) - L107
specialize IH (c) - L108
specialize IH (d) - L109
specialize IH (e) - L110
specialize IH (x) - L111
specialize IH (x3) - L112
specialize IH (x5)
19Use earlier factsL113–122
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L113
specialize IH (x6) - L114
apply IH - L115
exact hc_witness_witness_left - L116
specialize euler_unit_scaled_prefix_drop_last (a) - L117
specialize euler_unit_scaled_prefix_drop_last (m) - L118
specialize euler_unit_scaled_prefix_drop_last (b) - L119
specialize euler_unit_scaled_prefix_drop_last (c) - L120
specialize euler_unit_scaled_prefix_drop_last (d) - L121
specialize euler_unit_scaled_prefix_drop_last (e) - L122
specialize euler_unit_scaled_prefix_drop_last (l)
20Use earlier factsL123–127
21Establish hstepL128–136
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hs.
22Separate the logical casesL137–139
23Establish htexpL140–143
24Establish hwpL144–153
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow successor pair mul.
- L144
have hwp : w=x6*a - L145
specialize pow_successor_pair_mul (a) - L146
specialize pow_successor_pair_mul (x) - L147
specialize pow_successor_pair_mul (t) - L148
specialize pow_successor_pair_mul (x6) - L149
specialize pow_successor_pair_mul (w) - L150
apply pow_successor_pair_mul - L151
exact htexp - L152
exact hz_witness - L153
exact hw
25Establish hproductL154–163
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul shuffle four.
- L154
have hproduct : w*P=(x6*x3)*(a*x2) - L155
rewrite hwp - L156
rewrite hp_witness_witness_right_right - L157
specialize mul_shuffle_four (x6) - L158
specialize mul_shuffle_four (a) - L159
specialize mul_shuffle_four (x3) - L160
specialize mul_shuffle_four (x2) - L161
apply mul_shuffle_four - L162
rewrite hproduct - L163
rewrite hq_witness_witness_right_right
26Use earlier factsL164–172
Instantiate or apply named facts and discharge the corresponding proof obligations.
27Separate the logical casesL173–173
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L173
cases hc_witness_witness_right_left_right
28Establish htexpL174–181
29Establish hwpL182–189
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pow functional.
30Establish hproductL190–199
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul assoc.
31Use earlier factsL200–208
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 208 lines
- 0001
induction l - 0002
intro a - 0003
intro m - 0004
intro b - 0005
intro c - 0006
intro d - 0007
intro e - 0008
intro t - 0009
intro P - 0010
intro Q - 0011
intro w - 0012
intro ht - 0013
intro hs - 0014
intro hP - 0015
intro hQ - 0016
intro hw - 0017
have ht0 : t=0 - 0018
specialize totient_unit_count_zero_length (m) - 0019
specialize totient_unit_count_zero_length (t) - 0020
apply totient_unit_count_zero_length - 0021
exact ht - 0022
have hw1 : w=1 - 0023
specialize pow_zero (a) - 0024
specialize pow_zero (t) - 0025
specialize pow_zero (w) - 0026
apply pow_zero - 0027
exact ht0 - 0028
exact hw - 0029
have hP1 : P=1 - 0030
specialize beta_product_zero (b) - 0031
specialize beta_product_zero (c) - 0032
specialize beta_product_zero (P) - 0033
apply beta_product_zero - 0034
exact hP - 0035
have hQ1 : Q=1 - 0036
specialize beta_product_zero (d) - 0037
specialize beta_product_zero (e) - 0038
specialize beta_product_zero (Q) - 0039
apply beta_product_zero - 0040
exact hQ - 0041
rewrite hw1 - 0042
have he : 1*P=P - 0043
specialize one_mul (P) - 0044
apply one_mul - 0045
rewrite he - 0046
rewrite hP1 - 0047
rewrite hQ1 - 0048
specialize mod_eq_refl (m) - 0049
specialize mod_eq_refl (1) - 0050
apply mod_eq_refl - 0051
intro a - 0052
intro m - 0053
intro b - 0054
intro c - 0055
intro d - 0056
intro e - 0057
intro t - 0058
intro P - 0059
intro Q - 0060
intro w - 0061
intro ht - 0062
intro hs - 0063
intro hP - 0064
intro hQ - 0065
intro hw - 0066
have hc : exists r f. (exists eut_code_eu_balance_previous_count eut_scale_eu_balance_previous_count. (forall eut_index_eu_balance_previous_count_mask. (exists eut_gap_eu_balance_previous_count_mask_bound. eut_gap_eu_balance_previous_count_mask_bound + S (eut_index_eu_balance_previous_count_mask) = (l)) -> exists eut_bit_eu_balance_previous_count_mask. (((exists fs_h_eut_eu_balance_previous_count_mask_entry. fs_h_eut_eu_balance_previous_count_mask_entry + S (eut_bit_eu_balance_previous_count_mask) = S ((S (eut_index_eu_balance_previous_count_mask)) * eut_scale_eu_balance_previous_count)) /\ exists fs_q_eut_eu_balance_previous_count_mask_entry. eut_code_eu_balance_previous_count = fs_q_eut_eu_balance_previous_count_mask_entry * S ((S (eut_index_eu_balance_previous_count_mask)) * eut_scale_eu_balance_previous_count) + (eut_bit_eu_balance_previous_count_mask))) /\ ((((forall eut_divisor_eu_balance_previous_count_mask_choice_coprime. (exists eut_left_eu_balance_previous_count_mask_choice_coprime. (eut_index_eu_balance_previous_count_mask) = eut_divisor_eu_balance_previous_count_mask_choice_coprime * eut_left_eu_balance_previous_count_mask_choice_coprime) -> (exists eut_right_eu_balance_previous_count_mask_choice_coprime. (m) = eut_divisor_eu_balance_previous_count_mask_choice_coprime * eut_right_eu_balance_previous_count_mask_choice_coprime) -> eut_divisor_eu_balance_previous_count_mask_choice_coprime = 1) /\ (eut_bit_eu_balance_previous_count_mask) = 1) \/ (~(forall eut_divisor_eu_balance_previous_count_mask_choice_coprime. (exists eut_left_eu_balance_previous_count_mask_choice_coprime. (eut_index_eu_balance_previous_count_mask) = eut_divisor_eu_balance_previous_count_mask_choice_coprime * eut_left_eu_balance_previous_count_mask_choice_coprime) -> (exists eut_right_eu_balance_previous_count_mask_choice_coprime. (m) = eut_divisor_eu_balance_previous_count_mask_choice_coprime * eut_right_eu_balance_previous_count_mask_choice_coprime) -> eut_divisor_eu_balance_previous_count_mask_choice_coprime = 1) /\ (eut_bit_eu_balance_previous_count_mask) = 0)))) /\ (exists fs_u_eut_eu_balance_previous_count_sum fs_v_eut_eu_balance_previous_count_sum. ((((exists fs_h_eut_eu_balance_previous_count_sum_body_start. fs_h_eut_eu_balance_previous_count_sum_body_start + S (0) = S ((S (0)) * fs_v_eut_eu_balance_previous_count_sum)) /\ exists fs_q_eut_eu_balance_previous_count_sum_body_start. fs_u_eut_eu_balance_previous_count_sum = fs_q_eut_eu_balance_previous_count_sum_body_start * S ((S (0)) * fs_v_eut_eu_balance_previous_count_sum) + (0))) /\ ((((exists fs_h_eut_eu_balance_previous_count_sum_body_terminal. fs_h_eut_eu_balance_previous_count_sum_body_terminal + S (r) = S ((S (l)) * fs_v_eut_eu_balance_previous_count_sum)) /\ exists fs_q_eut_eu_balance_previous_count_sum_body_terminal. fs_u_eut_eu_balance_previous_count_sum = fs_q_eut_eu_balance_previous_count_sum_body_terminal * S ((S (l)) * fs_v_eut_eu_balance_previous_count_sum) + (r))) /\ forall fs_i_eut_eu_balance_previous_count_sum_body_steps. (exists fs_lt_eut_eu_balance_previous_count_sum_body_steps_bound. fs_lt_eut_eu_balance_previous_count_sum_body_steps_bound + S fs_i_eut_eu_balance_previous_count_sum_body_steps = l) -> exists fs_a_eut_eu_balance_previous_count_sum_body_steps fs_r_eut_eu_balance_previous_count_sum_body_steps fs_s_eut_eu_balance_previous_count_sum_body_steps. ((((exists fs_h_eut_eu_balance_previous_count_sum_body_steps_summand. fs_h_eut_eu_balance_previous_count_sum_body_steps_summand + S (fs_a_eut_eu_balance_previous_count_sum_body_steps) = S ((S (fs_i_eut_eu_balance_previous_count_sum_body_steps)) * eut_scale_eu_balance_previous_count)) /\ exists fs_q_eut_eu_balance_previous_count_sum_body_steps_summand. eut_code_eu_balance_previous_count = fs_q_eut_eu_balance_previous_count_sum_body_steps_summand * S ((S (fs_i_eut_eu_balance_previous_count_sum_body_steps)) * eut_scale_eu_balance_previous_count) + (fs_a_eut_eu_balance_previous_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_balance_previous_count_sum_body_steps_partial. fs_h_eut_eu_balance_previous_count_sum_body_steps_partial + S (fs_r_eut_eu_balance_previous_count_sum_body_steps) = S ((S (fs_i_eut_eu_balance_previous_count_sum_body_steps)) * fs_v_eut_eu_balance_previous_count_sum)) /\ exists fs_q_eut_eu_balance_previous_count_sum_body_steps_partial. fs_u_eut_eu_balance_previous_count_sum = fs_q_eut_eu_balance_previous_count_sum_body_steps_partial * S ((S (fs_i_eut_eu_balance_previous_count_sum_body_steps)) * fs_v_eut_eu_balance_previous_count_sum) + (fs_r_eut_eu_balance_previous_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_balance_previous_count_sum_body_steps_successor. fs_h_eut_eu_balance_previous_count_sum_body_steps_successor + S (fs_s_eut_eu_balance_previous_count_sum_body_steps) = S ((S (S fs_i_eut_eu_balance_previous_count_sum_body_steps)) * fs_v_eut_eu_balance_previous_count_sum)) /\ exists fs_q_eut_eu_balance_previous_count_sum_body_steps_successor. fs_u_eut_eu_balance_previous_count_sum = fs_q_eut_eu_balance_previous_count_sum_body_steps_successor * S ((S (S fs_i_eut_eu_balance_previous_count_sum_body_steps)) * fs_v_eut_eu_balance_previous_count_sum) + (fs_s_eut_eu_balance_previous_count_sum_body_steps))) /\ fs_s_eut_eu_balance_previous_count_sum_body_steps = fs_r_eut_eu_balance_previous_count_sum_body_steps + fs_a_eut_eu_balance_previous_count_sum_body_steps))))))) /\ (((((forall eut_divisor_eu_balance_last_bit_coprime. (exists eut_left_eu_balance_last_bit_coprime. (l) = eut_divisor_eu_balance_last_bit_coprime * eut_left_eu_balance_last_bit_coprime) -> (exists eut_right_eu_balance_last_bit_coprime. (m) = eut_divisor_eu_balance_last_bit_coprime * eut_right_eu_balance_last_bit_coprime) -> eut_divisor_eu_balance_last_bit_coprime = 1) /\ (f) = 1) \/ (~(forall eut_divisor_eu_balance_last_bit_coprime. (exists eut_left_eu_balance_last_bit_coprime. (l) = eut_divisor_eu_balance_last_bit_coprime * eut_left_eu_balance_last_bit_coprime) -> (exists eut_right_eu_balance_last_bit_coprime. (m) = eut_divisor_eu_balance_last_bit_coprime * eut_right_eu_balance_last_bit_coprime) -> eut_divisor_eu_balance_last_bit_coprime = 1) /\ (f) = 0))) /\ t=r+f) - 0067
specialize totient_unit_count_succ_decompose (m) - 0068
specialize totient_unit_count_succ_decompose (l) - 0069
specialize totient_unit_count_succ_decompose (t) - 0070
apply totient_unit_count_succ_decompose - 0071
exact ht - 0072
cases hc - 0073
cases hc_witness - 0074
cases hc_witness_witness - 0075
cases hc_witness_witness_right - 0076
have hp : exists v R. (((exists fs_h_eu_balance_source_last. fs_h_eu_balance_source_last + S (v) = S ((S (l)) * c)) /\ exists fs_q_eu_balance_source_last. b = fs_q_eu_balance_source_last * S ((S (l)) * c) + (v))) /\ ((exists ff_u_fsat_eu_balance_source_previous ff_v_fsat_eu_balance_source_previous. ((((exists ff_h_fsat_eu_balance_source_previous_start. ff_h_fsat_eu_balance_source_previous_start + S (1) = S ((S (0)) * ff_v_fsat_eu_balance_source_previous)) /\ exists ff_q_fsat_eu_balance_source_previous_start. ff_u_fsat_eu_balance_source_previous = ff_q_fsat_eu_balance_source_previous_start * S ((S (0)) * ff_v_fsat_eu_balance_source_previous) + (1))) /\ ((((exists ff_h_fsat_eu_balance_source_previous_terminal. ff_h_fsat_eu_balance_source_previous_terminal + S (R) = S ((S (l)) * ff_v_fsat_eu_balance_source_previous)) /\ exists ff_q_fsat_eu_balance_source_previous_terminal. ff_u_fsat_eu_balance_source_previous = ff_q_fsat_eu_balance_source_previous_terminal * S ((S (l)) * ff_v_fsat_eu_balance_source_previous) + (R))) /\ forall ff_i_fsat_eu_balance_source_previous. (exists ff_lt_fsat_eu_balance_source_previous_bound. ff_lt_fsat_eu_balance_source_previous_bound + S ff_i_fsat_eu_balance_source_previous = l) -> exists ff_p_fsat_eu_balance_source_previous ff_r_fsat_eu_balance_source_previous ff_s_fsat_eu_balance_source_previous. ((((exists ff_h_fsat_eu_balance_source_previous_factor. ff_h_fsat_eu_balance_source_previous_factor + S (ff_p_fsat_eu_balance_source_previous) = S ((S (ff_i_fsat_eu_balance_source_previous)) * c)) /\ exists ff_q_fsat_eu_balance_source_previous_factor. b = ff_q_fsat_eu_balance_source_previous_factor * S ((S (ff_i_fsat_eu_balance_source_previous)) * c) + (ff_p_fsat_eu_balance_source_previous))) /\ ((((exists ff_h_fsat_eu_balance_source_previous_partial. ff_h_fsat_eu_balance_source_previous_partial + S (ff_r_fsat_eu_balance_source_previous) = S ((S (ff_i_fsat_eu_balance_source_previous)) * ff_v_fsat_eu_balance_source_previous)) /\ exists ff_q_fsat_eu_balance_source_previous_partial. ff_u_fsat_eu_balance_source_previous = ff_q_fsat_eu_balance_source_previous_partial * S ((S (ff_i_fsat_eu_balance_source_previous)) * ff_v_fsat_eu_balance_source_previous) + (ff_r_fsat_eu_balance_source_previous))) /\ ((((exists ff_h_fsat_eu_balance_source_previous_successor. ff_h_fsat_eu_balance_source_previous_successor + S (ff_s_fsat_eu_balance_source_previous) = S ((S (S ff_i_fsat_eu_balance_source_previous)) * ff_v_fsat_eu_balance_source_previous)) /\ exists ff_q_fsat_eu_balance_source_previous_successor. ff_u_fsat_eu_balance_source_previous = ff_q_fsat_eu_balance_source_previous_successor * S ((S (S ff_i_fsat_eu_balance_source_previous)) * ff_v_fsat_eu_balance_source_previous) + (ff_s_fsat_eu_balance_source_previous))) /\ ff_s_fsat_eu_balance_source_previous = ff_r_fsat_eu_balance_source_previous * ff_p_fsat_eu_balance_source_previous)))))) /\ P=R*v) - 0077
specialize beta_product_succ_decompose (b) - 0078
specialize beta_product_succ_decompose (c) - 0079
specialize beta_product_succ_decompose (l) - 0080
specialize beta_product_succ_decompose (P) - 0081
apply beta_product_succ_decompose - 0082
exact hP - 0083
cases hp - 0084
cases hp_witness - 0085
cases hp_witness_witness - 0086
cases hp_witness_witness_right - 0087
have hq : exists v R. (((exists fs_h_eu_balance_target_last. fs_h_eu_balance_target_last + S (v) = S ((S (l)) * e)) /\ exists fs_q_eu_balance_target_last. d = fs_q_eu_balance_target_last * S ((S (l)) * e) + (v))) /\ ((exists ff_u_fsat_eu_balance_target_previous ff_v_fsat_eu_balance_target_previous. ((((exists ff_h_fsat_eu_balance_target_previous_start. ff_h_fsat_eu_balance_target_previous_start + S (1) = S ((S (0)) * ff_v_fsat_eu_balance_target_previous)) /\ exists ff_q_fsat_eu_balance_target_previous_start. ff_u_fsat_eu_balance_target_previous = ff_q_fsat_eu_balance_target_previous_start * S ((S (0)) * ff_v_fsat_eu_balance_target_previous) + (1))) /\ ((((exists ff_h_fsat_eu_balance_target_previous_terminal. ff_h_fsat_eu_balance_target_previous_terminal + S (R) = S ((S (l)) * ff_v_fsat_eu_balance_target_previous)) /\ exists ff_q_fsat_eu_balance_target_previous_terminal. ff_u_fsat_eu_balance_target_previous = ff_q_fsat_eu_balance_target_previous_terminal * S ((S (l)) * ff_v_fsat_eu_balance_target_previous) + (R))) /\ forall ff_i_fsat_eu_balance_target_previous. (exists ff_lt_fsat_eu_balance_target_previous_bound. ff_lt_fsat_eu_balance_target_previous_bound + S ff_i_fsat_eu_balance_target_previous = l) -> exists ff_p_fsat_eu_balance_target_previous ff_r_fsat_eu_balance_target_previous ff_s_fsat_eu_balance_target_previous. ((((exists ff_h_fsat_eu_balance_target_previous_factor. ff_h_fsat_eu_balance_target_previous_factor + S (ff_p_fsat_eu_balance_target_previous) = S ((S (ff_i_fsat_eu_balance_target_previous)) * e)) /\ exists ff_q_fsat_eu_balance_target_previous_factor. d = ff_q_fsat_eu_balance_target_previous_factor * S ((S (ff_i_fsat_eu_balance_target_previous)) * e) + (ff_p_fsat_eu_balance_target_previous))) /\ ((((exists ff_h_fsat_eu_balance_target_previous_partial. ff_h_fsat_eu_balance_target_previous_partial + S (ff_r_fsat_eu_balance_target_previous) = S ((S (ff_i_fsat_eu_balance_target_previous)) * ff_v_fsat_eu_balance_target_previous)) /\ exists ff_q_fsat_eu_balance_target_previous_partial. ff_u_fsat_eu_balance_target_previous = ff_q_fsat_eu_balance_target_previous_partial * S ((S (ff_i_fsat_eu_balance_target_previous)) * ff_v_fsat_eu_balance_target_previous) + (ff_r_fsat_eu_balance_target_previous))) /\ ((((exists ff_h_fsat_eu_balance_target_previous_successor. ff_h_fsat_eu_balance_target_previous_successor + S (ff_s_fsat_eu_balance_target_previous) = S ((S (S ff_i_fsat_eu_balance_target_previous)) * ff_v_fsat_eu_balance_target_previous)) /\ exists ff_q_fsat_eu_balance_target_previous_successor. ff_u_fsat_eu_balance_target_previous = ff_q_fsat_eu_balance_target_previous_successor * S ((S (S ff_i_fsat_eu_balance_target_previous)) * ff_v_fsat_eu_balance_target_previous) + (ff_s_fsat_eu_balance_target_previous))) /\ ff_s_fsat_eu_balance_target_previous = ff_r_fsat_eu_balance_target_previous * ff_p_fsat_eu_balance_target_previous)))))) /\ Q=R*v) - 0088
specialize beta_product_succ_decompose (d) - 0089
specialize beta_product_succ_decompose (e) - 0090
specialize beta_product_succ_decompose (l) - 0091
specialize beta_product_succ_decompose (Q) - 0092
apply beta_product_succ_decompose - 0093
exact hQ - 0094
cases hq - 0095
cases hq_witness - 0096
cases hq_witness_witness - 0097
cases hq_witness_witness_right - 0098
have hz : exists z. (exists pa_b_euta_eu_balance_previous_power pa_c_euta_eu_balance_previous_power. ((forall pa_i_euta_eu_balance_previous_power_repeat. (exists pa_lt_euta_eu_balance_previous_power_repeat_bound. pa_lt_euta_eu_balance_previous_power_repeat_bound + S pa_i_euta_eu_balance_previous_power_repeat = x) -> (((exists pa_h_euta_eu_balance_previous_power_repeat_decoded. pa_h_euta_eu_balance_previous_power_repeat_decoded + S (a) = S ((S (pa_i_euta_eu_balance_previous_power_repeat)) * pa_c_euta_eu_balance_previous_power)) /\ exists pa_q_euta_eu_balance_previous_power_repeat_decoded. pa_b_euta_eu_balance_previous_power = pa_q_euta_eu_balance_previous_power_repeat_decoded * S ((S (pa_i_euta_eu_balance_previous_power_repeat)) * pa_c_euta_eu_balance_previous_power) + (a)))) /\ (exists pa_u_euta_eu_balance_previous_power_product pa_v_euta_eu_balance_previous_power_product. ((((exists pa_h_euta_eu_balance_previous_power_product_start. pa_h_euta_eu_balance_previous_power_product_start + S (1) = S ((S (0)) * pa_v_euta_eu_balance_previous_power_product)) /\ exists pa_q_euta_eu_balance_previous_power_product_start. pa_u_euta_eu_balance_previous_power_product = pa_q_euta_eu_balance_previous_power_product_start * S ((S (0)) * pa_v_euta_eu_balance_previous_power_product) + (1))) /\ ((((exists pa_h_euta_eu_balance_previous_power_product_terminal. pa_h_euta_eu_balance_previous_power_product_terminal + S (z) = S ((S (x)) * pa_v_euta_eu_balance_previous_power_product)) /\ exists pa_q_euta_eu_balance_previous_power_product_terminal. pa_u_euta_eu_balance_previous_power_product = pa_q_euta_eu_balance_previous_power_product_terminal * S ((S (x)) * pa_v_euta_eu_balance_previous_power_product) + (z))) /\ forall pa_i_euta_eu_balance_previous_power_product. (exists pa_lt_euta_eu_balance_previous_power_product_bound. pa_lt_euta_eu_balance_previous_power_product_bound + S pa_i_euta_eu_balance_previous_power_product = x) -> exists pa_p_euta_eu_balance_previous_power_product pa_r_euta_eu_balance_previous_power_product pa_s_euta_eu_balance_previous_power_product. ((((exists pa_h_euta_eu_balance_previous_power_product_factor. pa_h_euta_eu_balance_previous_power_product_factor + S (pa_p_euta_eu_balance_previous_power_product) = S ((S (pa_i_euta_eu_balance_previous_power_product)) * pa_c_euta_eu_balance_previous_power)) /\ exists pa_q_euta_eu_balance_previous_power_product_factor. pa_b_euta_eu_balance_previous_power = pa_q_euta_eu_balance_previous_power_product_factor * S ((S (pa_i_euta_eu_balance_previous_power_product)) * pa_c_euta_eu_balance_previous_power) + (pa_p_euta_eu_balance_previous_power_product))) /\ ((((exists pa_h_euta_eu_balance_previous_power_product_partial. pa_h_euta_eu_balance_previous_power_product_partial + S (pa_r_euta_eu_balance_previous_power_product) = S ((S (pa_i_euta_eu_balance_previous_power_product)) * pa_v_euta_eu_balance_previous_power_product)) /\ exists pa_q_euta_eu_balance_previous_power_product_partial. pa_u_euta_eu_balance_previous_power_product = pa_q_euta_eu_balance_previous_power_product_partial * S ((S (pa_i_euta_eu_balance_previous_power_product)) * pa_v_euta_eu_balance_previous_power_product) + (pa_r_euta_eu_balance_previous_power_product))) /\ ((((exists pa_h_euta_eu_balance_previous_power_product_successor. pa_h_euta_eu_balance_previous_power_product_successor + S (pa_s_euta_eu_balance_previous_power_product) = S ((S (S pa_i_euta_eu_balance_previous_power_product)) * pa_v_euta_eu_balance_previous_power_product)) /\ exists pa_q_euta_eu_balance_previous_power_product_successor. pa_u_euta_eu_balance_previous_power_product = pa_q_euta_eu_balance_previous_power_product_successor * S ((S (S pa_i_euta_eu_balance_previous_power_product)) * pa_v_euta_eu_balance_previous_power_product) + (pa_s_euta_eu_balance_previous_power_product))) /\ pa_s_euta_eu_balance_previous_power_product = pa_r_euta_eu_balance_previous_power_product * pa_p_euta_eu_balance_previous_power_product)))))))) - 0099
specialize pow_exists (a) - 0100
specialize pow_exists (x) - 0101
apply pow_exists - 0102
cases hz - 0103
have hprevious : exists eu_mod_left_balance_previous eu_mod_right_balance_previous. (x6*x3) + (m) * eu_mod_left_balance_previous = (x5) + (m) * eu_mod_right_balance_previous - 0104
specialize IH (a) - 0105
specialize IH (m) - 0106
specialize IH (b) - 0107
specialize IH (c) - 0108
specialize IH (d) - 0109
specialize IH (e) - 0110
specialize IH (x) - 0111
specialize IH (x3) - 0112
specialize IH (x5) - 0113
specialize IH (x6) - 0114
apply IH - 0115
exact hc_witness_witness_left - 0116
specialize euler_unit_scaled_prefix_drop_last (a) - 0117
specialize euler_unit_scaled_prefix_drop_last (m) - 0118
specialize euler_unit_scaled_prefix_drop_last (b) - 0119
specialize euler_unit_scaled_prefix_drop_last (c) - 0120
specialize euler_unit_scaled_prefix_drop_last (d) - 0121
specialize euler_unit_scaled_prefix_drop_last (e) - 0122
specialize euler_unit_scaled_prefix_drop_last (l) - 0123
apply euler_unit_scaled_prefix_drop_last - 0124
exact hs - 0125
exact hp_witness_witness_right_left - 0126
exact hq_witness_witness_right_left - 0127
exact hz_witness - 0128
have hstep : ((forall eut_divisor_eu_balance_last_unit. (exists eut_left_eu_balance_last_unit. (l) = eut_divisor_eu_balance_last_unit * eut_left_eu_balance_last_unit) -> (exists eut_right_eu_balance_last_unit. (m) = eut_divisor_eu_balance_last_unit * eut_right_eu_balance_last_unit) -> eut_divisor_eu_balance_last_unit = 1) -> (exists eu_mod_left_balance_last_scaled eu_mod_right_balance_last_scaled. (a*x2) + (m) * eu_mod_left_balance_last_scaled = (x4) + (m) * eu_mod_right_balance_last_scaled)) /\ (~(forall eut_divisor_eu_balance_last_nonunit. (exists eut_left_eu_balance_last_nonunit. (l) = eut_divisor_eu_balance_last_nonunit * eut_left_eu_balance_last_nonunit) -> (exists eut_right_eu_balance_last_nonunit. (m) = eut_divisor_eu_balance_last_nonunit * eut_right_eu_balance_last_nonunit) -> eut_divisor_eu_balance_last_nonunit = 1) -> (exists eu_mod_left_balance_last_unchanged eu_mod_right_balance_last_unchanged. (x2) + (m) * eu_mod_left_balance_last_unchanged = (x4) + (m) * eu_mod_right_balance_last_unchanged)) - 0129
specialize hs (l) - 0130
specialize hs (x2) - 0131
specialize hs (x4) - 0132
apply hs - 0133
specialize le_refl (S l) - 0134
apply le_refl - 0135
exact hp_witness_witness_left - 0136
exact hq_witness_witness_left - 0137
cases hstep - 0138
cases hc_witness_witness_right_left - 0139
cases hc_witness_witness_right_left_left - 0140
have htexp : t=S x - 0141
rewrite hc_witness_witness_right_right - 0142
rewrite hc_witness_witness_right_left_left_right - 0143
simp - 0144
have hwp : w=x6*a - 0145
specialize pow_successor_pair_mul (a) - 0146
specialize pow_successor_pair_mul (x) - 0147
specialize pow_successor_pair_mul (t) - 0148
specialize pow_successor_pair_mul (x6) - 0149
specialize pow_successor_pair_mul (w) - 0150
apply pow_successor_pair_mul - 0151
exact htexp - 0152
exact hz_witness - 0153
exact hw - 0154
have hproduct : w*P=(x6*x3)*(a*x2) - 0155
rewrite hwp - 0156
rewrite hp_witness_witness_right_right - 0157
specialize mul_shuffle_four (x6) - 0158
specialize mul_shuffle_four (a) - 0159
specialize mul_shuffle_four (x3) - 0160
specialize mul_shuffle_four (x2) - 0161
apply mul_shuffle_four - 0162
rewrite hproduct - 0163
rewrite hq_witness_witness_right_right - 0164
specialize mod_eq_mul (m) - 0165
specialize mod_eq_mul (x6*x3) - 0166
specialize mod_eq_mul (x5) - 0167
specialize mod_eq_mul (a*x2) - 0168
specialize mod_eq_mul (x4) - 0169
apply mod_eq_mul - 0170
exact hprevious - 0171
apply hstep_left - 0172
exact hc_witness_witness_right_left_left_left - 0173
cases hc_witness_witness_right_left_right - 0174
have htexp : t=x - 0175
rewrite hc_witness_witness_right_right - 0176
rewrite hc_witness_witness_right_left_right_right - 0177
simp - 0178
rewrite htexp at hw - 0179
rewrite htexp at hw - 0180
rewrite htexp at hw - 0181
rewrite htexp at hw - 0182
have hwp : w=x6 - 0183
specialize pow_functional (a) - 0184
specialize pow_functional (x) - 0185
specialize pow_functional (w) - 0186
specialize pow_functional (x6) - 0187
apply pow_functional - 0188
exact hw - 0189
exact hz_witness - 0190
have hproduct : w*P=(x6*x3)*x2 - 0191
rewrite hwp - 0192
rewrite hp_witness_witness_right_right - 0193
symm - 0194
specialize mul_assoc (x6) - 0195
specialize mul_assoc (x3) - 0196
specialize mul_assoc (x2) - 0197
apply mul_assoc - 0198
rewrite hproduct - 0199
rewrite hq_witness_witness_right_right - 0200
specialize mod_eq_mul (m) - 0201
specialize mod_eq_mul (x6*x3) - 0202
specialize mod_eq_mul (x5) - 0203
specialize mod_eq_mul (x2) - 0204
specialize mod_eq_mul (x4) - 0205
apply mod_eq_mul - 0206
exact hprevious - 0207
apply hstep_right - 0208
exact hc_witness_witness_right_left_right_left