File: Mathlib/CategoryTheory/MorphismProperty/Limits.lean

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange
code: /-- A morphism property is `StableUnderBaseChange` if the base change of such a morphism
still falls in the class. -/
def StableUnderBaseChange (P : MorphismProperty C) : Prop 
goal: Prop

full_name: CategoryTheory.MorphismProperty.StableUnderCobaseChange
code: /-- A morphism property is `StableUnderCobaseChange` if the cobase change of such a morphism
still falls in the class. -/
def StableUnderCobaseChange (P : MorphismProperty C) : Prop 
goal: Prop

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.mk
code: theorem StableUnderBaseChange.mk {P : MorphismProperty C} [HasPullbacks C] [RespectsIso P]
    (hP₂ : ∀ (X Y S : C) (f : X ⟶ S) (g : Y ⟶ S) (_ : P g), P (pullback.fst f g)) :
    StableUnderBaseChange P 
goal: P.StableUnderBaseChange

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.respectsIso
code: theorem StableUnderBaseChange.respectsIso {P : MorphismProperty C} (hP : StableUnderBaseChange P) :
    RespectsIso P 
goal: P.RespectsIso

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.fst
code: theorem StableUnderBaseChange.fst {P : MorphismProperty C} (hP : StableUnderBaseChange P)
    {X Y S : C} (f : X ⟶ S) (g : Y ⟶ S) [HasPullback f g] (H : P g) :
    P (pullback.fst f g) 
goal: P (CategoryTheory.Limits.pullback.fst f g)

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.snd
code: theorem StableUnderBaseChange.snd {P : MorphismProperty C} (hP : StableUnderBaseChange P)
    {X Y S : C} (f : X ⟶ S) (g : Y ⟶ S) [HasPullback f g] (H : P f) :
    P (pullback.snd f g) 
goal: P (CategoryTheory.Limits.pullback.snd f g)

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.baseChange_obj
code: theorem StableUnderBaseChange.baseChange_obj [HasPullbacks C] {P : MorphismProperty C}
    (hP : StableUnderBaseChange P) {S S' : C} (f : S' ⟶ S) (X : Over S) (H : P X.hom) :
    P ((Over.pullback f).obj X).hom 
goal: P ((CategoryTheory.Over.pullback f).obj X).hom

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.baseChange_map
code: theorem StableUnderBaseChange.baseChange_map [HasPullbacks C] {P : MorphismProperty C}
    (hP : StableUnderBaseChange P) {S S' : C} (f : S' ⟶ S) {X Y : Over S} (g : X ⟶ Y)
    (H : P g.left) : P ((Over.pullback f).map g).left 
goal: P ((CategoryTheory.Over.pullback f).map g).left

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.pullback_map
code: theorem StableUnderBaseChange.pullback_map [HasPullbacks C] {P : MorphismProperty C}
    (hP : StableUnderBaseChange P) [P.IsStableUnderComposition] {S X X' Y Y' : C} {f : X ⟶ S}
    {g : Y ⟶ S} {f' : X' ⟶ S} {g' : Y' ⟶ S} {i₁ : X ⟶ X'} {i₂ : Y ⟶ Y'} (h₁ : P i₁) (h₂ : P i₂)
    (e₁ : f = i₁ ≫ f') (e₂ : g = i₂ ≫ g') :
    P (pullback.map f g f' g' i₁ i₂ (𝟙 _) ((Category.comp_id _).trans e₁)
        ((Category.comp_id _).trans e₂)) 
goal: P (CategoryTheory.Limits.pullback.map f g f' g' i₁ i₂ (CategoryTheory.CategoryStruct.id S) ⋯ ⋯)

full_name: CategoryTheory.MorphismProperty.StableUnderCobaseChange.mk
code: theorem StableUnderCobaseChange.mk {P : MorphismProperty C} [HasPushouts C] [RespectsIso P]
    (hP₂ : ∀ (A B A' : C) (f : A ⟶ A') (g : A ⟶ B) (_ : P f), P (pushout.inr f g)) :
    StableUnderCobaseChange P 
goal: P.StableUnderCobaseChange

full_name: CategoryTheory.MorphismProperty.StableUnderCobaseChange.respectsIso
code: theorem StableUnderCobaseChange.respectsIso {P : MorphismProperty C}
    (hP : StableUnderCobaseChange P) : RespectsIso P 
goal: P.RespectsIso

full_name: CategoryTheory.MorphismProperty.StableUnderCobaseChange.inl
code: theorem StableUnderCobaseChange.inl {P : MorphismProperty C} (hP : StableUnderCobaseChange P)
    {A B A' : C} (f : A ⟶ A') (g : A ⟶ B) [HasPushout f g] (H : P g) :
    P (pushout.inl f g) 
goal: P (CategoryTheory.Limits.pushout.inl f g)

full_name: CategoryTheory.MorphismProperty.StableUnderCobaseChange.inr
code: theorem StableUnderCobaseChange.inr {P : MorphismProperty C} (hP : StableUnderCobaseChange P)
    {A B A' : C} (f : A ⟶ A') (g : A ⟶ B) [HasPushout f g] (H : P f) : P (pushout.inr f g) 
goal: P (CategoryTheory.Limits.pushout.inr f g)

full_name: CategoryTheory.MorphismProperty.StableUnderCobaseChange.op
code: theorem StableUnderCobaseChange.op {P : MorphismProperty C} (hP : StableUnderCobaseChange P) :
    StableUnderBaseChange P.op 
goal: P.op.StableUnderBaseChange

full_name: CategoryTheory.MorphismProperty.StableUnderCobaseChange.unop
code: theorem StableUnderCobaseChange.unop {P : MorphismProperty Cᵒᵖ} (hP : StableUnderCobaseChange P) :
    StableUnderBaseChange P.unop 
goal: P.unop.StableUnderBaseChange

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.op
code: theorem StableUnderBaseChange.op {P : MorphismProperty C} (hP : StableUnderBaseChange P) :
    StableUnderCobaseChange P.op 
goal: P.op.StableUnderCobaseChange

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.unop
code: theorem StableUnderBaseChange.unop {P : MorphismProperty Cᵒᵖ} (hP : StableUnderBaseChange P) :
    StableUnderCobaseChange P.unop 
goal: P.unop.StableUnderCobaseChange

full_name: CategoryTheory.MorphismProperty.IsStableUnderLimitsOfShape
code: /-- The property that a morphism property `W` is stable under limits
indexed by a category `J`. -/
def IsStableUnderLimitsOfShape (J : Type*) [Category J] : Prop 
goal: Prop

full_name: CategoryTheory.MorphismProperty.IsStableUnderLimitsOfShape.lim_map
code: lemma IsStableUnderLimitsOfShape.lim_map {J : Type*} [Category J]
    (hW : W.IsStableUnderLimitsOfShape J) {X Y : J ⥤ C}
    (f : X ⟶ Y) [HasLimitsOfShape J C] (hf : W.functorCategory _ f) :
    W (lim.map f) 
goal: W (CategoryTheory.Limits.lim.map f)

full_name: CategoryTheory.MorphismProperty.IsStableUnderProductsOfShape
code: /-- The property that a morphism property `W` is stable under products indexed by a type `J`. -/
abbrev IsStableUnderProductsOfShape (J : Type*) 
goal: Prop

full_name: CategoryTheory.MorphismProperty.IsStableUnderProductsOfShape.mk
code: lemma IsStableUnderProductsOfShape.mk (J : Type*)
    [W.RespectsIso] [HasProductsOfShape J C]
    (hW : ∀ (X₁ X₂ : J → C) (f : ∀ j, X₁ j ⟶ X₂ j) (_ : ∀ (j : J), W (f j)),
      W (Pi.map f)) : W.IsStableUnderProductsOfShape J 
goal: W.IsStableUnderProductsOfShape J

full_name: CategoryTheory.MorphismProperty.IsStableUnderFiniteProducts
code: /-- The condition that a property of morphisms is stable by finite products. -/
class IsStableUnderFiniteProducts : Prop :=
  isStableUnderProductsOfShape (J : Type) [Finite J] : W.IsStableUnderProductsOfShape J
goal: Prop

full_name: CategoryTheory.MorphismProperty.IsStableUnderFiniteProducts.isStableUnderProductsOfShape
code: /-- The condition that a property of morphisms is stable by finite products. -/
class IsStableUnderFiniteProducts : Prop :=
  isStableUnderProductsOfShape (J : Type) [Finite J] : W.IsStableUnderProductsOfShape J
goal: W.IsStableUnderProductsOfShape J

full_name: CategoryTheory.MorphismProperty.isStableUnderProductsOfShape_of_isStableUnderFiniteProducts
code: lemma isStableUnderProductsOfShape_of_isStableUnderFiniteProducts
    (J : Type) [Finite J] [W.IsStableUnderFiniteProducts] :
    W.IsStableUnderProductsOfShape J 
goal: W.IsStableUnderProductsOfShape J

full_name: CategoryTheory.MorphismProperty.diagonal
code: /-- For `P : MorphismProperty C`, `P.diagonal` is a morphism property that holds for `f : X ⟶ Y`
whenever `P` holds for `X ⟶ Y xₓ Y`. -/
def diagonal (P : MorphismProperty C) : MorphismProperty C 
goal: CategoryTheory.MorphismProperty C

full_name: CategoryTheory.MorphismProperty.diagonal_iff
code: theorem diagonal_iff {X Y : C} {f : X ⟶ Y} : P.diagonal f ↔ P (pullback.diagonal f) 
goal: P.diagonal f ↔ P (CategoryTheory.Limits.pullback.diagonal f)

full_name: CategoryTheory.MorphismProperty.RespectsIso.diagonal
code: instance RespectsIso.diagonal [P.RespectsIso] : P.diagonal.RespectsIso 
goal: P.diagonal.RespectsIso

full_name: CategoryTheory.MorphismProperty.diagonal_isStableUnderComposition
code: theorem diagonal_isStableUnderComposition [P.IsStableUnderComposition] [RespectsIso P]
    (hP'' : StableUnderBaseChange P) : P.diagonal.IsStableUnderComposition 
goal: P.diagonal.IsStableUnderComposition

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.diagonal
code: theorem StableUnderBaseChange.diagonal (hP : StableUnderBaseChange P) [P.RespectsIso] :
    P.diagonal.StableUnderBaseChange 
goal: P.diagonal.StableUnderBaseChange

full_name: CategoryTheory.MorphismProperty.universally
code: /-- `P.universally` holds for a morphism `f : X ⟶ Y` iff `P` holds for all `X ×[Y] Y' ⟶ Y'`. -/
def universally (P : MorphismProperty C) : MorphismProperty C 
goal: CategoryTheory.MorphismProperty C

full_name: CategoryTheory.MorphismProperty.universally_respectsIso
code: instance universally_respectsIso (P : MorphismProperty C) : P.universally.RespectsIso 
goal: P.universally.RespectsIso

full_name: CategoryTheory.MorphismProperty.universally_stableUnderBaseChange
code: theorem universally_stableUnderBaseChange (P : MorphismProperty C) :
    P.universally.StableUnderBaseChange 
goal: P.universally.StableUnderBaseChange

full_name: CategoryTheory.MorphismProperty.IsStableUnderComposition.universally
code: instance IsStableUnderComposition.universally [HasPullbacks C] (P : MorphismProperty C)
    [hP : P.IsStableUnderComposition] : P.universally.IsStableUnderComposition 
goal: P.universally.IsStableUnderComposition

full_name: CategoryTheory.MorphismProperty.universally_le
code: theorem universally_le (P : MorphismProperty C) : P.universally ≤ P 
goal: P.universally ≤ P

full_name: CategoryTheory.MorphismProperty.universally_eq_iff
code: theorem universally_eq_iff {P : MorphismProperty C} :
    P.universally = P ↔ P.StableUnderBaseChange 
goal: P.universally = P ↔ P.StableUnderBaseChange

full_name: CategoryTheory.MorphismProperty.StableUnderBaseChange.universally_eq
code: theorem StableUnderBaseChange.universally_eq {P : MorphismProperty C}
    (hP : P.StableUnderBaseChange) : P.universally = P 
goal: P.universally = P

full_name: CategoryTheory.MorphismProperty.universally_mono
code: theorem universally_mono : Monotone (universally : MorphismProperty C → MorphismProperty C) 
goal: Monotone CategoryTheory.MorphismProperty.universally