Exact expanded PA statement
forall m a x y. ~(m = 0) -> (forall d. (exists x. a = d * x) -> (exists y. m = d * y) -> d = 1) -> (exists u v. (a * x) + m * u = (a * y) + m * v) -> exists r s. x + m * r = y + m * sStructural proof guide
Generated structural guide
A coprime factor cancels from balanced congruence at nonzero modulus.
Use the direct prerequisites coprime_mod_inverse, mod_eq_mul_right, mod_eq_mul_left, mod_eq_symm, mod_eq_trans, mul_assoc, mul_comm, mul_one as previously established PA formulas.
The proof proceeds by case analysis (7), intermediate claims (12).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA003Q coprime_mod_inverse PA001Y mod_eq_mul_right PA0020 mod_eq_mul_left PA003L mod_eq_symm PA0024 mod_eq_trans PA000B mul_assoc PA000H mul_comm PA0002 mul_oneDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Stable checked-use theorem is independently kernel-checked when replayed.
- 0001
intro m - 0002
intro a - 0003
intro x - 0004
intro y - 0005
intro hm - 0006
intro hcop - 0007
intro hxy - 0008
have hinv : exists z u v. a * z + m * u = 1 + m * v - 0009
specialize coprime_mod_inverse a - 0010
specialize coprime_mod_inverse m - 0011
apply coprime_mod_inverse - 0012
exact hm - 0013
exact hcop - 0014
cases hinv - 0015
cases hinv_witness - 0016
cases hinv_witness_witness - 0017
have hzx : exists u v. (x * (a * x1)) + m * u = (x * 1) + m * v - 0018
specialize mod_eq_mul_left m - 0019
specialize mod_eq_mul_left (a * x1) - 0020
specialize mod_eq_mul_left 1 - 0021
specialize mod_eq_mul_left x - 0022
apply mod_eq_mul_left - 0023
exists x2 - 0024
exists x3 - 0025
exact hinv_witness_witness_witness - 0026
have hnormx : x * (a * x1) = (a * x) * x1 - 0027
trans (x * a) * x1 - 0028
symm - 0029
apply mul_assoc - 0030
trans (a * x) * x1 - 0031
congr - 0032
apply mul_comm - 0033
refl - 0034
refl - 0035
have honex : x * 1 = x - 0036
apply mul_one - 0037
have hxprod : exists u v. ((a * x) * x1) + m * u = x + m * v - 0038
cases hzx - 0039
cases hzx_witness - 0040
exists x4 - 0041
exists x5 - 0042
trans (x * (a * x1)) + m * x4 - 0043
congr - 0044
symm - 0045
exact hnormx - 0046
refl - 0047
trans (x * 1) + m * x5 - 0048
exact hzx_witness_witness - 0049
congr - 0050
exact honex - 0051
refl - 0052
have hxhprod : exists u v. x + m * u = ((a * x) * x1) + m * v - 0053
specialize mod_eq_symm m - 0054
specialize mod_eq_symm ((a * x) * x1) - 0055
specialize mod_eq_symm x - 0056
apply mod_eq_symm - 0057
exact hxprod - 0058
have hscaled : exists u v. ((a * x) * x1) + m * u = ((a * y) * x1) + m * v - 0059
specialize mod_eq_mul_right m - 0060
specialize mod_eq_mul_right (a * x) - 0061
specialize mod_eq_mul_right (a * y) - 0062
specialize mod_eq_mul_right x1 - 0063
apply mod_eq_mul_right - 0064
exact hxy - 0065
have hzy : exists u v. (y * (a * x1)) + m * u = (y * 1) + m * v - 0066
specialize mod_eq_mul_left m - 0067
specialize mod_eq_mul_left (a * x1) - 0068
specialize mod_eq_mul_left 1 - 0069
specialize mod_eq_mul_left y - 0070
apply mod_eq_mul_left - 0071
exists x2 - 0072
exists x3 - 0073
exact hinv_witness_witness_witness - 0074
have hnormy : y * (a * x1) = (a * y) * x1 - 0075
trans (y * a) * x1 - 0076
symm - 0077
apply mul_assoc - 0078
trans (a * y) * x1 - 0079
congr - 0080
apply mul_comm - 0081
refl - 0082
refl - 0083
have honey : y * 1 = y - 0084
apply mul_one - 0085
have hyprod : exists u v. ((a * y) * x1) + m * u = y + m * v - 0086
cases hzy - 0087
cases hzy_witness - 0088
exists x4 - 0089
exists x5 - 0090
trans (y * (a * x1)) + m * x4 - 0091
congr - 0092
symm - 0093
exact hnormy - 0094
refl - 0095
trans (y * 1) + m * x5 - 0096
exact hzy_witness_witness - 0097
congr - 0098
exact honey - 0099
refl - 0100
have hmid : exists u v. x + m * u = ((a * y) * x1) + m * v - 0101
specialize mod_eq_trans m - 0102
specialize mod_eq_trans x - 0103
specialize mod_eq_trans ((a * x) * x1) - 0104
specialize mod_eq_trans ((a * y) * x1) - 0105
apply mod_eq_trans - 0106
exact hxhprod - 0107
exact hscaled - 0108
specialize mod_eq_trans m - 0109
specialize mod_eq_trans x - 0110
specialize mod_eq_trans ((a * y) * x1) - 0111
specialize mod_eq_trans y - 0112
apply mod_eq_trans - 0113
exact hmid - 0114
exact hyprod