proposition: 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: 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.
imports: UniMath.MoreFoundations.All UniMath.CategoryTheory.Core.Prelude UniMath.CategoryTheory.Core.Setcategories UniMath.CategoryTheory.Categories.CategoryOfSetCategories UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat UniMath.CategoryTheory.TwoSidedDisplayedCats.DisplayedFunctor UniMath.CategoryTheory.TwoSidedDisplayedCats.DisplayedNatTrans UniMath.CategoryTheory.TwoSidedDisplayedCats.Isos UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence UniMath.CategoryTheory.TwoSidedDisplayedCats.Strictness UniMath.CategoryTheory.TwoSidedDisplayedCats.TransportLaws UniMath.Bicategories.DoubleCategories.Basics.DoubleCategoryBasics