Proposition is_natural_preserves_hor_id_alt {C₁ C₂ : category} {D₁ : twosided_disp_cat C₁ C₁} {D₂ : twosided_disp_cat C₂ C₂} {I₁ : hor_id D₁} {I₂ : hor_id D₂} {F : C₁ ⟶ C₂} {FF : twosided_disp_functor F F D₁ D₂} (FFI : preserves_hor_id I₁ I₂ FF) {x y : C₁} (f : x --> y) : double_id_mor I₂ (#F f) ;;2 idtoiso_twosided_disp (idpath _) (idpath _) (!(FFI y)) = transportf_disp_mor2 (id_left _ @ !(id_right _)) (id_left _ @ !(id_right _)) (idtoiso_twosided_disp (idpath _) (idpath _) (!(FFI x)) ;;2 #2 FF (double_id_mor I₁ f)). Proof. refine (id_two_disp_right_alt _ @ _ @ !(id_two_disp_right_alt _)). etrans. { do 2 apply maponpaths. exact (inv_after_iso_twosided_disp_alt (idtoiso_twosided_disp (idpath _) (idpath _) (FFI y))). } rewrite two_disp_post_whisker_f. rewrite transport_f_f_disp_mor2. refine (!_). etrans. { do 2 apply maponpaths. exact (inv_after_iso_twosided_disp_alt (idtoiso_twosided_disp (idpath _) (idpath _) (FFI y))). } rewrite two_disp_post_whisker_f. rewrite two_disp_pre_whisker_f. rewrite !transport_f_f_disp_mor2. rewrite !assoc_two_disp. unfold transportb_disp_mor2. rewrite !transport_f_f_disp_mor2. etrans. { apply maponpaths. apply maponpaths_2. rewrite assoc_two_disp_alt. do 2 apply maponpaths. apply is_natural_preserves_hor_id. } rewrite two_disp_post_whisker_f. rewrite !two_disp_pre_whisker_f. rewrite !transport_f_f_disp_mor2. rewrite !assoc_two_disp. unfold transportb_disp_mor2. rewrite two_disp_pre_whisker_f. rewrite !transport_f_f_disp_mor2. etrans. { apply maponpaths. do 2 apply maponpaths_2. apply idtoiso_twosided_disp_concat. } rewrite pathsinv0l. unfold transportb_disp_mor2. rewrite !two_disp_pre_whisker_f. rewrite !transport_f_f_disp_mor2. etrans. { apply maponpaths. apply maponpaths_2. apply id_two_disp_left. } unfold transportb_disp_mor2. rewrite !two_disp_pre_whisker_f. rewrite !transport_f_f_disp_mor2. refine (!_). etrans. { apply maponpaths. apply maponpaths_2. rewrite assoc_two_disp_alt. do 2 apply maponpaths. apply idtoiso_twosided_disp_concat. } rewrite pathsinv0l. unfold transportb_disp_mor2. rewrite two_disp_pre_whisker_f. rewrite two_disp_post_whisker_f. rewrite two_disp_pre_whisker_f. rewrite !transport_f_f_disp_mor2. etrans. { apply maponpaths. apply maponpaths_2. apply id_two_disp_right. } unfold transportb_disp_mor2. rewrite two_disp_pre_whisker_f. rewrite !transport_f_f_disp_mor2. use transportf_disp_mor2_eq. apply idpath. Qed.
Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.Core.Setcategories. Require Import UniMath.CategoryTheory.Categories.CategoryOfSetCategories. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.DisplayedFunctor. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.DisplayedNatTrans. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Isos. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Strictness. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.TransportLaws. Require Import UniMath.Bicategories.DoubleCategories.Basics.DoubleCategoryBasics.