File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Products.lean

full_name: CategoryTheory.Limits.isLimitMapConeFanMkEquiv
code: /-- The map of a fan is a limit iff the fan consisting of the mapped morphisms is a limit. This
essentially lets us commute `Fan.mk` with `Functor.mapCone`.
-/
def isLimitMapConeFanMkEquiv {P : C} (g : ∀ j, P ⟶ f j) :
    IsLimit (Functor.mapCone G (Fan.mk P g)) ≃
      IsLimit (Fan.mk _ fun j => G.map (g j) : Fan fun j => G.obj (f j)) 
goal: CategoryTheory.Limits.IsLimit (G.mapCone (CategoryTheory.Limits.Fan.mk P g)) ≃
  CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fan.mk (G.obj P) fun j => G.map (g j))

full_name: CategoryTheory.Limits.isLimitFanMkObjOfIsLimit
code: /-- The property of preserving products expressed in terms of fans. -/
def isLimitFanMkObjOfIsLimit [PreservesLimit (Discrete.functor f) G] {P : C} (g : ∀ j, P ⟶ f j)
    (t : IsLimit (Fan.mk _ g)) :
    IsLimit (Fan.mk (G.obj P) fun j => G.map (g j) : Fan fun j => G.obj (f j)) 
goal: CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fan.mk (G.obj P) fun j => G.map (g j))

full_name: CategoryTheory.Limits.isLimitOfIsLimitFanMkObj
code: /-- The property of reflecting products expressed in terms of fans. -/
def isLimitOfIsLimitFanMkObj [ReflectsLimit (Discrete.functor f) G] {P : C} (g : ∀ j, P ⟶ f j)
    (t : IsLimit (Fan.mk _ fun j => G.map (g j) : Fan fun j => G.obj (f j))) :
    IsLimit (Fan.mk P g) 
goal: CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.Fan.mk P g)

full_name: CategoryTheory.Limits.isLimitOfHasProductOfPreservesLimit
code: /--
If `G` preserves products and `C` has them, then the fan constructed of the mapped projection of a
product is a limit.
-/
def isLimitOfHasProductOfPreservesLimit [PreservesLimit (Discrete.functor f) G] :
    IsLimit (Fan.mk _ fun j : J => G.map (Pi.π f j) : Fan fun j => G.obj (f j)) 
goal: CategoryTheory.Limits.IsLimit
  (CategoryTheory.Limits.Fan.mk (G.obj (∏ᶜ f)) fun j => G.map (CategoryTheory.Limits.Pi.π f j))

full_name: CategoryTheory.Limits.PreservesProduct.ofIsoComparison
code: /-- If `pi_comparison G f` is an isomorphism, then `G` preserves the limit of `f`. -/
def PreservesProduct.ofIsoComparison [i : IsIso (piComparison G f)] :
    PreservesLimit (Discrete.functor f) G 
goal: CategoryTheory.Limits.PreservesLimit (CategoryTheory.Discrete.functor f) G

full_name: CategoryTheory.Limits.PreservesProduct.iso
code: /--
If `G` preserves limits, we have an isomorphism from the image of a product to the product of the
images.
-/
def PreservesProduct.iso : G.obj (∏ᶜ f) ≅ ∏ᶜ fun j => G.obj (f j) 
goal: G.obj (∏ᶜ f) ≅ ∏ᶜ fun j => G.obj (f j)

full_name: CategoryTheory.Limits.PreservesProduct.iso_hom
code: @[simp]
theorem PreservesProduct.iso_hom : (PreservesProduct.iso G f).hom = piComparison G f 
goal: (CategoryTheory.Limits.PreservesProduct.iso G f).hom = CategoryTheory.Limits.piComparison G f

full_name: CategoryTheory.Limits.instIsIsoPiComparison
code: instance : IsIso (piComparison G f) 
goal: CategoryTheory.IsIso (CategoryTheory.Limits.piComparison G f)

full_name: CategoryTheory.Limits.isColimitMapCoconeCofanMkEquiv
code: /-- The map of a cofan is a colimit iff the cofan consisting of the mapped morphisms is a colimit.
This essentially lets us commute `Cofan.mk` with `Functor.mapCocone`.
-/
def isColimitMapCoconeCofanMkEquiv {P : C} (g : ∀ j, f j ⟶ P) :
    IsColimit (Functor.mapCocone G (Cofan.mk P g)) ≃
      IsColimit (Cofan.mk _ fun j => G.map (g j) : Cofan fun j => G.obj (f j)) 
goal: CategoryTheory.Limits.IsColimit (G.mapCocone (CategoryTheory.Limits.Cofan.mk P g)) ≃
  CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofan.mk (G.obj P) fun j => G.map (g j))

full_name: CategoryTheory.Limits.isColimitCofanMkObjOfIsColimit
code: /-- The property of preserving coproducts expressed in terms of cofans. -/
def isColimitCofanMkObjOfIsColimit [PreservesColimit (Discrete.functor f) G] {P : C}
    (g : ∀ j, f j ⟶ P) (t : IsColimit (Cofan.mk _ g)) :
    IsColimit (Cofan.mk (G.obj P) fun j => G.map (g j) : Cofan fun j => G.obj (f j)) 
goal: CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofan.mk (G.obj P) fun j => G.map (g j))

full_name: CategoryTheory.Limits.isColimitOfIsColimitCofanMkObj
code: /-- The property of reflecting coproducts expressed in terms of cofans. -/
def isColimitOfIsColimitCofanMkObj [ReflectsColimit (Discrete.functor f) G] {P : C}
    (g : ∀ j, f j ⟶ P)
    (t : IsColimit (Cofan.mk _ fun j => G.map (g j) : Cofan fun j => G.obj (f j))) :
    IsColimit (Cofan.mk P g) 
goal: CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.Cofan.mk P g)

full_name: CategoryTheory.Limits.isColimitOfHasCoproductOfPreservesColimit
code: /-- If `G` preserves coproducts and `C` has them,
then the cofan constructed of the mapped inclusion of a coproduct is a colimit.
-/
def isColimitOfHasCoproductOfPreservesColimit [PreservesColimit (Discrete.functor f) G] :
    IsColimit (Cofan.mk _ fun j : J => G.map (Sigma.ι f j) : Cofan fun j => G.obj (f j)) 
goal: CategoryTheory.Limits.IsColimit
  (CategoryTheory.Limits.Cofan.mk (G.obj (∐ f)) fun j => G.map (CategoryTheory.Limits.Sigma.ι f j))

full_name: CategoryTheory.Limits.PreservesCoproduct.ofIsoComparison
code: /-- If `sigma_comparison G f` is an isomorphism, then `G` preserves the colimit of `f`. -/
def PreservesCoproduct.ofIsoComparison [i : IsIso (sigmaComparison G f)] :
    PreservesColimit (Discrete.functor f) G 
goal: CategoryTheory.Limits.PreservesColimit (CategoryTheory.Discrete.functor f) G

full_name: CategoryTheory.Limits.PreservesCoproduct.iso
code: /-- If `G` preserves colimits,
we have an isomorphism from the image of a coproduct to the coproduct of the images.
-/
def PreservesCoproduct.iso : G.obj (∐ f) ≅ ∐ fun j => G.obj (f j) 
goal: G.obj (∐ f) ≅ ∐ fun j => G.obj (f j)

full_name: CategoryTheory.Limits.PreservesCoproduct.inv_hom
code: @[simp]
theorem PreservesCoproduct.inv_hom : (PreservesCoproduct.iso G f).inv = sigmaComparison G f 
goal: (CategoryTheory.Limits.PreservesCoproduct.iso G f).inv = CategoryTheory.Limits.sigmaComparison G f

full_name: CategoryTheory.Limits.instIsIsoSigmaComparison
code: instance : IsIso (sigmaComparison G f) 
goal: CategoryTheory.IsIso (CategoryTheory.Limits.sigmaComparison G f)