int_dist_l@{} (x y z : Int) : x * (y + z) = x * y + x * z. Proof. induction x as [|x IHx|x IHx] in y, z |- *. - reflexivity. - rewrite 3 int_mul_succ_l. rewrite IHx. rewrite !int_add_assoc; f_ap. rewrite <- !int_add_assoc; f_ap. by rewrite int_add_comm. - rewrite 3 int_mul_pred_l. rewrite IHx. rewrite !int_add_assoc; f_ap. rewrite int_neg_add. rewrite <- !int_add_assoc; f_ap. by rewrite int_add_comm. Defined.
Require Import Basics.Overture Basics.Nat Basics.Tactics Basics.Decidable Basics.Equivalences Basics.PathGroupoids Types.Paths Types.Universe. Require Import Spaces.Nat.Core.