n m k : (m | n) -> k * (n / m) = (k * n) / m. Proof. intros H. destruct (nat_zero_or_gt_zero m) as [[] | mp]. 1: snrapply nat_mul_zero_r. rapply (nat_div_unique _ _ _ 0 _ _)^. lhs nrapply nat_add_zero_r. lhs nrapply nat_mul_assoc. lhs nrapply (ap (fun x => x * _)). 1: nrapply nat_mul_comm. lhs_V nrapply nat_mul_assoc. snrapply ap. lhs_V nrapply nat_add_zero_r. rhs nrapply (nat_div_mod_spec n m). snrapply ap. symmetry. rapply nat_mod_divides. Defined.
Require Import Basics.Overture Basics.Tactics Basics.Trunc Basics.Classes