Exact expanded first-order arithmetic statement
forall a b B C k. ~(a=0) -> ~(b=0) -> (forall jt_divisor_productcop. (exists jt_factor_productcopa. (a)=(jt_divisor_productcop)*jt_factor_productcopa) -> (exists jt_factor_productcopb. (b)=(jt_divisor_productcop)*jt_factor_productcopb) -> jt_divisor_productcop=1) -> (forall jt_divisor_producta. (exists jt_factor_productamodulus. (a)=(jt_divisor_producta)*jt_factor_productamodulus) -> (forall jt_index_productacoordinates jt_value_productacoordinates. (exists jt_gap_productacoordinatesindex. jt_gap_productacoordinatesindex+S (jt_index_productacoordinates)=(k)) -> (((exists fs_h_jt_productacoordinatesat. fs_h_jt_productacoordinatesat + S (jt_value_productacoordinates) = S ((S (jt_index_productacoordinates)) * C)) /\ exists fs_q_jt_productacoordinatesat. B = fs_q_jt_productacoordinatesat * S ((S (jt_index_productacoordinates)) * C) + (jt_value_productacoordinates))) -> (exists jt_factor_productacoordinatesdivides. (jt_value_productacoordinates)=(jt_divisor_producta)*jt_factor_productacoordinatesdivides)) -> jt_divisor_producta=1) -> (forall jt_divisor_productb. (exists jt_factor_productbmodulus. (b)=(jt_divisor_productb)*jt_factor_productbmodulus) -> (forall jt_index_productbcoordinates jt_value_productbcoordinates. (exists jt_gap_productbcoordinatesindex. jt_gap_productbcoordinatesindex+S (jt_index_productbcoordinates)=(k)) -> (((exists fs_h_jt_productbcoordinatesat. fs_h_jt_productbcoordinatesat + S (jt_value_productbcoordinates) = S ((S (jt_index_productbcoordinates)) * C)) /\ exists fs_q_jt_productbcoordinatesat. B = fs_q_jt_productbcoordinatesat * S ((S (jt_index_productbcoordinates)) * C) + (jt_value_productbcoordinates))) -> (exists jt_factor_productbcoordinatesdivides. (jt_value_productbcoordinates)=(jt_divisor_productb)*jt_factor_productbcoordinatesdivides)) -> jt_divisor_productb=1) -> (forall jt_divisor_productab. (exists jt_factor_productabmodulus. (a*b)=(jt_divisor_productab)*jt_factor_productabmodulus) -> (forall jt_index_productabcoordinates jt_value_productabcoordinates. (exists jt_gap_productabcoordinatesindex. jt_gap_productabcoordinatesindex+S (jt_index_productabcoordinates)=(k)) -> (((exists fs_h_jt_productabcoordinatesat. fs_h_jt_productabcoordinatesat + S (jt_value_productabcoordinates) = S ((S (jt_index_productabcoordinates)) * C)) /\ exists fs_q_jt_productabcoordinatesat. B = fs_q_jt_productabcoordinatesat * S ((S (jt_index_productabcoordinates)) * C) + (jt_value_productabcoordinates))) -> (exists jt_factor_productabcoordinatesdivides. (jt_value_productabcoordinates)=(jt_divisor_productab)*jt_factor_productabcoordinatesdivides)) -> jt_divisor_productab=1)Constructive proof overview
Generated structural guide
Actual coprime divisor decomposition proves primitivity for the product modulus.
The unchanged tactic script uses 6 declared prerequisites and contains 84 exact native proof lines.
Alpha v35 checked-use · first admitted v35 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
mul_ne_zero Alpha theorem; checked-use authorized mul_zero_left Alpha theorem; checked-use authorized coprime_divisor_factor_pair_exists Alpha theorem; checked-use authorized JT0007 jordan_tuple_divisor_downward mul_comm Alpha theorem; checked-use authorized one_mul Alpha 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 (1)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–13
03Establish hnL14–21
04Establish hdposL22–24
05Separate the logical casesL25–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L25
cases hd
06Establish hzeroL26–32
07Establish hpL33–40
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply coprime divisor factor pair exists.
- L33
have hp : exists r s. ((~(r=0)) /\ (((~(s=0)) /\ (((exists jt_factor_paira. (a)=(r)*jt_factor_paira) /\ (((exists jt_factor_pairb. (b)=(s)*jt_factor_pairb) /\ (d=r*s)))))))) - L34
specialize coprime_divisor_factor_pair_exists (a) - L35
specialize coprime_divisor_factor_pair_exists (b) - L36
specialize coprime_divisor_factor_pair_exists (d) - L37
apply coprime_divisor_factor_pair_exists - L38
exact hdpos - L39
exact hc - L40
exact hd
08Separate the logical casesL41–46
09Establish hrL47–56
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpa.
- L47
have hr : x=1 - L48
specialize hpa (x) - L49
apply hpa - L50
exact hp_witness_witness_right_right_left - L51
specialize jordan_tuple_divisor_downward (x) - L52
specialize jordan_tuple_divisor_downward (d) - L53
specialize jordan_tuple_divisor_downward (B) - L54
specialize jordan_tuple_divisor_downward (C) - L55
specialize jordan_tuple_divisor_downward (k) - L56
apply jordan_tuple_divisor_downward
10Construct an explicit witnessL57–57
Supply the displayed value, then prove that it has the required property.
- L57
exists x1
11Use earlier factsL58–59
12Establish hsL60–69
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpb.
- L60
have hs : x1=1 - L61
specialize hpb (x1) - L62
apply hpb - L63
exact hp_witness_witness_right_right_right_left - L64
specialize jordan_tuple_divisor_downward (x1) - L65
specialize jordan_tuple_divisor_downward (d) - L66
specialize jordan_tuple_divisor_downward (B) - L67
specialize jordan_tuple_divisor_downward (C) - L68
specialize jordan_tuple_divisor_downward (k) - L69
apply jordan_tuple_divisor_downward
13Construct an explicit witnessL70–70
Supply the displayed value, then prove that it has the required property.
- L70
exists x
14Establish hcommL71–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul comm.
15Calculate and transport equalitiesL81–82
Original exact command ledger · 84 lines
- 0001
intro a - 0002
intro b - 0003
intro B - 0004
intro C - 0005
intro k - 0006
intro ha - 0007
intro hb - 0008
intro hc - 0009
intro hpa - 0010
intro hpb - 0011
intro d - 0012
intro hd - 0013
intro hall - 0014
have hn : ~(a*b=0) - 0015
intro hproductzero - 0016
specialize mul_ne_zero (a) - 0017
specialize mul_ne_zero (b) - 0018
apply mul_ne_zero - 0019
exact ha - 0020
exact hb - 0021
exact hproductzero - 0022
have hdpos : ~(d=0) - 0023
intro hz - 0024
apply hn - 0025
cases hd - 0026
have hzero : d*x=0 - 0027
rewrite hz - 0028
specialize mul_zero_left (x) - 0029
apply mul_zero_left - 0030
trans d*x - 0031
exact hd_witness - 0032
exact hzero - 0033
have hp : exists r s. ((~(r=0)) /\ (((~(s=0)) /\ (((exists jt_factor_paira. (a)=(r)*jt_factor_paira) /\ (((exists jt_factor_pairb. (b)=(s)*jt_factor_pairb) /\ (d=r*s)))))))) - 0034
specialize coprime_divisor_factor_pair_exists (a) - 0035
specialize coprime_divisor_factor_pair_exists (b) - 0036
specialize coprime_divisor_factor_pair_exists (d) - 0037
apply coprime_divisor_factor_pair_exists - 0038
exact hdpos - 0039
exact hc - 0040
exact hd - 0041
cases hp - 0042
cases hp_witness - 0043
cases hp_witness_witness - 0044
cases hp_witness_witness_right - 0045
cases hp_witness_witness_right_right - 0046
cases hp_witness_witness_right_right_right - 0047
have hr : x=1 - 0048
specialize hpa (x) - 0049
apply hpa - 0050
exact hp_witness_witness_right_right_left - 0051
specialize jordan_tuple_divisor_downward (x) - 0052
specialize jordan_tuple_divisor_downward (d) - 0053
specialize jordan_tuple_divisor_downward (B) - 0054
specialize jordan_tuple_divisor_downward (C) - 0055
specialize jordan_tuple_divisor_downward (k) - 0056
apply jordan_tuple_divisor_downward - 0057
exists x1 - 0058
exact hp_witness_witness_right_right_right_right - 0059
exact hall - 0060
have hs : x1=1 - 0061
specialize hpb (x1) - 0062
apply hpb - 0063
exact hp_witness_witness_right_right_right_left - 0064
specialize jordan_tuple_divisor_downward (x1) - 0065
specialize jordan_tuple_divisor_downward (d) - 0066
specialize jordan_tuple_divisor_downward (B) - 0067
specialize jordan_tuple_divisor_downward (C) - 0068
specialize jordan_tuple_divisor_downward (k) - 0069
apply jordan_tuple_divisor_downward - 0070
exists x - 0071
have hcomm : x*x1=x1*x - 0072
specialize mul_comm (x) - 0073
specialize mul_comm (x1) - 0074
apply mul_comm - 0075
trans x*x1 - 0076
exact hp_witness_witness_right_right_right_right - 0077
exact hcomm - 0078
exact hall - 0079
trans x*x1 - 0080
exact hp_witness_witness_right_right_right_right - 0081
rewrite hr - 0082
rewrite hs - 0083
specialize one_mul (1) - 0084
apply one_mul