Exact expanded PA statement
forall p a b qa ra qb rb. a = qa * p + ra -> (exists ha. ha + S ra = p) -> b = qb * p + rb -> (exists hb. hb + S rb = p) -> (exists u v. a + p * u = b + p * v) \/ ~(exists u v. a + p * u = b + p * v)Structural proof guide
Generated structural guide
Canonical bounded remainders constructively decide congruence.
Use the direct prerequisites eq_decidable, remainder_decomposition_to_mod_eq, mod_eq_symm, mod_eq_trans, mod_eq_bounded_unique as previously established PA formulas.
The proof proceeds by case analysis (1), intermediate claims (8), equality transport (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA004G eq_decidable PA003C remainder_decomposition_to_mod_eq PA003L mod_eq_symm PA0024 mod_eq_trans PA002U mod_eq_bounded_uniqueDirect 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 p - 0002
intro a - 0003
intro b - 0004
intro qa - 0005
intro ra - 0006
intro qb - 0007
intro rb - 0008
intro ha - 0009
intro hra - 0010
intro hb - 0011
intro hrb - 0012
specialize eq_decidable ra - 0013
specialize eq_decidable rb - 0014
cases eq_decidable - 0015
left - 0016
have har : exists u v. a + p * u = ra + p * v - 0017
specialize remainder_decomposition_to_mod_eq p - 0018
specialize remainder_decomposition_to_mod_eq a - 0019
specialize remainder_decomposition_to_mod_eq qa - 0020
specialize remainder_decomposition_to_mod_eq ra - 0021
apply remainder_decomposition_to_mod_eq - 0022
exact ha - 0023
have hbr : exists u v. b + p * u = rb + p * v - 0024
specialize remainder_decomposition_to_mod_eq p - 0025
specialize remainder_decomposition_to_mod_eq b - 0026
specialize remainder_decomposition_to_mod_eq qb - 0027
specialize remainder_decomposition_to_mod_eq rb - 0028
apply remainder_decomposition_to_mod_eq - 0029
exact hb - 0030
have hbra : exists u v. b + p * u = ra + p * v - 0031
rewrite eq_decidable_left - 0032
exact hbr - 0033
have hrab : exists u v. ra + p * u = b + p * v - 0034
specialize mod_eq_symm p - 0035
specialize mod_eq_symm b - 0036
specialize mod_eq_symm ra - 0037
apply mod_eq_symm - 0038
exact hbra - 0039
specialize mod_eq_trans p - 0040
specialize mod_eq_trans a - 0041
specialize mod_eq_trans ra - 0042
specialize mod_eq_trans b - 0043
apply mod_eq_trans - 0044
exact har - 0045
exact hrab - 0046
right - 0047
intro hab - 0048
apply eq_decidable_right - 0049
specialize mod_eq_bounded_unique p - 0050
specialize mod_eq_bounded_unique ra - 0051
specialize mod_eq_bounded_unique rb - 0052
apply mod_eq_bounded_unique - 0053
exact hra - 0054
exact hrb - 0055
have har : exists u v. a + p * u = ra + p * v - 0056
specialize remainder_decomposition_to_mod_eq p - 0057
specialize remainder_decomposition_to_mod_eq a - 0058
specialize remainder_decomposition_to_mod_eq qa - 0059
specialize remainder_decomposition_to_mod_eq ra - 0060
apply remainder_decomposition_to_mod_eq - 0061
exact ha - 0062
have hra_a : exists u v. ra + p * u = a + p * v - 0063
specialize mod_eq_symm p - 0064
specialize mod_eq_symm a - 0065
specialize mod_eq_symm ra - 0066
apply mod_eq_symm - 0067
exact har - 0068
have hra_b : exists u v. ra + p * u = b + p * v - 0069
specialize mod_eq_trans p - 0070
specialize mod_eq_trans ra - 0071
specialize mod_eq_trans a - 0072
specialize mod_eq_trans b - 0073
apply mod_eq_trans - 0074
exact hra_a - 0075
exact hab - 0076
have hbr : exists u v. b + p * u = rb + p * v - 0077
specialize remainder_decomposition_to_mod_eq p - 0078
specialize remainder_decomposition_to_mod_eq b - 0079
specialize remainder_decomposition_to_mod_eq qb - 0080
specialize remainder_decomposition_to_mod_eq rb - 0081
apply remainder_decomposition_to_mod_eq - 0082
exact hb - 0083
specialize mod_eq_trans p - 0084
specialize mod_eq_trans ra - 0085
specialize mod_eq_trans b - 0086
specialize mod_eq_trans rb - 0087
apply mod_eq_trans - 0088
exact hra_b - 0089
exact hbr