proposition: Proposition comp_lens_mor {x₁ x₂ y₁ y₂ z₁ z₂ : C} {v₁ : x₁ --> x₂} {v₂ : y₁ --> y₂} {v₃ : z₁ --> z₂} {l₁ : lens x₁ y₁} {l₂ : lens y₁ z₁} {l₃ : lens x₂ y₂} {l₄ : lens y₂ z₂} (φ : lens_mor l₁ l₃ v₁ v₂) (ψ : lens_mor l₂ l₄ v₂ v₃) : lens_mor (comp_lens l₁ l₂) (comp_lens l₃ l₄) v₁ v₃.
proof: Proof. use make_lens_mor ; cbn. - rewrite !assoc'. rewrite (lens_mor_get ψ). rewrite !assoc. rewrite (lens_mor_get φ). apply idpath. - rewrite !assoc'. rewrite (lens_mor_put φ). rewrite !assoc. apply maponpaths_2. rewrite !postcompWithBinProductArrow. rewrite !precompWithBinProductArrow. rewrite !postcompWithBinProductArrow. rewrite !id_right. rewrite BinProductOfArrowsPr2. apply maponpaths_2. rewrite !assoc'. rewrite (lens_mor_put ψ). rewrite !assoc. apply maponpaths_2. rewrite id_left. rewrite !BinProductOfArrows_comp. rewrite id_left, id_right. apply maponpaths. rewrite (lens_mor_get φ). apply idpath. Qed.
imports: UniMath.Foundations.All UniMath.MoreFoundations.All UniMath.CategoryTheory.Core.Categories UniMath.CategoryTheory.Core.Functors UniMath.CategoryTheory.Core.Isos UniMath.CategoryTheory.Limits.BinProducts UniMath.CategoryTheory.DisplayedCats.Core UniMath.CategoryTheory.DisplayedCats.Isos UniMath.CategoryTheory.DisplayedCats.Constructions UniMath.CategoryTheory.DisplayedCats.Univalence UniMath.CategoryTheory.DisplayedCats.Projection UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat UniMath.CategoryTheory.TwoSidedDisplayedCats.Isos UniMath.CategoryTheory.TwoSidedDisplayedCats.Strictness UniMath.CategoryTheory.TwoSidedDisplayedCats.Discrete UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence UniMath.CategoryTheory.TwoSidedDisplayedCats.Total UniMath.CategoryTheory.TwoSidedDisplayedCats.Examples.FiberwiseProduct UniMath.CategoryTheory.TwoSidedDisplayedCats.Examples.DispCatOnTwoSidedDispCat