(***************)
(* Regarding Z *)
(***************)

Definition is_sqr (n : Z) : Prop :=
  0 <= n /\ exists i : Z, i * i = n /\ 0 <= i.

Lemma Zmult_eq_reg_l : forall z z1 z2, z * z1 = z * z2 -> z <> 0 -> z1 = z2.