Exact expanded first-order arithmetic statement
forall m n b c d e k. ~(m=0) -> ~(n=0) -> (forall jt_divisor_primitivecrtcoprime. (exists jt_factor_primitivecrtcoprimea. (m)=(jt_divisor_primitivecrtcoprime)*jt_factor_primitivecrtcoprimea) -> (exists jt_factor_primitivecrtcoprimeb. (n)=(jt_divisor_primitivecrtcoprime)*jt_factor_primitivecrtcoprimeb) -> jt_divisor_primitivecrtcoprime=1) -> (forall jt_divisor_primitivecrtleft. (exists jt_factor_primitivecrtleftmodulus. (m)=(jt_divisor_primitivecrtleft)*jt_factor_primitivecrtleftmodulus) -> (forall jt_index_primitivecrtleftcoordinates jt_value_primitivecrtleftcoordinates. (exists jt_gap_primitivecrtleftcoordinatesindex. jt_gap_primitivecrtleftcoordinatesindex+S (jt_index_primitivecrtleftcoordinates)=(k)) -> (((exists fs_h_jt_primitivecrtleftcoordinatesat. fs_h_jt_primitivecrtleftcoordinatesat + S (jt_value_primitivecrtleftcoordinates) = S ((S (jt_index_primitivecrtleftcoordinates)) * c)) /\ exists fs_q_jt_primitivecrtleftcoordinatesat. b = fs_q_jt_primitivecrtleftcoordinatesat * S ((S (jt_index_primitivecrtleftcoordinates)) * c) + (jt_value_primitivecrtleftcoordinates))) -> (exists jt_factor_primitivecrtleftcoordinatesdivides. (jt_value_primitivecrtleftcoordinates)=(jt_divisor_primitivecrtleft)*jt_factor_primitivecrtleftcoordinatesdivides)) -> jt_divisor_primitivecrtleft=1) -> (forall jt_divisor_primitivecrtright. (exists jt_factor_primitivecrtrightmodulus. (n)=(jt_divisor_primitivecrtright)*jt_factor_primitivecrtrightmodulus) -> (forall jt_index_primitivecrtrightcoordinates jt_value_primitivecrtrightcoordinates. (exists jt_gap_primitivecrtrightcoordinatesindex. jt_gap_primitivecrtrightcoordinatesindex+S (jt_index_primitivecrtrightcoordinates)=(k)) -> (((exists fs_h_jt_primitivecrtrightcoordinatesat. fs_h_jt_primitivecrtrightcoordinatesat + S (jt_value_primitivecrtrightcoordinates) = S ((S (jt_index_primitivecrtrightcoordinates)) * e)) /\ exists fs_q_jt_primitivecrtrightcoordinatesat. d = fs_q_jt_primitivecrtrightcoordinatesat * S ((S (jt_index_primitivecrtrightcoordinates)) * e) + (jt_value_primitivecrtrightcoordinates))) -> (exists jt_factor_primitivecrtrightcoordinatesdivides. (jt_value_primitivecrtrightcoordinates)=(jt_divisor_primitivecrtright)*jt_factor_primitivecrtrightcoordinatesdivides)) -> jt_divisor_primitivecrtright=1) -> exists f g. ((((forall jt_index_primitivecrtresultbound. (exists jt_gap_primitivecrtresultboundindex. jt_gap_primitivecrtresultboundindex+S (jt_index_primitivecrtresultbound)=(k)) -> exists jt_value_primitivecrtresultbound. ((((exists fs_h_jt_primitivecrtresultboundat. fs_h_jt_primitivecrtresultboundat + S (jt_value_primitivecrtresultbound) = S ((S (jt_index_primitivecrtresultbound)) * g)) /\ exists fs_q_jt_primitivecrtresultboundat. f = fs_q_jt_primitivecrtresultboundat * S ((S (jt_index_primitivecrtresultbound)) * g) + (jt_value_primitivecrtresultbound))) /\ (exists jt_gap_primitivecrtresultboundvalue. jt_gap_primitivecrtresultboundvalue+S (jt_value_primitivecrtresultbound)=(m*n)))) /\ (((forall jt_index_primitivecrtresultleft jt_left_primitivecrtresultleft jt_right_primitivecrtresultleft. (exists jt_gap_primitivecrtresultleftindex. jt_gap_primitivecrtresultleftindex+S (jt_index_primitivecrtresultleft)=(k)) -> (((exists fs_h_jt_primitivecrtresultleftleft. fs_h_jt_primitivecrtresultleftleft + S (jt_left_primitivecrtresultleft) = S ((S (jt_index_primitivecrtresultleft)) * g)) /\ exists fs_q_jt_primitivecrtresultleftleft. f = fs_q_jt_primitivecrtresultleftleft * S ((S (jt_index_primitivecrtresultleft)) * g) + (jt_left_primitivecrtresultleft))) -> (((exists fs_h_jt_primitivecrtresultleftright. fs_h_jt_primitivecrtresultleftright + S (jt_right_primitivecrtresultleft) = S ((S (jt_index_primitivecrtresultleft)) * c)) /\ exists fs_q_jt_primitivecrtresultleftright. b = fs_q_jt_primitivecrtresultleftright * S ((S (jt_index_primitivecrtresultleft)) * c) + (jt_right_primitivecrtresultleft))) -> (exists jt_left_primitivecrtresultleftmod jt_right_primitivecrtresultleftmod. (jt_left_primitivecrtresultleft)+(m)*jt_left_primitivecrtresultleftmod=(jt_right_primitivecrtresultleft)+(m)*jt_right_primitivecrtresultleftmod)) /\ (forall jt_index_primitivecrtresultright jt_left_primitivecrtresultright jt_right_primitivecrtresultright. (exists jt_gap_primitivecrtresultrightindex. jt_gap_primitivecrtresultrightindex+S (jt_index_primitivecrtresultright)=(k)) -> (((exists fs_h_jt_primitivecrtresultrightleft. fs_h_jt_primitivecrtresultrightleft + S (jt_left_primitivecrtresultright) = S ((S (jt_index_primitivecrtresultright)) * g)) /\ exists fs_q_jt_primitivecrtresultrightleft. f = fs_q_jt_primitivecrtresultrightleft * S ((S (jt_index_primitivecrtresultright)) * g) + (jt_left_primitivecrtresultright))) -> (((exists fs_h_jt_primitivecrtresultrightright. fs_h_jt_primitivecrtresultrightright + S (jt_right_primitivecrtresultright) = S ((S (jt_index_primitivecrtresultright)) * e)) /\ exists fs_q_jt_primitivecrtresultrightright. d = fs_q_jt_primitivecrtresultrightright * S ((S (jt_index_primitivecrtresultright)) * e) + (jt_right_primitivecrtresultright))) -> (exists jt_left_primitivecrtresultrightmod jt_right_primitivecrtresultrightmod. (jt_left_primitivecrtresultright)+(n)*jt_left_primitivecrtresultrightmod=(jt_right_primitivecrtresultright)+(n)*jt_right_primitivecrtresultrightmod)))))) /\ (forall jt_divisor_primitivecrtproduct. (exists jt_factor_primitivecrtproductmodulus. (m*n)=(jt_divisor_primitivecrtproduct)*jt_factor_primitivecrtproductmodulus) -> (forall jt_index_primitivecrtproductcoordinates jt_value_primitivecrtproductcoordinates. (exists jt_gap_primitivecrtproductcoordinatesindex. jt_gap_primitivecrtproductcoordinatesindex+S (jt_index_primitivecrtproductcoordinates)=(k)) -> (((exists fs_h_jt_primitivecrtproductcoordinatesat. fs_h_jt_primitivecrtproductcoordinatesat + S (jt_value_primitivecrtproductcoordinates) = S ((S (jt_index_primitivecrtproductcoordinates)) * g)) /\ exists fs_q_jt_primitivecrtproductcoordinatesat. f = fs_q_jt_primitivecrtproductcoordinatesat * S ((S (jt_index_primitivecrtproductcoordinates)) * g) + (jt_value_primitivecrtproductcoordinates))) -> (exists jt_factor_primitivecrtproductcoordinatesdivides. (jt_value_primitivecrtproductcoordinates)=(jt_divisor_primitivecrtproduct)*jt_factor_primitivecrtproductcoordinatesdivides)) -> jt_divisor_primitivecrtproduct=1))Constructive proof overview
Generated structural guide
The constructed canonical CRT tuple is primitive collectively, by coprime common-divisor decomposition.
The unchanged tactic script uses 4 declared prerequisites and contains 77 exact native proof lines.
Alpha v35 checked-use · first admitted v35 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
JT0032 jordan_canonical_crt_tuple_exists JT000B jordan_primitive_tuple_coprime_product JT000F jordan_primitive_tuple_congruence_transport JT000E jordan_tuple_congruence_symmDirect 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 (4)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–12
03Establish hcrtL13–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan canonical crt tuple exists.
- L13
have hcrt : ∃ f. ∃ g. JordanCanonicalTupleCRT(m,n,b,c,d,e,f,g,k)Definitions: JordanCanonicalTupleCRT - L14
specialize jordan_canonical_crt_tuple_exists (m) - L15
specialize jordan_canonical_crt_tuple_exists (n) - L16
specialize jordan_canonical_crt_tuple_exists (b) - L17
specialize jordan_canonical_crt_tuple_exists (c) - L18
specialize jordan_canonical_crt_tuple_exists (d) - L19
specialize jordan_canonical_crt_tuple_exists (e) - L20
specialize jordan_canonical_crt_tuple_exists (k) - L21
apply jordan_canonical_crt_tuple_exists - L22
exact hm
04Use earlier factsL23–24
05Separate the logical casesL25–28
06Construct an explicit witnessL29–30
07Separate the logical casesL31–32
08Use earlier factsL33–33
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
exact hcrt_witness_witness_left
09Separate the logical casesL34–34
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L34
split
10Use earlier factsL35–44
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L35
exact hcrt_witness_witness_right_left - L36
exact hcrt_witness_witness_right_right - L37
specialize jordan_primitive_tuple_coprime_product (m) - L38
specialize jordan_primitive_tuple_coprime_product (n) - L39
specialize jordan_primitive_tuple_coprime_product (x) - L40
specialize jordan_primitive_tuple_coprime_product (x1) - L41
specialize jordan_primitive_tuple_coprime_product (k) - L42
apply jordan_primitive_tuple_coprime_product - L43
exact hm - L44
exact hn
11Use earlier factsL45–54
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
exact hcop - L46
specialize jordan_primitive_tuple_congruence_transport (m) - L47
specialize jordan_primitive_tuple_congruence_transport (b) - L48
specialize jordan_primitive_tuple_congruence_transport (c) - L49
specialize jordan_primitive_tuple_congruence_transport (x) - L50
specialize jordan_primitive_tuple_congruence_transport (x1) - L51
specialize jordan_primitive_tuple_congruence_transport (k) - L52
apply jordan_primitive_tuple_congruence_transport - L53
specialize jordan_tuple_congruence_symm (m) - L54
specialize jordan_tuple_congruence_symm (x)
12Use earlier factsL55–64
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
specialize jordan_tuple_congruence_symm (x1) - L56
specialize jordan_tuple_congruence_symm (b) - L57
specialize jordan_tuple_congruence_symm (c) - L58
specialize jordan_tuple_congruence_symm (k) - L59
apply jordan_tuple_congruence_symm - L60
exact hcrt_witness_witness_right_left - L61
exact hleft - L62
specialize jordan_primitive_tuple_congruence_transport (n) - L63
specialize jordan_primitive_tuple_congruence_transport (d) - L64
specialize jordan_primitive_tuple_congruence_transport (e)
13Use earlier factsL65–74
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
specialize jordan_primitive_tuple_congruence_transport (x) - L66
specialize jordan_primitive_tuple_congruence_transport (x1) - L67
specialize jordan_primitive_tuple_congruence_transport (k) - L68
apply jordan_primitive_tuple_congruence_transport - L69
specialize jordan_tuple_congruence_symm (n) - L70
specialize jordan_tuple_congruence_symm (x) - L71
specialize jordan_tuple_congruence_symm (x1) - L72
specialize jordan_tuple_congruence_symm (d) - L73
specialize jordan_tuple_congruence_symm (e) - L74
specialize jordan_tuple_congruence_symm (k)
Original exact command ledger · 77 lines
- 0001
intro m - 0002
intro n - 0003
intro b - 0004
intro c - 0005
intro d - 0006
intro e - 0007
intro k - 0008
intro hm - 0009
intro hn - 0010
intro hcop - 0011
intro hleft - 0012
intro hright - 0013
have hcrt : exists f g. ((forall jt_index_primitivecrtactualbound. (exists jt_gap_primitivecrtactualboundindex. jt_gap_primitivecrtactualboundindex+S (jt_index_primitivecrtactualbound)=(k)) -> exists jt_value_primitivecrtactualbound. ((((exists fs_h_jt_primitivecrtactualboundat. fs_h_jt_primitivecrtactualboundat + S (jt_value_primitivecrtactualbound) = S ((S (jt_index_primitivecrtactualbound)) * g)) /\ exists fs_q_jt_primitivecrtactualboundat. f = fs_q_jt_primitivecrtactualboundat * S ((S (jt_index_primitivecrtactualbound)) * g) + (jt_value_primitivecrtactualbound))) /\ (exists jt_gap_primitivecrtactualboundvalue. jt_gap_primitivecrtactualboundvalue+S (jt_value_primitivecrtactualbound)=(m*n)))) /\ (((forall jt_index_primitivecrtactualleft jt_left_primitivecrtactualleft jt_right_primitivecrtactualleft. (exists jt_gap_primitivecrtactualleftindex. jt_gap_primitivecrtactualleftindex+S (jt_index_primitivecrtactualleft)=(k)) -> (((exists fs_h_jt_primitivecrtactualleftleft. fs_h_jt_primitivecrtactualleftleft + S (jt_left_primitivecrtactualleft) = S ((S (jt_index_primitivecrtactualleft)) * g)) /\ exists fs_q_jt_primitivecrtactualleftleft. f = fs_q_jt_primitivecrtactualleftleft * S ((S (jt_index_primitivecrtactualleft)) * g) + (jt_left_primitivecrtactualleft))) -> (((exists fs_h_jt_primitivecrtactualleftright. fs_h_jt_primitivecrtactualleftright + S (jt_right_primitivecrtactualleft) = S ((S (jt_index_primitivecrtactualleft)) * c)) /\ exists fs_q_jt_primitivecrtactualleftright. b = fs_q_jt_primitivecrtactualleftright * S ((S (jt_index_primitivecrtactualleft)) * c) + (jt_right_primitivecrtactualleft))) -> (exists jt_left_primitivecrtactualleftmod jt_right_primitivecrtactualleftmod. (jt_left_primitivecrtactualleft)+(m)*jt_left_primitivecrtactualleftmod=(jt_right_primitivecrtactualleft)+(m)*jt_right_primitivecrtactualleftmod)) /\ (forall jt_index_primitivecrtactualright jt_left_primitivecrtactualright jt_right_primitivecrtactualright. (exists jt_gap_primitivecrtactualrightindex. jt_gap_primitivecrtactualrightindex+S (jt_index_primitivecrtactualright)=(k)) -> (((exists fs_h_jt_primitivecrtactualrightleft. fs_h_jt_primitivecrtactualrightleft + S (jt_left_primitivecrtactualright) = S ((S (jt_index_primitivecrtactualright)) * g)) /\ exists fs_q_jt_primitivecrtactualrightleft. f = fs_q_jt_primitivecrtactualrightleft * S ((S (jt_index_primitivecrtactualright)) * g) + (jt_left_primitivecrtactualright))) -> (((exists fs_h_jt_primitivecrtactualrightright. fs_h_jt_primitivecrtactualrightright + S (jt_right_primitivecrtactualright) = S ((S (jt_index_primitivecrtactualright)) * e)) /\ exists fs_q_jt_primitivecrtactualrightright. d = fs_q_jt_primitivecrtactualrightright * S ((S (jt_index_primitivecrtactualright)) * e) + (jt_right_primitivecrtactualright))) -> (exists jt_left_primitivecrtactualrightmod jt_right_primitivecrtactualrightmod. (jt_left_primitivecrtactualright)+(n)*jt_left_primitivecrtactualrightmod=(jt_right_primitivecrtactualright)+(n)*jt_right_primitivecrtactualrightmod))))) - 0014
specialize jordan_canonical_crt_tuple_exists (m) - 0015
specialize jordan_canonical_crt_tuple_exists (n) - 0016
specialize jordan_canonical_crt_tuple_exists (b) - 0017
specialize jordan_canonical_crt_tuple_exists (c) - 0018
specialize jordan_canonical_crt_tuple_exists (d) - 0019
specialize jordan_canonical_crt_tuple_exists (e) - 0020
specialize jordan_canonical_crt_tuple_exists (k) - 0021
apply jordan_canonical_crt_tuple_exists - 0022
exact hm - 0023
exact hn - 0024
exact hcop - 0025
cases hcrt - 0026
cases hcrt_witness - 0027
cases hcrt_witness_witness - 0028
cases hcrt_witness_witness_right - 0029
exists x - 0030
exists x1 - 0031
split - 0032
split - 0033
exact hcrt_witness_witness_left - 0034
split - 0035
exact hcrt_witness_witness_right_left - 0036
exact hcrt_witness_witness_right_right - 0037
specialize jordan_primitive_tuple_coprime_product (m) - 0038
specialize jordan_primitive_tuple_coprime_product (n) - 0039
specialize jordan_primitive_tuple_coprime_product (x) - 0040
specialize jordan_primitive_tuple_coprime_product (x1) - 0041
specialize jordan_primitive_tuple_coprime_product (k) - 0042
apply jordan_primitive_tuple_coprime_product - 0043
exact hm - 0044
exact hn - 0045
exact hcop - 0046
specialize jordan_primitive_tuple_congruence_transport (m) - 0047
specialize jordan_primitive_tuple_congruence_transport (b) - 0048
specialize jordan_primitive_tuple_congruence_transport (c) - 0049
specialize jordan_primitive_tuple_congruence_transport (x) - 0050
specialize jordan_primitive_tuple_congruence_transport (x1) - 0051
specialize jordan_primitive_tuple_congruence_transport (k) - 0052
apply jordan_primitive_tuple_congruence_transport - 0053
specialize jordan_tuple_congruence_symm (m) - 0054
specialize jordan_tuple_congruence_symm (x) - 0055
specialize jordan_tuple_congruence_symm (x1) - 0056
specialize jordan_tuple_congruence_symm (b) - 0057
specialize jordan_tuple_congruence_symm (c) - 0058
specialize jordan_tuple_congruence_symm (k) - 0059
apply jordan_tuple_congruence_symm - 0060
exact hcrt_witness_witness_right_left - 0061
exact hleft - 0062
specialize jordan_primitive_tuple_congruence_transport (n) - 0063
specialize jordan_primitive_tuple_congruence_transport (d) - 0064
specialize jordan_primitive_tuple_congruence_transport (e) - 0065
specialize jordan_primitive_tuple_congruence_transport (x) - 0066
specialize jordan_primitive_tuple_congruence_transport (x1) - 0067
specialize jordan_primitive_tuple_congruence_transport (k) - 0068
apply jordan_primitive_tuple_congruence_transport - 0069
specialize jordan_tuple_congruence_symm (n) - 0070
specialize jordan_tuple_congruence_symm (x) - 0071
specialize jordan_tuple_congruence_symm (x1) - 0072
specialize jordan_tuple_congruence_symm (d) - 0073
specialize jordan_tuple_congruence_symm (e) - 0074
specialize jordan_tuple_congruence_symm (k) - 0075
apply jordan_tuple_congruence_symm - 0076
exact hcrt_witness_witness_right_right - 0077
exact hright