File: Mathlib/CategoryTheory/SmallObject/Construction.lean

full_name: CategoryTheory.SmallObject.FunctorObjIndex.i
code: /-- Given a family of morphisms `f i : A i ⟶ B i` and a morphism `πX : X ⟶ S`,
this type parametrizes the commutative squares with a morphism `f i` on the left
and `πX` in the right. -/
structure FunctorObjIndex where
  /-- an element in the index type -/
  i : I
  /-- the top morphism in the square -/
  t : A i ⟶ X
  /-- the bottom morphism in the square -/
  b : B i ⟶ S
  w : t ≫ πX = f i ≫ b
goal: I

full_name: CategoryTheory.SmallObject.FunctorObjIndex
code: /-- Given a family of morphisms `f i : A i ⟶ B i` and a morphism `πX : X ⟶ S`,
this type parametrizes the commutative squares with a morphism `f i` on the left
and `πX` in the right. -/
structure FunctorObjIndex where
  /-- an element in the index type -/
  i : I
  /-- the top morphism in the square -/
  t : A i ⟶ X
  /-- the bottom morphism in the square -/
  b : B i ⟶ S
  w : t ≫ πX = f i ≫ b
goal: Type (max v w)

full_name: CategoryTheory.SmallObject.FunctorObjIndex.t
code: /-- Given a family of morphisms `f i : A i ⟶ B i` and a morphism `πX : X ⟶ S`,
this type parametrizes the commutative squares with a morphism `f i` on the left
and `πX` in the right. -/
structure FunctorObjIndex where
  /-- an element in the index type -/
  i : I
  /-- the top morphism in the square -/
  t : A i ⟶ X
  /-- the bottom morphism in the square -/
  b : B i ⟶ S
  w : t ≫ πX = f i ≫ b
goal: A self.i ⟶ X

full_name: CategoryTheory.SmallObject.FunctorObjIndex.w
code: /-- Given a family of morphisms `f i : A i ⟶ B i` and a morphism `πX : X ⟶ S`,
this type parametrizes the commutative squares with a morphism `f i` on the left
and `πX` in the right. -/
structure FunctorObjIndex where
  /-- an element in the index type -/
  i : I
  /-- the top morphism in the square -/
  t : A i ⟶ X
  /-- the bottom morphism in the square -/
  b : B i ⟶ S
  w : t ≫ πX = f i ≫ b
goal: CategoryTheory.CategoryStruct.comp self.t πX = CategoryTheory.CategoryStruct.comp (f self.i) self.b

full_name: CategoryTheory.SmallObject.FunctorObjIndex.b
code: /-- Given a family of morphisms `f i : A i ⟶ B i` and a morphism `πX : X ⟶ S`,
this type parametrizes the commutative squares with a morphism `f i` on the left
and `πX` in the right. -/
structure FunctorObjIndex where
  /-- an element in the index type -/
  i : I
  /-- the top morphism in the square -/
  t : A i ⟶ X
  /-- the bottom morphism in the square -/
  b : B i ⟶ S
  w : t ≫ πX = f i ≫ b
goal: B self.i ⟶ S

full_name: CategoryTheory.SmallObject.functorObjSrcFamily
code: /-- The family of objects `A x.i` parametrized by `x : FunctorObjIndex f πX`. -/
abbrev functorObjSrcFamily (x : FunctorObjIndex f πX) : C 
goal: C

full_name: CategoryTheory.SmallObject.functorObjTgtFamily
code: /-- The family of objects `B x.i` parametrized by `x : FunctorObjIndex f πX`. -/
abbrev functorObjTgtFamily (x : FunctorObjIndex f πX) : C 
goal: C

full_name: CategoryTheory.SmallObject.functorObjLeftFamily
code: /-- The family of the morphisms `f x.i : A x.i ⟶ B x.i`
parametrized by `x : FunctorObjIndex f πX`. -/
abbrev functorObjLeftFamily (x : FunctorObjIndex f πX) :
    functorObjSrcFamily f πX x ⟶ functorObjTgtFamily f πX x 
goal: CategoryTheory.SmallObject.functorObjSrcFamily f πX x ⟶ CategoryTheory.SmallObject.functorObjTgtFamily f πX x

full_name: CategoryTheory.SmallObject.functorObjTop
code: /-- The top morphism in the pushout square in the definition of `pushoutObj f πX`. -/
noncomputable abbrev functorObjTop : ∐ functorObjSrcFamily f πX ⟶ X 
goal: ∐ CategoryTheory.SmallObject.functorObjSrcFamily f πX ⟶ X

full_name: CategoryTheory.SmallObject.functorObjLeft
code: /-- The left morphism in the pushout square in the definition of `pushoutObj f πX`. -/
noncomputable abbrev functorObjLeft :
    ∐ functorObjSrcFamily f πX ⟶ ∐ functorObjTgtFamily f πX 
goal: ∐ CategoryTheory.SmallObject.functorObjSrcFamily f πX ⟶ ∐ CategoryTheory.SmallObject.functorObjTgtFamily f πX

full_name: CategoryTheory.SmallObject.functorObj
code: /-- The functor `SmallObject.functor f S : Over S ⥤ Over S` that is part of
the small object argument for a family of morphisms `f`, on an object given
as a morphism `πX : X ⟶ S`. -/
noncomputable abbrev functorObj : C 
goal: C

full_name: CategoryTheory.SmallObject.ιFunctorObj
code: /-- The canonical morphism `X ⟶ functorObj f πX`. -/
noncomputable abbrev ιFunctorObj : X ⟶ functorObj f πX 
goal: X ⟶ CategoryTheory.SmallObject.functorObj f πX

full_name: CategoryTheory.SmallObject.ρFunctorObj
code: /-- The canonical morphism `∐ (functorObjTgtFamily f πX) ⟶ functorObj f πX`. -/
noncomputable abbrev ρFunctorObj : ∐ functorObjTgtFamily f πX ⟶ functorObj f πX 
goal: ∐ CategoryTheory.SmallObject.functorObjTgtFamily f πX ⟶ CategoryTheory.SmallObject.functorObj f πX

full_name: CategoryTheory.SmallObject.functorObj_comm
code: @[reassoc]
lemma functorObj_comm :
    functorObjTop f πX ≫ ιFunctorObj f πX = functorObjLeft f πX ≫ ρFunctorObj f πX 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.functorObjTop f πX)
    (CategoryTheory.SmallObject.ιFunctorObj f πX) =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.functorObjLeft f πX)
    (CategoryTheory.SmallObject.ρFunctorObj f πX)

full_name: CategoryTheory.SmallObject.FunctorObjIndex.comm
code: @[reassoc]
lemma FunctorObjIndex.comm (x : FunctorObjIndex f πX) :
    f x.i ≫ Sigma.ι (functorObjTgtFamily f πX) x ≫ ρFunctorObj f πX = x.t ≫ ιFunctorObj f πX 
goal: CategoryTheory.CategoryStruct.comp (f x.i)
    (CategoryTheory.CategoryStruct.comp
      (CategoryTheory.Limits.Sigma.ι (CategoryTheory.SmallObject.functorObjTgtFamily f πX) x)
      (CategoryTheory.SmallObject.ρFunctorObj f πX)) =
  CategoryTheory.CategoryStruct.comp x.t (CategoryTheory.SmallObject.ιFunctorObj f πX)

full_name: CategoryTheory.SmallObject.π'FunctorObj
code: /-- The canonical projection on the base object. -/
noncomputable abbrev π'FunctorObj : ∐ functorObjTgtFamily f πX ⟶ S 
goal: ∐ CategoryTheory.SmallObject.functorObjTgtFamily f πX ⟶ S

full_name: CategoryTheory.SmallObject.πFunctorObj
code: /-- The canonical projection on the base object. -/
noncomputable def πFunctorObj : functorObj f πX ⟶ S 
goal: CategoryTheory.SmallObject.functorObj f πX ⟶ S

full_name: CategoryTheory.SmallObject.ρFunctorObj_π
code: @[reassoc (attr := simp)]
lemma ρFunctorObj_π : ρFunctorObj f πX ≫ πFunctorObj f πX = π'FunctorObj f πX 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.ρFunctorObj f πX)
    (CategoryTheory.SmallObject.πFunctorObj f πX) =
  CategoryTheory.SmallObject.π'FunctorObj f πX

full_name: CategoryTheory.SmallObject.ιFunctorObj_πFunctorObj
code: @[reassoc (attr := simp)]
lemma ιFunctorObj_πFunctorObj : ιFunctorObj f πX ≫ πFunctorObj f πX = πX 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.ιFunctorObj f πX)
    (CategoryTheory.SmallObject.πFunctorObj f πX) =
  πX

full_name: CategoryTheory.SmallObject.functorMapSrc
code: /-- The canonical morphism `∐ (functorObjSrcFamily f πX) ⟶ ∐ (functorObjSrcFamily f πY)`
induced by a morphism in `φ : X ⟶ Y` such that `φ ≫ πX = πY`. -/
noncomputable def functorMapSrc  (hφ : φ ≫ πY = πX) :
    ∐ (functorObjSrcFamily f πX) ⟶ ∐ functorObjSrcFamily f πY 
goal: ∐ CategoryTheory.SmallObject.functorObjSrcFamily f πX ⟶ ∐ CategoryTheory.SmallObject.functorObjSrcFamily f πY

full_name: CategoryTheory.SmallObject.ι_functorMapSrc
code: @[reassoc]
lemma ι_functorMapSrc (i : I) (t : A i ⟶ X) (b : B i ⟶ S) (w : t ≫ πX = f i ≫ b)
    (t' : A i ⟶ Y) (fac : t ≫ φ = t') :
    Sigma.ι _ (FunctorObjIndex.mk i t b w) ≫ functorMapSrc f πX πY φ hφ =
      Sigma.ι (functorObjSrcFamily f πY)
        (FunctorObjIndex.mk i t' b (by rw [← w, ← fac, assoc, hφ])) 
goal: CategoryTheory.CategoryStruct.comp
    (CategoryTheory.Limits.Sigma.ι (CategoryTheory.SmallObject.functorObjSrcFamily f πX)
      { i := i, t := t, b := b, w := w })
    (CategoryTheory.SmallObject.functorMapSrc f πX πY φ hφ) =
  CategoryTheory.Limits.Sigma.ι (CategoryTheory.SmallObject.functorObjSrcFamily f πY)
    { i := i, t := t', b := b, w := ⋯ }

full_name: CategoryTheory.SmallObject.functorMapSrc_functorObjTop
code: @[reassoc (attr := simp)]
lemma functorMapSrc_functorObjTop :
    functorMapSrc f πX πY φ hφ ≫ functorObjTop f πY = functorObjTop f πX ≫ φ 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.functorMapSrc f πX πY φ hφ)
    (CategoryTheory.SmallObject.functorObjTop f πY) =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.functorObjTop f πX) φ

full_name: CategoryTheory.SmallObject.functorMapTgt
code: /-- The canonical morphism `∐ functorObjTgtFamily f πX ⟶ ∐ functorObjTgtFamily f πY`
induced by a morphism in `φ : X ⟶ Y` such that `φ ≫ πX = πY`. -/
noncomputable def functorMapTgt  (hφ : φ ≫ πY = πX) :
    ∐ functorObjTgtFamily f πX ⟶ ∐ functorObjTgtFamily f πY 
goal: ∐ CategoryTheory.SmallObject.functorObjTgtFamily f πX ⟶ ∐ CategoryTheory.SmallObject.functorObjTgtFamily f πY

full_name: CategoryTheory.SmallObject.ι_functorMapTgt
code: @[reassoc]
lemma ι_functorMapTgt (i : I) (t : A i ⟶ X) (b : B i ⟶ S) (w : t ≫ πX = f i ≫ b)
    (t' : A i ⟶ Y) (fac : t ≫ φ = t') :
    Sigma.ι _ (FunctorObjIndex.mk i t b w) ≫ functorMapTgt f πX πY φ hφ =
      Sigma.ι (functorObjTgtFamily f πY)
        (FunctorObjIndex.mk i t' b (by rw [← w, ← fac, assoc, hφ])) 
goal: CategoryTheory.CategoryStruct.comp
    (CategoryTheory.Limits.Sigma.ι (CategoryTheory.SmallObject.functorObjTgtFamily f πX)
      { i := i, t := t, b := b, w := w })
    (CategoryTheory.SmallObject.functorMapTgt f πX πY φ hφ) =
  CategoryTheory.Limits.Sigma.ι (CategoryTheory.SmallObject.functorObjTgtFamily f πY)
    { i := i, t := t', b := b, w := ⋯ }

full_name: CategoryTheory.SmallObject.functorMap_comm
code: lemma functorMap_comm :
    functorObjLeft f πX ≫ functorMapTgt f πX πY φ hφ =
      functorMapSrc f πX πY φ hφ ≫ functorObjLeft f πY 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.functorObjLeft f πX)
    (CategoryTheory.SmallObject.functorMapTgt f πX πY φ hφ) =
  CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.functorMapSrc f πX πY φ hφ)
    (CategoryTheory.SmallObject.functorObjLeft f πY)

full_name: CategoryTheory.SmallObject.functorMap
code: /-- The functor `SmallObject.functor f S : Over S ⥤ Over S` that is part of
the small object argument for a family of morphisms `f`, on morphisms. -/
noncomputable def functorMap : functorObj f πX ⟶ functorObj f πY 
goal: CategoryTheory.SmallObject.functorObj f πX ⟶ CategoryTheory.SmallObject.functorObj f πY

full_name: CategoryTheory.SmallObject.functorMap_π
code: @[reassoc (attr := simp)]
lemma functorMap_π : functorMap f πX πY φ hφ ≫ πFunctorObj f πY = πFunctorObj f πX 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.functorMap f πX πY φ hφ)
    (CategoryTheory.SmallObject.πFunctorObj f πY) =
  CategoryTheory.SmallObject.πFunctorObj f πX

full_name: CategoryTheory.SmallObject.functorMap_id
code: @[simp]
lemma functorMap_id : functorMap f πX πX (𝟙 X) (by simp) = 𝟙 _ 
goal: CategoryTheory.SmallObject.functorMap f πX πX (CategoryTheory.CategoryStruct.id X) ⋯ =
  CategoryTheory.CategoryStruct.id (CategoryTheory.SmallObject.functorObj f πX)

full_name: CategoryTheory.SmallObject.ιFunctorObj_naturality
code: @[reassoc (attr := simp)]
lemma ιFunctorObj_naturality :
    ιFunctorObj f πX ≫ functorMap f πX πY φ hφ = φ ≫ ιFunctorObj f πY 
goal: CategoryTheory.CategoryStruct.comp (CategoryTheory.SmallObject.ιFunctorObj f πX)
    (CategoryTheory.SmallObject.functorMap f πX πY φ hφ) =
  CategoryTheory.CategoryStruct.comp φ (CategoryTheory.SmallObject.ιFunctorObj f πY)

full_name: CategoryTheory.SmallObject.ιFunctorObj_extension
code: lemma ιFunctorObj_extension {i : I} (t : A i ⟶ X) (b : B i ⟶ S)
    (sq : CommSq t (f i) πX b) :
    ∃ (l : B i ⟶ functorObj f πX), f i ≫ l = t ≫ ιFunctorObj f πX ∧
      l ≫ πFunctorObj f πX = b 
goal: ∃ l,
  CategoryTheory.CategoryStruct.comp (f i) l =
      CategoryTheory.CategoryStruct.comp t (CategoryTheory.SmallObject.ιFunctorObj f πX) ∧
    CategoryTheory.CategoryStruct.comp l (CategoryTheory.SmallObject.πFunctorObj f πX) = b

full_name: CategoryTheory.SmallObject.functor_obj
code: /-- The functor `Over S ⥤ Over S` that is constructed in order to apply the small
object argument to a family of morphisms `f i : A i ⟶ B i`, see the introduction
of the file `Mathlib.CategoryTheory.SmallObject.Construction` -/
@[simps! obj map]
noncomputable def functor : Over S ⥤ Over S 
goal: (CategoryTheory.SmallObject.functor f S).obj π = CategoryTheory.Over.mk (CategoryTheory.SmallObject.πFunctorObj f π.hom)

full_name: CategoryTheory.SmallObject.functor
code: /-- The functor `Over S ⥤ Over S` that is constructed in order to apply the small
object argument to a family of morphisms `f i : A i ⟶ B i`, see the introduction
of the file `Mathlib.CategoryTheory.SmallObject.Construction` -/
@[simps! obj map]
noncomputable def functor : Over S ⥤ Over S 
goal: CategoryTheory.Functor (CategoryTheory.Over S) (CategoryTheory.Over S)

full_name: CategoryTheory.SmallObject.functor_map
code: /-- The functor `Over S ⥤ Over S` that is constructed in order to apply the small
object argument to a family of morphisms `f i : A i ⟶ B i`, see the introduction
of the file `Mathlib.CategoryTheory.SmallObject.Construction` -/
@[simps! obj map]
noncomputable def functor : Over S ⥤ Over S 
goal: (CategoryTheory.SmallObject.functor f S).map φ =
  CategoryTheory.Over.homMk (CategoryTheory.SmallObject.functorMap f π₁.hom π₂.hom φ.left ⋯) ⋯

full_name: CategoryTheory.SmallObject.ε_app
code: /-- The canonical natural transformation `𝟭 (Over S) ⟶ functor f S`. -/
@[simps! app]
noncomputable def ε : 𝟭 (Over S) ⟶ functor f S 
goal: (CategoryTheory.SmallObject.ε f S).app w = CategoryTheory.Over.homMk (CategoryTheory.SmallObject.ιFunctorObj f w.hom) ⋯

full_name: CategoryTheory.SmallObject.ε
code: /-- The canonical natural transformation `𝟭 (Over S) ⟶ functor f S`. -/
@[simps! app]
noncomputable def ε : 𝟭 (Over S) ⟶ functor f S 
goal: CategoryTheory.Functor.id (CategoryTheory.Over S) ⟶ CategoryTheory.SmallObject.functor f S