(** We now define lcm thanks to gcd:  lcm a b = a * (b / gcd a b) = (a / gcd a b) * b = (a*b) / gcd a b  We had an abs in order to have an always-nonnegative lcm, in the spirit of gcd. Nota: [lcm 0 0] should be 0, which isn't guarantee with the third equation above. *)
#[global]
Instance lcm_wd : Proper (eq==>eq==>eq) lcm.

Lemma gcd_div_swap : forall a b,
(a / gcd a b) * b == a * (b / gcd a b).