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 expanded first-order arithmetic statement
forall a m t w. ~(m=0) -> (forall eut_divisor_eu_endpoint_coprime. (exists eut_left_eu_endpoint_coprime. (a) = eut_divisor_eu_endpoint_coprime * eut_left_eu_endpoint_coprime) -> (exists eut_right_eu_endpoint_coprime. (m) = eut_divisor_eu_endpoint_coprime * eut_right_eu_endpoint_coprime) -> eut_divisor_eu_endpoint_coprime = 1) -> ((~((m)=0) /\ (exists eut_code_eu_endpoint_phi_count eut_scale_eu_endpoint_phi_count. (forall eut_index_eu_endpoint_phi_count_mask. (exists eut_gap_eu_endpoint_phi_count_mask_bound. eut_gap_eu_endpoint_phi_count_mask_bound + S (eut_index_eu_endpoint_phi_count_mask) = (m)) -> exists eut_bit_eu_endpoint_phi_count_mask. (((exists fs_h_eut_eu_endpoint_phi_count_mask_entry. fs_h_eut_eu_endpoint_phi_count_mask_entry + S (eut_bit_eu_endpoint_phi_count_mask) = S ((S (eut_index_eu_endpoint_phi_count_mask)) * eut_scale_eu_endpoint_phi_count)) /\ exists fs_q_eut_eu_endpoint_phi_count_mask_entry. eut_code_eu_endpoint_phi_count = fs_q_eut_eu_endpoint_phi_count_mask_entry * S ((S (eut_index_eu_endpoint_phi_count_mask)) * eut_scale_eu_endpoint_phi_count) + (eut_bit_eu_endpoint_phi_count_mask))) /\ ((((forall eut_divisor_eu_endpoint_phi_count_mask_choice_coprime. (exists eut_left_eu_endpoint_phi_count_mask_choice_coprime. (eut_index_eu_endpoint_phi_count_mask) = eut_divisor_eu_endpoint_phi_count_mask_choice_coprime * eut_left_eu_endpoint_phi_count_mask_choice_coprime) -> (exists eut_right_eu_endpoint_phi_count_mask_choice_coprime. (m) = eut_divisor_eu_endpoint_phi_count_mask_choice_coprime * eut_right_eu_endpoint_phi_count_mask_choice_coprime) -> eut_divisor_eu_endpoint_phi_count_mask_choice_coprime = 1) /\ (eut_bit_eu_endpoint_phi_count_mask) = 1) \/ (~(forall eut_divisor_eu_endpoint_phi_count_mask_choice_coprime. (exists eut_left_eu_endpoint_phi_count_mask_choice_coprime. (eut_index_eu_endpoint_phi_count_mask) = eut_divisor_eu_endpoint_phi_count_mask_choice_coprime * eut_left_eu_endpoint_phi_count_mask_choice_coprime) -> (exists eut_right_eu_endpoint_phi_count_mask_choice_coprime. (m) = eut_divisor_eu_endpoint_phi_count_mask_choice_coprime * eut_right_eu_endpoint_phi_count_mask_choice_coprime) -> eut_divisor_eu_endpoint_phi_count_mask_choice_coprime = 1) /\ (eut_bit_eu_endpoint_phi_count_mask) = 0)))) /\ (exists fs_u_eut_eu_endpoint_phi_count_sum fs_v_eut_eu_endpoint_phi_count_sum. ((((exists fs_h_eut_eu_endpoint_phi_count_sum_body_start. fs_h_eut_eu_endpoint_phi_count_sum_body_start + S (0) = S ((S (0)) * fs_v_eut_eu_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_endpoint_phi_count_sum_body_start. fs_u_eut_eu_endpoint_phi_count_sum = fs_q_eut_eu_endpoint_phi_count_sum_body_start * S ((S (0)) * fs_v_eut_eu_endpoint_phi_count_sum) + (0))) /\ ((((exists fs_h_eut_eu_endpoint_phi_count_sum_body_terminal. fs_h_eut_eu_endpoint_phi_count_sum_body_terminal + S (t) = S ((S (m)) * fs_v_eut_eu_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_endpoint_phi_count_sum_body_terminal. fs_u_eut_eu_endpoint_phi_count_sum = fs_q_eut_eu_endpoint_phi_count_sum_body_terminal * S ((S (m)) * fs_v_eut_eu_endpoint_phi_count_sum) + (t))) /\ forall fs_i_eut_eu_endpoint_phi_count_sum_body_steps. (exists fs_lt_eut_eu_endpoint_phi_count_sum_body_steps_bound. fs_lt_eut_eu_endpoint_phi_count_sum_body_steps_bound + S fs_i_eut_eu_endpoint_phi_count_sum_body_steps = m) -> exists fs_a_eut_eu_endpoint_phi_count_sum_body_steps fs_r_eut_eu_endpoint_phi_count_sum_body_steps fs_s_eut_eu_endpoint_phi_count_sum_body_steps. ((((exists fs_h_eut_eu_endpoint_phi_count_sum_body_steps_summand. fs_h_eut_eu_endpoint_phi_count_sum_body_steps_summand + S (fs_a_eut_eu_endpoint_phi_count_sum_body_steps) = S ((S (fs_i_eut_eu_endpoint_phi_count_sum_body_steps)) * eut_scale_eu_endpoint_phi_count)) /\ exists fs_q_eut_eu_endpoint_phi_count_sum_body_steps_summand. eut_code_eu_endpoint_phi_count = fs_q_eut_eu_endpoint_phi_count_sum_body_steps_summand * S ((S (fs_i_eut_eu_endpoint_phi_count_sum_body_steps)) * eut_scale_eu_endpoint_phi_count) + (fs_a_eut_eu_endpoint_phi_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_endpoint_phi_count_sum_body_steps_partial. fs_h_eut_eu_endpoint_phi_count_sum_body_steps_partial + S (fs_r_eut_eu_endpoint_phi_count_sum_body_steps) = S ((S (fs_i_eut_eu_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_endpoint_phi_count_sum_body_steps_partial. fs_u_eut_eu_endpoint_phi_count_sum = fs_q_eut_eu_endpoint_phi_count_sum_body_steps_partial * S ((S (fs_i_eut_eu_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_endpoint_phi_count_sum) + (fs_r_eut_eu_endpoint_phi_count_sum_body_steps))) /\ ((((exists fs_h_eut_eu_endpoint_phi_count_sum_body_steps_successor. fs_h_eut_eu_endpoint_phi_count_sum_body_steps_successor + S (fs_s_eut_eu_endpoint_phi_count_sum_body_steps) = S ((S (S fs_i_eut_eu_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_endpoint_phi_count_sum)) /\ exists fs_q_eut_eu_endpoint_phi_count_sum_body_steps_successor. fs_u_eut_eu_endpoint_phi_count_sum = fs_q_eut_eu_endpoint_phi_count_sum_body_steps_successor * S ((S (S fs_i_eut_eu_endpoint_phi_count_sum_body_steps)) * fs_v_eut_eu_endpoint_phi_count_sum) + (fs_s_eut_eu_endpoint_phi_count_sum_body_steps))) /\ fs_s_eut_eu_endpoint_phi_count_sum_body_steps = fs_r_eut_eu_endpoint_phi_count_sum_body_steps + fs_a_eut_eu_endpoint_phi_count_sum_body_steps))))))))) -> (exists pa_b_euta_eu_endpoint_power pa_c_euta_eu_endpoint_power. ((forall pa_i_euta_eu_endpoint_power_repeat. (exists pa_lt_euta_eu_endpoint_power_repeat_bound. pa_lt_euta_eu_endpoint_power_repeat_bound + S pa_i_euta_eu_endpoint_power_repeat = t) -> (((exists pa_h_euta_eu_endpoint_power_repeat_decoded. pa_h_euta_eu_endpoint_power_repeat_decoded + S (a) = S ((S (pa_i_euta_eu_endpoint_power_repeat)) * pa_c_euta_eu_endpoint_power)) /\ exists pa_q_euta_eu_endpoint_power_repeat_decoded. pa_b_euta_eu_endpoint_power = pa_q_euta_eu_endpoint_power_repeat_decoded * S ((S (pa_i_euta_eu_endpoint_power_repeat)) * pa_c_euta_eu_endpoint_power) + (a)))) /\ (exists pa_u_euta_eu_endpoint_power_product pa_v_euta_eu_endpoint_power_product. ((((exists pa_h_euta_eu_endpoint_power_product_start. pa_h_euta_eu_endpoint_power_product_start + S (1) = S ((S (0)) * pa_v_euta_eu_endpoint_power_product)) /\ exists pa_q_euta_eu_endpoint_power_product_start. pa_u_euta_eu_endpoint_power_product = pa_q_euta_eu_endpoint_power_product_start * S ((S (0)) * pa_v_euta_eu_endpoint_power_product) + (1))) /\ ((((exists pa_h_euta_eu_endpoint_power_product_terminal. pa_h_euta_eu_endpoint_power_product_terminal + S (w) = S ((S (t)) * pa_v_euta_eu_endpoint_power_product)) /\ exists pa_q_euta_eu_endpoint_power_product_terminal. pa_u_euta_eu_endpoint_power_product = pa_q_euta_eu_endpoint_power_product_terminal * S ((S (t)) * pa_v_euta_eu_endpoint_power_product) + (w))) /\ forall pa_i_euta_eu_endpoint_power_product. (exists pa_lt_euta_eu_endpoint_power_product_bound. pa_lt_euta_eu_endpoint_power_product_bound + S pa_i_euta_eu_endpoint_power_product = t) -> exists pa_p_euta_eu_endpoint_power_product pa_r_euta_eu_endpoint_power_product pa_s_euta_eu_endpoint_power_product. ((((exists pa_h_euta_eu_endpoint_power_product_factor. pa_h_euta_eu_endpoint_power_product_factor + S (pa_p_euta_eu_endpoint_power_product) = S ((S (pa_i_euta_eu_endpoint_power_product)) * pa_c_euta_eu_endpoint_power)) /\ exists pa_q_euta_eu_endpoint_power_product_factor. pa_b_euta_eu_endpoint_power = pa_q_euta_eu_endpoint_power_product_factor * S ((S (pa_i_euta_eu_endpoint_power_product)) * pa_c_euta_eu_endpoint_power) + (pa_p_euta_eu_endpoint_power_product))) /\ ((((exists pa_h_euta_eu_endpoint_power_product_partial. pa_h_euta_eu_endpoint_power_product_partial + S (pa_r_euta_eu_endpoint_power_product) = S ((S (pa_i_euta_eu_endpoint_power_product)) * pa_v_euta_eu_endpoint_power_product)) /\ exists pa_q_euta_eu_endpoint_power_product_partial. pa_u_euta_eu_endpoint_power_product = pa_q_euta_eu_endpoint_power_product_partial * S ((S (pa_i_euta_eu_endpoint_power_product)) * pa_v_euta_eu_endpoint_power_product) + (pa_r_euta_eu_endpoint_power_product))) /\ ((((exists pa_h_euta_eu_endpoint_power_product_successor. pa_h_euta_eu_endpoint_power_product_successor + S (pa_s_euta_eu_endpoint_power_product) = S ((S (S pa_i_euta_eu_endpoint_power_product)) * pa_v_euta_eu_endpoint_power_product)) /\ exists pa_q_euta_eu_endpoint_power_product_successor. pa_u_euta_eu_endpoint_power_product = pa_q_euta_eu_endpoint_power_product_successor * S ((S (S pa_i_euta_eu_endpoint_power_product)) * pa_v_euta_eu_endpoint_power_product) + (pa_s_euta_eu_endpoint_power_product))) /\ pa_s_euta_eu_endpoint_power_product = pa_r_euta_eu_endpoint_power_product * pa_p_euta_eu_endpoint_power_product)))))))) -> (exists eu_mod_left_endpoint_result eu_mod_right_endpoint_result. (w) + (m) * eu_mod_left_endpoint_result = (1) + (m) * eu_mod_right_endpoint_result)Constructive proof overview
Generated structural guide
For every positive modulus and any actual Phi and Pow values, construct all finite permutation/product witnesses and prove the Euler congruence by coprime cancellation.
The unchanged tactic script uses 9 declared prerequisites and contains 111 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
EU0014 euler_unit_product_prefix_exists beta_product_exists Stable theorem; checked-use authorized EU000D euler_multiplier_permutation_exists finite_beta_composition_exists Alpha theorem; checked-use authorized beta_product_permutation_invariant Alpha theorem; checked-use authorized EU001B euler_unit_product_reindex_scale EU001E euler_unit_count_product_balance EU0017 euler_unit_product_coprime EU001D euler_coprime_weighted_product_cancelDirect 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 (6)
01Fix variables and assumptionsL1–8
02Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
cases ht
03Establish hfL10–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler unit product prefix exists.
- L10
have hf : ∃ b. ∃ c. UnitProductPrefix(m,b,c,m)Definitions: UnitProductPrefix - L11
specialize euler_unit_product_prefix_exists (m) - L12
specialize euler_unit_product_prefix_exists (m) - L13
apply euler_unit_product_prefix_exists
04Separate the logical casesL14–15
05Establish hPL16–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product exists.
06Separate the logical casesL21–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L21
cases hP
07Establish hmapL22–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler multiplier permutation exists.
- L22
have hmap : ∃ r. ∃ s. UnitMultiplierPrefix(a,m,r,s,m) ∧ PermutationPrefix(r,s,m)Definitions: PermutationPrefixUnitMultiplierPrefix - L23
specialize euler_multiplier_permutation_exists (a) - L24
specialize euler_multiplier_permutation_exists (m) - L25
apply euler_multiplier_permutation_exists - L26
exact hm - L27
exact ha
08Separate the logical casesL28–32
09Establish hcompL33–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite beta composition exists.
10Separate the logical casesL40–41
11Establish hQL42–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product exists.
12Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hQ
13Establish heL48–57
Establish this local claim before using it. It is not an additional assumption.
- L48
have he : x7=x2 - L49
symm - L50
specialize beta_product_permutation_invariant (m) - L51
specialize beta_product_permutation_invariant (x3) - L52
specialize beta_product_permutation_invariant (x4) - L53
specialize beta_product_permutation_invariant (x) - L54
specialize beta_product_permutation_invariant (x1) - L55
specialize beta_product_permutation_invariant (x5) - L56
specialize beta_product_permutation_invariant (x6) - L57
specialize beta_product_permutation_invariant (x2)
14Use earlier factsL58–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
15Establish hsL65–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler unit product reindex scale.
- L65
have hs : UnitScaledPrefix(a,m,x,x1,x5,x6,m)Definitions: UnitScaledPrefix - L66
specialize euler_unit_product_reindex_scale (a) - L67
specialize euler_unit_product_reindex_scale (m) - L68
specialize euler_unit_product_reindex_scale (x3) - L69
specialize euler_unit_product_reindex_scale (x4) - L70
specialize euler_unit_product_reindex_scale (x) - L71
specialize euler_unit_product_reindex_scale (x1) - L72
specialize euler_unit_product_reindex_scale (x5) - L73
specialize euler_unit_product_reindex_scale (x6) - L74
apply euler_unit_product_reindex_scale
16Use earlier factsL75–78
17Establish hbalanceL79–88
Establish this local claim before using it. It is not an additional assumption.
- L79
have hbalance : exists eu_mod_left_endpoint_balance eu_mod_right_endpoint_balance. (w*x2) + (m) * eu_mod_left_endpoint_balance = (x7) + (m) * eu_mod_right_endpoint_balance - L80
specialize euler_unit_count_product_balance (m) - L81
specialize euler_unit_count_product_balance (a) - L82
specialize euler_unit_count_product_balance (m) - L83
specialize euler_unit_count_product_balance (x) - L84
specialize euler_unit_count_product_balance (x1) - L85
specialize euler_unit_count_product_balance (x5) - L86
specialize euler_unit_count_product_balance (x6) - L87
specialize euler_unit_count_product_balance (t) - L88
specialize euler_unit_count_product_balance (x2)
18Use earlier factsL89–96
Instantiate or apply named facts and discharge the corresponding proof obligations.
19Calculate and transport equalitiesL97–97
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L97
rewrite he at hbalance
20Use earlier factsL98–107
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L98
specialize euler_coprime_weighted_product_cancel (m) - L99
specialize euler_coprime_weighted_product_cancel (x2) - L100
specialize euler_coprime_weighted_product_cancel (w) - L101
apply euler_coprime_weighted_product_cancel - L102
exact hm - L103
specialize euler_unit_product_coprime (m) - L104
specialize euler_unit_product_coprime (m) - L105
specialize euler_unit_product_coprime (x) - L106
specialize euler_unit_product_coprime (x1) - L107
specialize euler_unit_product_coprime (x2)
Original exact command ledger · 111 lines
- 0001
intro a - 0002
intro m - 0003
intro t - 0004
intro w - 0005
intro hm - 0006
intro ha - 0007
intro ht - 0008
intro hw - 0009
cases ht - 0010
have hf : exists b c. (forall eu_factor_index_endpoint_factors. (exists eut_gap_eu_endpoint_factors_index. eut_gap_eu_endpoint_factors_index + S (eu_factor_index_endpoint_factors) = (m)) -> exists eu_factor_value_endpoint_factors. (((exists fs_h_eu_endpoint_factors_at. fs_h_eu_endpoint_factors_at + S (eu_factor_value_endpoint_factors) = S ((S (eu_factor_index_endpoint_factors)) * c)) /\ exists fs_q_eu_endpoint_factors_at. b = fs_q_eu_endpoint_factors_at * S ((S (eu_factor_index_endpoint_factors)) * c) + (eu_factor_value_endpoint_factors))) /\ ((((forall eut_divisor_eu_endpoint_factors_choice_coprime. (exists eut_left_eu_endpoint_factors_choice_coprime. (eu_factor_index_endpoint_factors) = eut_divisor_eu_endpoint_factors_choice_coprime * eut_left_eu_endpoint_factors_choice_coprime) -> (exists eut_right_eu_endpoint_factors_choice_coprime. (m) = eut_divisor_eu_endpoint_factors_choice_coprime * eut_right_eu_endpoint_factors_choice_coprime) -> eut_divisor_eu_endpoint_factors_choice_coprime = 1) /\ (eu_factor_value_endpoint_factors)=(eu_factor_index_endpoint_factors)) \/ (~(forall eut_divisor_eu_endpoint_factors_choice_coprime. (exists eut_left_eu_endpoint_factors_choice_coprime. (eu_factor_index_endpoint_factors) = eut_divisor_eu_endpoint_factors_choice_coprime * eut_left_eu_endpoint_factors_choice_coprime) -> (exists eut_right_eu_endpoint_factors_choice_coprime. (m) = eut_divisor_eu_endpoint_factors_choice_coprime * eut_right_eu_endpoint_factors_choice_coprime) -> eut_divisor_eu_endpoint_factors_choice_coprime = 1) /\ (eu_factor_value_endpoint_factors)=1)))) - 0011
specialize euler_unit_product_prefix_exists (m) - 0012
specialize euler_unit_product_prefix_exists (m) - 0013
apply euler_unit_product_prefix_exists - 0014
cases hf - 0015
cases hf_witness - 0016
have hP : exists P. (exists ff_u_fsat_eu_endpoint_product ff_v_fsat_eu_endpoint_product. ((((exists ff_h_fsat_eu_endpoint_product_start. ff_h_fsat_eu_endpoint_product_start + S (1) = S ((S (0)) * ff_v_fsat_eu_endpoint_product)) /\ exists ff_q_fsat_eu_endpoint_product_start. ff_u_fsat_eu_endpoint_product = ff_q_fsat_eu_endpoint_product_start * S ((S (0)) * ff_v_fsat_eu_endpoint_product) + (1))) /\ ((((exists ff_h_fsat_eu_endpoint_product_terminal. ff_h_fsat_eu_endpoint_product_terminal + S (P) = S ((S (m)) * ff_v_fsat_eu_endpoint_product)) /\ exists ff_q_fsat_eu_endpoint_product_terminal. ff_u_fsat_eu_endpoint_product = ff_q_fsat_eu_endpoint_product_terminal * S ((S (m)) * ff_v_fsat_eu_endpoint_product) + (P))) /\ forall ff_i_fsat_eu_endpoint_product. (exists ff_lt_fsat_eu_endpoint_product_bound. ff_lt_fsat_eu_endpoint_product_bound + S ff_i_fsat_eu_endpoint_product = m) -> exists ff_p_fsat_eu_endpoint_product ff_r_fsat_eu_endpoint_product ff_s_fsat_eu_endpoint_product. ((((exists ff_h_fsat_eu_endpoint_product_factor. ff_h_fsat_eu_endpoint_product_factor + S (ff_p_fsat_eu_endpoint_product) = S ((S (ff_i_fsat_eu_endpoint_product)) * x1)) /\ exists ff_q_fsat_eu_endpoint_product_factor. x = ff_q_fsat_eu_endpoint_product_factor * S ((S (ff_i_fsat_eu_endpoint_product)) * x1) + (ff_p_fsat_eu_endpoint_product))) /\ ((((exists ff_h_fsat_eu_endpoint_product_partial. ff_h_fsat_eu_endpoint_product_partial + S (ff_r_fsat_eu_endpoint_product) = S ((S (ff_i_fsat_eu_endpoint_product)) * ff_v_fsat_eu_endpoint_product)) /\ exists ff_q_fsat_eu_endpoint_product_partial. ff_u_fsat_eu_endpoint_product = ff_q_fsat_eu_endpoint_product_partial * S ((S (ff_i_fsat_eu_endpoint_product)) * ff_v_fsat_eu_endpoint_product) + (ff_r_fsat_eu_endpoint_product))) /\ ((((exists ff_h_fsat_eu_endpoint_product_successor. ff_h_fsat_eu_endpoint_product_successor + S (ff_s_fsat_eu_endpoint_product) = S ((S (S ff_i_fsat_eu_endpoint_product)) * ff_v_fsat_eu_endpoint_product)) /\ exists ff_q_fsat_eu_endpoint_product_successor. ff_u_fsat_eu_endpoint_product = ff_q_fsat_eu_endpoint_product_successor * S ((S (S ff_i_fsat_eu_endpoint_product)) * ff_v_fsat_eu_endpoint_product) + (ff_s_fsat_eu_endpoint_product))) /\ ff_s_fsat_eu_endpoint_product = ff_r_fsat_eu_endpoint_product * ff_p_fsat_eu_endpoint_product)))))) - 0017
specialize beta_product_exists (x) - 0018
specialize beta_product_exists (x1) - 0019
specialize beta_product_exists (m) - 0020
apply beta_product_exists - 0021
cases hP - 0022
have hmap : exists r s. (forall eu_index_endpoint_map. (exists eut_gap_eu_endpoint_map_index. eut_gap_eu_endpoint_map_index + S (eu_index_endpoint_map) = (m)) -> exists eu_residue_endpoint_map. (((exists fs_h_eu_endpoint_map_at. fs_h_eu_endpoint_map_at + S (eu_residue_endpoint_map) = S ((S (eu_index_endpoint_map)) * s)) /\ exists fs_q_eu_endpoint_map_at. r = fs_q_eu_endpoint_map_at * S ((S (eu_index_endpoint_map)) * s) + (eu_residue_endpoint_map))) /\ ((exists eut_gap_eu_endpoint_map_bound. eut_gap_eu_endpoint_map_bound + S (eu_residue_endpoint_map) = (m)) /\ (exists eu_mod_left_endpoint_map_mod eu_mod_right_endpoint_map_mod. ((a)*eu_index_endpoint_map) + (m) * eu_mod_left_endpoint_map_mod = (eu_residue_endpoint_map) + (m) * eu_mod_right_endpoint_map_mod))) /\ (((forall fp_i_eu_endpoint_permutation_bounded. (exists fp_gap_eu_endpoint_permutation_bounded_index. fp_gap_eu_endpoint_permutation_bounded_index + S fp_i_eu_endpoint_permutation_bounded = m) -> exists fp_value_eu_endpoint_permutation_bounded. ((((exists ff_h_eu_endpoint_permutation_bounded_entry. ff_h_eu_endpoint_permutation_bounded_entry + S (fp_value_eu_endpoint_permutation_bounded) = S ((S (fp_i_eu_endpoint_permutation_bounded)) * s)) /\ exists ff_q_eu_endpoint_permutation_bounded_entry. r = ff_q_eu_endpoint_permutation_bounded_entry * S ((S (fp_i_eu_endpoint_permutation_bounded)) * s) + (fp_value_eu_endpoint_permutation_bounded))) /\ (exists fp_gap_eu_endpoint_permutation_bounded_value. fp_gap_eu_endpoint_permutation_bounded_value + S fp_value_eu_endpoint_permutation_bounded = m))) /\ ((forall fp_i_eu_endpoint_permutation_injective fp_j_eu_endpoint_permutation_injective fp_value_eu_endpoint_permutation_injective. (exists fp_gap_eu_endpoint_permutation_injective_i. fp_gap_eu_endpoint_permutation_injective_i + S fp_i_eu_endpoint_permutation_injective = m) -> (exists fp_gap_eu_endpoint_permutation_injective_j. fp_gap_eu_endpoint_permutation_injective_j + S fp_j_eu_endpoint_permutation_injective = m) -> (((exists ff_h_eu_endpoint_permutation_injective_left. ff_h_eu_endpoint_permutation_injective_left + S (fp_value_eu_endpoint_permutation_injective) = S ((S (fp_i_eu_endpoint_permutation_injective)) * s)) /\ exists ff_q_eu_endpoint_permutation_injective_left. r = ff_q_eu_endpoint_permutation_injective_left * S ((S (fp_i_eu_endpoint_permutation_injective)) * s) + (fp_value_eu_endpoint_permutation_injective))) -> (((exists ff_h_eu_endpoint_permutation_injective_right. ff_h_eu_endpoint_permutation_injective_right + S (fp_value_eu_endpoint_permutation_injective) = S ((S (fp_j_eu_endpoint_permutation_injective)) * s)) /\ exists ff_q_eu_endpoint_permutation_injective_right. r = ff_q_eu_endpoint_permutation_injective_right * S ((S (fp_j_eu_endpoint_permutation_injective)) * s) + (fp_value_eu_endpoint_permutation_injective))) -> fp_i_eu_endpoint_permutation_injective = fp_j_eu_endpoint_permutation_injective) /\ (forall fp_value_eu_endpoint_permutation_surjective. (exists fp_gap_eu_endpoint_permutation_surjective_value. fp_gap_eu_endpoint_permutation_surjective_value + S fp_value_eu_endpoint_permutation_surjective = m) -> exists fp_i_eu_endpoint_permutation_surjective. ((exists fp_gap_eu_endpoint_permutation_surjective_index. fp_gap_eu_endpoint_permutation_surjective_index + S fp_i_eu_endpoint_permutation_surjective = m) /\ (((exists ff_h_eu_endpoint_permutation_surjective_entry. ff_h_eu_endpoint_permutation_surjective_entry + S (fp_value_eu_endpoint_permutation_surjective) = S ((S (fp_i_eu_endpoint_permutation_surjective)) * s)) /\ exists ff_q_eu_endpoint_permutation_surjective_entry. r = ff_q_eu_endpoint_permutation_surjective_entry * S ((S (fp_i_eu_endpoint_permutation_surjective)) * s) + (fp_value_eu_endpoint_permutation_surjective)))))))) - 0023
specialize euler_multiplier_permutation_exists (a) - 0024
specialize euler_multiplier_permutation_exists (m) - 0025
apply euler_multiplier_permutation_exists - 0026
exact hm - 0027
exact ha - 0028
cases hmap - 0029
cases hmap_witness - 0030
cases hmap_witness_witness - 0031
cases hmap_witness_witness_right - 0032
cases hmap_witness_witness_right_right - 0033
have hcomp : exists z d. (forall fms_i_eu_endpoint_composition fms_j_eu_endpoint_composition fms_v_eu_endpoint_composition. (exists fms_gap_eu_endpoint_composition. fms_gap_eu_endpoint_composition + S (fms_i_eu_endpoint_composition) = (m)) -> (((exists fs_h_fms_eu_endpoint_composition_index. fs_h_fms_eu_endpoint_composition_index + S (fms_j_eu_endpoint_composition) = S ((S (fms_i_eu_endpoint_composition)) * x4)) /\ exists fs_q_fms_eu_endpoint_composition_index. x3 = fs_q_fms_eu_endpoint_composition_index * S ((S (fms_i_eu_endpoint_composition)) * x4) + (fms_j_eu_endpoint_composition))) -> (((exists fs_h_fms_eu_endpoint_composition_source. fs_h_fms_eu_endpoint_composition_source + S (fms_v_eu_endpoint_composition) = S ((S (fms_j_eu_endpoint_composition)) * x1)) /\ exists fs_q_fms_eu_endpoint_composition_source. x = fs_q_fms_eu_endpoint_composition_source * S ((S (fms_j_eu_endpoint_composition)) * x1) + (fms_v_eu_endpoint_composition))) -> (((exists fs_h_fms_eu_endpoint_composition_target. fs_h_fms_eu_endpoint_composition_target + S (fms_v_eu_endpoint_composition) = S ((S (fms_i_eu_endpoint_composition)) * d)) /\ exists fs_q_fms_eu_endpoint_composition_target. z = fs_q_fms_eu_endpoint_composition_target * S ((S (fms_i_eu_endpoint_composition)) * d) + (fms_v_eu_endpoint_composition)))) - 0034
specialize finite_beta_composition_exists (x3) - 0035
specialize finite_beta_composition_exists (x4) - 0036
specialize finite_beta_composition_exists (x) - 0037
specialize finite_beta_composition_exists (x1) - 0038
specialize finite_beta_composition_exists (m) - 0039
apply finite_beta_composition_exists - 0040
cases hcomp - 0041
cases hcomp_witness - 0042
have hQ : exists Q. (exists ff_u_fsat_eu_endpoint_target_product ff_v_fsat_eu_endpoint_target_product. ((((exists ff_h_fsat_eu_endpoint_target_product_start. ff_h_fsat_eu_endpoint_target_product_start + S (1) = S ((S (0)) * ff_v_fsat_eu_endpoint_target_product)) /\ exists ff_q_fsat_eu_endpoint_target_product_start. ff_u_fsat_eu_endpoint_target_product = ff_q_fsat_eu_endpoint_target_product_start * S ((S (0)) * ff_v_fsat_eu_endpoint_target_product) + (1))) /\ ((((exists ff_h_fsat_eu_endpoint_target_product_terminal. ff_h_fsat_eu_endpoint_target_product_terminal + S (Q) = S ((S (m)) * ff_v_fsat_eu_endpoint_target_product)) /\ exists ff_q_fsat_eu_endpoint_target_product_terminal. ff_u_fsat_eu_endpoint_target_product = ff_q_fsat_eu_endpoint_target_product_terminal * S ((S (m)) * ff_v_fsat_eu_endpoint_target_product) + (Q))) /\ forall ff_i_fsat_eu_endpoint_target_product. (exists ff_lt_fsat_eu_endpoint_target_product_bound. ff_lt_fsat_eu_endpoint_target_product_bound + S ff_i_fsat_eu_endpoint_target_product = m) -> exists ff_p_fsat_eu_endpoint_target_product ff_r_fsat_eu_endpoint_target_product ff_s_fsat_eu_endpoint_target_product. ((((exists ff_h_fsat_eu_endpoint_target_product_factor. ff_h_fsat_eu_endpoint_target_product_factor + S (ff_p_fsat_eu_endpoint_target_product) = S ((S (ff_i_fsat_eu_endpoint_target_product)) * x6)) /\ exists ff_q_fsat_eu_endpoint_target_product_factor. x5 = ff_q_fsat_eu_endpoint_target_product_factor * S ((S (ff_i_fsat_eu_endpoint_target_product)) * x6) + (ff_p_fsat_eu_endpoint_target_product))) /\ ((((exists ff_h_fsat_eu_endpoint_target_product_partial. ff_h_fsat_eu_endpoint_target_product_partial + S (ff_r_fsat_eu_endpoint_target_product) = S ((S (ff_i_fsat_eu_endpoint_target_product)) * ff_v_fsat_eu_endpoint_target_product)) /\ exists ff_q_fsat_eu_endpoint_target_product_partial. ff_u_fsat_eu_endpoint_target_product = ff_q_fsat_eu_endpoint_target_product_partial * S ((S (ff_i_fsat_eu_endpoint_target_product)) * ff_v_fsat_eu_endpoint_target_product) + (ff_r_fsat_eu_endpoint_target_product))) /\ ((((exists ff_h_fsat_eu_endpoint_target_product_successor. ff_h_fsat_eu_endpoint_target_product_successor + S (ff_s_fsat_eu_endpoint_target_product) = S ((S (S ff_i_fsat_eu_endpoint_target_product)) * ff_v_fsat_eu_endpoint_target_product)) /\ exists ff_q_fsat_eu_endpoint_target_product_successor. ff_u_fsat_eu_endpoint_target_product = ff_q_fsat_eu_endpoint_target_product_successor * S ((S (S ff_i_fsat_eu_endpoint_target_product)) * ff_v_fsat_eu_endpoint_target_product) + (ff_s_fsat_eu_endpoint_target_product))) /\ ff_s_fsat_eu_endpoint_target_product = ff_r_fsat_eu_endpoint_target_product * ff_p_fsat_eu_endpoint_target_product)))))) - 0043
specialize beta_product_exists (x5) - 0044
specialize beta_product_exists (x6) - 0045
specialize beta_product_exists (m) - 0046
apply beta_product_exists - 0047
cases hQ - 0048
have he : x7=x2 - 0049
symm - 0050
specialize beta_product_permutation_invariant (m) - 0051
specialize beta_product_permutation_invariant (x3) - 0052
specialize beta_product_permutation_invariant (x4) - 0053
specialize beta_product_permutation_invariant (x) - 0054
specialize beta_product_permutation_invariant (x1) - 0055
specialize beta_product_permutation_invariant (x5) - 0056
specialize beta_product_permutation_invariant (x6) - 0057
specialize beta_product_permutation_invariant (x2) - 0058
specialize beta_product_permutation_invariant (x7) - 0059
apply beta_product_permutation_invariant - 0060
exact hmap_witness_witness_right_left - 0061
exact hmap_witness_witness_right_right_left - 0062
exact hcomp_witness_witness - 0063
exact hP_witness - 0064
exact hQ_witness - 0065
have hs : forall eu_scale_index_endpoint_scaled eu_scale_source_endpoint_scaled eu_scale_target_endpoint_scaled. (exists eut_gap_eu_endpoint_scaled_index. eut_gap_eu_endpoint_scaled_index + S (eu_scale_index_endpoint_scaled) = (m)) -> (((exists fs_h_eu_endpoint_scaled_source. fs_h_eu_endpoint_scaled_source + S (eu_scale_source_endpoint_scaled) = S ((S (eu_scale_index_endpoint_scaled)) * x1)) /\ exists fs_q_eu_endpoint_scaled_source. x = fs_q_eu_endpoint_scaled_source * S ((S (eu_scale_index_endpoint_scaled)) * x1) + (eu_scale_source_endpoint_scaled))) -> (((exists fs_h_eu_endpoint_scaled_target. fs_h_eu_endpoint_scaled_target + S (eu_scale_target_endpoint_scaled) = S ((S (eu_scale_index_endpoint_scaled)) * x6)) /\ exists fs_q_eu_endpoint_scaled_target. x5 = fs_q_eu_endpoint_scaled_target * S ((S (eu_scale_index_endpoint_scaled)) * x6) + (eu_scale_target_endpoint_scaled))) -> (((forall eut_divisor_eu_endpoint_scaled_unit. (exists eut_left_eu_endpoint_scaled_unit. (eu_scale_index_endpoint_scaled) = eut_divisor_eu_endpoint_scaled_unit * eut_left_eu_endpoint_scaled_unit) -> (exists eut_right_eu_endpoint_scaled_unit. (m) = eut_divisor_eu_endpoint_scaled_unit * eut_right_eu_endpoint_scaled_unit) -> eut_divisor_eu_endpoint_scaled_unit = 1) -> (exists eu_mod_left_endpoint_scaled_scaled eu_mod_right_endpoint_scaled_scaled. ((a)*eu_scale_source_endpoint_scaled) + (m) * eu_mod_left_endpoint_scaled_scaled = (eu_scale_target_endpoint_scaled) + (m) * eu_mod_right_endpoint_scaled_scaled)) /\ (~(forall eut_divisor_eu_endpoint_scaled_unit. (exists eut_left_eu_endpoint_scaled_unit. (eu_scale_index_endpoint_scaled) = eut_divisor_eu_endpoint_scaled_unit * eut_left_eu_endpoint_scaled_unit) -> (exists eut_right_eu_endpoint_scaled_unit. (m) = eut_divisor_eu_endpoint_scaled_unit * eut_right_eu_endpoint_scaled_unit) -> eut_divisor_eu_endpoint_scaled_unit = 1) -> (exists eu_mod_left_endpoint_scaled_unchanged eu_mod_right_endpoint_scaled_unchanged. (eu_scale_source_endpoint_scaled) + (m) * eu_mod_left_endpoint_scaled_unchanged = (eu_scale_target_endpoint_scaled) + (m) * eu_mod_right_endpoint_scaled_unchanged))) - 0066
specialize euler_unit_product_reindex_scale (a) - 0067
specialize euler_unit_product_reindex_scale (m) - 0068
specialize euler_unit_product_reindex_scale (x3) - 0069
specialize euler_unit_product_reindex_scale (x4) - 0070
specialize euler_unit_product_reindex_scale (x) - 0071
specialize euler_unit_product_reindex_scale (x1) - 0072
specialize euler_unit_product_reindex_scale (x5) - 0073
specialize euler_unit_product_reindex_scale (x6) - 0074
apply euler_unit_product_reindex_scale - 0075
exact ha - 0076
exact hmap_witness_witness_left - 0077
exact hf_witness_witness - 0078
exact hcomp_witness_witness - 0079
have hbalance : exists eu_mod_left_endpoint_balance eu_mod_right_endpoint_balance. (w*x2) + (m) * eu_mod_left_endpoint_balance = (x7) + (m) * eu_mod_right_endpoint_balance - 0080
specialize euler_unit_count_product_balance (m) - 0081
specialize euler_unit_count_product_balance (a) - 0082
specialize euler_unit_count_product_balance (m) - 0083
specialize euler_unit_count_product_balance (x) - 0084
specialize euler_unit_count_product_balance (x1) - 0085
specialize euler_unit_count_product_balance (x5) - 0086
specialize euler_unit_count_product_balance (x6) - 0087
specialize euler_unit_count_product_balance (t) - 0088
specialize euler_unit_count_product_balance (x2) - 0089
specialize euler_unit_count_product_balance (x7) - 0090
specialize euler_unit_count_product_balance (w) - 0091
apply euler_unit_count_product_balance - 0092
exact ht_right - 0093
exact hs - 0094
exact hP_witness - 0095
exact hQ_witness - 0096
exact hw - 0097
rewrite he at hbalance - 0098
specialize euler_coprime_weighted_product_cancel (m) - 0099
specialize euler_coprime_weighted_product_cancel (x2) - 0100
specialize euler_coprime_weighted_product_cancel (w) - 0101
apply euler_coprime_weighted_product_cancel - 0102
exact hm - 0103
specialize euler_unit_product_coprime (m) - 0104
specialize euler_unit_product_coprime (m) - 0105
specialize euler_unit_product_coprime (x) - 0106
specialize euler_unit_product_coprime (x1) - 0107
specialize euler_unit_product_coprime (x2) - 0108
apply euler_unit_product_coprime - 0109
exact hf_witness_witness - 0110
exact hP_witness - 0111
exact hbalance