File: Mathlib/Algebra/Category/Grp/FilteredColimits.lean

full_name: AddGrp.FilteredColimits.G
code: /-- The colimit of `F ⋙ forget₂ Grp MonCat` in the category `MonCat`.
In the following, we will show that this has the structure of a group.
-/
@[to_additive
  "The colimit of `F ⋙ forget₂ AddGrp AddMonCat` in the category `AddMonCat`.
  In the following, we will show that this has the structure of an additive group."]
noncomputable abbrev G : MonCat 
goal: AddMonCat

full_name: Grp.FilteredColimits.G
code: /-- The colimit of `F ⋙ forget₂ Grp MonCat` in the category `MonCat`.
In the following, we will show that this has the structure of a group.
-/
@[to_additive
  "The colimit of `F ⋙ forget₂ AddGrp AddMonCat` in the category `AddMonCat`.
  In the following, we will show that this has the structure of an additive group."]
noncomputable abbrev G : MonCat 
goal: MonCat

full_name: Grp.FilteredColimits.G.mk
code: /-- The canonical projection into the colimit, as a quotient type. -/
@[to_additive "The canonical projection into the colimit, as a quotient type."]
abbrev G.mk : (Σ j, F.obj j) → G.{v, u} F 
goal: (j : J) × ↑(F.obj j) → ↑(Grp.FilteredColimits.G F)

full_name: AddGrp.FilteredColimits.G.mk
code: /-- The canonical projection into the colimit, as a quotient type. -/
@[to_additive "The canonical projection into the colimit, as a quotient type."]
abbrev G.mk : (Σ j, F.obj j) → G.{v, u} F 
goal: (j : J) × ↑(F.obj j) → ↑(AddGrp.FilteredColimits.G F)

full_name: Grp.FilteredColimits.G.mk_eq
code: @[to_additive]
theorem G.mk_eq (x y : Σ j, F.obj j)
    (h : ∃ (k : J) (f : x.1 ⟶ k) (g : y.1 ⟶ k), F.map f x.2 = F.map g y.2) :
    G.mk.{v, u} F x = G.mk F y 
goal: Grp.FilteredColimits.G.mk F x = Grp.FilteredColimits.G.mk F y

full_name: AddGrp.FilteredColimits.G.mk_eq
code: @[to_additive]
theorem G.mk_eq (x y : Σ j, F.obj j)
    (h : ∃ (k : J) (f : x.1 ⟶ k) (g : y.1 ⟶ k), F.map f x.2 = F.map g y.2) :
    G.mk.{v, u} F x = G.mk F y 
goal: AddGrp.FilteredColimits.G.mk F x = AddGrp.FilteredColimits.G.mk F y

full_name: AddGrp.FilteredColimits.colimitNegAux
code: /-- The "unlifted" version of taking inverses in the colimit. -/
@[to_additive "The \"unlifted\" version of negation in the colimit."]
def colimitInvAux (x : Σ j, F.obj j) : G.{v, u} F 
goal: ↑(AddGrp.FilteredColimits.G F)

full_name: Grp.FilteredColimits.colimitInvAux
code: /-- The "unlifted" version of taking inverses in the colimit. -/
@[to_additive "The \"unlifted\" version of negation in the colimit."]
def colimitInvAux (x : Σ j, F.obj j) : G.{v, u} F 
goal: ↑(Grp.FilteredColimits.G F)

full_name: Grp.FilteredColimits.colimitInvAux_eq_of_rel
code: @[to_additive]
theorem colimitInvAux_eq_of_rel (x y : Σ j, F.obj j)
    (h : Types.FilteredColimit.Rel (F ⋙ forget Grp) x y) :
    colimitInvAux.{v, u} F x = colimitInvAux F y 
goal: Grp.FilteredColimits.colimitInvAux F x = Grp.FilteredColimits.colimitInvAux F y

full_name: AddGrp.FilteredColimits.colimitNegAux_eq_of_rel
code: @[to_additive]
theorem colimitInvAux_eq_of_rel (x y : Σ j, F.obj j)
    (h : Types.FilteredColimit.Rel (F ⋙ forget Grp) x y) :
    colimitInvAux.{v, u} F x = colimitInvAux F y 
goal: AddGrp.FilteredColimits.colimitNegAux F x = AddGrp.FilteredColimits.colimitNegAux F y

full_name: Grp.FilteredColimits.colimitInv
code: /-- Taking inverses in the colimit. See also `colimitInvAux`. -/
@[to_additive "Negation in the colimit. See also `colimitNegAux`."]
instance colimitInv : Inv (G.{v, u} F) 
goal: Inv ↑(Grp.FilteredColimits.G F)

full_name: AddGrp.FilteredColimits.colimitNeg
code: /-- Taking inverses in the colimit. See also `colimitInvAux`. -/
@[to_additive "Negation in the colimit. See also `colimitNegAux`."]
instance colimitInv : Inv (G.{v, u} F) 
goal: Neg ↑(AddGrp.FilteredColimits.G F)

full_name: Grp.FilteredColimits.colimit_inv_mk_eq
code: @[to_additive (attr := simp)]
theorem colimit_inv_mk_eq (x : Σ j, F.obj j) : (G.mk.{v, u} F x)⁻¹ = G.mk F ⟨x.1, x.2⁻¹⟩ 
goal: (Grp.FilteredColimits.G.mk F x)⁻¹ = Grp.FilteredColimits.G.mk F ⟨x.fst, x.snd⁻¹⟩

full_name: AddGrp.FilteredColimits.colimit_neg_mk_eq
code: @[to_additive (attr := simp)]
theorem colimit_inv_mk_eq (x : Σ j, F.obj j) : (G.mk.{v, u} F x)⁻¹ = G.mk F ⟨x.1, x.2⁻¹⟩ 
goal: -AddGrp.FilteredColimits.G.mk F x = AddGrp.FilteredColimits.G.mk F ⟨x.fst, -x.snd⟩

full_name: Grp.FilteredColimits.colimitGroup
code: @[to_additive]
noncomputable instance colimitGroup : Group (G.{v, u} F) 
goal: Group ↑(Grp.FilteredColimits.G F)

full_name: AddGrp.FilteredColimits.colimitAddGroup
code: @[to_additive]
noncomputable instance colimitGroup : Group (G.{v, u} F) 
goal: AddGroup ↑(AddGrp.FilteredColimits.G F)

full_name: Grp.FilteredColimits.colimit
code: /-- The bundled group giving the filtered colimit of a diagram. -/
@[to_additive "The bundled additive group giving the filtered colimit of a diagram."]
noncomputable def colimit : Grp.{max v u} 
goal: Grp

full_name: AddGrp.FilteredColimits.colimit
code: /-- The bundled group giving the filtered colimit of a diagram. -/
@[to_additive "The bundled additive group giving the filtered colimit of a diagram."]
noncomputable def colimit : Grp.{max v u} 
goal: AddGrp

full_name: Grp.FilteredColimits.colimitCocone
code: /-- The cocone over the proposed colimit group. -/
@[to_additive "The cocone over the proposed colimit additive group."]
noncomputable def colimitCocone : Cocone F 
goal: CategoryTheory.Limits.Cocone F

full_name: AddGrp.FilteredColimits.colimitCocone
code: /-- The cocone over the proposed colimit group. -/
@[to_additive "The cocone over the proposed colimit additive group."]
noncomputable def colimitCocone : Cocone F 
goal: CategoryTheory.Limits.Cocone F

full_name: Grp.FilteredColimits.colimitCoconeIsColimit
code: /-- The proposed colimit cocone is a colimit in `Grp`. -/
@[to_additive "The proposed colimit cocone is a colimit in `AddGroup`."]
def colimitCoconeIsColimit : IsColimit (colimitCocone.{v, u} F) 
goal: CategoryTheory.Limits.IsColimit (Grp.FilteredColimits.colimitCocone F)

full_name: AddGrp.FilteredColimits.colimitCoconeIsColimit
code: /-- The proposed colimit cocone is a colimit in `Grp`. -/
@[to_additive "The proposed colimit cocone is a colimit in `AddGroup`."]
def colimitCoconeIsColimit : IsColimit (colimitCocone.{v, u} F) 
goal: CategoryTheory.Limits.IsColimit (AddGrp.FilteredColimits.colimitCocone F)

full_name: AddGrp.FilteredColimits.forget₂AddMonPreservesFilteredColimits
code: @[to_additive forget₂AddMonPreservesFilteredColimits]
noncomputable instance forget₂MonPreservesFilteredColimits :
    PreservesFilteredColimits.{u} (forget₂ Grp.{u} MonCat.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget₂ AddGrp AddMonCat)

full_name: Grp.FilteredColimits.forget₂MonPreservesFilteredColimits
code: @[to_additive forget₂AddMonPreservesFilteredColimits]
noncomputable instance forget₂MonPreservesFilteredColimits :
    PreservesFilteredColimits.{u} (forget₂ Grp.{u} MonCat.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget₂ Grp MonCat)

full_name: AddGrp.FilteredColimits.forgetPreservesFilteredColimits
code: @[to_additive]
noncomputable instance forgetPreservesFilteredColimits :
    PreservesFilteredColimits (forget Grp.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget AddGrp)

full_name: Grp.FilteredColimits.forgetPreservesFilteredColimits
code: @[to_additive]
noncomputable instance forgetPreservesFilteredColimits :
    PreservesFilteredColimits (forget Grp.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget Grp)

full_name: AddCommGrp.FilteredColimits.G
code: /-- The colimit of `F ⋙ forget₂ CommGrp Grp` in the category `Grp`.
In the following, we will show that this has the structure of a _commutative_ group.
-/
@[to_additive
  "The colimit of `F ⋙ forget₂ AddCommGrp AddGrp` in the category `AddGrp`.
  In the following, we will show that this has the structure of a _commutative_ additive group."]
noncomputable abbrev G : Grp.{max v u} 
goal: AddGrp

full_name: CommGrp.FilteredColimits.G
code: /-- The colimit of `F ⋙ forget₂ CommGrp Grp` in the category `Grp`.
In the following, we will show that this has the structure of a _commutative_ group.
-/
@[to_additive
  "The colimit of `F ⋙ forget₂ AddCommGrp AddGrp` in the category `AddGrp`.
  In the following, we will show that this has the structure of a _commutative_ additive group."]
noncomputable abbrev G : Grp.{max v u} 
goal: Grp

full_name: CommGrp.FilteredColimits.colimitCommGroup
code: @[to_additive]
noncomputable instance colimitCommGroup : CommGroup.{max v u} (G.{v, u} F) 
goal: CommGroup ↑(CommGrp.FilteredColimits.G F)

full_name: AddCommGrp.FilteredColimits.colimitAddCommGroup
code: @[to_additive]
noncomputable instance colimitCommGroup : CommGroup.{max v u} (G.{v, u} F) 
goal: AddCommGroup ↑(AddCommGrp.FilteredColimits.G F)

full_name: AddCommGrp.FilteredColimits.colimit
code: /-- The bundled commutative group giving the filtered colimit of a diagram. -/
@[to_additive "The bundled additive commutative group giving the filtered colimit of a diagram."]
noncomputable def colimit : CommGrp 
goal: AddCommGrp

full_name: CommGrp.FilteredColimits.colimit
code: /-- The bundled commutative group giving the filtered colimit of a diagram. -/
@[to_additive "The bundled additive commutative group giving the filtered colimit of a diagram."]
noncomputable def colimit : CommGrp 
goal: CommGrp

full_name: AddCommGrp.FilteredColimits.colimitCocone
code: /-- The cocone over the proposed colimit commutative group. -/
@[to_additive "The cocone over the proposed colimit additive commutative group."]
noncomputable def colimitCocone : Cocone F 
goal: CategoryTheory.Limits.Cocone F

full_name: CommGrp.FilteredColimits.colimitCocone
code: /-- The cocone over the proposed colimit commutative group. -/
@[to_additive "The cocone over the proposed colimit additive commutative group."]
noncomputable def colimitCocone : Cocone F 
goal: CategoryTheory.Limits.Cocone F

full_name: CommGrp.FilteredColimits.colimitCoconeIsColimit
code: /-- The proposed colimit cocone is a colimit in `CommGrp`. -/
@[to_additive "The proposed colimit cocone is a colimit in `AddCommGroup`."]
def colimitCoconeIsColimit : IsColimit (colimitCocone.{v, u} F) 
goal: CategoryTheory.Limits.IsColimit (CommGrp.FilteredColimits.colimitCocone F)

full_name: AddCommGrp.FilteredColimits.colimitCoconeIsColimit
code: /-- The proposed colimit cocone is a colimit in `CommGrp`. -/
@[to_additive "The proposed colimit cocone is a colimit in `AddCommGroup`."]
def colimitCoconeIsColimit : IsColimit (colimitCocone.{v, u} F) 
goal: CategoryTheory.Limits.IsColimit (AddCommGrp.FilteredColimits.colimitCocone F)

full_name: AddCommGrp.FilteredColimits.forget₂AddGroupPreservesFilteredColimits
code: @[to_additive]
noncomputable instance forget₂GroupPreservesFilteredColimits :
    PreservesFilteredColimits (forget₂ CommGrp Grp.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget₂ AddCommGrp AddGrp)

full_name: CommGrp.FilteredColimits.forget₂GroupPreservesFilteredColimits
code: @[to_additive]
noncomputable instance forget₂GroupPreservesFilteredColimits :
    PreservesFilteredColimits (forget₂ CommGrp Grp.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget₂ CommGrp Grp)

full_name: AddCommGrp.FilteredColimits.forgetPreservesFilteredColimits
code: @[to_additive]
noncomputable instance forgetPreservesFilteredColimits :
    PreservesFilteredColimits (forget CommGrp.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget AddCommGrp)

full_name: CommGrp.FilteredColimits.forgetPreservesFilteredColimits
code: @[to_additive]
noncomputable instance forgetPreservesFilteredColimits :
    PreservesFilteredColimits (forget CommGrp.{u}) 
goal: CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget CommGrp)