(** ** Gcd *)

Definition divide x y := exists z, y=z*x.Notation "( x | y )" := (divide x y) (at level 0) : nat_scope.

(* Specifications: *)
Lemma gcd_divide : forall a b, (gcd a b | a) /\ (gcd a b | b).
Lemma gcd_divide_l : forall a b, (gcd a b | a).
Lemma gcd_divide_r : forall a b, (gcd a b | b).
Lemma gcd_greatest : forall a b c, (c|a) -> (c|b) -> (c|gcd a b).
Lemma gcd_nonneg a b : 0<=gcd a b.