proposition: Theorem is_gcd_mult_lcm p q g l : g <> 0 -> is_gcd p q g -> g*l = p*q -> is_lcm p q l.
proof: Proof. intros H0 H1 H2. destruct is_gcd_rel_prime with (1 := H1) as (u & v & Hu & Hv & H3). rewrite Hu, Hv, (Nat.mul_comm u), (Nat.mul_comm v). replace l with (g*(u*v)). + apply is_lcm_mult, is_rel_prime_lcm; auto. + rewrite <- Nat.mul_cancel_r with (1 := H0). rewrite (Nat.mul_comm l), H2, Hu, Hv, (Nat.mul_comm u g), Nat.mul_assoc, Nat.mul_assoc; auto. Qed.
imports: List Arith Lia Permutation Extraction Undecidability.Shared.Libs.DLW.Utils(utils_tac utils_list)