Exact expanded PA statement
forall p a b. (~(p = 1) /\ forall c d. p = c * d -> c = 1 \/ d = 1) -> (exists k. a * b = p * k) -> (exists u. a = p * u) \/ exists v. b = p * vStructural proof guide
Generated structural guide
A prime dividing a product divides at least one factor (Euclid's lemma).
Use the direct prerequisites prime_divisor_eq_one_or_self, gcd_exists_relational, is_gcd_one_to_coprime, gauss_coprime_cancel as previously established PA formulas.
The proof proceeds by case analysis (5), intermediate claims (5), equality transport (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0003 prime_divisor_eq_one_or_self PA0036 gcd_exists_relational PA0037 is_gcd_one_to_coprime PA001P gauss_coprime_cancelDirect 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 hp - 0005
intro hab - 0006
have hg : exists g. (((exists x. p = g * x) /\ (exists y. a = g * y)) /\ forall c. (exists u. p = c * u) -> (exists v. a = c * v) -> exists w. g = c * w) - 0007
apply gcd_exists_relational - 0008
cases hg - 0009
have hgfull : (((exists u. p = x * u) /\ (exists v. a = x * v)) /\ forall c. (exists s. p = c * s) -> (exists t. a = c * t) -> exists w. x = c * w) - 0010
exact hg_witness - 0011
cases hg_witness - 0012
cases hg_witness_left - 0013
have hfactor : x = 1 \/ p = x - 0014
specialize prime_divisor_eq_one_or_self p - 0015
specialize prime_divisor_eq_one_or_self x - 0016
apply prime_divisor_eq_one_or_self - 0017
exact hp - 0018
exact hg_witness_left_left - 0019
cases hfactor - 0020
right - 0021
apply gauss_coprime_cancel - 0022
have hcop : forall d. (exists u. p = d * u) -> (exists v. a = d * v) -> d = 1 - 0023
apply is_gcd_one_to_coprime - 0024
have hg1 : (((exists u. p = 1 * u) /\ (exists v. a = 1 * v)) /\ forall c. (exists s. p = c * s) -> (exists t. a = c * t) -> exists w. 1 = c * w) - 0025
rewrite <- hfactor_left - 0026
rewrite <- hfactor_left - 0027
rewrite <- hfactor_left - 0028
exact hgfull - 0029
exact hg1 - 0030
exact hcop - 0031
exact hab - 0032
left - 0033
cases hg_witness_left_right - 0034
exists x1 - 0035
rewrite hfactor_right - 0036
exact hg_witness_left_right_witness