Exact expanded first-order arithmetic statement
forall m n b c d e f g h s k. (forall jt_divisor_uniquecrtcop. (exists jt_factor_uniquecrtcopa. (m)=(jt_divisor_uniquecrtcop)*jt_factor_uniquecrtcopa) -> (exists jt_factor_uniquecrtcopb. (n)=(jt_divisor_uniquecrtcop)*jt_factor_uniquecrtcopb) -> jt_divisor_uniquecrtcop=1) -> (((forall jt_index_uniquecrtfirstbound. (exists jt_gap_uniquecrtfirstboundindex. jt_gap_uniquecrtfirstboundindex+S (jt_index_uniquecrtfirstbound)=(k)) -> exists jt_value_uniquecrtfirstbound. ((((exists fs_h_jt_uniquecrtfirstboundat. fs_h_jt_uniquecrtfirstboundat + S (jt_value_uniquecrtfirstbound) = S ((S (jt_index_uniquecrtfirstbound)) * g)) /\ exists fs_q_jt_uniquecrtfirstboundat. f = fs_q_jt_uniquecrtfirstboundat * S ((S (jt_index_uniquecrtfirstbound)) * g) + (jt_value_uniquecrtfirstbound))) /\ (exists jt_gap_uniquecrtfirstboundvalue. jt_gap_uniquecrtfirstboundvalue+S (jt_value_uniquecrtfirstbound)=(m*n)))) /\ (((forall jt_index_uniquecrtfirstleft jt_left_uniquecrtfirstleft jt_right_uniquecrtfirstleft. (exists jt_gap_uniquecrtfirstleftindex. jt_gap_uniquecrtfirstleftindex+S (jt_index_uniquecrtfirstleft)=(k)) -> (((exists fs_h_jt_uniquecrtfirstleftleft. fs_h_jt_uniquecrtfirstleftleft + S (jt_left_uniquecrtfirstleft) = S ((S (jt_index_uniquecrtfirstleft)) * g)) /\ exists fs_q_jt_uniquecrtfirstleftleft. f = fs_q_jt_uniquecrtfirstleftleft * S ((S (jt_index_uniquecrtfirstleft)) * g) + (jt_left_uniquecrtfirstleft))) -> (((exists fs_h_jt_uniquecrtfirstleftright. fs_h_jt_uniquecrtfirstleftright + S (jt_right_uniquecrtfirstleft) = S ((S (jt_index_uniquecrtfirstleft)) * c)) /\ exists fs_q_jt_uniquecrtfirstleftright. b = fs_q_jt_uniquecrtfirstleftright * S ((S (jt_index_uniquecrtfirstleft)) * c) + (jt_right_uniquecrtfirstleft))) -> (exists jt_left_uniquecrtfirstleftmod jt_right_uniquecrtfirstleftmod. (jt_left_uniquecrtfirstleft)+(m)*jt_left_uniquecrtfirstleftmod=(jt_right_uniquecrtfirstleft)+(m)*jt_right_uniquecrtfirstleftmod)) /\ (forall jt_index_uniquecrtfirstright jt_left_uniquecrtfirstright jt_right_uniquecrtfirstright. (exists jt_gap_uniquecrtfirstrightindex. jt_gap_uniquecrtfirstrightindex+S (jt_index_uniquecrtfirstright)=(k)) -> (((exists fs_h_jt_uniquecrtfirstrightleft. fs_h_jt_uniquecrtfirstrightleft + S (jt_left_uniquecrtfirstright) = S ((S (jt_index_uniquecrtfirstright)) * g)) /\ exists fs_q_jt_uniquecrtfirstrightleft. f = fs_q_jt_uniquecrtfirstrightleft * S ((S (jt_index_uniquecrtfirstright)) * g) + (jt_left_uniquecrtfirstright))) -> (((exists fs_h_jt_uniquecrtfirstrightright. fs_h_jt_uniquecrtfirstrightright + S (jt_right_uniquecrtfirstright) = S ((S (jt_index_uniquecrtfirstright)) * e)) /\ exists fs_q_jt_uniquecrtfirstrightright. d = fs_q_jt_uniquecrtfirstrightright * S ((S (jt_index_uniquecrtfirstright)) * e) + (jt_right_uniquecrtfirstright))) -> (exists jt_left_uniquecrtfirstrightmod jt_right_uniquecrtfirstrightmod. (jt_left_uniquecrtfirstright)+(n)*jt_left_uniquecrtfirstrightmod=(jt_right_uniquecrtfirstright)+(n)*jt_right_uniquecrtfirstrightmod)))))) -> (((forall jt_index_uniquecrtsecondbound. (exists jt_gap_uniquecrtsecondboundindex. jt_gap_uniquecrtsecondboundindex+S (jt_index_uniquecrtsecondbound)=(k)) -> exists jt_value_uniquecrtsecondbound. ((((exists fs_h_jt_uniquecrtsecondboundat. fs_h_jt_uniquecrtsecondboundat + S (jt_value_uniquecrtsecondbound) = S ((S (jt_index_uniquecrtsecondbound)) * s)) /\ exists fs_q_jt_uniquecrtsecondboundat. h = fs_q_jt_uniquecrtsecondboundat * S ((S (jt_index_uniquecrtsecondbound)) * s) + (jt_value_uniquecrtsecondbound))) /\ (exists jt_gap_uniquecrtsecondboundvalue. jt_gap_uniquecrtsecondboundvalue+S (jt_value_uniquecrtsecondbound)=(m*n)))) /\ (((forall jt_index_uniquecrtsecondleft jt_left_uniquecrtsecondleft jt_right_uniquecrtsecondleft. (exists jt_gap_uniquecrtsecondleftindex. jt_gap_uniquecrtsecondleftindex+S (jt_index_uniquecrtsecondleft)=(k)) -> (((exists fs_h_jt_uniquecrtsecondleftleft. fs_h_jt_uniquecrtsecondleftleft + S (jt_left_uniquecrtsecondleft) = S ((S (jt_index_uniquecrtsecondleft)) * s)) /\ exists fs_q_jt_uniquecrtsecondleftleft. h = fs_q_jt_uniquecrtsecondleftleft * S ((S (jt_index_uniquecrtsecondleft)) * s) + (jt_left_uniquecrtsecondleft))) -> (((exists fs_h_jt_uniquecrtsecondleftright. fs_h_jt_uniquecrtsecondleftright + S (jt_right_uniquecrtsecondleft) = S ((S (jt_index_uniquecrtsecondleft)) * c)) /\ exists fs_q_jt_uniquecrtsecondleftright. b = fs_q_jt_uniquecrtsecondleftright * S ((S (jt_index_uniquecrtsecondleft)) * c) + (jt_right_uniquecrtsecondleft))) -> (exists jt_left_uniquecrtsecondleftmod jt_right_uniquecrtsecondleftmod. (jt_left_uniquecrtsecondleft)+(m)*jt_left_uniquecrtsecondleftmod=(jt_right_uniquecrtsecondleft)+(m)*jt_right_uniquecrtsecondleftmod)) /\ (forall jt_index_uniquecrtsecondright jt_left_uniquecrtsecondright jt_right_uniquecrtsecondright. (exists jt_gap_uniquecrtsecondrightindex. jt_gap_uniquecrtsecondrightindex+S (jt_index_uniquecrtsecondright)=(k)) -> (((exists fs_h_jt_uniquecrtsecondrightleft. fs_h_jt_uniquecrtsecondrightleft + S (jt_left_uniquecrtsecondright) = S ((S (jt_index_uniquecrtsecondright)) * s)) /\ exists fs_q_jt_uniquecrtsecondrightleft. h = fs_q_jt_uniquecrtsecondrightleft * S ((S (jt_index_uniquecrtsecondright)) * s) + (jt_left_uniquecrtsecondright))) -> (((exists fs_h_jt_uniquecrtsecondrightright. fs_h_jt_uniquecrtsecondrightright + S (jt_right_uniquecrtsecondright) = S ((S (jt_index_uniquecrtsecondright)) * e)) /\ exists fs_q_jt_uniquecrtsecondrightright. d = fs_q_jt_uniquecrtsecondrightright * S ((S (jt_index_uniquecrtsecondright)) * e) + (jt_right_uniquecrtsecondright))) -> (exists jt_left_uniquecrtsecondrightmod jt_right_uniquecrtsecondrightmod. (jt_left_uniquecrtsecondright)+(n)*jt_left_uniquecrtsecondrightmod=(jt_right_uniquecrtsecondright)+(n)*jt_right_uniquecrtsecondrightmod)))))) -> (forall jt_index_uniquecrtoutputs jt_left_uniquecrtoutputs jt_right_uniquecrtoutputs. (exists jt_gap_uniquecrtoutputsindex. jt_gap_uniquecrtoutputsindex+S (jt_index_uniquecrtoutputs)=(k)) -> (((exists fs_h_jt_uniquecrtoutputsleft. fs_h_jt_uniquecrtoutputsleft + S (jt_left_uniquecrtoutputs) = S ((S (jt_index_uniquecrtoutputs)) * g)) /\ exists fs_q_jt_uniquecrtoutputsleft. f = fs_q_jt_uniquecrtoutputsleft * S ((S (jt_index_uniquecrtoutputs)) * g) + (jt_left_uniquecrtoutputs))) -> (((exists fs_h_jt_uniquecrtoutputsright. fs_h_jt_uniquecrtoutputsright + S (jt_right_uniquecrtoutputs) = S ((S (jt_index_uniquecrtoutputs)) * s)) /\ exists fs_q_jt_uniquecrtoutputsright. h = fs_q_jt_uniquecrtoutputsright * S ((S (jt_index_uniquecrtoutputs)) * s) + (jt_right_uniquecrtoutputs))) -> jt_left_uniquecrtoutputs=jt_right_uniquecrtoutputs)Constructive proof overview
Generated structural guide
The actual two-coordinate CRT output is unique below the product modulus.
The unchanged tactic script uses 4 declared prerequisites and contains 72 exact native proof lines.
Alpha v35 checked-use · first admitted v35 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
JT0039 jordan_tuple_bounded_congruence_equal JT003A jordan_tuple_congruence_coprime_product JT0030 jordan_tuple_congruence_trans 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–14
03Separate the logical casesL15–18
04Use earlier factsL19–28
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L19
specialize jordan_tuple_bounded_congruence_equal (m*n) - L20
specialize jordan_tuple_bounded_congruence_equal (f) - L21
specialize jordan_tuple_bounded_congruence_equal (g) - L22
specialize jordan_tuple_bounded_congruence_equal (h) - L23
specialize jordan_tuple_bounded_congruence_equal (s) - L24
specialize jordan_tuple_bounded_congruence_equal (k) - L25
apply jordan_tuple_bounded_congruence_equal - L26
exact hf_left - L27
exact hh_left - L28
specialize jordan_tuple_congruence_coprime_product (m)
05Use earlier factsL29–38
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L29
specialize jordan_tuple_congruence_coprime_product (n) - L30
specialize jordan_tuple_congruence_coprime_product (f) - L31
specialize jordan_tuple_congruence_coprime_product (g) - L32
specialize jordan_tuple_congruence_coprime_product (h) - L33
specialize jordan_tuple_congruence_coprime_product (s) - L34
specialize jordan_tuple_congruence_coprime_product (k) - L35
apply jordan_tuple_congruence_coprime_product - L36
exact hcop - L37
specialize jordan_tuple_congruence_trans (m) - L38
specialize jordan_tuple_congruence_trans (f)
06Use earlier factsL39–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L39
specialize jordan_tuple_congruence_trans (g) - L40
specialize jordan_tuple_congruence_trans (b) - L41
specialize jordan_tuple_congruence_trans (c) - L42
specialize jordan_tuple_congruence_trans (h) - L43
specialize jordan_tuple_congruence_trans (s) - L44
specialize jordan_tuple_congruence_trans (k) - L45
apply jordan_tuple_congruence_trans - L46
exact hf_right_left - L47
specialize jordan_tuple_congruence_symm (m) - L48
specialize jordan_tuple_congruence_symm (h)
07Use earlier factsL49–58
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L49
specialize jordan_tuple_congruence_symm (s) - L50
specialize jordan_tuple_congruence_symm (b) - L51
specialize jordan_tuple_congruence_symm (c) - L52
specialize jordan_tuple_congruence_symm (k) - L53
apply jordan_tuple_congruence_symm - L54
exact hh_right_left - L55
specialize jordan_tuple_congruence_trans (n) - L56
specialize jordan_tuple_congruence_trans (f) - L57
specialize jordan_tuple_congruence_trans (g) - L58
specialize jordan_tuple_congruence_trans (d)
08Use earlier factsL59–68
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L59
specialize jordan_tuple_congruence_trans (e) - L60
specialize jordan_tuple_congruence_trans (h) - L61
specialize jordan_tuple_congruence_trans (s) - L62
specialize jordan_tuple_congruence_trans (k) - L63
apply jordan_tuple_congruence_trans - L64
exact hf_right_right - L65
specialize jordan_tuple_congruence_symm (n) - L66
specialize jordan_tuple_congruence_symm (h) - L67
specialize jordan_tuple_congruence_symm (s) - L68
specialize jordan_tuple_congruence_symm (d)
Original exact command ledger · 72 lines
- 0001
intro m - 0002
intro n - 0003
intro b - 0004
intro c - 0005
intro d - 0006
intro e - 0007
intro f - 0008
intro g - 0009
intro h - 0010
intro s - 0011
intro k - 0012
intro hcop - 0013
intro hf - 0014
intro hh - 0015
cases hf - 0016
cases hf_right - 0017
cases hh - 0018
cases hh_right - 0019
specialize jordan_tuple_bounded_congruence_equal (m*n) - 0020
specialize jordan_tuple_bounded_congruence_equal (f) - 0021
specialize jordan_tuple_bounded_congruence_equal (g) - 0022
specialize jordan_tuple_bounded_congruence_equal (h) - 0023
specialize jordan_tuple_bounded_congruence_equal (s) - 0024
specialize jordan_tuple_bounded_congruence_equal (k) - 0025
apply jordan_tuple_bounded_congruence_equal - 0026
exact hf_left - 0027
exact hh_left - 0028
specialize jordan_tuple_congruence_coprime_product (m) - 0029
specialize jordan_tuple_congruence_coprime_product (n) - 0030
specialize jordan_tuple_congruence_coprime_product (f) - 0031
specialize jordan_tuple_congruence_coprime_product (g) - 0032
specialize jordan_tuple_congruence_coprime_product (h) - 0033
specialize jordan_tuple_congruence_coprime_product (s) - 0034
specialize jordan_tuple_congruence_coprime_product (k) - 0035
apply jordan_tuple_congruence_coprime_product - 0036
exact hcop - 0037
specialize jordan_tuple_congruence_trans (m) - 0038
specialize jordan_tuple_congruence_trans (f) - 0039
specialize jordan_tuple_congruence_trans (g) - 0040
specialize jordan_tuple_congruence_trans (b) - 0041
specialize jordan_tuple_congruence_trans (c) - 0042
specialize jordan_tuple_congruence_trans (h) - 0043
specialize jordan_tuple_congruence_trans (s) - 0044
specialize jordan_tuple_congruence_trans (k) - 0045
apply jordan_tuple_congruence_trans - 0046
exact hf_right_left - 0047
specialize jordan_tuple_congruence_symm (m) - 0048
specialize jordan_tuple_congruence_symm (h) - 0049
specialize jordan_tuple_congruence_symm (s) - 0050
specialize jordan_tuple_congruence_symm (b) - 0051
specialize jordan_tuple_congruence_symm (c) - 0052
specialize jordan_tuple_congruence_symm (k) - 0053
apply jordan_tuple_congruence_symm - 0054
exact hh_right_left - 0055
specialize jordan_tuple_congruence_trans (n) - 0056
specialize jordan_tuple_congruence_trans (f) - 0057
specialize jordan_tuple_congruence_trans (g) - 0058
specialize jordan_tuple_congruence_trans (d) - 0059
specialize jordan_tuple_congruence_trans (e) - 0060
specialize jordan_tuple_congruence_trans (h) - 0061
specialize jordan_tuple_congruence_trans (s) - 0062
specialize jordan_tuple_congruence_trans (k) - 0063
apply jordan_tuple_congruence_trans - 0064
exact hf_right_right - 0065
specialize jordan_tuple_congruence_symm (n) - 0066
specialize jordan_tuple_congruence_symm (h) - 0067
specialize jordan_tuple_congruence_symm (s) - 0068
specialize jordan_tuple_congruence_symm (d) - 0069
specialize jordan_tuple_congruence_symm (e) - 0070
specialize jordan_tuple_congruence_symm (k) - 0071
apply jordan_tuple_congruence_symm - 0072
exact hh_right_right