(******************)
Definition congruentZ (x y n : Z) :=
  divide Z IdZ multZ OZ n (addZ x (oppZ y)).

(* Specifications: *)
Lemma divide_selfZ : forall x : Z, divide Z IdZ multZ OZ x x.
Theorem chinese_remaindering_theorem : forall a b x y : Z, gcdZ a b = IZ -> {z : Z | congruentZ z x a /\ congruentZ z y b}.