@@ -20,7 +20,7 @@ particular, this implies that `forget Group` preserves filtered colimits. Simila
2020
2121-/
2222
23- universe v
23+ universes v u
2424
2525noncomputable theory
2626open_locale classical
@@ -37,15 +37,15 @@ open Mon.filtered_colimits (colimit_one_eq colimit_mul_mk_eq)
3737
3838-- We use parameters here, mainly so we can have the abbreviations `G` and `G.mk` below, without
3939-- passing around `F` all the time.
40- parameters {J : Type v} [small_category J] [is_filtered J] (F : J ⥤ Group.{v })
40+ parameters {J : Type v} [small_category J] [is_filtered J] (F : J ⥤ Group.{max v u })
4141
4242/--
4343The colimit of `F ⋙ forget₂ Group Mon` in the category `Mon`.
4444In the following, we will show that this has the structure of a group.
4545-/
4646@[to_additive " The colimit of `F ⋙ forget₂ AddGroup AddMon` in the category `AddMon`.
4747In the following, we will show that this has the structure of an additive group." ]
48- abbreviation G : Mon := Mon.filtered_colimits.colimit (F ⋙ forget₂ Group Mon)
48+ abbreviation G : Mon := Mon.filtered_colimits.colimit (F ⋙ forget₂ Group Mon.{max v u} )
4949
5050/-- The canonical projection into the colimit, as a quotient type. -/
5151@[to_additive " The canonical projection into the colimit, as a quotient type." ]
@@ -93,8 +93,9 @@ instance colimit_group : group G :=
9393{ mul_left_inv := λ x, begin
9494 apply quot.induction_on x, clear x, intro x,
9595 cases x with j x,
96- erw [colimit_inv_mk_eq, colimit_mul_mk_eq (F ⋙ forget₂ Group Mon) ⟨j, _⟩ ⟨j, _⟩ j (𝟙 j) (𝟙 j),
97- colimit_one_eq (F ⋙ forget₂ Group Mon) j],
96+ erw [colimit_inv_mk_eq,
97+ colimit_mul_mk_eq (F ⋙ forget₂ Group Mon.{max v u}) ⟨j, _⟩ ⟨j, _⟩ j (𝟙 j) (𝟙 j),
98+ colimit_one_eq (F ⋙ forget₂ Group Mon.{max v u}) j],
9899 dsimp,
99100 simp only [category_theory.functor.map_id, id_apply, mul_left_inv],
100101 end ,
@@ -109,12 +110,12 @@ def colimit : Group := Group.of G
109110@[to_additive " The cocone over the proposed colimit additive group." ]
110111def colimit_cocone : cocone F :=
111112{ X := colimit,
112- ι := { ..(Mon.filtered_colimits.colimit_cocone (F ⋙ forget₂ Group Mon)).ι } }
113+ ι := { ..(Mon.filtered_colimits.colimit_cocone (F ⋙ forget₂ Group Mon.{max v u} )).ι } }
113114
114115/-- The proposed colimit cocone is a colimit in `Group`. -/
115116@[to_additive " The proposed colimit cocone is a colimit in `AddGroup`." ]
116117def colimit_cocone_is_colimit : is_colimit colimit_cocone :=
117- { desc := λ t, Mon.filtered_colimits.colimit_desc (F ⋙ forget₂ Group Mon)
118+ { desc := λ t, Mon.filtered_colimits.colimit_desc (F ⋙ forget₂ Group Mon.{max v u} )
118119 ((forget₂ Group Mon).map_cocone t),
119120 fac' := λ t j, monoid_hom.coe_inj $
120121 (types.colimit_cocone_is_colimit (F ⋙ forget Group)).fac ((forget Group).map_cocone t) j,
@@ -124,15 +125,15 @@ def colimit_cocone_is_colimit : is_colimit colimit_cocone :=
124125
125126@[to_additive forget₂_AddMon_preserves_filtered_colimits]
126127instance forget₂_Mon_preserves_filtered_colimits :
127- preserves_filtered_colimits (forget₂ Group Mon.{v }) :=
128+ preserves_filtered_colimits (forget₂ Group Mon.{u }) :=
128129{ preserves_filtered_colimits := λ J _ _, by exactI
129130 { preserves_colimit := λ F, preserves_colimit_of_preserves_colimit_cocone
130- (colimit_cocone_is_colimit F)
131- (Mon.filtered_colimits.colimit_cocone_is_colimit (F ⋙ forget₂ Group Mon.{v })) } }
131+ (colimit_cocone_is_colimit.{u u} F)
132+ (Mon.filtered_colimits.colimit_cocone_is_colimit (F ⋙ forget₂ Group Mon.{u })) } }
132133
133134@[to_additive]
134- instance forget_preserves_filtered_colimits : preserves_filtered_colimits (forget Group) :=
135- limits.comp_preserves_filtered_colimits (forget₂ Group Mon) (forget Mon)
135+ instance forget_preserves_filtered_colimits : preserves_filtered_colimits (forget Group.{u} ) :=
136+ limits.comp_preserves_filtered_colimits (forget₂ Group Mon) (forget Mon.{u} )
136137
137138end
138139
@@ -145,20 +146,20 @@ section
145146
146147-- We use parameters here, mainly so we can have the abbreviation `G` below, without
147148-- passing around `F` all the time.
148- parameters {J : Type v} [small_category J] [is_filtered J] (F : J ⥤ CommGroup.{v })
149+ parameters {J : Type v} [small_category J] [is_filtered J] (F : J ⥤ CommGroup.{max v u })
149150
150151/--
151152The colimit of `F ⋙ forget₂ CommGroup Group` in the category `Group`.
152153In the following, we will show that this has the structure of a _commutative_ group.
153154-/
154155@[to_additive " The colimit of `F ⋙ forget₂ AddCommGroup AddGroup` in the category `AddGroup`.
155156In the following, we will show that this has the structure of a _commutative_ additive group." ]
156- abbreviation G : Group := Group.filtered_colimits.colimit (F ⋙ forget₂ CommGroup Group.{v })
157+ abbreviation G : Group := Group.filtered_colimits.colimit (F ⋙ forget₂ CommGroup Group.{max v u })
157158
158159@[to_additive]
159160instance colimit_comm_group : comm_group G :=
160161{ ..G.group,
161- ..CommMon.filtered_colimits.colimit_comm_monoid (F ⋙ forget₂ CommGroup CommMon.{v }) }
162+ ..CommMon.filtered_colimits.colimit_comm_monoid (F ⋙ forget₂ CommGroup CommMon.{max v u }) }
162163
163164/-- The bundled commutative group giving the filtered colimit of a diagram. -/
164165@[to_additive " The bundled additive commutative group giving the filtered colimit of a diagram." ]
@@ -168,14 +169,14 @@ def colimit : CommGroup := CommGroup.of G
168169@[to_additive " The cocone over the proposed colimit additive commutative group." ]
169170def colimit_cocone : cocone F :=
170171{ X := colimit,
171- ι := { ..(Group.filtered_colimits.colimit_cocone (F ⋙ forget₂ CommGroup Group)).ι } }
172+ ι := { ..(Group.filtered_colimits.colimit_cocone (F ⋙ forget₂ CommGroup Group.{max v u} )).ι } }
172173
173174/-- The proposed colimit cocone is a colimit in `CommGroup`. -/
174175@[to_additive " The proposed colimit cocone is a colimit in `AddCommGroup`." ]
175176def colimit_cocone_is_colimit : is_colimit colimit_cocone :=
176177{ desc := λ t,
177- (Group.filtered_colimits.colimit_cocone_is_colimit (F ⋙ forget₂ CommGroup Group.{v })).desc
178- ((forget₂ CommGroup Group.{v }).map_cocone t),
178+ (Group.filtered_colimits.colimit_cocone_is_colimit (F ⋙ forget₂ CommGroup Group.{max v u })).desc
179+ ((forget₂ CommGroup Group.{max v u }).map_cocone t),
179180 fac' := λ t j, monoid_hom.coe_inj $
180181 (types.colimit_cocone_is_colimit (F ⋙ forget CommGroup)).fac
181182 ((forget CommGroup).map_cocone t) j,
@@ -185,15 +186,17 @@ def colimit_cocone_is_colimit : is_colimit colimit_cocone :=
185186
186187@[to_additive forget₂_AddGroup_preserves_filtered_colimits]
187188instance forget₂_Group_preserves_filtered_colimits :
188- preserves_filtered_colimits (forget₂ CommGroup Group.{v }) :=
189+ preserves_filtered_colimits (forget₂ CommGroup Group.{u }) :=
189190{ preserves_filtered_colimits := λ J _ _, by exactI
190191 { preserves_colimit := λ F, preserves_colimit_of_preserves_colimit_cocone
191- (colimit_cocone_is_colimit F)
192- (Group.filtered_colimits.colimit_cocone_is_colimit (F ⋙ forget₂ CommGroup Group.{v})) } }
192+ (colimit_cocone_is_colimit.{u u} F)
193+ (Group.filtered_colimits.colimit_cocone_is_colimit
194+ (F ⋙ forget₂ CommGroup Group.{u})) } }
193195
194196@[to_additive]
195- instance forget_preserves_filtered_colimits : preserves_filtered_colimits (forget CommGroup) :=
196- limits.comp_preserves_filtered_colimits (forget₂ CommGroup Group) (forget Group)
197+ instance forget_preserves_filtered_colimits :
198+ preserves_filtered_colimits (forget CommGroup.{u}) :=
199+ limits.comp_preserves_filtered_colimits (forget₂ CommGroup Group) (forget Group.{u})
197200
198201end
199202
0 commit comments