Exact expanded first-order arithmetic statement
forall a m r s b c z d. (forall eut_divisor_eu_reindex_unit. (exists eut_left_eu_reindex_unit. (a) = eut_divisor_eu_reindex_unit * eut_left_eu_reindex_unit) -> (exists eut_right_eu_reindex_unit. (m) = eut_divisor_eu_reindex_unit * eut_right_eu_reindex_unit) -> eut_divisor_eu_reindex_unit = 1) -> (forall eu_index_reindex_map. (exists eut_gap_eu_reindex_map_index. eut_gap_eu_reindex_map_index + S (eu_index_reindex_map) = (m)) -> exists eu_residue_reindex_map. (((exists fs_h_eu_reindex_map_at. fs_h_eu_reindex_map_at + S (eu_residue_reindex_map) = S ((S (eu_index_reindex_map)) * s)) /\ exists fs_q_eu_reindex_map_at. r = fs_q_eu_reindex_map_at * S ((S (eu_index_reindex_map)) * s) + (eu_residue_reindex_map))) /\ ((exists eut_gap_eu_reindex_map_bound. eut_gap_eu_reindex_map_bound + S (eu_residue_reindex_map) = (m)) /\ (exists eu_mod_left_reindex_map_mod eu_mod_right_reindex_map_mod. ((a)*eu_index_reindex_map) + (m) * eu_mod_left_reindex_map_mod = (eu_residue_reindex_map) + (m) * eu_mod_right_reindex_map_mod))) -> (forall eu_factor_index_reindex_factors. (exists eut_gap_eu_reindex_factors_index. eut_gap_eu_reindex_factors_index + S (eu_factor_index_reindex_factors) = (m)) -> exists eu_factor_value_reindex_factors. (((exists fs_h_eu_reindex_factors_at. fs_h_eu_reindex_factors_at + S (eu_factor_value_reindex_factors) = S ((S (eu_factor_index_reindex_factors)) * c)) /\ exists fs_q_eu_reindex_factors_at. b = fs_q_eu_reindex_factors_at * S ((S (eu_factor_index_reindex_factors)) * c) + (eu_factor_value_reindex_factors))) /\ ((((forall eut_divisor_eu_reindex_factors_choice_coprime. (exists eut_left_eu_reindex_factors_choice_coprime. (eu_factor_index_reindex_factors) = eut_divisor_eu_reindex_factors_choice_coprime * eut_left_eu_reindex_factors_choice_coprime) -> (exists eut_right_eu_reindex_factors_choice_coprime. (m) = eut_divisor_eu_reindex_factors_choice_coprime * eut_right_eu_reindex_factors_choice_coprime) -> eut_divisor_eu_reindex_factors_choice_coprime = 1) /\ (eu_factor_value_reindex_factors)=(eu_factor_index_reindex_factors)) \/ (~(forall eut_divisor_eu_reindex_factors_choice_coprime. (exists eut_left_eu_reindex_factors_choice_coprime. (eu_factor_index_reindex_factors) = eut_divisor_eu_reindex_factors_choice_coprime * eut_left_eu_reindex_factors_choice_coprime) -> (exists eut_right_eu_reindex_factors_choice_coprime. (m) = eut_divisor_eu_reindex_factors_choice_coprime * eut_right_eu_reindex_factors_choice_coprime) -> eut_divisor_eu_reindex_factors_choice_coprime = 1) /\ (eu_factor_value_reindex_factors)=1)))) -> (forall fms_i_eu_reindex_composition fms_j_eu_reindex_composition fms_v_eu_reindex_composition. (exists fms_gap_eu_reindex_composition. fms_gap_eu_reindex_composition + S (fms_i_eu_reindex_composition) = (m)) -> (((exists fs_h_fms_eu_reindex_composition_index. fs_h_fms_eu_reindex_composition_index + S (fms_j_eu_reindex_composition) = S ((S (fms_i_eu_reindex_composition)) * s)) /\ exists fs_q_fms_eu_reindex_composition_index. r = fs_q_fms_eu_reindex_composition_index * S ((S (fms_i_eu_reindex_composition)) * s) + (fms_j_eu_reindex_composition))) -> (((exists fs_h_fms_eu_reindex_composition_source. fs_h_fms_eu_reindex_composition_source + S (fms_v_eu_reindex_composition) = S ((S (fms_j_eu_reindex_composition)) * c)) /\ exists fs_q_fms_eu_reindex_composition_source. b = fs_q_fms_eu_reindex_composition_source * S ((S (fms_j_eu_reindex_composition)) * c) + (fms_v_eu_reindex_composition))) -> (((exists fs_h_fms_eu_reindex_composition_target. fs_h_fms_eu_reindex_composition_target + S (fms_v_eu_reindex_composition) = S ((S (fms_i_eu_reindex_composition)) * d)) /\ exists fs_q_fms_eu_reindex_composition_target. z = fs_q_fms_eu_reindex_composition_target * S ((S (fms_i_eu_reindex_composition)) * d) + (fms_v_eu_reindex_composition)))) -> (forall eu_scale_index_reindex_scale eu_scale_source_reindex_scale eu_scale_target_reindex_scale. (exists eut_gap_eu_reindex_scale_index. eut_gap_eu_reindex_scale_index + S (eu_scale_index_reindex_scale) = (m)) -> (((exists fs_h_eu_reindex_scale_source. fs_h_eu_reindex_scale_source + S (eu_scale_source_reindex_scale) = S ((S (eu_scale_index_reindex_scale)) * c)) /\ exists fs_q_eu_reindex_scale_source. b = fs_q_eu_reindex_scale_source * S ((S (eu_scale_index_reindex_scale)) * c) + (eu_scale_source_reindex_scale))) -> (((exists fs_h_eu_reindex_scale_target. fs_h_eu_reindex_scale_target + S (eu_scale_target_reindex_scale) = S ((S (eu_scale_index_reindex_scale)) * d)) /\ exists fs_q_eu_reindex_scale_target. z = fs_q_eu_reindex_scale_target * S ((S (eu_scale_index_reindex_scale)) * d) + (eu_scale_target_reindex_scale))) -> (((forall eut_divisor_eu_reindex_scale_unit. (exists eut_left_eu_reindex_scale_unit. (eu_scale_index_reindex_scale) = eut_divisor_eu_reindex_scale_unit * eut_left_eu_reindex_scale_unit) -> (exists eut_right_eu_reindex_scale_unit. (m) = eut_divisor_eu_reindex_scale_unit * eut_right_eu_reindex_scale_unit) -> eut_divisor_eu_reindex_scale_unit = 1) -> (exists eu_mod_left_reindex_scale_scaled eu_mod_right_reindex_scale_scaled. ((a)*eu_scale_source_reindex_scale) + (m) * eu_mod_left_reindex_scale_scaled = (eu_scale_target_reindex_scale) + (m) * eu_mod_right_reindex_scale_scaled)) /\ (~(forall eut_divisor_eu_reindex_scale_unit. (exists eut_left_eu_reindex_scale_unit. (eu_scale_index_reindex_scale) = eut_divisor_eu_reindex_scale_unit * eut_left_eu_reindex_scale_unit) -> (exists eut_right_eu_reindex_scale_unit. (m) = eut_divisor_eu_reindex_scale_unit * eut_right_eu_reindex_scale_unit) -> eut_divisor_eu_reindex_scale_unit = 1) -> (exists eu_mod_left_reindex_scale_unchanged eu_mod_right_reindex_scale_unchanged. (eu_scale_source_reindex_scale) + (m) * eu_mod_left_reindex_scale_unchanged = (eu_scale_target_reindex_scale) + (m) * eu_mod_right_reindex_scale_unchanged))))Constructive proof overview
Generated structural guide
Actual beta composition along the multiplier permutation scales precisely the factors counted by Phi.
The unchanged tactic script uses 4 declared prerequisites and contains 86 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
EU0016 euler_unit_product_prefix_entry beta_at_unique Alpha theorem; checked-use authorized EU0018 euler_unit_factor_scaled_congruence EU0019 euler_nonunit_factor_unchanged_congruenceDirect 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 (3)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–18
03Establish hindexL19–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hmap.
- L19
have hindex : exists j. (((exists fs_h_eu_reindex_index. fs_h_eu_reindex_index + S (j) = S ((S (i)) * s)) /\ exists fs_q_eu_reindex_index. r = fs_q_eu_reindex_index * S ((S (i)) * s) + (j))) /\ ((exists eut_gap_eu_reindex_bound. eut_gap_eu_reindex_bound + S (j) = (m)) /\ (exists eu_mod_left_reindex_mod eu_mod_right_reindex_mod. (a*i) + (m) * eu_mod_left_reindex_mod = (j) + (m) * eu_mod_right_reindex_mod)) - L20
specialize hmap (i) - L21
apply hmap - L22
exact hi
04Separate the logical casesL23–25
05Establish hsourceL26–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler unit product prefix entry.
- L26
have hsource : UnitProductFactor(m,i,u)Definitions: UnitProductFactor - L27
specialize euler_unit_product_prefix_entry (m) - L28
specialize euler_unit_product_prefix_entry (b) - L29
specialize euler_unit_product_prefix_entry (c) - L30
specialize euler_unit_product_prefix_entry (m) - L31
specialize euler_unit_product_prefix_entry (i) - L32
specialize euler_unit_product_prefix_entry (u) - L33
apply euler_unit_product_prefix_entry - L34
exact hfac - L35
exact hi
06Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact hu
07Establish htargetL37–40
08Separate the logical casesL41–42
09Establish heL43–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
10Use earlier factsL53–57
11Calculate and transport equalitiesL58–59
12Separate the logical casesL60–60
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L60
split
13Fix variables and assumptionsL61–61
Work with arbitrary variables or the premises of the current implication.
- L61
intro hunit
14Use earlier factsL62–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
specialize euler_unit_factor_scaled_congruence (a) - L63
specialize euler_unit_factor_scaled_congruence (m) - L64
specialize euler_unit_factor_scaled_congruence (i) - L65
specialize euler_unit_factor_scaled_congruence (x) - L66
specialize euler_unit_factor_scaled_congruence (u) - L67
specialize euler_unit_factor_scaled_congruence (v) - L68
apply euler_unit_factor_scaled_congruence - L69
exact ha - L70
exact hindex_witness_right_right - L71
exact hsource
15Use earlier factsL72–73
16Fix variables and assumptionsL74–74
Work with arbitrary variables or the premises of the current implication.
- L74
intro hnot
17Use earlier factsL75–84
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
specialize euler_nonunit_factor_unchanged_congruence (a) - L76
specialize euler_nonunit_factor_unchanged_congruence (m) - L77
specialize euler_nonunit_factor_unchanged_congruence (i) - L78
specialize euler_nonunit_factor_unchanged_congruence (x) - L79
specialize euler_nonunit_factor_unchanged_congruence (u) - L80
specialize euler_nonunit_factor_unchanged_congruence (v) - L81
apply euler_nonunit_factor_unchanged_congruence - L82
exact ha - L83
exact hindex_witness_right_right - L84
exact hsource
Original exact command ledger · 86 lines
- 0001
intro a - 0002
intro m - 0003
intro r - 0004
intro s - 0005
intro b - 0006
intro c - 0007
intro z - 0008
intro d - 0009
intro ha - 0010
intro hmap - 0011
intro hfac - 0012
intro hcomp - 0013
intro i - 0014
intro u - 0015
intro v - 0016
intro hi - 0017
intro hu - 0018
intro hv - 0019
have hindex : exists j. (((exists fs_h_eu_reindex_index. fs_h_eu_reindex_index + S (j) = S ((S (i)) * s)) /\ exists fs_q_eu_reindex_index. r = fs_q_eu_reindex_index * S ((S (i)) * s) + (j))) /\ ((exists eut_gap_eu_reindex_bound. eut_gap_eu_reindex_bound + S (j) = (m)) /\ (exists eu_mod_left_reindex_mod eu_mod_right_reindex_mod. (a*i) + (m) * eu_mod_left_reindex_mod = (j) + (m) * eu_mod_right_reindex_mod)) - 0020
specialize hmap (i) - 0021
apply hmap - 0022
exact hi - 0023
cases hindex - 0024
cases hindex_witness - 0025
cases hindex_witness_right - 0026
have hsource : (((forall eut_divisor_eu_reindex_source_choice_coprime. (exists eut_left_eu_reindex_source_choice_coprime. (i) = eut_divisor_eu_reindex_source_choice_coprime * eut_left_eu_reindex_source_choice_coprime) -> (exists eut_right_eu_reindex_source_choice_coprime. (m) = eut_divisor_eu_reindex_source_choice_coprime * eut_right_eu_reindex_source_choice_coprime) -> eut_divisor_eu_reindex_source_choice_coprime = 1) /\ (u)=(i)) \/ (~(forall eut_divisor_eu_reindex_source_choice_coprime. (exists eut_left_eu_reindex_source_choice_coprime. (i) = eut_divisor_eu_reindex_source_choice_coprime * eut_left_eu_reindex_source_choice_coprime) -> (exists eut_right_eu_reindex_source_choice_coprime. (m) = eut_divisor_eu_reindex_source_choice_coprime * eut_right_eu_reindex_source_choice_coprime) -> eut_divisor_eu_reindex_source_choice_coprime = 1) /\ (u)=1)) - 0027
specialize euler_unit_product_prefix_entry (m) - 0028
specialize euler_unit_product_prefix_entry (b) - 0029
specialize euler_unit_product_prefix_entry (c) - 0030
specialize euler_unit_product_prefix_entry (m) - 0031
specialize euler_unit_product_prefix_entry (i) - 0032
specialize euler_unit_product_prefix_entry (u) - 0033
apply euler_unit_product_prefix_entry - 0034
exact hfac - 0035
exact hi - 0036
exact hu - 0037
have htarget : exists w. (((exists fs_h_eu_reindex_chosen_at. fs_h_eu_reindex_chosen_at + S (w) = S ((S (x)) * c)) /\ exists fs_q_eu_reindex_chosen_at. b = fs_q_eu_reindex_chosen_at * S ((S (x)) * c) + (w))) /\ ((((forall eut_divisor_eu_reindex_chosen_factor_coprime. (exists eut_left_eu_reindex_chosen_factor_coprime. (x) = eut_divisor_eu_reindex_chosen_factor_coprime * eut_left_eu_reindex_chosen_factor_coprime) -> (exists eut_right_eu_reindex_chosen_factor_coprime. (m) = eut_divisor_eu_reindex_chosen_factor_coprime * eut_right_eu_reindex_chosen_factor_coprime) -> eut_divisor_eu_reindex_chosen_factor_coprime = 1) /\ (w)=(x)) \/ (~(forall eut_divisor_eu_reindex_chosen_factor_coprime. (exists eut_left_eu_reindex_chosen_factor_coprime. (x) = eut_divisor_eu_reindex_chosen_factor_coprime * eut_left_eu_reindex_chosen_factor_coprime) -> (exists eut_right_eu_reindex_chosen_factor_coprime. (m) = eut_divisor_eu_reindex_chosen_factor_coprime * eut_right_eu_reindex_chosen_factor_coprime) -> eut_divisor_eu_reindex_chosen_factor_coprime = 1) /\ (w)=1))) - 0038
specialize hfac (x) - 0039
apply hfac - 0040
exact hindex_witness_right_left - 0041
cases htarget - 0042
cases htarget_witness - 0043
have he : x1=v - 0044
specialize beta_at_unique (z) - 0045
specialize beta_at_unique (d) - 0046
specialize beta_at_unique (i) - 0047
specialize beta_at_unique (x1) - 0048
specialize beta_at_unique (v) - 0049
apply beta_at_unique - 0050
specialize hcomp (i) - 0051
specialize hcomp (x) - 0052
specialize hcomp (x1) - 0053
apply hcomp - 0054
exact hi - 0055
exact hindex_witness_left - 0056
exact htarget_witness_left - 0057
exact hv - 0058
rewrite he at htarget_witness_right - 0059
rewrite he at htarget_witness_right - 0060
split - 0061
intro hunit - 0062
specialize euler_unit_factor_scaled_congruence (a) - 0063
specialize euler_unit_factor_scaled_congruence (m) - 0064
specialize euler_unit_factor_scaled_congruence (i) - 0065
specialize euler_unit_factor_scaled_congruence (x) - 0066
specialize euler_unit_factor_scaled_congruence (u) - 0067
specialize euler_unit_factor_scaled_congruence (v) - 0068
apply euler_unit_factor_scaled_congruence - 0069
exact ha - 0070
exact hindex_witness_right_right - 0071
exact hsource - 0072
exact htarget_witness_right - 0073
exact hunit - 0074
intro hnot - 0075
specialize euler_nonunit_factor_unchanged_congruence (a) - 0076
specialize euler_nonunit_factor_unchanged_congruence (m) - 0077
specialize euler_nonunit_factor_unchanged_congruence (i) - 0078
specialize euler_nonunit_factor_unchanged_congruence (x) - 0079
specialize euler_nonunit_factor_unchanged_congruence (u) - 0080
specialize euler_nonunit_factor_unchanged_congruence (v) - 0081
apply euler_nonunit_factor_unchanged_congruence - 0082
exact ha - 0083
exact hindex_witness_right_right - 0084
exact hsource - 0085
exact htarget_witness_right - 0086
exact hnot