Induced categories and full subcategories #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Given a category D
and a function F : C → D
from a type C
to the
objects of D
, there is an essentially unique way to give C
a
category structure such that F
becomes a fully faithful functor,
namely by taking $$ Hom_C(X, Y) = Hom_D(FX, FY) $$. We call this the
category induced from D
along F
.
As a special case, if C
is a subtype of D
,
this produces the full subcategory of D
on the objects belonging to C
.
In general the induced category is equivalent to the full subcategory of D
on the
image of F
.
Implementation notes #
It looks odd to make D
an explicit argument of induced_category
,
when it is determined by the argument F
anyways. The reason to make D
explicit is in order to control its syntactic form, so that instances
like induced_category.has_forget₂
(elsewhere) refer to the correct
form of D. This is used to set up several algebraic categories like
def CommMon : Type (u+1) := induced_category Mon (bundled.map @comm_monoid.to_monoid)
-- not induced_category (bundled monoid) (bundled.map @comm_monoid.to_monoid)
,
-- even though Mon = bundled monoid
!
induced_category D F
, where F : C → D
, is a typeclass synonym for C
,
which provides a category structure so that the morphisms X ⟶ Y
are the morphisms
in D
from F X
to F Y
.
Equations
Instances for category_theory.induced_category
- category_theory.induced_category.has_coe_to_sort
- category_theory.induced_category.category
- category_theory.induced_category.groupoid
- category_theory.induced_category.concrete_category
- category_theory.induced_category.has_forget₂
- category_theory.preadditive.induced_category
- category_theory.linear.induced_category
Equations
- category_theory.induced_category.has_coe_to_sort F = {coe := λ (c : category_theory.induced_category D F), ↥(F c)}
Equations
- category_theory.induced_category.category F = {to_category_struct := {to_quiver := {hom := λ (X Y : category_theory.induced_category D F), F X ⟶ F Y}, id := λ (X : category_theory.induced_category D F), 𝟙 (F X), comp := λ (_x _x_1 _x_2 : category_theory.induced_category D F) (f : _x ⟶ _x_1) (g : _x_1 ⟶ _x_2), f ≫ g}, id_comp' := _, comp_id' := _, assoc' := _}
The forgetful functor from an induced category to the original category, forgetting the extra data.
Equations
- category_theory.induced_functor F = {obj := F, map := λ (x y : category_theory.induced_category D F) (f : x ⟶ y), f, map_id' := _, map_comp' := _}
Instances for category_theory.induced_functor
Equations
- category_theory.induced_category.full F = {preimage := λ (x y : category_theory.induced_category D F) (f : (category_theory.induced_functor F).obj x ⟶ (category_theory.induced_functor F).obj y), f, witness' := _}
- obj : C
- property : Z self.obj
A subtype-like structure for full subcategories. Morphisms just ignore the property. We don't use
actual subtypes since the simp-normal form ↑X
of X.val
does not work well for full
subcategories.
See https://stacks.math.columbia.edu/tag/001D. We do not define 'strictly full' subcategories.
Instances for category_theory.full_subcategory
- category_theory.full_subcategory.has_sizeof_inst
- category_theory.full_subcategory.category
- category_theory.full_subcategory.concrete_category
- category_theory.full_subcategory.has_forget₂
- category_theory.preadditive.full_subcategory
- category_theory.linear.full_subcategory
- category_theory.monoidal_category.full_monoidal_subcategory
- category_theory.monoidal_category.category_theory.full_subcategory.category_theory.monoidal_preadditive
- category_theory.monoidal_category.category_theory.full_subcategory.category_theory.monoidal_linear
- category_theory.monoidal_category.full_braided_subcategory
- category_theory.monoidal_category.full_symmetric_subcategory
- category_theory.monoidal_category.full_monoidal_closed_subcategory
The forgetful functor from a full subcategory into the original category ("forgetting" the condition).
Equations
Instances for category_theory.full_subcategory_inclusion
An implication of predicates Z → Z'
induces a functor between full subcategories.
Equations
- category_theory.full_subcategory.map h = {obj := λ (X : category_theory.full_subcategory Z), {obj := X.obj, property := _}, map := λ (X Y : category_theory.full_subcategory Z) (f : X ⟶ Y), f, map_id' := _, map_comp' := _}
Instances for category_theory.full_subcategory.map
Equations
- category_theory.full_subcategory.map.full h = {preimage := λ (X Y : category_theory.full_subcategory (λ (X : C), Z X)) (f : (category_theory.full_subcategory.map h).obj X ⟶ (category_theory.full_subcategory.map h).obj Y), f, witness' := _}
A functor which maps objects to objects satisfying a certain property induces a lift through the full subcategory of objects satisfying that property.
Equations
Instances for category_theory.full_subcategory.lift
Composing the lift of a functor through a full subcategory with the inclusion yields the
original functor. Unfortunately, this is not true by definition, so we only get a natural
isomorphism, but it is pointwise definitionally true, see
full_subcategory.inclusion_obj_lift_obj
and full_subcategory.inclusion_map_lift_map
.