Linear categories #
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 AddCommGroup 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
.
A category is called R
-linear if P ⟶ Q
is an R
-module such that composition is
R
-linear in both variables.
- smul_comp : ∀ (X Y Z : C) (r : R) (f : X ⟶ Y) (g : Y ⟶ Z), CategoryTheory.CategoryStruct.comp (r • f) g = r • CategoryTheory.CategoryStruct.comp f g
compatibility of the scalar multiplication with the post-composition
- comp_smul : ∀ (X Y Z : C) (f : X ⟶ Y) (r : R) (g : Y ⟶ Z), CategoryTheory.CategoryStruct.comp f (r • g) = r • CategoryTheory.CategoryStruct.comp f g
compatibility of the scalar multiplication with the pre-composition
Instances
Equations
- CategoryTheory.Linear.preadditiveNatLinear = { homModule := inferInstance, smul_comp := ⋯, comp_smul := ⋯ }
Equations
- CategoryTheory.Linear.preadditiveIntLinear = { homModule := inferInstance, smul_comp := ⋯, comp_smul := ⋯ }
Equations
- CategoryTheory.Linear.instModuleEnd X = id inferInstance
Equations
Equations
- CategoryTheory.Linear.inducedCategory F = { homModule := fun (X Y : CategoryTheory.InducedCategory C F) => CategoryTheory.Linear.homModule (F X) (F Y), smul_comp := ⋯, comp_smul := ⋯ }
Equations
- CategoryTheory.Linear.fullSubcategory Z = { homModule := fun (X Y : CategoryTheory.FullSubcategory Z) => CategoryTheory.Linear.homModule X.obj Y.obj, smul_comp := ⋯, comp_smul := ⋯ }
Composition by a fixed left argument as an R
-linear map.
Equations
- CategoryTheory.Linear.leftComp R Z f = { toFun := fun (g : Y ⟶ Z) => CategoryTheory.CategoryStruct.comp f g, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Composition by a fixed right argument as an R
-linear map.
Equations
- CategoryTheory.Linear.rightComp R X g = { toFun := fun (f : X ⟶ Y) => CategoryTheory.CategoryStruct.comp f g, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
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
- One or more equations did not get rendered due to their size.
Instances For
Composition as a bilinear map.
Equations
- CategoryTheory.Linear.comp X Y Z = { toFun := fun (f : X ⟶ Y) => CategoryTheory.Linear.leftComp S Z f, map_add' := ⋯, map_smul' := ⋯ }