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 l m b c P. (forall eu_factor_index_product_coprime_factors. (exists eut_gap_eu_product_coprime_factors_index. eut_gap_eu_product_coprime_factors_index + S (eu_factor_index_product_coprime_factors) = (l)) -> exists eu_factor_value_product_coprime_factors. (((exists fs_h_eu_product_coprime_factors_at. fs_h_eu_product_coprime_factors_at + S (eu_factor_value_product_coprime_factors) = S ((S (eu_factor_index_product_coprime_factors)) * c)) /\ exists fs_q_eu_product_coprime_factors_at. b = fs_q_eu_product_coprime_factors_at * S ((S (eu_factor_index_product_coprime_factors)) * c) + (eu_factor_value_product_coprime_factors))) /\ ((((forall eut_divisor_eu_product_coprime_factors_choice_coprime. (exists eut_left_eu_product_coprime_factors_choice_coprime. (eu_factor_index_product_coprime_factors) = eut_divisor_eu_product_coprime_factors_choice_coprime * eut_left_eu_product_coprime_factors_choice_coprime) -> (exists eut_right_eu_product_coprime_factors_choice_coprime. (m) = eut_divisor_eu_product_coprime_factors_choice_coprime * eut_right_eu_product_coprime_factors_choice_coprime) -> eut_divisor_eu_product_coprime_factors_choice_coprime = 1) /\ (eu_factor_value_product_coprime_factors)=(eu_factor_index_product_coprime_factors)) \/ (~(forall eut_divisor_eu_product_coprime_factors_choice_coprime. (exists eut_left_eu_product_coprime_factors_choice_coprime. (eu_factor_index_product_coprime_factors) = eut_divisor_eu_product_coprime_factors_choice_coprime * eut_left_eu_product_coprime_factors_choice_coprime) -> (exists eut_right_eu_product_coprime_factors_choice_coprime. (m) = eut_divisor_eu_product_coprime_factors_choice_coprime * eut_right_eu_product_coprime_factors_choice_coprime) -> eut_divisor_eu_product_coprime_factors_choice_coprime = 1) /\ (eu_factor_value_product_coprime_factors)=1)))) -> (exists ff_u_fsat_eu_product_coprime ff_v_fsat_eu_product_coprime. ((((exists ff_h_fsat_eu_product_coprime_start. ff_h_fsat_eu_product_coprime_start + S (1) = S ((S (0)) * ff_v_fsat_eu_product_coprime)) /\ exists ff_q_fsat_eu_product_coprime_start. ff_u_fsat_eu_product_coprime = ff_q_fsat_eu_product_coprime_start * S ((S (0)) * ff_v_fsat_eu_product_coprime) + (1))) /\ ((((exists ff_h_fsat_eu_product_coprime_terminal. ff_h_fsat_eu_product_coprime_terminal + S (P) = S ((S (l)) * ff_v_fsat_eu_product_coprime)) /\ exists ff_q_fsat_eu_product_coprime_terminal. ff_u_fsat_eu_product_coprime = ff_q_fsat_eu_product_coprime_terminal * S ((S (l)) * ff_v_fsat_eu_product_coprime) + (P))) /\ forall ff_i_fsat_eu_product_coprime. (exists ff_lt_fsat_eu_product_coprime_bound. ff_lt_fsat_eu_product_coprime_bound + S ff_i_fsat_eu_product_coprime = l) -> exists ff_p_fsat_eu_product_coprime ff_r_fsat_eu_product_coprime ff_s_fsat_eu_product_coprime. ((((exists ff_h_fsat_eu_product_coprime_factor. ff_h_fsat_eu_product_coprime_factor + S (ff_p_fsat_eu_product_coprime) = S ((S (ff_i_fsat_eu_product_coprime)) * c)) /\ exists ff_q_fsat_eu_product_coprime_factor. b = ff_q_fsat_eu_product_coprime_factor * S ((S (ff_i_fsat_eu_product_coprime)) * c) + (ff_p_fsat_eu_product_coprime))) /\ ((((exists ff_h_fsat_eu_product_coprime_partial. ff_h_fsat_eu_product_coprime_partial + S (ff_r_fsat_eu_product_coprime) = S ((S (ff_i_fsat_eu_product_coprime)) * ff_v_fsat_eu_product_coprime)) /\ exists ff_q_fsat_eu_product_coprime_partial. ff_u_fsat_eu_product_coprime = ff_q_fsat_eu_product_coprime_partial * S ((S (ff_i_fsat_eu_product_coprime)) * ff_v_fsat_eu_product_coprime) + (ff_r_fsat_eu_product_coprime))) /\ ((((exists ff_h_fsat_eu_product_coprime_successor. ff_h_fsat_eu_product_coprime_successor + S (ff_s_fsat_eu_product_coprime) = S ((S (S ff_i_fsat_eu_product_coprime)) * ff_v_fsat_eu_product_coprime)) /\ exists ff_q_fsat_eu_product_coprime_successor. ff_u_fsat_eu_product_coprime = ff_q_fsat_eu_product_coprime_successor * S ((S (S ff_i_fsat_eu_product_coprime)) * ff_v_fsat_eu_product_coprime) + (ff_s_fsat_eu_product_coprime))) /\ ff_s_fsat_eu_product_coprime = ff_r_fsat_eu_product_coprime * ff_p_fsat_eu_product_coprime)))))) -> (forall eut_divisor_eu_product_coprime. (exists eut_left_eu_product_coprime. (P) = eut_divisor_eu_product_coprime * eut_left_eu_product_coprime) -> (exists eut_right_eu_product_coprime. (m) = eut_divisor_eu_product_coprime * eut_right_eu_product_coprime) -> eut_divisor_eu_product_coprime = 1)Constructive proof overview
Generated structural guide
The entire actual unit-weighted product is coprime to m; this is the proved cancellation premise.
The unchanged tactic script uses 8 declared prerequisites and contains 65 exact native proof lines.
Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
beta_product_zero Stable theorem; checked-use authorized coprime_one_left Stable theorem; checked-use authorized beta_product_succ_decompose Stable theorem; checked-use authorized EU0015 euler_unit_product_prefix_drop_last EU0016 euler_unit_product_prefix_entry EU0011 euler_unit_product_factor_coprime coprime_mul_left Stable theorem; checked-use authorized le_refl Stable 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. 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)
01Induction on lL1–7
02Establish heL8–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product zero.
03Fix variables and assumptionsL18–22
04Establish hdL23–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta product succ decompose.
05Separate the logical casesL30–33
06Calculate and transport equalitiesL34–34
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L34
rewrite hd_witness_witness_right_right
07Use earlier factsL35–44
Instantiate or apply named facts and discharge the corresponding proof obligations.
08Use earlier factsL45–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
specialize euler_unit_product_prefix_drop_last (b) - L46
specialize euler_unit_product_prefix_drop_last (c) - L47
specialize euler_unit_product_prefix_drop_last (l) - L48
apply euler_unit_product_prefix_drop_last - L49
exact hf - L50
exact hd_witness_witness_right_left - L51
specialize euler_unit_product_factor_coprime (m) - L52
specialize euler_unit_product_factor_coprime (l) - L53
specialize euler_unit_product_factor_coprime (x) - L54
apply euler_unit_product_factor_coprime
09Use earlier factsL55–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
specialize euler_unit_product_prefix_entry (m) - L56
specialize euler_unit_product_prefix_entry (b) - L57
specialize euler_unit_product_prefix_entry (c) - L58
specialize euler_unit_product_prefix_entry (S l) - L59
specialize euler_unit_product_prefix_entry (l) - L60
specialize euler_unit_product_prefix_entry (x) - L61
apply euler_unit_product_prefix_entry - L62
exact hf - L63
specialize le_refl (S l) - L64
apply le_refl
10Use earlier factsL65–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
exact hd_witness_witness_left
Original exact command ledger · 65 lines
- 0001
induction l - 0002
intro m - 0003
intro b - 0004
intro c - 0005
intro P - 0006
intro hf - 0007
intro hP - 0008
have he : P=1 - 0009
specialize beta_product_zero (b) - 0010
specialize beta_product_zero (c) - 0011
specialize beta_product_zero (P) - 0012
apply beta_product_zero - 0013
exact hP - 0014
rewrite he - 0015
specialize coprime_one_left (m) - 0016
apply coprime_one_left - 0017
intro m - 0018
intro b - 0019
intro c - 0020
intro P - 0021
intro hf - 0022
intro hP - 0023
have hd : exists v Q. (((exists fs_h_eu_product_last. fs_h_eu_product_last + S (v) = S ((S (l)) * c)) /\ exists fs_q_eu_product_last. b = fs_q_eu_product_last * S ((S (l)) * c) + (v))) /\ ((exists ff_u_fsat_eu_product_previous ff_v_fsat_eu_product_previous. ((((exists ff_h_fsat_eu_product_previous_start. ff_h_fsat_eu_product_previous_start + S (1) = S ((S (0)) * ff_v_fsat_eu_product_previous)) /\ exists ff_q_fsat_eu_product_previous_start. ff_u_fsat_eu_product_previous = ff_q_fsat_eu_product_previous_start * S ((S (0)) * ff_v_fsat_eu_product_previous) + (1))) /\ ((((exists ff_h_fsat_eu_product_previous_terminal. ff_h_fsat_eu_product_previous_terminal + S (Q) = S ((S (l)) * ff_v_fsat_eu_product_previous)) /\ exists ff_q_fsat_eu_product_previous_terminal. ff_u_fsat_eu_product_previous = ff_q_fsat_eu_product_previous_terminal * S ((S (l)) * ff_v_fsat_eu_product_previous) + (Q))) /\ forall ff_i_fsat_eu_product_previous. (exists ff_lt_fsat_eu_product_previous_bound. ff_lt_fsat_eu_product_previous_bound + S ff_i_fsat_eu_product_previous = l) -> exists ff_p_fsat_eu_product_previous ff_r_fsat_eu_product_previous ff_s_fsat_eu_product_previous. ((((exists ff_h_fsat_eu_product_previous_factor. ff_h_fsat_eu_product_previous_factor + S (ff_p_fsat_eu_product_previous) = S ((S (ff_i_fsat_eu_product_previous)) * c)) /\ exists ff_q_fsat_eu_product_previous_factor. b = ff_q_fsat_eu_product_previous_factor * S ((S (ff_i_fsat_eu_product_previous)) * c) + (ff_p_fsat_eu_product_previous))) /\ ((((exists ff_h_fsat_eu_product_previous_partial. ff_h_fsat_eu_product_previous_partial + S (ff_r_fsat_eu_product_previous) = S ((S (ff_i_fsat_eu_product_previous)) * ff_v_fsat_eu_product_previous)) /\ exists ff_q_fsat_eu_product_previous_partial. ff_u_fsat_eu_product_previous = ff_q_fsat_eu_product_previous_partial * S ((S (ff_i_fsat_eu_product_previous)) * ff_v_fsat_eu_product_previous) + (ff_r_fsat_eu_product_previous))) /\ ((((exists ff_h_fsat_eu_product_previous_successor. ff_h_fsat_eu_product_previous_successor + S (ff_s_fsat_eu_product_previous) = S ((S (S ff_i_fsat_eu_product_previous)) * ff_v_fsat_eu_product_previous)) /\ exists ff_q_fsat_eu_product_previous_successor. ff_u_fsat_eu_product_previous = ff_q_fsat_eu_product_previous_successor * S ((S (S ff_i_fsat_eu_product_previous)) * ff_v_fsat_eu_product_previous) + (ff_s_fsat_eu_product_previous))) /\ ff_s_fsat_eu_product_previous = ff_r_fsat_eu_product_previous * ff_p_fsat_eu_product_previous)))))) /\ P=Q*v) - 0024
specialize beta_product_succ_decompose (b) - 0025
specialize beta_product_succ_decompose (c) - 0026
specialize beta_product_succ_decompose (l) - 0027
specialize beta_product_succ_decompose (P) - 0028
apply beta_product_succ_decompose - 0029
exact hP - 0030
cases hd - 0031
cases hd_witness - 0032
cases hd_witness_witness - 0033
cases hd_witness_witness_right - 0034
rewrite hd_witness_witness_right_right - 0035
specialize coprime_mul_left (x1) - 0036
specialize coprime_mul_left (x) - 0037
specialize coprime_mul_left (m) - 0038
apply coprime_mul_left - 0039
specialize IH (m) - 0040
specialize IH (b) - 0041
specialize IH (c) - 0042
specialize IH (x1) - 0043
apply IH - 0044
specialize euler_unit_product_prefix_drop_last (m) - 0045
specialize euler_unit_product_prefix_drop_last (b) - 0046
specialize euler_unit_product_prefix_drop_last (c) - 0047
specialize euler_unit_product_prefix_drop_last (l) - 0048
apply euler_unit_product_prefix_drop_last - 0049
exact hf - 0050
exact hd_witness_witness_right_left - 0051
specialize euler_unit_product_factor_coprime (m) - 0052
specialize euler_unit_product_factor_coprime (l) - 0053
specialize euler_unit_product_factor_coprime (x) - 0054
apply euler_unit_product_factor_coprime - 0055
specialize euler_unit_product_prefix_entry (m) - 0056
specialize euler_unit_product_prefix_entry (b) - 0057
specialize euler_unit_product_prefix_entry (c) - 0058
specialize euler_unit_product_prefix_entry (S l) - 0059
specialize euler_unit_product_prefix_entry (l) - 0060
specialize euler_unit_product_prefix_entry (x) - 0061
apply euler_unit_product_prefix_entry - 0062
exact hf - 0063
specialize le_refl (S l) - 0064
apply le_refl - 0065
exact hd_witness_witness_left