Linear categories #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
An R
-linear category is a category in which X ⟶ Y
is an R
-module in such a way that
composition of morphisms is R
-linear in both variables.
Note that sometimes in the literature a "linear category" is further required to be abelian.
Implementation #
Corresponding to the fact that we need to have an add_comm_group X
structure in place
to talk about a module R X
structure,
we need preadditive C
as a prerequisite typeclass for linear R C
.
This makes for longer signatures than would be ideal.
Future work #
It would be nice to have a usable framework of enriched categories in which this just became
a category enriched in Module R
.
- hom_module : (Π (X Y : C), module R (X ⟶ Y)) . "apply_instance"
- smul_comp' : (∀ (X Y Z : C) (r : R) (f : X ⟶ Y) (g : Y ⟶ Z), (r • f) ≫ g = r • f ≫ g) . "obviously"
- comp_smul' : (∀ (X Y Z : C) (f : X ⟶ Y) (r : R) (g : Y ⟶ Z), f ≫ (r • g) = r • f ≫ g) . "obviously"
A category is called R
-linear if P ⟶ Q
is an R
-module such that composition is
R
-linear in both variables.
Instances of this typeclass
- category_theory.linear.preadditive_nat_linear
- category_theory.linear.preadditive_int_linear
- category_theory.linear.induced_category
- category_theory.linear.full_subcategory
- category_theory.functor_category_linear
- Action.category_theory.linear
- Module.category_theory.linear
- category_theory.Free.category_theory.linear
- Rep.category_theory.linear
- fgModule.category_theory.linear
- fdRep.category_theory.linear
- Module.linear_over_field
Instances of other typeclasses for category_theory.linear
- category_theory.linear.has_sizeof_inst
Equations
- category_theory.linear.preadditive_nat_linear = {hom_module := λ (X Y : C), add_comm_monoid.nat_module, smul_comp' := _, comp_smul' := _}
Equations
- category_theory.linear.preadditive_int_linear = {hom_module := λ (X Y : C), add_comm_group.int_module (X ⟶ Y), smul_comp' := _, comp_smul' := _}
Equations
Equations
- category_theory.linear.induced_category F = {hom_module := λ (X Y : category_theory.induced_category C F), category_theory.linear.hom_module (F X) (F Y), smul_comp' := _, comp_smul' := _}
Equations
- category_theory.linear.full_subcategory Z = {hom_module := λ (X Y : category_theory.full_subcategory Z), category_theory.linear.hom_module X.obj Y.obj, smul_comp' := _, comp_smul' := _}
Composition by a fixed left argument as an R
-linear map.
Composition by a fixed right argument as an R
-linear map.
Given isomorphic objects X ≅ Y, W ≅ Z
in a k
-linear category, we have a k
-linear
isomorphism between Hom(X, W)
and Hom(Y, Z).
Equations
- category_theory.linear.hom_congr k f₁ f₂ = {to_fun := ((category_theory.linear.right_comp k Y f₂.hom).comp (category_theory.linear.left_comp k W f₁.symm.hom)).to_fun, map_add' := _, map_smul' := _, inv_fun := ⇑((category_theory.linear.left_comp k W f₁.hom).comp (category_theory.linear.right_comp k Y f₂.symm.hom)), left_inv := _, right_inv := _}
Composition as a bilinear map.
Equations
- category_theory.linear.comp X Y Z = {to_fun := λ (f : X ⟶ Y), category_theory.linear.left_comp S Z f, map_add' := _, map_smul' := _}