(** * Primality *)

Inductive prime (p:Z) : Prop :=
  prime_intro :
    1 < p -> (forall n:Z, 1 <= n < p -> rel_prime n p) -> prime p.(** * Primality *)

Inductive prime (p:Z) : Prop :=
  prime_intro :
    1 < p -> (forall n:Z, 1 <= n < p -> rel_prime n p) -> prime p.

(* Specifications: *)
Lemma prime_divisors : forall p:Z, prime p -> forall a:Z, (a | p) -> a = -1 \/ a = 1 \/ a = p \/ a = - p.
Lemma prime_rel_prime : forall p:Z, prime p -> forall a:Z, ~ (p | a) -> rel_prime p a.
Theorem rel_prime_le_prime: forall a p, prime p -> 1 <= a < p -> rel_prime a p.
Lemma prime_mult : forall p:Z, prime p -> forall a b:Z, (p | a * b) -> (p | a) \/ (p | b).
Lemma not_prime_0: ~ prime 0.
Lemma not_prime_1: ~ prime 1.
Lemma prime_2: prime 2.
Theorem prime_3: prime 3.
Theorem prime_ge_2 p : prime p -> 2 <= p.