Documentation

Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Defs

Pullback and pushout squares #

We provide another API for pullbacks and pushouts.

IsPullback fst snd f g is the proposition that

  P --fst--> X
  |          |
 snd         f
  |          |
  v          v
  Y ---g---> Z

is a pullback square.

(And similarly for IsPushout.)

We provide the glue to go back and forth to the usual IsLimit API for pullbacks, and prove IsPullback (pullback.fst f g) (pullback.snd f g) f g for the usual pullback f g provided by the HasLimit API.

structure CategoryTheory.IsPullback {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} (fst : P X) (snd : P Y) (f : X Z) (g : Y Z) extends CategoryTheory.CommSq fst snd f g :

The proposition that a square

  P --fst--> X
  |          |
 snd         f
  |          |
  v          v
  Y ---g---> Z

is a pullback square. (Also known as a fibered product or Cartesian square.)

Instances For
    structure CategoryTheory.IsPushout {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} (f : Z X) (g : Z Y) (inl : X P) (inr : Y P) extends CategoryTheory.CommSq f g inl inr :

    The proposition that a square

      Z ---f---> X
      |          |
      g         inl
      |          |
      v          v
      Y --inr--> P
    
    

    is a pushout square. (Also known as a fiber coproduct or co-Cartesian square.)

    Instances For
      def CategoryTheory.IsPullback.cone {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :

      The (limiting) PullbackCone f g implicit in the statement that we have an IsPullback fst snd f g.

      Equations
      Instances For
        @[simp]
        theorem CategoryTheory.IsPullback.cone_fst {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :
        h.cone.fst = fst
        @[simp]
        theorem CategoryTheory.IsPullback.cone_snd {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :
        h.cone.snd = snd
        noncomputable def CategoryTheory.IsPullback.isLimit {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :

        The cone obtained from IsPullback fst snd f g is a limit cone.

        Equations
        Instances For
          noncomputable def CategoryTheory.IsPullback.lift {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (hP : IsPullback fst snd f g) {W : C} (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) :
          W P

          API for PullbackCone.IsLimit.lift for IsPullback

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.IsPullback.lift_fst {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (hP : IsPullback fst snd f g) {W : C} (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) :
            CategoryStruct.comp (hP.lift h k w) fst = h
            @[simp]
            theorem CategoryTheory.IsPullback.lift_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (hP : IsPullback fst snd f g) {W : C} (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) {Z✝ : C} (h✝ : X Z✝) :
            @[simp]
            theorem CategoryTheory.IsPullback.lift_snd {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (hP : IsPullback fst snd f g) {W : C} (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) :
            CategoryStruct.comp (hP.lift h k w) snd = k
            @[simp]
            theorem CategoryTheory.IsPullback.lift_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (hP : IsPullback fst snd f g) {W : C} (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) {Z✝ : C} (h✝ : Y Z✝) :
            theorem CategoryTheory.IsPullback.exists_lift {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (hP : IsPullback fst snd f g) {W : C} (h : W X) (k : W Y) (w : CategoryStruct.comp h f = CategoryStruct.comp k g) :
            ∃ (l : W P), CategoryStruct.comp l fst = h CategoryStruct.comp l snd = k
            theorem CategoryTheory.IsPullback.hom_ext {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (hP : IsPullback fst snd f g) {W : C} {k l : W P} (h₀ : CategoryStruct.comp k fst = CategoryStruct.comp l fst) (h₁ : CategoryStruct.comp k snd = CategoryStruct.comp l snd) :
            k = l
            theorem CategoryTheory.IsPullback.of_isLimit {C : Type u₁} [Category.{v₁, u₁} C] {X Y Z : C} {f : X Z} {g : Y Z} {c : Limits.PullbackCone f g} (h : Limits.IsLimit c) :

            If c is a limiting pullback cone, then we have an IsPullback c.fst c.snd f g.

            theorem CategoryTheory.IsPullback.of_isLimit' {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (w : CommSq fst snd f g) (h : Limits.IsLimit w.cone) :
            IsPullback fst snd f g

            A variant of of_isLimit that is more useful with apply.

            theorem CategoryTheory.IsPullback.hasPullback {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :

            The pullback provided by HasPullback f g fits into an IsPullback.

            noncomputable def CategoryTheory.IsPullback.isoIsPullback {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) :
            P P'

            Any object at the top left of a pullback square is isomorphic to the object at the top left of any other pullback square with the same cospan.

            Equations
            Instances For
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_hom_fst {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) :
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_hom_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) {Z✝ : C} (h✝ : X Z✝) :
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_hom_snd {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) :
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_hom_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) {Z✝ : C} (h✝ : Y Z✝) :
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_inv_fst {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) :
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_inv_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) {Z✝ : C} (h✝ : X Z✝) :
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_inv_snd {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) :
              @[simp]
              theorem CategoryTheory.IsPullback.isoIsPullback_inv_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P : C} (X Y : C) {Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} {P' : C} {fst' : P' X} {snd' : P' Y} (h : IsPullback fst snd f g) (h' : IsPullback fst' snd' f g) {Z✝ : C} (h✝ : Y Z✝) :
              noncomputable def CategoryTheory.IsPullback.isoPullback {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] :

              Any object at the top left of a pullback square is isomorphic to the pullback provided by the HasLimit API.

              Equations
              Instances For
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_hom_fst {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] :
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_hom_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] {Z✝ : C} (h✝ : X Z✝) :
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_hom_snd {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] :
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_hom_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] {Z✝ : C} (h✝ : Y Z✝) :
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_inv_fst {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] :
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_inv_fst_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] {Z✝ : C} (h✝ : X Z✝) :
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_inv_snd {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] :
                @[simp]
                theorem CategoryTheory.IsPullback.isoPullback_inv_snd_assoc {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) [Limits.HasPullback f g] {Z✝ : C} (h✝ : Y Z✝) :
                def CategoryTheory.IsPushout.cocone {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :

                The (colimiting) PushoutCocone f g implicit in the statement that we have an IsPushout f g inl inr.

                Equations
                Instances For
                  @[simp]
                  theorem CategoryTheory.IsPushout.cocone_inl {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :
                  h.cocone.inl = inl
                  @[simp]
                  theorem CategoryTheory.IsPushout.cocone_inr {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :
                  h.cocone.inr = inr
                  noncomputable def CategoryTheory.IsPushout.isColimit {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :

                  The cocone obtained from IsPushout f g inl inr is a colimit cocone.

                  Equations
                  Instances For
                    noncomputable def CategoryTheory.IsPushout.desc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (hP : IsPushout f g inl inr) {W : C} (h : X W) (k : Y W) (w : CategoryStruct.comp f h = CategoryStruct.comp g k) :
                    P W

                    API for PushoutCocone.IsColimit.lift for IsPushout

                    Equations
                    Instances For
                      @[simp]
                      theorem CategoryTheory.IsPushout.inl_desc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (hP : IsPushout f g inl inr) {W : C} (h : X W) (k : Y W) (w : CategoryStruct.comp f h = CategoryStruct.comp g k) :
                      CategoryStruct.comp inl (hP.desc h k w) = h
                      @[simp]
                      theorem CategoryTheory.IsPushout.inl_desc_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (hP : IsPushout f g inl inr) {W : C} (h : X W) (k : Y W) (w : CategoryStruct.comp f h = CategoryStruct.comp g k) {Z✝ : C} (h✝ : W Z✝) :
                      @[simp]
                      theorem CategoryTheory.IsPushout.inr_desc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (hP : IsPushout f g inl inr) {W : C} (h : X W) (k : Y W) (w : CategoryStruct.comp f h = CategoryStruct.comp g k) :
                      CategoryStruct.comp inr (hP.desc h k w) = k
                      @[simp]
                      theorem CategoryTheory.IsPushout.inr_desc_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (hP : IsPushout f g inl inr) {W : C} (h : X W) (k : Y W) (w : CategoryStruct.comp f h = CategoryStruct.comp g k) {Z✝ : C} (h✝ : W Z✝) :
                      theorem CategoryTheory.IsPushout.exists_desc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (hP : IsPushout f g inl inr) {W : C} (h : X W) (k : Y W) (w : CategoryStruct.comp f h = CategoryStruct.comp g k) :
                      ∃ (d : P W), CategoryStruct.comp inl d = h CategoryStruct.comp inr d = k
                      theorem CategoryTheory.IsPushout.hom_ext {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (hP : IsPushout f g inl inr) {W : C} {k l : P W} (h₀ : CategoryStruct.comp inl k = CategoryStruct.comp inl l) (h₁ : CategoryStruct.comp inr k = CategoryStruct.comp inr l) :
                      k = l
                      theorem CategoryTheory.IsPushout.of_isColimit {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y : C} {f : Z X} {g : Z Y} {c : Limits.PushoutCocone f g} (h : Limits.IsColimit c) :
                      IsPushout f g c.inl c.inr

                      If c is a colimiting pushout cocone, then we have an IsPushout f g c.inl c.inr.

                      theorem CategoryTheory.IsPushout.of_isColimit' {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (w : CommSq f g inl inr) (h : Limits.IsColimit w.cocone) :
                      IsPushout f g inl inr

                      A variant of of_isColimit that is more useful with apply.

                      theorem CategoryTheory.IsPushout.hasPushout {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :

                      The pushout provided by HasPushout f g fits into an IsPushout.

                      noncomputable def CategoryTheory.IsPushout.isoIsPushout {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') :
                      P P'

                      Any object at the bottom right of a pushout square is isomorphic to the object at the bottom right of any other pushout square with the same span.

                      Equations
                      Instances For
                        @[simp]
                        theorem CategoryTheory.IsPushout.inl_isoIsPushout_hom {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') :
                        @[simp]
                        theorem CategoryTheory.IsPushout.inl_isoIsPushout_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') {Z✝ : C} (h✝ : P' Z✝) :
                        @[simp]
                        theorem CategoryTheory.IsPushout.inr_isoIsPushout_hom {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') :
                        @[simp]
                        theorem CategoryTheory.IsPushout.inr_isoIsPushout_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') {Z✝ : C} (h✝ : P' Z✝) :
                        @[simp]
                        theorem CategoryTheory.IsPushout.inl_isoIsPushout_inv {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') :
                        @[simp]
                        theorem CategoryTheory.IsPushout.inl_isoIsPushout_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') {Z✝ : C} (h✝ : P Z✝) :
                        @[simp]
                        theorem CategoryTheory.IsPushout.inr_isoIsPushout_inv {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') :
                        @[simp]
                        theorem CategoryTheory.IsPushout.inr_isoIsPushout_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z : C} (X Y : C) {P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} {P' : C} {inl' : X P'} {inr' : Y P'} (h : IsPushout f g inl inr) (h' : IsPushout f g inl' inr') {Z✝ : C} (h✝ : P Z✝) :
                        noncomputable def CategoryTheory.IsPushout.isoPushout {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] :

                        Any object at the top left of a pullback square is isomorphic to the pullback provided by the HasLimit API.

                        Equations
                        Instances For
                          @[simp]
                          theorem CategoryTheory.IsPushout.inl_isoPushout_inv {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] :
                          @[simp]
                          theorem CategoryTheory.IsPushout.inl_isoPushout_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] {Z✝ : C} (h✝ : P Z✝) :
                          @[simp]
                          theorem CategoryTheory.IsPushout.inr_isoPushout_inv {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] :
                          @[simp]
                          theorem CategoryTheory.IsPushout.inr_isoPushout_inv_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] {Z✝ : C} (h✝ : P Z✝) :
                          @[simp]
                          theorem CategoryTheory.IsPushout.inl_isoPushout_hom {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] :
                          @[simp]
                          theorem CategoryTheory.IsPushout.inl_isoPushout_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] {Z✝ : C} (h✝ : Limits.pushout f g Z✝) :
                          @[simp]
                          theorem CategoryTheory.IsPushout.inr_isoPushout_hom {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] :
                          @[simp]
                          theorem CategoryTheory.IsPushout.inr_isoPushout_hom_assoc {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) [Limits.HasPushout f g] {Z✝ : C} (h✝ : Limits.pushout f g Z✝) :
                          theorem CategoryTheory.IsPullback.flip {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :
                          IsPullback snd fst g f
                          theorem CategoryTheory.IsPullback.flip_iff {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} :
                          IsPullback fst snd f g IsPullback snd fst g f
                          theorem CategoryTheory.IsPullback.op {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : C} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :
                          IsPushout g.op f.op snd.op fst.op
                          theorem CategoryTheory.IsPullback.unop {C : Type u₁} [Category.{v₁, u₁} C] {P X Y Z : Cᵒᵖ} {fst : P X} {snd : P Y} {f : X Z} {g : Y Z} (h : IsPullback fst snd f g) :
                          theorem CategoryTheory.IsPushout.flip {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :
                          IsPushout g f inr inl
                          theorem CategoryTheory.IsPushout.flip_iff {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} :
                          IsPushout f g inl inr IsPushout g f inr inl
                          theorem CategoryTheory.IsPushout.op {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : C} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :
                          IsPullback inr.op inl.op g.op f.op
                          theorem CategoryTheory.IsPushout.unop {C : Type u₁} [Category.{v₁, u₁} C] {Z X Y P : Cᵒᵖ} {f : Z X} {g : Z Y} {inl : X P} {inr : Y P} (h : IsPushout f g inl inr) :