Exact expanded PA statement
forall p q i d r. ((~(p = 1) /\ forall frp_prime_left_remainder_nonzero_prime_p frp_prime_right_remainder_nonzero_prime_p. p = frp_prime_left_remainder_nonzero_prime_p * frp_prime_right_remainder_nonzero_prime_p -> frp_prime_left_remainder_nonzero_prime_p = 1 \/ frp_prime_right_remainder_nonzero_prime_p = 1)) -> (~(exists factor. q = p * factor)) -> (exists ern_lt_gap_remainder_nonzero_index_below_p. ern_lt_gap_remainder_nonzero_index_below_p + S (S i) = p) -> q * S i = p * d + r -> ~(r = 0)Structural proof guide
Generated structural guide
A bounded positive factor times a prime nondivisor cannot have zero remainder modulo that prime.
Use the direct prerequisites euclid_prime_dvd_product, succ_ne_zero, divisor_le_nonzero, lt_not_le as previously established PA formulas.
The proof proceeds by case analysis (1), intermediate claims (4), equality transport (1).
Referenced ingredients
Proof neighborhood
Direct dependencies
Direct dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro p - 0002
intro q - 0003
intro i - 0004
intro d - 0005
intro r - 0006
intro hp - 0007
intro hpq - 0008
intro hip - 0009
intro hdivision - 0010
intro hr0 - 0011
have hmultiple : exists t. q * S i = p * t - 0012
exists d - 0013
trans p * d + r - 0014
exact hdivision - 0015
rewrite hr0 - 0016
apply PA3 - 0017
have hsplit : (exists u. q = p * u) \/ exists v. S i = p * v - 0018
specialize euclid_prime_dvd_product p - 0019
specialize euclid_prime_dvd_product q - 0020
specialize euclid_prime_dvd_product (S i) - 0021
apply euclid_prime_dvd_product - 0022
exact hp - 0023
exact hmultiple - 0024
cases hsplit - 0025
apply hpq - 0026
exact hsplit_left - 0027
have hsi0 : ~(S i = 0) - 0028
specialize succ_ne_zero i - 0029
exact succ_ne_zero - 0030
have hle : exists gap. gap + p = S i - 0031
specialize divisor_le_nonzero p - 0032
specialize divisor_le_nonzero (S i) - 0033
apply divisor_le_nonzero - 0034
exact hsi0 - 0035
exact hsplit_right - 0036
specialize lt_not_le (S i) - 0037
specialize lt_not_le p - 0038
apply lt_not_le - 0039
exact hip - 0040
exact hle