Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
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
A prime is constructively either coprime to a natural or divides it.
Direct prerequisites: gcd_exists_relational, prime_divisor_eq_one_or_self, is_gcd_one_to_coprime. The authored body proceeds by case analysis (5), intermediate claims (4), equality transport (4).
Proof neighborhood
Direct dependencies
Direct dependents
Formal native tactic body
Dependencies are hypotheses of the historical Alpha-v12 body receipt. The complete historical Alpha-v18 proof bundle independently checks every dependency; current Alpha v25 preserves that checked theorem use without changing Stable membership.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (3)
01Fix variables and assumptionsL1–3
02Establish hgL4–5
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gcd exists relational.
03Separate the logical casesL6–6
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L6
cases hg
04Establish hgfullL7–8
05Separate the logical casesL9–10
06Establish hfactorL11–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime divisor eq one or self.
07Separate the logical casesL17–18
08Use earlier factsL19–19
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L19
apply is_gcd_one_to_coprime
09Establish hg1L20–25
Establish this local claim before using it. It is not an additional assumption.
10Separate the logical casesL26–27
11Construct an explicit witnessL28–28
Supply the displayed value, then prove that it has the required property.
- L28
exists x1
12Calculate and transport equalitiesL29–29
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L29
rewrite hfactor_right
13Use earlier factsL30–30
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L30
exact hg_witness_left_right_witness
Original exact command ledger · 30 lines
- 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