(** * Linear combinations. *)

Definition LinComb (c x y : Z) :=
  exists a : Z, (exists b : Z, c = (x * a + y * b)%Z).Definition LinCombMod (c x y : Z) (n : nat) :=
  exists a : Z, (exists b : Z, Mod c (x * a + y * b) n).Definition ZLinCombMod (c x y n : Z) :=
  exists a : Z, (exists b : Z, ZMod c (x * a + y * b) n).

(* Specifications: *)
Lemma lincombmodzlincombmod : forall (c x y : Z) (n : nat), LinCombMod c x y n -> ZLinCombMod c x y (Z_of_nat n).
Lemma zlincombmodlincombmod : forall c x y n : Z, ZLinCombMod c x y n -> LinCombMod c x y (Zabs_nat n).