Exact expanded first-order arithmetic statement
forall a m l. ~(m=0) -> exists b c. (forall eu_index_map_exists. (exists eut_gap_eu_map_exists_index. eut_gap_eu_map_exists_index + S (eu_index_map_exists) = (l)) -> exists eu_residue_map_exists. (((exists fs_h_eu_map_exists_at. fs_h_eu_map_exists_at + S (eu_residue_map_exists) = S ((S (eu_index_map_exists)) * c)) /\ exists fs_q_eu_map_exists_at. b = fs_q_eu_map_exists_at * S ((S (eu_index_map_exists)) * c) + (eu_residue_map_exists))) /\ ((exists eut_gap_eu_map_exists_bound. eut_gap_eu_map_exists_bound + S (eu_residue_map_exists) = (m)) /\ (exists eu_mod_left_map_exists_mod eu_mod_right_map_exists_mod. ((a)*eu_index_map_exists) + (m) * eu_mod_left_map_exists_mod = (eu_residue_map_exists) + (m) * eu_mod_right_map_exists_mod)))Constructive proof overview
Generated structural guide
HA induction builds the complete beta-coded multiplier prefix; no map or bijection is supplied as a premise.
The unchanged tactic script uses 3 declared prerequisites and contains 35 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
EU0007 euler_multiplier_prefix_empty EU0006 euler_multiplier_residue_exists EU0008 euler_multiplier_prefix_extendDirect 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–2
02Induction on lL3–4
03Construct an explicit witnessL5–6
04Use earlier factsL7–11
Instantiate or apply named facts and discharge the corresponding proof obligations.
05Fix variables and assumptionsL12–12
Work with arbitrary variables or the premises of the current implication.
- L12
intro hm
06Establish hpL13–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L13
have hp : ∃ b. ∃ c. UnitMultiplierPrefix(a,m,b,c,l)Definitions: UnitMultiplierPrefix - L14
apply IH - L15
exact hm
07Separate the logical casesL16–17
08Establish hrL18–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler multiplier residue exists.
- L18
have hr : exists r. (exists eut_gap_eu_next_bound. eut_gap_eu_next_bound + S (r) = (m)) /\ (exists eu_mod_left_next_mod eu_mod_right_next_mod. (a*l) + (m) * eu_mod_left_next_mod = (r) + (m) * eu_mod_right_next_mod) - L19
specialize euler_multiplier_residue_exists (a) - L20
specialize euler_multiplier_residue_exists (m) - L21
specialize euler_multiplier_residue_exists (l) - L22
apply euler_multiplier_residue_exists - L23
exact hm
09Separate the logical casesL24–25
10Use earlier factsL26–35
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L26
specialize euler_multiplier_prefix_extend (a) - L27
specialize euler_multiplier_prefix_extend (m) - L28
specialize euler_multiplier_prefix_extend (x) - L29
specialize euler_multiplier_prefix_extend (x1) - L30
specialize euler_multiplier_prefix_extend (l) - L31
specialize euler_multiplier_prefix_extend (x2) - L32
apply euler_multiplier_prefix_extend - L33
exact hp_witness_witness - L34
exact hr_witness_left - L35
exact hr_witness_right
Original exact command ledger · 35 lines
- 0001
intro a - 0002
intro m - 0003
induction l - 0004
intro hm - 0005
exists 0 - 0006
exists 0 - 0007
specialize euler_multiplier_prefix_empty (a) - 0008
specialize euler_multiplier_prefix_empty (m) - 0009
specialize euler_multiplier_prefix_empty (0) - 0010
specialize euler_multiplier_prefix_empty (0) - 0011
apply euler_multiplier_prefix_empty - 0012
intro hm - 0013
have hp : exists b c. (forall eu_index_map_previous. (exists eut_gap_eu_map_previous_index. eut_gap_eu_map_previous_index + S (eu_index_map_previous) = (l)) -> exists eu_residue_map_previous. (((exists fs_h_eu_map_previous_at. fs_h_eu_map_previous_at + S (eu_residue_map_previous) = S ((S (eu_index_map_previous)) * c)) /\ exists fs_q_eu_map_previous_at. b = fs_q_eu_map_previous_at * S ((S (eu_index_map_previous)) * c) + (eu_residue_map_previous))) /\ ((exists eut_gap_eu_map_previous_bound. eut_gap_eu_map_previous_bound + S (eu_residue_map_previous) = (m)) /\ (exists eu_mod_left_map_previous_mod eu_mod_right_map_previous_mod. ((a)*eu_index_map_previous) + (m) * eu_mod_left_map_previous_mod = (eu_residue_map_previous) + (m) * eu_mod_right_map_previous_mod))) - 0014
apply IH - 0015
exact hm - 0016
cases hp - 0017
cases hp_witness - 0018
have hr : exists r. (exists eut_gap_eu_next_bound. eut_gap_eu_next_bound + S (r) = (m)) /\ (exists eu_mod_left_next_mod eu_mod_right_next_mod. (a*l) + (m) * eu_mod_left_next_mod = (r) + (m) * eu_mod_right_next_mod) - 0019
specialize euler_multiplier_residue_exists (a) - 0020
specialize euler_multiplier_residue_exists (m) - 0021
specialize euler_multiplier_residue_exists (l) - 0022
apply euler_multiplier_residue_exists - 0023
exact hm - 0024
cases hr - 0025
cases hr_witness - 0026
specialize euler_multiplier_prefix_extend (a) - 0027
specialize euler_multiplier_prefix_extend (m) - 0028
specialize euler_multiplier_prefix_extend (x) - 0029
specialize euler_multiplier_prefix_extend (x1) - 0030
specialize euler_multiplier_prefix_extend (l) - 0031
specialize euler_multiplier_prefix_extend (x2) - 0032
apply euler_multiplier_prefix_extend - 0033
exact hp_witness_witness - 0034
exact hr_witness_left - 0035
exact hr_witness_right