Proposition lens_assoc {w x y z : C} (f : lens w x) (g : lens x y) (h : lens y z) : comp_lens f (comp_lens g h) = comp_lens (comp_lens f g) h. Proof. use eq_lens ; cbn. - rewrite assoc. apply idpath. - rewrite !postcompWithBinProductArrow. rewrite !assoc. rewrite !id_left, !id_right. apply maponpaths_2. rewrite !precompWithBinProductArrow. rewrite !BinProductOfArrowsPr2. rewrite BinProductPr2Commutes. apply maponpaths_2. rewrite !assoc. apply maponpaths_2. rewrite !postcompWithBinProductArrow. apply maponpaths_2. rewrite id_right. apply maponpaths_2. rewrite BinProductOfArrows_comp. rewrite id_right. apply idpath. Qed.
Require Import UniMath.Foundations.All. Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Categories. Require Import UniMath.CategoryTheory.Core.Functors. Require Import UniMath.CategoryTheory.Core.Isos. Require Import UniMath.CategoryTheory.Limits.BinProducts. Require Import UniMath.CategoryTheory.DisplayedCats.Core. Require Import UniMath.CategoryTheory.DisplayedCats.Isos. Require Import UniMath.CategoryTheory.DisplayedCats.Constructions. Require Import UniMath.CategoryTheory.DisplayedCats.Univalence. Require Import UniMath.CategoryTheory.DisplayedCats.Projection. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Isos. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Strictness. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Discrete. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Total. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Examples.FiberwiseProduct. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Examples.DispCatOnTwoSidedDispCat.