proposition: Lemma int_abs_mult x y : int_abs Z N (x * y) = int_abs Z N x * int_abs Z N y.
proof: Proof. apply (injective f). rewrite preserves_mult. destruct (int_abs_spec x) as [[? Ex]|[? Ex]], (int_abs_spec y) as [[? Ey]|[? Ey]]; rewrite Ex, Ey. rewrite int_abs_nonneg. easy. now apply nonneg_mult_compat. rewrite int_abs_nonpos. ring. now apply nonneg_nonpos_mult. rewrite int_abs_nonpos. ring. now apply nonpos_nonneg_mult. rewrite int_abs_nonneg. ring. now apply nonpos_mult. Qed.
imports: Coq.setoid_ring.Ring MathClasses.interfaces.naturals MathClasses.interfaces.abstract_algebra MathClasses.interfaces.orders MathClasses.orders.nat_int MathClasses.theory.integers MathClasses.theory.rings MathClasses.orders.rings