Exact expanded PA statement
forall p a. (~(p = 1) /\ forall c e. p = c * e -> c = 1 \/ e = 1) -> (forall d. (exists x. p = d * x) -> (exists y. a = d * y) -> d = 1) \/ exists k. a = p * kStructural proof guide
Generated structural guide
A prime is constructively either coprime to a natural or divides it.
Use the direct prerequisites gcd_exists_relational, prime_divisor_eq_one_or_self, is_gcd_one_to_coprime as previously established PA formulas.
The proof proceeds by case analysis (5), intermediate claims (4), equality transport (4).
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 Stable checked-use theorem is independently kernel-checked when replayed.
- 0001
intro p - 0002
intro a - 0003
intro hp - 0004
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) - 0005
apply gcd_exists_relational - 0006
cases hg - 0007
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) - 0008
exact hg_witness - 0009
cases hg_witness - 0010
cases hg_witness_left - 0011
have hfactor : x = 1 \/ p = x - 0012
specialize prime_divisor_eq_one_or_self p - 0013
specialize prime_divisor_eq_one_or_self x - 0014
apply prime_divisor_eq_one_or_self - 0015
exact hp - 0016
exact hg_witness_left_left - 0017
cases hfactor - 0018
left - 0019
apply is_gcd_one_to_coprime - 0020
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) - 0021
rewrite <- hfactor_left - 0022
rewrite <- hfactor_left - 0023
rewrite <- hfactor_left - 0024
exact hgfull - 0025
exact hg1 - 0026
right - 0027
cases hg_witness_left_right - 0028
exists x1 - 0029
rewrite hfactor_right - 0030
exact hg_witness_left_right_witness