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 original first-admission records.
Statement with defined notation
∀ m. ∀ n. ∀ a. ∀ b. ¬m = 0 → ¬n = 0 → Coprime(m,n) → ∃ x. ModEq(m,x,a) ∧ ModEq(n,x,b)Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
3 occurrences
In local proof propositions
27 occurrences
Exact expanded native-PA statement
forall m n a b. ~(m = 0) -> ~(n = 0) -> (forall d. (exists u. m = d * u) -> (exists v. n = d * v) -> d = 1) -> exists x. (exists u v. x + m * u = a + m * v) /\ (exists r s. x + n * r = b + n * s)Proof neighborhood
Direct theorem prerequisites
PA001V nonzero_is_succ PA001M coprime_balanced_bezout PA001W bezout_mod_left PA001X bezout_mod_right PA0020 mod_eq_mul_left PA000A mul_add PA0002 mul_one PA0021 dvd_to_mod_zero PA000B mul_assoc PA000H mul_comm PA0022 mod_eq_add PA0023 mod_eq_refl PA0024 mod_eq_trans PA0025 mod_eq_predecessor_cancel PA0001 zero_addDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (15)
01Fix variables and assumptionsL1–7
02Establish hmsL8–11
03Establish hnsL12–15
04Establish hbezL16–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply coprime balanced bezout.
05Separate the logical casesL21–26
06Establish hblL27–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bezout mod left.
- L27
have hbl : ModEq(m,n · x3,1 + n · x5)Definitions: ModEq(m,n · x3,1 + n · x5)Original native command in the exact edition - L28
specialize bezout_mod_left m - L29
specialize bezout_mod_left n - L30
specialize bezout_mod_left x2 - L31
specialize bezout_mod_left x3 - L32
specialize bezout_mod_left x4 - L33
specialize bezout_mod_left x5 - L34
apply bezout_mod_left - L35
exact hbez_witness_witness_witness_witness
07Establish hbrL36–44
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bezout mod right.
- L36
have hbr : ModEq(n,m · x2,1 + m · x4)Definitions: ModEq(n,m · x2,1 + m · x4)Original native command in the exact edition - L37
specialize bezout_mod_right m - L38
specialize bezout_mod_right n - L39
specialize bezout_mod_right x2 - L40
specialize bezout_mod_right x3 - L41
specialize bezout_mod_right x4 - L42
specialize bezout_mod_right x5 - L43
apply bezout_mod_right - L44
exact hbez_witness_witness_witness_witness
08Establish hal0L45–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul left.
- L45
have hal0 : ModEq(m,a · (n · x3),a · (1 + n · x5))Definitions: ModEq(m,a · (n · x3),a · (1 + n · x5))Original native command in the exact edition - L46
specialize mod_eq_mul_left m - L47
specialize mod_eq_mul_left (n * x3) - L48
specialize mod_eq_mul_left (1 + n * x5) - L49
specialize mod_eq_mul_left a - L50
apply mod_eq_mul_left - L51
exact hbl
09Establish halL52–52
Establish this local claim before using it. It is not an additional assumption.
- L52
have hal : ModEq(m,a · (n · x3),a + a · (n · x5))Definitions: ModEq(m,a · (n · x3),a + a · (n · x5))Original native command in the exact edition
10Establish haexpandL53–60
11Establish hbmL61–62
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dvd to mod zero.
- L61
have hbm : ModEq(m,b · (m · x2),0)Definitions: ModEq(m,b · (m · x2),0)Original native command in the exact edition - L62
apply dvd_to_mod_zero
12Construct an explicit witnessL63–63
Supply the displayed value, then prove that it has the required property.
- L63
exists b * x2
13Calculate and transport equalitiesL64–65
14Use earlier factsL66–66
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L66
apply mul_assoc
15Calculate and transport equalitiesL67–68
16Use earlier factsL69–69
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
apply mul_comm
17Calculate and transport equalitiesL70–70
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L70
refl
18Use earlier factsL71–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
apply mul_assoc
19Establish hymL72–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L72
have hym : ModEq(m,a · (n · x3) + b · (m · x2),a + a · (n · x5) + 0)Definitions: ModEq(m,a · (n · x3) + b · (m · x2),a + a · (n · x5) + 0)Original native command in the exact edition - L73
specialize mod_eq_add m - L74
specialize mod_eq_add (a * (n * x3)) - L75
specialize mod_eq_add (a + a * (n * x5)) - L76
specialize mod_eq_add (b * (m * x2)) - L77
specialize mod_eq_add 0 - L78
apply mod_eq_add - L79
exact hal - L80
exact hbm
20Establish hym_normL81–81
Establish this local claim before using it. It is not an additional assumption.
- L81
have hym_norm : ModEq(m,a · (n · x3) + b · (m · x2),a + a · (n · x5))Definitions: ModEq(m,a · (n · x3) + b · (m · x2),a + a · (n · x5))Original native command in the exact edition
21Establish hym_zeroL82–86
22Establish hkmL87–90
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq refl.
- L87
have hkm : ModEq(m,x · (a · (n · x5)),x · (a · (n · x5)))Definitions: ModEq(m,x · (a · (n · x5)),x · (a · (n · x5)))Original native command in the exact edition - L88
specialize mod_eq_refl m - L89
specialize mod_eq_refl (x * (a * (n * x5))) - L90
apply mod_eq_refl
23Establish hymkL91–99
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L91
have hymk : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),a + a · (n · x5) + x · (a · (n · x5)))Definitions: ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),a + a · (n · x5) + x · (a · (n · x5)))Original native command in the exact edition - L92
specialize mod_eq_add m - L93
specialize mod_eq_add ((a * (n * x3)) + (b * (m * x2))) - L94
specialize mod_eq_add (a + a * (n * x5)) - L95
specialize mod_eq_add (x * (a * (n * x5))) - L96
specialize mod_eq_add (x * (a * (n * x5))) - L97
apply mod_eq_add - L98
exact hym_norm - L99
exact hkm
24Establish hcancelmL100–106
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq predecessor cancel.
- L100
have hcancelm : ModEq(S x,a + a · (n · x5) + x · (a · (n · x5)),a)Definitions: ModEq(S x,a + a · (n · x5) + x · (a · (n · x5)),a)Original native command in the exact edition - L101
specialize mod_eq_predecessor_cancel x - L102
specialize mod_eq_predecessor_cancel a - L103
specialize mod_eq_predecessor_cancel (a * (n * x5)) - L104
apply mod_eq_predecessor_cancel - L105
rewrite <- hms_witness at hcancelm - L106
rewrite <- hms_witness at hcancelm
25Establish hbasemL107–114
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L107
have hbasem : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),a)Definitions: ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),a)Original native command in the exact edition - L108
specialize mod_eq_trans m - L109
specialize mod_eq_trans (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) - L110
specialize mod_eq_trans ((a + a * (n * x5)) + (x * (a * (n * x5)))) - L111
specialize mod_eq_trans a - L112
apply mod_eq_trans - L113
exact hymk - L114
exact hcancelm
26Establish hknznmL115–116
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dvd to mod zero.
- L115
have hknznm : ModEq(m,x1 · (b · (m · x4)),0)Definitions: ModEq(m,x1 · (b · (m · x4)),0)Original native command in the exact edition - L116
apply dvd_to_mod_zero
27Construct an explicit witnessL117–117
Supply the displayed value, then prove that it has the required property.
- L117
exists x1 * (b * x4)
28Calculate and transport equalitiesL118–121
29Use earlier factsL122–122
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L122
apply mul_assoc
30Calculate and transport equalitiesL123–126
31Use earlier factsL127–127
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L127
apply mul_comm
32Calculate and transport equalitiesL128–131
33Use earlier factsL132–132
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L132
apply mul_assoc
34Calculate and transport equalitiesL133–134
35Use earlier factsL135–135
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L135
apply mul_assoc
36Calculate and transport equalitiesL136–137
37Use earlier factsL138–138
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L138
apply mul_comm
38Calculate and transport equalitiesL139–139
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L139
refl
39Use earlier factsL140–140
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L140
apply mul_assoc
40Establish hfinalm0L141–149
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L141
have hfinalm0 : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),a + 0)Definitions: ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),a + 0)Original native command in the exact edition - L142
specialize mod_eq_add m - L143
specialize mod_eq_add (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) - L144
specialize mod_eq_add a - L145
specialize mod_eq_add (x1 * (b * (m * x4))) - L146
specialize mod_eq_add 0 - L147
apply mod_eq_add - L148
exact hbasem - L149
exact hknznm
41Establish hazeromL150–150
Establish this local claim before using it. It is not an additional assumption.
- L150
have hazerom : ModEq(m,a + 0,a)Definitions: ModEq(m,a + 0,a)Original native command in the exact edition
42Construct an explicit witnessL151–152
43Calculate and transport equalitiesL153–153
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L153
simp
44Establish hfinalmL154–161
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L154
have hfinalm : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),a)Definitions: ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),a)Original native command in the exact edition - L155
specialize mod_eq_trans m - L156
specialize mod_eq_trans ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) - L157
specialize mod_eq_trans (a + 0) - L158
specialize mod_eq_trans a - L159
apply mod_eq_trans - L160
exact hfinalm0 - L161
exact hazerom
45Establish hbn0L162–168
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul left.
- L162
have hbn0 : ModEq(n,b · (m · x2),b · (1 + m · x4))Definitions: ModEq(n,b · (m · x2),b · (1 + m · x4))Original native command in the exact edition - L163
specialize mod_eq_mul_left n - L164
specialize mod_eq_mul_left (m * x2) - L165
specialize mod_eq_mul_left (1 + m * x4) - L166
specialize mod_eq_mul_left b - L167
apply mod_eq_mul_left - L168
exact hbr
46Establish hbnL169–169
Establish this local claim before using it. It is not an additional assumption.
- L169
have hbn : ModEq(n,b · (m · x2),b + b · (m · x4))Definitions: ModEq(n,b · (m · x2),b + b · (m · x4))Original native command in the exact edition
47Establish hbexpandL170–177
48Establish hanL178–179
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dvd to mod zero.
- L178
have han : ModEq(n,a · (n · x3),0)Definitions: ModEq(n,a · (n · x3),0)Original native command in the exact edition - L179
apply dvd_to_mod_zero
49Construct an explicit witnessL180–180
Supply the displayed value, then prove that it has the required property.
- L180
exists a * x3
50Calculate and transport equalitiesL181–182
51Use earlier factsL183–183
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L183
apply mul_assoc
52Calculate and transport equalitiesL184–185
53Use earlier factsL186–186
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L186
apply mul_comm
54Calculate and transport equalitiesL187–187
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L187
refl
55Use earlier factsL188–188
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L188
apply mul_assoc
56Establish hyn0L189–197
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L189
have hyn0 : ModEq(n,a · (n · x3) + b · (m · x2),0 + (b + b · (m · x4)))Definitions: ModEq(n,a · (n · x3) + b · (m · x2),0 + (b + b · (m · x4)))Original native command in the exact edition - L190
specialize mod_eq_add n - L191
specialize mod_eq_add (a * (n * x3)) - L192
specialize mod_eq_add 0 - L193
specialize mod_eq_add (b * (m * x2)) - L194
specialize mod_eq_add (b + b * (m * x4)) - L195
apply mod_eq_add - L196
exact han - L197
exact hbn
57Establish hyn_normL198–198
Establish this local claim before using it. It is not an additional assumption.
- L198
have hyn_norm : ModEq(n,a · (n · x3) + b · (m · x2),b + b · (m · x4))Definitions: ModEq(n,a · (n · x3) + b · (m · x2),b + b · (m · x4))Original native command in the exact edition
58Establish hyn_zeroL199–203
59Establish hkmzL204–205
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dvd to mod zero.
- L204
have hkmz : ModEq(n,x · (a · (n · x5)),0)Definitions: ModEq(n,x · (a · (n · x5)),0)Original native command in the exact edition - L205
apply dvd_to_mod_zero
60Construct an explicit witnessL206–206
Supply the displayed value, then prove that it has the required property.
- L206
exists x * (a * x5)
61Calculate and transport equalitiesL207–210
62Use earlier factsL211–211
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L211
apply mul_assoc
63Calculate and transport equalitiesL212–215
64Use earlier factsL216–216
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L216
apply mul_comm
65Calculate and transport equalitiesL217–220
66Use earlier factsL221–221
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L221
apply mul_assoc
67Calculate and transport equalitiesL222–223
68Use earlier factsL224–224
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L224
apply mul_assoc
69Calculate and transport equalitiesL225–226
70Use earlier factsL227–227
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L227
apply mul_comm
71Calculate and transport equalitiesL228–228
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L228
refl
72Use earlier factsL229–229
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L229
apply mul_assoc
73Establish hyn1L230–238
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L230
have hyn1 : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),b + b · (m · x4) + 0)Definitions: ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),b + b · (m · x4) + 0)Original native command in the exact edition - L231
specialize mod_eq_add n - L232
specialize mod_eq_add ((a * (n * x3)) + (b * (m * x2))) - L233
specialize mod_eq_add (b + b * (m * x4)) - L234
specialize mod_eq_add (x * (a * (n * x5))) - L235
specialize mod_eq_add 0 - L236
apply mod_eq_add - L237
exact hyn_norm - L238
exact hkmz
74Establish hyn1_normL239–239
Establish this local claim before using it. It is not an additional assumption.
- L239
have hyn1_norm : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),b + b · (m · x4))Definitions: ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),b + b · (m · x4))Original native command in the exact edition
75Establish hyn1_zeroL240–244
76Establish hknL245–248
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq refl.
- L245
have hkn : ModEq(n,x1 · (b · (m · x4)),x1 · (b · (m · x4)))Definitions: ModEq(n,x1 · (b · (m · x4)),x1 · (b · (m · x4)))Original native command in the exact edition - L246
specialize mod_eq_refl n - L247
specialize mod_eq_refl (x1 * (b * (m * x4))) - L248
apply mod_eq_refl
77Establish hynkL249–257
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L249
have hynk : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),b + b · (m · x4) + x1 · (b · (m · x4)))Definitions: ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),b + b · (m · x4) + x1 · (b · (m · x4)))Original native command in the exact edition - L250
specialize mod_eq_add n - L251
specialize mod_eq_add (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) - L252
specialize mod_eq_add (b + b * (m * x4)) - L253
specialize mod_eq_add (x1 * (b * (m * x4))) - L254
specialize mod_eq_add (x1 * (b * (m * x4))) - L255
apply mod_eq_add - L256
exact hyn1_norm - L257
exact hkn
78Establish hcancelnL258–264
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq predecessor cancel.
- L258
have hcanceln : ModEq(S x1,b + b · (m · x4) + x1 · (b · (m · x4)),b)Definitions: ModEq(S x1,b + b · (m · x4) + x1 · (b · (m · x4)),b)Original native command in the exact edition - L259
specialize mod_eq_predecessor_cancel x1 - L260
specialize mod_eq_predecessor_cancel b - L261
specialize mod_eq_predecessor_cancel (b * (m * x4)) - L262
apply mod_eq_predecessor_cancel - L263
rewrite <- hns_witness at hcanceln - L264
rewrite <- hns_witness at hcanceln
79Establish hfinalnL265–272
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L265
have hfinaln : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),b)Definitions: ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),b)Original native command in the exact edition - L266
specialize mod_eq_trans n - L267
specialize mod_eq_trans ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) - L268
specialize mod_eq_trans ((b + b * (m * x4)) + (x1 * (b * (m * x4)))) - L269
specialize mod_eq_trans b - L270
apply mod_eq_trans - L271
exact hynk - L272
exact hcanceln
80Construct an explicit witnessL273–273
Supply the displayed value, then prove that it has the required property.
- L273
exists (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))
81Separate the logical casesL274–274
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L274
split
Original defined command ledger · 276 lines
- 0001
intro m - 0002
intro n - 0003
intro a - 0004
intro b - 0005
intro hm - 0006
intro hn - 0007
intro hcop - 0008
have hms : exists k. m = S k - 0009
specialize nonzero_is_succ m - 0010
apply nonzero_is_succ - 0011
exact hm - 0012
have hns : exists k. n = S k - 0013
specialize nonzero_is_succ n - 0014
apply nonzero_is_succ - 0015
exact hn - 0016
have hbez : exists xp yp xn yn. m * xp + n * yp = 1 + (m * xn + n * yn) - 0017
specialize coprime_balanced_bezout m - 0018
specialize coprime_balanced_bezout n - 0019
apply coprime_balanced_bezout - 0020
exact hcop - 0021
cases hms - 0022
cases hns - 0023
cases hbez - 0024
cases hbez_witness - 0025
cases hbez_witness_witness - 0026
cases hbez_witness_witness_witness - 0027
have hbl : ModEq(m,n · x3,1 + n · x5)Exact native replay line
have hbl : exists u v. n * x3 + m * u = (1 + n * x5) + m * v - 0028
specialize bezout_mod_left m - 0029
specialize bezout_mod_left n - 0030
specialize bezout_mod_left x2 - 0031
specialize bezout_mod_left x3 - 0032
specialize bezout_mod_left x4 - 0033
specialize bezout_mod_left x5 - 0034
apply bezout_mod_left - 0035
exact hbez_witness_witness_witness_witness - 0036
have hbr : ModEq(n,m · x2,1 + m · x4)Exact native replay line
have hbr : exists u v. m * x2 + n * u = (1 + m * x4) + n * v - 0037
specialize bezout_mod_right m - 0038
specialize bezout_mod_right n - 0039
specialize bezout_mod_right x2 - 0040
specialize bezout_mod_right x3 - 0041
specialize bezout_mod_right x4 - 0042
specialize bezout_mod_right x5 - 0043
apply bezout_mod_right - 0044
exact hbez_witness_witness_witness_witness - 0045
have hal0 : ModEq(m,a · (n · x3),a · (1 + n · x5))Exact native replay line
have hal0 : exists u v. (a * (n * x3)) + m * u = (a * (1 + n * x5)) + m * v - 0046
specialize mod_eq_mul_left m - 0047
specialize mod_eq_mul_left (n * x3) - 0048
specialize mod_eq_mul_left (1 + n * x5) - 0049
specialize mod_eq_mul_left a - 0050
apply mod_eq_mul_left - 0051
exact hbl - 0052
have hal : ModEq(m,a · (n · x3),a + a · (n · x5))Exact native replay line
have hal : exists u v. (a * (n * x3)) + m * u = (a + a * (n * x5)) + m * v - 0053
have haexpand : a * (1 + n * x5) = a + a * (n * x5) - 0054
trans a * 1 + a * (n * x5) - 0055
apply mul_add - 0056
congr - 0057
apply mul_one - 0058
refl - 0059
rewrite <- haexpand - 0060
exact hal0 - 0061
have hbm : ModEq(m,b · (m · x2),0)Exact native replay line
have hbm : exists u v. (b * (m * x2)) + m * u = 0 + m * v - 0062
apply dvd_to_mod_zero - 0063
exists b * x2 - 0064
trans (b * m) * x2 - 0065
symm - 0066
apply mul_assoc - 0067
trans (m * b) * x2 - 0068
congr - 0069
apply mul_comm - 0070
refl - 0071
apply mul_assoc - 0072
have hym : ModEq(m,a · (n · x3) + b · (m · x2),a + a · (n · x5) + 0)Exact native replay line
have hym : exists u v. ((a * (n * x3)) + (b * (m * x2))) + m * u = ((a + a * (n * x5)) + 0) + m * v - 0073
specialize mod_eq_add m - 0074
specialize mod_eq_add (a * (n * x3)) - 0075
specialize mod_eq_add (a + a * (n * x5)) - 0076
specialize mod_eq_add (b * (m * x2)) - 0077
specialize mod_eq_add 0 - 0078
apply mod_eq_add - 0079
exact hal - 0080
exact hbm - 0081
have hym_norm : ModEq(m,a · (n · x3) + b · (m · x2),a + a · (n · x5))Exact native replay line
have hym_norm : exists u v. ((a * (n * x3)) + (b * (m * x2))) + m * u = (a + a * (n * x5)) + m * v - 0082
have hym_zero : (a + a * (n * x5)) + 0 = a + a * (n * x5) - 0083
rewrite PA3 - 0084
refl - 0085
rewrite <- hym_zero - 0086
exact hym - 0087
have hkm : ModEq(m,x · (a · (n · x5)),x · (a · (n · x5)))Exact native replay line
have hkm : exists u v. (x * (a * (n * x5))) + m * u = (x * (a * (n * x5))) + m * v - 0088
specialize mod_eq_refl m - 0089
specialize mod_eq_refl (x * (a * (n * x5))) - 0090
apply mod_eq_refl - 0091
have hymk : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),a + a · (n · x5) + x · (a · (n · x5)))Exact native replay line
have hymk : exists u v. (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + m * u = ((a + a * (n * x5)) + (x * (a * (n * x5)))) + m * v - 0092
specialize mod_eq_add m - 0093
specialize mod_eq_add ((a * (n * x3)) + (b * (m * x2))) - 0094
specialize mod_eq_add (a + a * (n * x5)) - 0095
specialize mod_eq_add (x * (a * (n * x5))) - 0096
specialize mod_eq_add (x * (a * (n * x5))) - 0097
apply mod_eq_add - 0098
exact hym_norm - 0099
exact hkm - 0100
have hcancelm : ModEq(S x,a + a · (n · x5) + x · (a · (n · x5)),a)Exact native replay line
have hcancelm : exists u v. ((a + a * (n * x5)) + x * (a * (n * x5))) + S x * u = a + S x * v - 0101
specialize mod_eq_predecessor_cancel x - 0102
specialize mod_eq_predecessor_cancel a - 0103
specialize mod_eq_predecessor_cancel (a * (n * x5)) - 0104
apply mod_eq_predecessor_cancel - 0105
rewrite <- hms_witness at hcancelm - 0106
rewrite <- hms_witness at hcancelm - 0107
have hbasem : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),a)Exact native replay line
have hbasem : exists u v. (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + m * u = a + m * v - 0108
specialize mod_eq_trans m - 0109
specialize mod_eq_trans (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) - 0110
specialize mod_eq_trans ((a + a * (n * x5)) + (x * (a * (n * x5)))) - 0111
specialize mod_eq_trans a - 0112
apply mod_eq_trans - 0113
exact hymk - 0114
exact hcancelm - 0115
have hknznm : ModEq(m,x1 · (b · (m · x4)),0)Exact native replay line
have hknznm : exists u v. (x1 * (b * (m * x4))) + m * u = 0 + m * v - 0116
apply dvd_to_mod_zero - 0117
exists x1 * (b * x4) - 0118
trans x1 * ((b * m) * x4) - 0119
congr - 0120
refl - 0121
symm - 0122
apply mul_assoc - 0123
trans x1 * ((m * b) * x4) - 0124
congr - 0125
refl - 0126
congr - 0127
apply mul_comm - 0128
refl - 0129
trans x1 * (m * (b * x4)) - 0130
congr - 0131
refl - 0132
apply mul_assoc - 0133
trans (x1 * m) * (b * x4) - 0134
symm - 0135
apply mul_assoc - 0136
trans (m * x1) * (b * x4) - 0137
congr - 0138
apply mul_comm - 0139
refl - 0140
apply mul_assoc - 0141
have hfinalm0 : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),a + 0)Exact native replay line
have hfinalm0 : exists u v. ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) + m * u = (a + 0) + m * v - 0142
specialize mod_eq_add m - 0143
specialize mod_eq_add (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) - 0144
specialize mod_eq_add a - 0145
specialize mod_eq_add (x1 * (b * (m * x4))) - 0146
specialize mod_eq_add 0 - 0147
apply mod_eq_add - 0148
exact hbasem - 0149
exact hknznm - 0150
have hazerom : ModEq(m,a + 0,a)Exact native replay line
have hazerom : exists u v. (a + 0) + m * u = a + m * v - 0151
exists 0 - 0152
exists 0 - 0153
simp - 0154
have hfinalm : ModEq(m,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),a)Exact native replay line
have hfinalm : exists u v. ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) + m * u = a + m * v - 0155
specialize mod_eq_trans m - 0156
specialize mod_eq_trans ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) - 0157
specialize mod_eq_trans (a + 0) - 0158
specialize mod_eq_trans a - 0159
apply mod_eq_trans - 0160
exact hfinalm0 - 0161
exact hazerom - 0162
have hbn0 : ModEq(n,b · (m · x2),b · (1 + m · x4))Exact native replay line
have hbn0 : exists u v. (b * (m * x2)) + n * u = (b * (1 + m * x4)) + n * v - 0163
specialize mod_eq_mul_left n - 0164
specialize mod_eq_mul_left (m * x2) - 0165
specialize mod_eq_mul_left (1 + m * x4) - 0166
specialize mod_eq_mul_left b - 0167
apply mod_eq_mul_left - 0168
exact hbr - 0169
have hbn : ModEq(n,b · (m · x2),b + b · (m · x4))Exact native replay line
have hbn : exists u v. (b * (m * x2)) + n * u = (b + b * (m * x4)) + n * v - 0170
have hbexpand : b * (1 + m * x4) = b + b * (m * x4) - 0171
trans b * 1 + b * (m * x4) - 0172
apply mul_add - 0173
congr - 0174
apply mul_one - 0175
refl - 0176
rewrite <- hbexpand - 0177
exact hbn0 - 0178
have han : ModEq(n,a · (n · x3),0)Exact native replay line
have han : exists u v. (a * (n * x3)) + n * u = 0 + n * v - 0179
apply dvd_to_mod_zero - 0180
exists a * x3 - 0181
trans (a * n) * x3 - 0182
symm - 0183
apply mul_assoc - 0184
trans (n * a) * x3 - 0185
congr - 0186
apply mul_comm - 0187
refl - 0188
apply mul_assoc - 0189
have hyn0 : ModEq(n,a · (n · x3) + b · (m · x2),0 + (b + b · (m · x4)))Exact native replay line
have hyn0 : exists u v. ((a * (n * x3)) + (b * (m * x2))) + n * u = (0 + (b + b * (m * x4))) + n * v - 0190
specialize mod_eq_add n - 0191
specialize mod_eq_add (a * (n * x3)) - 0192
specialize mod_eq_add 0 - 0193
specialize mod_eq_add (b * (m * x2)) - 0194
specialize mod_eq_add (b + b * (m * x4)) - 0195
apply mod_eq_add - 0196
exact han - 0197
exact hbn - 0198
have hyn_norm : ModEq(n,a · (n · x3) + b · (m · x2),b + b · (m · x4))Exact native replay line
have hyn_norm : exists u v. ((a * (n * x3)) + (b * (m * x2))) + n * u = (b + b * (m * x4)) + n * v - 0199
have hyn_zero : 0 + (b + b * (m * x4)) = b + b * (m * x4) - 0200
specialize zero_add (b + b * (m * x4)) - 0201
exact zero_add - 0202
rewrite <- hyn_zero - 0203
exact hyn0 - 0204
have hkmz : ModEq(n,x · (a · (n · x5)),0)Exact native replay line
have hkmz : exists u v. (x * (a * (n * x5))) + n * u = 0 + n * v - 0205
apply dvd_to_mod_zero - 0206
exists x * (a * x5) - 0207
trans x * ((a * n) * x5) - 0208
congr - 0209
refl - 0210
symm - 0211
apply mul_assoc - 0212
trans x * ((n * a) * x5) - 0213
congr - 0214
refl - 0215
congr - 0216
apply mul_comm - 0217
refl - 0218
trans x * (n * (a * x5)) - 0219
congr - 0220
refl - 0221
apply mul_assoc - 0222
trans (x * n) * (a * x5) - 0223
symm - 0224
apply mul_assoc - 0225
trans (n * x) * (a * x5) - 0226
congr - 0227
apply mul_comm - 0228
refl - 0229
apply mul_assoc - 0230
have hyn1 : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),b + b · (m · x4) + 0)Exact native replay line
have hyn1 : exists u v. (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + n * u = ((b + b * (m * x4)) + 0) + n * v - 0231
specialize mod_eq_add n - 0232
specialize mod_eq_add ((a * (n * x3)) + (b * (m * x2))) - 0233
specialize mod_eq_add (b + b * (m * x4)) - 0234
specialize mod_eq_add (x * (a * (n * x5))) - 0235
specialize mod_eq_add 0 - 0236
apply mod_eq_add - 0237
exact hyn_norm - 0238
exact hkmz - 0239
have hyn1_norm : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)),b + b · (m · x4))Exact native replay line
have hyn1_norm : exists u v. (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + n * u = (b + b * (m * x4)) + n * v - 0240
have hyn1_zero : (b + b * (m * x4)) + 0 = b + b * (m * x4) - 0241
rewrite PA3 - 0242
refl - 0243
rewrite <- hyn1_zero - 0244
exact hyn1 - 0245
have hkn : ModEq(n,x1 · (b · (m · x4)),x1 · (b · (m · x4)))Exact native replay line
have hkn : exists u v. (x1 * (b * (m * x4))) + n * u = (x1 * (b * (m * x4))) + n * v - 0246
specialize mod_eq_refl n - 0247
specialize mod_eq_refl (x1 * (b * (m * x4))) - 0248
apply mod_eq_refl - 0249
have hynk : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),b + b · (m · x4) + x1 · (b · (m · x4)))Exact native replay line
have hynk : exists u v. ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) + n * u = ((b + b * (m * x4)) + (x1 * (b * (m * x4)))) + n * v - 0250
specialize mod_eq_add n - 0251
specialize mod_eq_add (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) - 0252
specialize mod_eq_add (b + b * (m * x4)) - 0253
specialize mod_eq_add (x1 * (b * (m * x4))) - 0254
specialize mod_eq_add (x1 * (b * (m * x4))) - 0255
apply mod_eq_add - 0256
exact hyn1_norm - 0257
exact hkn - 0258
have hcanceln : ModEq(S x1,b + b · (m · x4) + x1 · (b · (m · x4)),b)Exact native replay line
have hcanceln : exists u v. ((b + b * (m * x4)) + x1 * (b * (m * x4))) + S x1 * u = b + S x1 * v - 0259
specialize mod_eq_predecessor_cancel x1 - 0260
specialize mod_eq_predecessor_cancel b - 0261
specialize mod_eq_predecessor_cancel (b * (m * x4)) - 0262
apply mod_eq_predecessor_cancel - 0263
rewrite <- hns_witness at hcanceln - 0264
rewrite <- hns_witness at hcanceln - 0265
have hfinaln : ModEq(n,a · (n · x3) + b · (m · x2) + x · (a · (n · x5)) + x1 · (b · (m · x4)),b)Exact native replay line
have hfinaln : exists u v. ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) + n * u = b + n * v - 0266
specialize mod_eq_trans n - 0267
specialize mod_eq_trans ((((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4)))) - 0268
specialize mod_eq_trans ((b + b * (m * x4)) + (x1 * (b * (m * x4)))) - 0269
specialize mod_eq_trans b - 0270
apply mod_eq_trans - 0271
exact hynk - 0272
exact hcanceln - 0273
exists (((a * (n * x3)) + (b * (m * x2))) + (x * (a * (n * x5)))) + (x1 * (b * (m * x4))) - 0274
split - 0275
exact hfinalm - 0276
exact hfinaln