intros. apply (gcdZ_is_gcdZ b a (gcdZ r b)).
apply (gcd_mod b a (gcdZ r b) q r H H0 (gcdZ_correct r b)).
Qed.
(*********************************)
Inductive verify_BezoutZ (a b : Z) : Set :=
Bezout_i :
forall u v : Z,
addZ (multZ a u) (multZ b v) = gcdZ a b -> verify_BezoutZ a b.
(********************)
Definition Q (a : Z) := forall b : Z, verify_BezoutZ a b.

(* Specifications: *)
Lemma acc_Q : forall n : Z, (forall m : Z, lt_absZ m n -> Q m) -> Q n.
Lemma Bezout_exists : forall a b : Z, verify_BezoutZ a b.
Definition congruentZ (x y n : Z) :=
divide Z IdZ multZ OZ n (addZ x (oppZ y)).