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 m l. exists b c. (forall eu_factor_index_factors_exists. (exists eut_gap_eu_factors_exists_index. eut_gap_eu_factors_exists_index + S (eu_factor_index_factors_exists) = (l)) -> exists eu_factor_value_factors_exists. (((exists fs_h_eu_factors_exists_at. fs_h_eu_factors_exists_at + S (eu_factor_value_factors_exists) = S ((S (eu_factor_index_factors_exists)) * c)) /\ exists fs_q_eu_factors_exists_at. b = fs_q_eu_factors_exists_at * S ((S (eu_factor_index_factors_exists)) * c) + (eu_factor_value_factors_exists))) /\ ((((forall eut_divisor_eu_factors_exists_choice_coprime. (exists eut_left_eu_factors_exists_choice_coprime. (eu_factor_index_factors_exists) = eut_divisor_eu_factors_exists_choice_coprime * eut_left_eu_factors_exists_choice_coprime) -> (exists eut_right_eu_factors_exists_choice_coprime. (m) = eut_divisor_eu_factors_exists_choice_coprime * eut_right_eu_factors_exists_choice_coprime) -> eut_divisor_eu_factors_exists_choice_coprime = 1) /\ (eu_factor_value_factors_exists)=(eu_factor_index_factors_exists)) \/ (~(forall eut_divisor_eu_factors_exists_choice_coprime. (exists eut_left_eu_factors_exists_choice_coprime. (eu_factor_index_factors_exists) = eut_divisor_eu_factors_exists_choice_coprime * eut_left_eu_factors_exists_choice_coprime) -> (exists eut_right_eu_factors_exists_choice_coprime. (m) = eut_divisor_eu_factors_exists_choice_coprime * eut_right_eu_factors_exists_choice_coprime) -> eut_divisor_eu_factors_exists_choice_coprime = 1) /\ (eu_factor_value_factors_exists)=1))))Constructive proof overview
Generated structural guide
HA induction constructs all coprime-weighted factors; their list is never an endpoint assumption.
The unchanged tactic script uses 3 declared prerequisites and contains 23 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
EU0012 euler_unit_product_prefix_empty EU000E euler_unit_product_factor_exists EU0013 euler_unit_product_prefix_extendDirect 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 (3)
01Fix variables and assumptionsL1–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro m
02Induction on lL2–2
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L2
induction l
03Construct an explicit witnessL3–4
04Use earlier factsL5–8
05Separate the logical casesL9–10
06Establish hvL11–14
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euler unit product factor exists.
- L11
have hv : ∃ v. UnitProductFactor(m,l,v)Definitions: UnitProductFactor - L12
specialize euler_unit_product_factor_exists (m) - L13
specialize euler_unit_product_factor_exists (l) - L14
apply euler_unit_product_factor_exists
07Separate the logical casesL15–15
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L15
cases hv
08Use earlier factsL16–23
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L16
specialize euler_unit_product_prefix_extend (m) - L17
specialize euler_unit_product_prefix_extend (x) - L18
specialize euler_unit_product_prefix_extend (x1) - L19
specialize euler_unit_product_prefix_extend (l) - L20
specialize euler_unit_product_prefix_extend (x2) - L21
apply euler_unit_product_prefix_extend - L22
exact IH_witness_witness - L23
exact hv_witness
Original exact command ledger · 23 lines
- 0001
intro m - 0002
induction l - 0003
exists 0 - 0004
exists 0 - 0005
specialize euler_unit_product_prefix_empty (m) - 0006
specialize euler_unit_product_prefix_empty (0) - 0007
specialize euler_unit_product_prefix_empty (0) - 0008
apply euler_unit_product_prefix_empty - 0009
cases IH - 0010
cases IH_witness - 0011
have hv : exists v. ((((forall eut_divisor_eu_factor_next_coprime. (exists eut_left_eu_factor_next_coprime. (l) = eut_divisor_eu_factor_next_coprime * eut_left_eu_factor_next_coprime) -> (exists eut_right_eu_factor_next_coprime. (m) = eut_divisor_eu_factor_next_coprime * eut_right_eu_factor_next_coprime) -> eut_divisor_eu_factor_next_coprime = 1) /\ (v)=(l)) \/ (~(forall eut_divisor_eu_factor_next_coprime. (exists eut_left_eu_factor_next_coprime. (l) = eut_divisor_eu_factor_next_coprime * eut_left_eu_factor_next_coprime) -> (exists eut_right_eu_factor_next_coprime. (m) = eut_divisor_eu_factor_next_coprime * eut_right_eu_factor_next_coprime) -> eut_divisor_eu_factor_next_coprime = 1) /\ (v)=1))) - 0012
specialize euler_unit_product_factor_exists (m) - 0013
specialize euler_unit_product_factor_exists (l) - 0014
apply euler_unit_product_factor_exists - 0015
cases hv - 0016
specialize euler_unit_product_prefix_extend (m) - 0017
specialize euler_unit_product_prefix_extend (x) - 0018
specialize euler_unit_product_prefix_extend (x1) - 0019
specialize euler_unit_product_prefix_extend (l) - 0020
specialize euler_unit_product_prefix_extend (x2) - 0021
apply euler_unit_product_prefix_extend - 0022
exact IH_witness_witness - 0023
exact hv_witness