Library Modules.SoftEquations.Modularity
Modularity for 2-signatures
< f1 a0 ------------> a1 | | | | f2 | | g2 | | | | | | V V a2 ------------> a' g1>
< ff1 R0 ------------> R1 | | | | ff2 | | gg2 | | | | | | V V R2 ------------> R' gg1>
Require Import UniMath.Foundations.PartD.
Require Import UniMath.Foundations.Propositions.
Require Import UniMath.Foundations.Sets.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.FunctorCategory.
Require Import UniMath.CategoryTheory.limits.pushouts.
Require Import UniMath.CategoryTheory.limits.initial.
Require Import UniMath.CategoryTheory.DisplayedCats.Auxiliary.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Constructions.
Require Import UniMath.CategoryTheory.DisplayedCats.Fibrations.
Require Import Modules.SoftEquations.CatOfTwoSignatures.
Require Import Modules.Prelims.FibrationInitialPushout.
Local Open Scope cat.
Local Notation TT := (disp_mor_to_total_mor two_model_disp ).
Local Notation ι := (disp_InitialArrow two_model_disp two_mod_cleaving _ ).
Definition pushout_in_big_rep
{C : category}
{a0 a1 a2 a' : @TwoSignature_category C}
{f1 : TwoSignature_category ⟦ a0, a1 ⟧}{f2 : TwoSignature_category ⟦ a0, a2 ⟧}
{g1 : TwoSignature_category ⟦ a1, a' ⟧}{g2 : TwoSignature_category ⟦ a2, a' ⟧}
{heq : f1 · g1 = f2 · g2}
If we have a pushout of signatures
and syntaxes for each of the signatures
{R0 : two_model_disp a0} {R1 : two_model_disp a1} {R2 : two_model_disp a2} {R' : two_model_disp a'}
(repr_R0 : isInitial (fiber_category _ _) R0)
(repr_R1 : isInitial (fiber_category _ _) R1)
(repr_R2 : isInitial (fiber_category _ _) R2)
(repr_R' : isInitial (fiber_category _ _) R')
(repr_R0 : isInitial (fiber_category _ _) R0)
(repr_R1 : isInitial (fiber_category _ _) R1)
(repr_R2 : isInitial (fiber_category _ _) R2)
(repr_R' : isInitial (fiber_category _ _) R')
Then the initial morphisms induce a pushout in the total category