(** * Greatest common divisor. *)
Definition common_div (x y : Z) (d : nat) :=
Divides d (Zabs_nat x) /\ Divides d (Zabs_nat y).
Definition gcd (x y : Z) (d : nat) :=
common_div x y d /\ (forall e : nat, common_div x y e -> e <= d).

(** * Euclid's theorem. *)
Lemma euclid_gcd1 :
forall (d : nat) (x y q r : Z), gcd x y d -> x = (q * y + r)%Z -> gcd r y d.