Proposition structured_cospans_double_cat_pentagon : pentagon_law structured_cospans_double_cat_associator. Proof. intro ; intros. use struct_cospan_sqr_eq. rewrite transportb_disp_mor2_struct_cospan ; cbn. use (MorphismsOutofPushoutEqual (isPushout_Pushout (PX _ _ _ _ _))) ; cbn. - unfold struct_cospan_associator_mor, mor_of_comp_struct_cospan_mor ; cbn. rewrite !assoc. rewrite !PushoutArrow_PushoutIn1. rewrite id_left. rewrite !PushoutArrow_PushoutIn1. rewrite !assoc'. rewrite !PushoutArrow_PushoutIn1. unfold struct_cospan_associator_mor. rewrite !assoc. rewrite PushoutArrow_PushoutIn1. apply idpath. - unfold struct_cospan_associator_mor, mor_of_comp_struct_cospan_mor ; cbn. rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. unfold struct_cospan_associator_mor. use (MorphismsOutofPushoutEqual (isPushout_Pushout (PX _ _ _ _ _))) ; cbn. + rewrite !assoc. rewrite !PushoutArrow_PushoutIn1. rewrite !assoc'. rewrite !PushoutArrow_PushoutIn1. refine (!_). etrans. { do 2 apply maponpaths. rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. apply idpath. } etrans. { apply maponpaths. rewrite !assoc. rewrite !PushoutArrow_PushoutIn1. refine (assoc' _ _ _ @ _). rewrite !PushoutArrow_PushoutIn1. refine (assoc _ _ _ @ _). rewrite !PushoutArrow_PushoutIn2. apply idpath. } rewrite !assoc. rewrite !PushoutArrow_PushoutIn1. apply idpath. + rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. use (MorphismsOutofPushoutEqual (isPushout_Pushout (PX _ _ _ _ _))) ; cbn. * rewrite !assoc. rewrite !PushoutArrow_PushoutIn1. refine (!_). rewrite !assoc'. etrans. { do 2 apply maponpaths. rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. apply idpath. } etrans. { apply maponpaths. rewrite !assoc. rewrite !PushoutArrow_PushoutIn1. refine (assoc' _ _ _ @ _). rewrite !PushoutArrow_PushoutIn1. refine (assoc _ _ _ @ _). rewrite !PushoutArrow_PushoutIn2. apply idpath. } rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. apply idpath. * rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. refine (!_). rewrite !assoc'. etrans. { apply maponpaths. rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. apply idpath. } rewrite !assoc. rewrite !PushoutArrow_PushoutIn2. rewrite id_left. apply idpath. Qed.
Require Import UniMath.MoreFoundations.All. Require Import UniMath.CategoryTheory.Core.Prelude. Require Import UniMath.CategoryTheory.Core.Setcategories. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.TwoSidedDispCat. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.DisplayedFunctor. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Isos. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Univalence. Require Import UniMath.CategoryTheory.TwoSidedDisplayedCats.Examples.StructuredCospans. Require Import UniMath.CategoryTheory.Limits.Pushouts. Require Import UniMath.CategoryTheory.Limits.Preservation. Require Import UniMath.Bicategories.Core.Bicat. Import Bicat.Notations. Require Import UniMath.Bicategories.Core.Examples.BicatOfUnivCats. Require Import UniMath.Bicategories.DoubleCategories.Basics.DoubleCategoryBasics. Require Import UniMath.Bicategories.DoubleCategories.Core.DoubleCats. Require Import UniMath.Bicategories.DoubleCategories.Core.UnivalentDoubleCats. Require Import UniMath.Bicategories.DoubleCategories.Core.PseudoDoubleSetCats. Require Import UniMath.Bicategories.DoubleCategories.Core.CompanionsAndConjoints.