Exact expanded first-order arithmetic statement
forall m n b c d e k. ~(m=0) -> ~(n=0) -> (forall jt_divisor_canonicalcrtcoprime. (exists jt_factor_canonicalcrtcoprimea. (m)=(jt_divisor_canonicalcrtcoprime)*jt_factor_canonicalcrtcoprimea) -> (exists jt_factor_canonicalcrtcoprimeb. (n)=(jt_divisor_canonicalcrtcoprime)*jt_factor_canonicalcrtcoprimeb) -> jt_divisor_canonicalcrtcoprime=1) -> exists f g. ((forall jt_index_canonicalcrtexistsbound. (exists jt_gap_canonicalcrtexistsboundindex. jt_gap_canonicalcrtexistsboundindex+S (jt_index_canonicalcrtexistsbound)=(k)) -> exists jt_value_canonicalcrtexistsbound. ((((exists fs_h_jt_canonicalcrtexistsboundat. fs_h_jt_canonicalcrtexistsboundat + S (jt_value_canonicalcrtexistsbound) = S ((S (jt_index_canonicalcrtexistsbound)) * g)) /\ exists fs_q_jt_canonicalcrtexistsboundat. f = fs_q_jt_canonicalcrtexistsboundat * S ((S (jt_index_canonicalcrtexistsbound)) * g) + (jt_value_canonicalcrtexistsbound))) /\ (exists jt_gap_canonicalcrtexistsboundvalue. jt_gap_canonicalcrtexistsboundvalue+S (jt_value_canonicalcrtexistsbound)=(m*n)))) /\ (((forall jt_index_canonicalcrtexistsleft jt_left_canonicalcrtexistsleft jt_right_canonicalcrtexistsleft. (exists jt_gap_canonicalcrtexistsleftindex. jt_gap_canonicalcrtexistsleftindex+S (jt_index_canonicalcrtexistsleft)=(k)) -> (((exists fs_h_jt_canonicalcrtexistsleftleft. fs_h_jt_canonicalcrtexistsleftleft + S (jt_left_canonicalcrtexistsleft) = S ((S (jt_index_canonicalcrtexistsleft)) * g)) /\ exists fs_q_jt_canonicalcrtexistsleftleft. f = fs_q_jt_canonicalcrtexistsleftleft * S ((S (jt_index_canonicalcrtexistsleft)) * g) + (jt_left_canonicalcrtexistsleft))) -> (((exists fs_h_jt_canonicalcrtexistsleftright. fs_h_jt_canonicalcrtexistsleftright + S (jt_right_canonicalcrtexistsleft) = S ((S (jt_index_canonicalcrtexistsleft)) * c)) /\ exists fs_q_jt_canonicalcrtexistsleftright. b = fs_q_jt_canonicalcrtexistsleftright * S ((S (jt_index_canonicalcrtexistsleft)) * c) + (jt_right_canonicalcrtexistsleft))) -> (exists jt_left_canonicalcrtexistsleftmod jt_right_canonicalcrtexistsleftmod. (jt_left_canonicalcrtexistsleft)+(m)*jt_left_canonicalcrtexistsleftmod=(jt_right_canonicalcrtexistsleft)+(m)*jt_right_canonicalcrtexistsleftmod)) /\ (forall jt_index_canonicalcrtexistsright jt_left_canonicalcrtexistsright jt_right_canonicalcrtexistsright. (exists jt_gap_canonicalcrtexistsrightindex. jt_gap_canonicalcrtexistsrightindex+S (jt_index_canonicalcrtexistsright)=(k)) -> (((exists fs_h_jt_canonicalcrtexistsrightleft. fs_h_jt_canonicalcrtexistsrightleft + S (jt_left_canonicalcrtexistsright) = S ((S (jt_index_canonicalcrtexistsright)) * g)) /\ exists fs_q_jt_canonicalcrtexistsrightleft. f = fs_q_jt_canonicalcrtexistsrightleft * S ((S (jt_index_canonicalcrtexistsright)) * g) + (jt_left_canonicalcrtexistsright))) -> (((exists fs_h_jt_canonicalcrtexistsrightright. fs_h_jt_canonicalcrtexistsrightright + S (jt_right_canonicalcrtexistsright) = S ((S (jt_index_canonicalcrtexistsright)) * e)) /\ exists fs_q_jt_canonicalcrtexistsrightright. d = fs_q_jt_canonicalcrtexistsrightright * S ((S (jt_index_canonicalcrtexistsright)) * e) + (jt_right_canonicalcrtexistsright))) -> (exists jt_left_canonicalcrtexistsrightmod jt_right_canonicalcrtexistsrightmod. (jt_left_canonicalcrtexistsright)+(n)*jt_left_canonicalcrtexistsrightmod=(jt_right_canonicalcrtexistsright)+(n)*jt_right_canonicalcrtexistsrightmod)))))Constructive proof overview
Generated structural guide
Construct an actual tuple bounded by the product modulus with both prescribed residue tuples.
The unchanged tactic script uses 9 declared prerequisites and contains 131 exact native proof lines.
Alpha v35 checked-use · first admitted v35 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
JT002C jordan_crt_tuple_exists mul_ne_zero Alpha theorem; checked-use authorized JT002F jordan_tuple_normalize_exists JT0031 jordan_tuple_congruence_divisor mul_comm Alpha theorem; checked-use authorized JT0030 jordan_tuple_congruence_trans JT000E jordan_tuple_congruence_symm JT002D jordan_crt_tuple_left JT002E jordan_crt_tuple_rightDirect 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 (7)
01Fix variables and assumptionsL1–10
02Establish hfamilyL11–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan crt tuple exists.
- L11
have hfamily : ∀ L. ∃ f. ∃ g. JordanTupleCRT(m,n,b,c,d,e,f,g,L)Definitions: JordanTupleCRT - L12
specialize jordan_crt_tuple_exists (m) - L13
specialize jordan_crt_tuple_exists (n) - L14
specialize jordan_crt_tuple_exists (b) - L15
specialize jordan_crt_tuple_exists (c) - L16
specialize jordan_crt_tuple_exists (d) - L17
specialize jordan_crt_tuple_exists (e) - L18
apply jordan_crt_tuple_exists - L19
exact hm - L20
exact hn
03Use earlier factsL21–21
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L21
exact hcop
04Establish hrawL22–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfamily.
- L22
have hraw : ∃ f. ∃ g. JordanTupleCRT(m,n,b,c,d,e,f,g,k)Definitions: JordanTupleCRT - L23
specialize hfamily (k) - L24
apply hfamily
05Separate the logical casesL25–26
06Establish hproductL27–34
07Establish hnormL35–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan tuple normalize exists.
- L35
have hnorm : ∃ u. ∃ v. BetaPrefixInto(u,v,k,m · n) ∧ JordanTupleCongruence(m · n,x,x1,u,v,k)Definitions: BetaPrefixIntoJordanTupleCongruence - L36
specialize jordan_tuple_normalize_exists (m*n) - L37
specialize jordan_tuple_normalize_exists (x) - L38
specialize jordan_tuple_normalize_exists (x1) - L39
specialize jordan_tuple_normalize_exists (k) - L40
apply jordan_tuple_normalize_exists - L41
exact hproduct
08Separate the logical casesL42–44
09Construct an explicit witnessL45–46
10Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
11Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
exact hnorm_witness_witness_left
12Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
split
13Establish hsmallL50–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan tuple congruence divisor.
- L50
have hsmall : JordanTupleCongruence(m,x,x1,x2,x3,k)Definitions: JordanTupleCongruence - L51
specialize jordan_tuple_congruence_divisor (m) - L52
specialize jordan_tuple_congruence_divisor (m*n) - L53
specialize jordan_tuple_congruence_divisor (x) - L54
specialize jordan_tuple_congruence_divisor (x1) - L55
specialize jordan_tuple_congruence_divisor (x2) - L56
specialize jordan_tuple_congruence_divisor (x3) - L57
specialize jordan_tuple_congruence_divisor (k) - L58
apply jordan_tuple_congruence_divisor
14Construct an explicit witnessL59–59
Supply the displayed value, then prove that it has the required property.
- L59
exists n
15Calculate and transport equalitiesL60–60
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L60
refl
16Use earlier factsL61–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L61
exact hnorm_witness_witness_right - L62
specialize jordan_tuple_congruence_trans (m) - L63
specialize jordan_tuple_congruence_trans (x2) - L64
specialize jordan_tuple_congruence_trans (x3) - L65
specialize jordan_tuple_congruence_trans (x) - L66
specialize jordan_tuple_congruence_trans (x1) - L67
specialize jordan_tuple_congruence_trans (b) - L68
specialize jordan_tuple_congruence_trans (c) - L69
specialize jordan_tuple_congruence_trans (k) - L70
apply jordan_tuple_congruence_trans
17Use earlier factsL71–80
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
specialize jordan_tuple_congruence_symm (m) - L72
specialize jordan_tuple_congruence_symm (x) - L73
specialize jordan_tuple_congruence_symm (x1) - L74
specialize jordan_tuple_congruence_symm (x2) - L75
specialize jordan_tuple_congruence_symm (x3) - L76
specialize jordan_tuple_congruence_symm (k) - L77
apply jordan_tuple_congruence_symm - L78
exact hsmall - L79
specialize jordan_crt_tuple_left (m) - L80
specialize jordan_crt_tuple_left (n)
18Use earlier factsL81–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L81
specialize jordan_crt_tuple_left (b) - L82
specialize jordan_crt_tuple_left (c) - L83
specialize jordan_crt_tuple_left (d) - L84
specialize jordan_crt_tuple_left (e) - L85
specialize jordan_crt_tuple_left (x) - L86
specialize jordan_crt_tuple_left (x1) - L87
specialize jordan_crt_tuple_left (k) - L88
apply jordan_crt_tuple_left - L89
exact hraw_witness_witness
19Establish hsmallL90–98
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan tuple congruence divisor.
- L90
have hsmall : JordanTupleCongruence(n,x,x1,x2,x3,k)Definitions: JordanTupleCongruence - L91
specialize jordan_tuple_congruence_divisor (n) - L92
specialize jordan_tuple_congruence_divisor (m*n) - L93
specialize jordan_tuple_congruence_divisor (x) - L94
specialize jordan_tuple_congruence_divisor (x1) - L95
specialize jordan_tuple_congruence_divisor (x2) - L96
specialize jordan_tuple_congruence_divisor (x3) - L97
specialize jordan_tuple_congruence_divisor (k) - L98
apply jordan_tuple_congruence_divisor
20Construct an explicit witnessL99–99
Supply the displayed value, then prove that it has the required property.
- L99
exists m
21Use earlier factsL100–109
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L100
specialize mul_comm (m) - L101
specialize mul_comm (n) - L102
apply mul_comm - L103
exact hnorm_witness_witness_right - L104
specialize jordan_tuple_congruence_trans (n) - L105
specialize jordan_tuple_congruence_trans (x2) - L106
specialize jordan_tuple_congruence_trans (x3) - L107
specialize jordan_tuple_congruence_trans (x) - L108
specialize jordan_tuple_congruence_trans (x1) - L109
specialize jordan_tuple_congruence_trans (d)
22Use earlier factsL110–119
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L110
specialize jordan_tuple_congruence_trans (e) - L111
specialize jordan_tuple_congruence_trans (k) - L112
apply jordan_tuple_congruence_trans - L113
specialize jordan_tuple_congruence_symm (n) - L114
specialize jordan_tuple_congruence_symm (x) - L115
specialize jordan_tuple_congruence_symm (x1) - L116
specialize jordan_tuple_congruence_symm (x2) - L117
specialize jordan_tuple_congruence_symm (x3) - L118
specialize jordan_tuple_congruence_symm (k) - L119
apply jordan_tuple_congruence_symm
23Use earlier factsL120–129
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L120
exact hsmall - L121
specialize jordan_crt_tuple_right (m) - L122
specialize jordan_crt_tuple_right (n) - L123
specialize jordan_crt_tuple_right (b) - L124
specialize jordan_crt_tuple_right (c) - L125
specialize jordan_crt_tuple_right (d) - L126
specialize jordan_crt_tuple_right (e) - L127
specialize jordan_crt_tuple_right (x) - L128
specialize jordan_crt_tuple_right (x1) - L129
specialize jordan_crt_tuple_right (k)
Original exact command ledger · 131 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
have hfamily : forall L. exists f g. forall jt_index_canonicalfamily. (exists jt_gap_canonicalfamilyindex. jt_gap_canonicalfamilyindex+S (jt_index_canonicalfamily)=(L)) -> exists jt_left_canonicalfamily jt_right_canonicalfamily jt_output_canonicalfamily. ((((exists fs_h_jt_canonicalfamilyleft. fs_h_jt_canonicalfamilyleft + S (jt_left_canonicalfamily) = S ((S (jt_index_canonicalfamily)) * c)) /\ exists fs_q_jt_canonicalfamilyleft. b = fs_q_jt_canonicalfamilyleft * S ((S (jt_index_canonicalfamily)) * c) + (jt_left_canonicalfamily))) /\ (((((exists fs_h_jt_canonicalfamilyright. fs_h_jt_canonicalfamilyright + S (jt_right_canonicalfamily) = S ((S (jt_index_canonicalfamily)) * e)) /\ exists fs_q_jt_canonicalfamilyright. d = fs_q_jt_canonicalfamilyright * S ((S (jt_index_canonicalfamily)) * e) + (jt_right_canonicalfamily))) /\ (((((exists fs_h_jt_canonicalfamilyoutput. fs_h_jt_canonicalfamilyoutput + S (jt_output_canonicalfamily) = S ((S (jt_index_canonicalfamily)) * g)) /\ exists fs_q_jt_canonicalfamilyoutput. f = fs_q_jt_canonicalfamilyoutput * S ((S (jt_index_canonicalfamily)) * g) + (jt_output_canonicalfamily))) /\ (((exists jt_left_canonicalfamilymodleft jt_right_canonicalfamilymodleft. (jt_output_canonicalfamily)+(m)*jt_left_canonicalfamilymodleft=(jt_left_canonicalfamily)+(m)*jt_right_canonicalfamilymodleft) /\ (exists jt_left_canonicalfamilymodright jt_right_canonicalfamilymodright. (jt_output_canonicalfamily)+(n)*jt_left_canonicalfamilymodright=(jt_right_canonicalfamily)+(n)*jt_right_canonicalfamilymodright)))))))) - 0012
specialize jordan_crt_tuple_exists (m) - 0013
specialize jordan_crt_tuple_exists (n) - 0014
specialize jordan_crt_tuple_exists (b) - 0015
specialize jordan_crt_tuple_exists (c) - 0016
specialize jordan_crt_tuple_exists (d) - 0017
specialize jordan_crt_tuple_exists (e) - 0018
apply jordan_crt_tuple_exists - 0019
exact hm - 0020
exact hn - 0021
exact hcop - 0022
have hraw : exists f g. forall jt_index_canonicalraw. (exists jt_gap_canonicalrawindex. jt_gap_canonicalrawindex+S (jt_index_canonicalraw)=(k)) -> exists jt_left_canonicalraw jt_right_canonicalraw jt_output_canonicalraw. ((((exists fs_h_jt_canonicalrawleft. fs_h_jt_canonicalrawleft + S (jt_left_canonicalraw) = S ((S (jt_index_canonicalraw)) * c)) /\ exists fs_q_jt_canonicalrawleft. b = fs_q_jt_canonicalrawleft * S ((S (jt_index_canonicalraw)) * c) + (jt_left_canonicalraw))) /\ (((((exists fs_h_jt_canonicalrawright. fs_h_jt_canonicalrawright + S (jt_right_canonicalraw) = S ((S (jt_index_canonicalraw)) * e)) /\ exists fs_q_jt_canonicalrawright. d = fs_q_jt_canonicalrawright * S ((S (jt_index_canonicalraw)) * e) + (jt_right_canonicalraw))) /\ (((((exists fs_h_jt_canonicalrawoutput. fs_h_jt_canonicalrawoutput + S (jt_output_canonicalraw) = S ((S (jt_index_canonicalraw)) * g)) /\ exists fs_q_jt_canonicalrawoutput. f = fs_q_jt_canonicalrawoutput * S ((S (jt_index_canonicalraw)) * g) + (jt_output_canonicalraw))) /\ (((exists jt_left_canonicalrawmodleft jt_right_canonicalrawmodleft. (jt_output_canonicalraw)+(m)*jt_left_canonicalrawmodleft=(jt_left_canonicalraw)+(m)*jt_right_canonicalrawmodleft) /\ (exists jt_left_canonicalrawmodright jt_right_canonicalrawmodright. (jt_output_canonicalraw)+(n)*jt_left_canonicalrawmodright=(jt_right_canonicalraw)+(n)*jt_right_canonicalrawmodright)))))))) - 0023
specialize hfamily (k) - 0024
apply hfamily - 0025
cases hraw - 0026
cases hraw_witness - 0027
have hproduct : ~(m*n=0) - 0028
intro hz - 0029
specialize mul_ne_zero (m) - 0030
specialize mul_ne_zero (n) - 0031
apply mul_ne_zero - 0032
exact hm - 0033
exact hn - 0034
exact hz - 0035
have hnorm : exists u v. ((forall jt_index_canonicalbound. (exists jt_gap_canonicalboundindex. jt_gap_canonicalboundindex+S (jt_index_canonicalbound)=(k)) -> exists jt_value_canonicalbound. ((((exists fs_h_jt_canonicalboundat. fs_h_jt_canonicalboundat + S (jt_value_canonicalbound) = S ((S (jt_index_canonicalbound)) * v)) /\ exists fs_q_jt_canonicalboundat. u = fs_q_jt_canonicalboundat * S ((S (jt_index_canonicalbound)) * v) + (jt_value_canonicalbound))) /\ (exists jt_gap_canonicalboundvalue. jt_gap_canonicalboundvalue+S (jt_value_canonicalbound)=(m*n)))) /\ (forall jt_index_canonicalmod jt_left_canonicalmod jt_right_canonicalmod. (exists jt_gap_canonicalmodindex. jt_gap_canonicalmodindex+S (jt_index_canonicalmod)=(k)) -> (((exists fs_h_jt_canonicalmodleft. fs_h_jt_canonicalmodleft + S (jt_left_canonicalmod) = S ((S (jt_index_canonicalmod)) * x1)) /\ exists fs_q_jt_canonicalmodleft. x = fs_q_jt_canonicalmodleft * S ((S (jt_index_canonicalmod)) * x1) + (jt_left_canonicalmod))) -> (((exists fs_h_jt_canonicalmodright. fs_h_jt_canonicalmodright + S (jt_right_canonicalmod) = S ((S (jt_index_canonicalmod)) * v)) /\ exists fs_q_jt_canonicalmodright. u = fs_q_jt_canonicalmodright * S ((S (jt_index_canonicalmod)) * v) + (jt_right_canonicalmod))) -> (exists jt_left_canonicalmodmod jt_right_canonicalmodmod. (jt_left_canonicalmod)+(m*n)*jt_left_canonicalmodmod=(jt_right_canonicalmod)+(m*n)*jt_right_canonicalmodmod))) - 0036
specialize jordan_tuple_normalize_exists (m*n) - 0037
specialize jordan_tuple_normalize_exists (x) - 0038
specialize jordan_tuple_normalize_exists (x1) - 0039
specialize jordan_tuple_normalize_exists (k) - 0040
apply jordan_tuple_normalize_exists - 0041
exact hproduct - 0042
cases hnorm - 0043
cases hnorm_witness - 0044
cases hnorm_witness_witness - 0045
exists x2 - 0046
exists x3 - 0047
split - 0048
exact hnorm_witness_witness_left - 0049
split - 0050
have hsmall : forall jt_index_canonicalsmallleft jt_left_canonicalsmallleft jt_right_canonicalsmallleft. (exists jt_gap_canonicalsmallleftindex. jt_gap_canonicalsmallleftindex+S (jt_index_canonicalsmallleft)=(k)) -> (((exists fs_h_jt_canonicalsmallleftleft. fs_h_jt_canonicalsmallleftleft + S (jt_left_canonicalsmallleft) = S ((S (jt_index_canonicalsmallleft)) * x1)) /\ exists fs_q_jt_canonicalsmallleftleft. x = fs_q_jt_canonicalsmallleftleft * S ((S (jt_index_canonicalsmallleft)) * x1) + (jt_left_canonicalsmallleft))) -> (((exists fs_h_jt_canonicalsmallleftright. fs_h_jt_canonicalsmallleftright + S (jt_right_canonicalsmallleft) = S ((S (jt_index_canonicalsmallleft)) * x3)) /\ exists fs_q_jt_canonicalsmallleftright. x2 = fs_q_jt_canonicalsmallleftright * S ((S (jt_index_canonicalsmallleft)) * x3) + (jt_right_canonicalsmallleft))) -> (exists jt_left_canonicalsmallleftmod jt_right_canonicalsmallleftmod. (jt_left_canonicalsmallleft)+(m)*jt_left_canonicalsmallleftmod=(jt_right_canonicalsmallleft)+(m)*jt_right_canonicalsmallleftmod) - 0051
specialize jordan_tuple_congruence_divisor (m) - 0052
specialize jordan_tuple_congruence_divisor (m*n) - 0053
specialize jordan_tuple_congruence_divisor (x) - 0054
specialize jordan_tuple_congruence_divisor (x1) - 0055
specialize jordan_tuple_congruence_divisor (x2) - 0056
specialize jordan_tuple_congruence_divisor (x3) - 0057
specialize jordan_tuple_congruence_divisor (k) - 0058
apply jordan_tuple_congruence_divisor - 0059
exists n - 0060
refl - 0061
exact hnorm_witness_witness_right - 0062
specialize jordan_tuple_congruence_trans (m) - 0063
specialize jordan_tuple_congruence_trans (x2) - 0064
specialize jordan_tuple_congruence_trans (x3) - 0065
specialize jordan_tuple_congruence_trans (x) - 0066
specialize jordan_tuple_congruence_trans (x1) - 0067
specialize jordan_tuple_congruence_trans (b) - 0068
specialize jordan_tuple_congruence_trans (c) - 0069
specialize jordan_tuple_congruence_trans (k) - 0070
apply jordan_tuple_congruence_trans - 0071
specialize jordan_tuple_congruence_symm (m) - 0072
specialize jordan_tuple_congruence_symm (x) - 0073
specialize jordan_tuple_congruence_symm (x1) - 0074
specialize jordan_tuple_congruence_symm (x2) - 0075
specialize jordan_tuple_congruence_symm (x3) - 0076
specialize jordan_tuple_congruence_symm (k) - 0077
apply jordan_tuple_congruence_symm - 0078
exact hsmall - 0079
specialize jordan_crt_tuple_left (m) - 0080
specialize jordan_crt_tuple_left (n) - 0081
specialize jordan_crt_tuple_left (b) - 0082
specialize jordan_crt_tuple_left (c) - 0083
specialize jordan_crt_tuple_left (d) - 0084
specialize jordan_crt_tuple_left (e) - 0085
specialize jordan_crt_tuple_left (x) - 0086
specialize jordan_crt_tuple_left (x1) - 0087
specialize jordan_crt_tuple_left (k) - 0088
apply jordan_crt_tuple_left - 0089
exact hraw_witness_witness - 0090
have hsmall : forall jt_index_canonicalsmallright jt_left_canonicalsmallright jt_right_canonicalsmallright. (exists jt_gap_canonicalsmallrightindex. jt_gap_canonicalsmallrightindex+S (jt_index_canonicalsmallright)=(k)) -> (((exists fs_h_jt_canonicalsmallrightleft. fs_h_jt_canonicalsmallrightleft + S (jt_left_canonicalsmallright) = S ((S (jt_index_canonicalsmallright)) * x1)) /\ exists fs_q_jt_canonicalsmallrightleft. x = fs_q_jt_canonicalsmallrightleft * S ((S (jt_index_canonicalsmallright)) * x1) + (jt_left_canonicalsmallright))) -> (((exists fs_h_jt_canonicalsmallrightright. fs_h_jt_canonicalsmallrightright + S (jt_right_canonicalsmallright) = S ((S (jt_index_canonicalsmallright)) * x3)) /\ exists fs_q_jt_canonicalsmallrightright. x2 = fs_q_jt_canonicalsmallrightright * S ((S (jt_index_canonicalsmallright)) * x3) + (jt_right_canonicalsmallright))) -> (exists jt_left_canonicalsmallrightmod jt_right_canonicalsmallrightmod. (jt_left_canonicalsmallright)+(n)*jt_left_canonicalsmallrightmod=(jt_right_canonicalsmallright)+(n)*jt_right_canonicalsmallrightmod) - 0091
specialize jordan_tuple_congruence_divisor (n) - 0092
specialize jordan_tuple_congruence_divisor (m*n) - 0093
specialize jordan_tuple_congruence_divisor (x) - 0094
specialize jordan_tuple_congruence_divisor (x1) - 0095
specialize jordan_tuple_congruence_divisor (x2) - 0096
specialize jordan_tuple_congruence_divisor (x3) - 0097
specialize jordan_tuple_congruence_divisor (k) - 0098
apply jordan_tuple_congruence_divisor - 0099
exists m - 0100
specialize mul_comm (m) - 0101
specialize mul_comm (n) - 0102
apply mul_comm - 0103
exact hnorm_witness_witness_right - 0104
specialize jordan_tuple_congruence_trans (n) - 0105
specialize jordan_tuple_congruence_trans (x2) - 0106
specialize jordan_tuple_congruence_trans (x3) - 0107
specialize jordan_tuple_congruence_trans (x) - 0108
specialize jordan_tuple_congruence_trans (x1) - 0109
specialize jordan_tuple_congruence_trans (d) - 0110
specialize jordan_tuple_congruence_trans (e) - 0111
specialize jordan_tuple_congruence_trans (k) - 0112
apply jordan_tuple_congruence_trans - 0113
specialize jordan_tuple_congruence_symm (n) - 0114
specialize jordan_tuple_congruence_symm (x) - 0115
specialize jordan_tuple_congruence_symm (x1) - 0116
specialize jordan_tuple_congruence_symm (x2) - 0117
specialize jordan_tuple_congruence_symm (x3) - 0118
specialize jordan_tuple_congruence_symm (k) - 0119
apply jordan_tuple_congruence_symm - 0120
exact hsmall - 0121
specialize jordan_crt_tuple_right (m) - 0122
specialize jordan_crt_tuple_right (n) - 0123
specialize jordan_crt_tuple_right (b) - 0124
specialize jordan_crt_tuple_right (c) - 0125
specialize jordan_crt_tuple_right (d) - 0126
specialize jordan_crt_tuple_right (e) - 0127
specialize jordan_crt_tuple_right (x) - 0128
specialize jordan_crt_tuple_right (x1) - 0129
specialize jordan_crt_tuple_right (k) - 0130
apply jordan_crt_tuple_right - 0131
exact hraw_witness_witness