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.
Statement with defined notation
∀ p. ∀ a. ∀ b. Prime(p) → Dvd(p,a · b) → Dvd(p,a) ∨ Dvd(p,b)Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
4 occurrences
In local proof propositions
4 occurrences
Exact expanded native-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 * vProof neighborhood
Direct theorem prerequisites
PA0003 prime_divisor_eq_one_or_self PA0036 gcd_exists_relational PA0037 is_gcd_one_to_coprime PA001P gauss_coprime_cancelDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (4)
01Fix variables and assumptionsL1–5
02Establish hgL6–7
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gcd exists relational.
03Separate the logical casesL8–8
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L8
cases hg
04Establish hgfullL9–10
Establish this local claim before using it. It is not an additional assumption.
05Separate the logical casesL11–12
06Establish hfactorL13–18
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 casesL19–20
08Use earlier factsL21–21
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L21
apply gauss_coprime_cancel
09Establish hcopL22–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd one to coprime.
10Establish hg1L24–31
Establish this local claim before using it. It is not an additional assumption.
11Separate the logical casesL32–33
12Construct an explicit witnessL34–34
Supply the displayed value, then prove that it has the required property.
- L34
exists x1
13Calculate and transport equalitiesL35–35
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L35
rewrite hfactor_right
14Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact hg_witness_left_right_witness
Original defined command ledger · 36 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro hp - 0005
intro hab - 0006
have hg : ∃ g. IsGCD(g,p,a)Exact native replay line
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 : IsGCD(x,p,a)Exact native replay line
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 : Coprime(p,a)Exact native replay line
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 : IsGCD(1,p,a)Exact native replay line
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