Composable arrows #
If C is a category, the type of n-simplices in the nerve of C identifies
to the type of functors Fin (n + 1) ⥤ C, which can be thought as families of n composable
arrows in C. In this file, we introduce and study this category ComposableArrows C n
of n composable arrows in C.
If F : ComposableArrows C n, we define F.left as the leftmost object, F.right as the
rightmost object, and F.hom : F.left ⟶ F.right is the canonical map.
The most significant definition in this file is the constructor
F.precomp f : ComposableArrows C (n + 1) for F : ComposableArrows C n and f : X ⟶ F.left:
"it shifts F towards the right and inserts f on the left". This precomp has
good definitional properties.
In the namespace CategoryTheory.ComposableArrows, we provide constructors
like mk₁ f, mk₂ f g, mk₃ f g h for ComposableArrows C n for small n.
TODO (@joelriou):
- redefine
Arrow CasComposableArrow C 1? - construct some elements in
ComposableArrows m (Fin (n + 1))for smallnthe precomposition with which shall induce functorsComposableArrows C n ⥤ ComposableArrows C mwhich correspond to simplicial operations (specifically faces) with good definitional properties (this might be necessary for up ton = 7in order to formalize spectral sequences following Verdier)
ComposableArrows C n is the type of functors Fin (n + 1) ⥤ C.
Equations
- CategoryTheory.ComposableArrows C n = CategoryTheory.Functor (Fin (n + 1)) C
Instances For
A wrapper for omega which prefaces it with some quick and useful attempts
Equations
- CategoryTheory.ComposableArrows.tacticValid = Lean.ParserDescr.node `CategoryTheory.ComposableArrows.tacticValid 1024 (Lean.ParserDescr.nonReservedSymbol "valid" false)
Instances For
The ith object (with i : ℕ such that i ≤ n) of F : ComposableArrows C n.
Equations
- CategoryTheory.ComposableArrows.obj' F i hi = F.obj { val := i, isLt := ⋯ }
Instances For
The map F.obj' i ⟶ F.obj' j when F : ComposableArrows C n, and i and j
are natural numbers such that i ≤ j ≤ n.
Equations
- CategoryTheory.ComposableArrows.map' F i j hij hjn = F.map (CategoryTheory.homOfLE ⋯)
Instances For
The leftmost object of F : ComposableArrows C n.
Equations
Instances For
The rightmost object of F : ComposableArrows C n.
Equations
Instances For
The canonical map F.left ⟶ F.right for F : ComposableArrows C n.
Equations
Instances For
The map F.obj' i ⟶ G.obj' i induced on ith objects by a morphism F ⟶ G
in ComposableArrows C n when i is a natural number such that i ≤ n.
Equations
- CategoryTheory.ComposableArrows.app' φ i hi = φ.app { val := i, isLt := ⋯ }
Instances For
Constructor for ComposableArrows C 0.
Equations
- CategoryTheory.ComposableArrows.mk₀ X = (CategoryTheory.Functor.const (Fin 1)).obj X
Instances For
The map which sends 0 : Fin 2 to X₀ and 1 to X₁.
Equations
- CategoryTheory.ComposableArrows.Mk₁.obj X₀ X₁ x = match x with | { val := 0, isLt := isLt } => X₀ | { val := 1, isLt := isLt } => X₁
Instances For
The obvious map obj X₀ X₁ i ⟶ obj X₀ X₁ j whenever i j : Fin 2 satisfy i ≤ j.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for ComposableArrows C 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for morphisms F ⟶ G in ComposableArrows C n which takes as inputs
a family of morphisms F.obj i ⟶ G.obj i and the naturality condition only for the
maps in Fin (n + 1) given by inequalities of the form i ≤ i + 1.
Equations
- CategoryTheory.ComposableArrows.homMk app w = { app := app, naturality := ⋯ }
Instances For
Constructor for isomorphisms F ≅ G in ComposableArrows C n which takes as inputs
a family of isomorphisms F.obj i ≅ G.obj i and the naturality condition only for the
maps in Fin (n + 1) given by inequalities of the form i ≤ i + 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for morphisms in ComposableArrows C 0.
Equations
- CategoryTheory.ComposableArrows.homMk₀ f = CategoryTheory.ComposableArrows.homMk (fun (i : Fin (0 + 1)) => match i with | { val := 0, isLt := isLt } => f) ⋯
Instances For
Constructor for isomorphisms in ComposableArrows C 0.
Equations
- CategoryTheory.ComposableArrows.isoMk₀ e = { hom := CategoryTheory.ComposableArrows.homMk₀ e.hom, inv := CategoryTheory.ComposableArrows.homMk₀ e.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Constructor for morphisms in ComposableArrows C 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for isomorphisms in ComposableArrows C 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The map Fin (n + 1 + 1) → C which "shifts" F.obj' to the right and inserts X in
the zeroth position.
Equations
- CategoryTheory.ComposableArrows.Precomp.obj F X x = match x with | { val := 0, isLt := isLt } => X | { val := Nat.succ i, isLt := hi } => CategoryTheory.ComposableArrows.obj' F i ⋯
Instances For
Auxiliary definition for the action on maps of the functor F.precomp f.
It sends 0 ≤ 1 to f and i + 1 ≤ j + 1 to F.map' i j.
Equations
- One or more equations did not get rendered due to their size.
Instances For
"Precomposition" of F : ComposableArrows C n by a morphism f : X ⟶ F.left.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for ComposableArrows C 2.
Equations
Instances For
Constructor for ComposableArrows C 3.
Equations
Instances For
Constructor for ComposableArrows C 4.
Equations
Instances For
Constructor for ComposableArrows C 5.
Equations
Instances For
These examples are meant to test the good definitional properties of precomp,
and that dsimp can see through.
The map ComposableArrows C m → ComposableArrows C n obtained by precomposition with
a functor Fin (n + 1) ⥤ Fin (m + 1).
Equations
Instances For
The functor ComposableArrows C m ⥤ ComposableArrows C n obtained by precomposition with
a functor Fin (n + 1) ⥤ Fin (m + 1).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor Fin n ⥤ Fin (n + 1) which sends i to i.succ.
Equations
- Fin.succFunctor n = { toPrefunctor := { obj := fun (i : Fin n) => Fin.succ i, map := fun {i j : Fin n} (hij : i ⟶ j) => CategoryTheory.homOfLE ⋯ }, map_id := ⋯, map_comp := ⋯ }
Instances For
The functor ComposableArrows C (n + 1) ⥤ ComposableArrows C n which forgets
the first arrow.
Equations
- CategoryTheory.ComposableArrows.δ₀Functor = CategoryTheory.ComposableArrows.whiskerLeftFunctor (Fin.succFunctor (n + 1))
Instances For
The ComposableArrows C n obtained by forgetting the first arrow.
Equations
- CategoryTheory.ComposableArrows.δ₀ F = CategoryTheory.ComposableArrows.δ₀Functor.obj F
Instances For
The functor Fin n ⥤ Fin (n + 1) which sends i to i.castSucc.
Equations
- Fin.castSuccFunctor n = { toPrefunctor := { obj := fun (i : Fin n) => Fin.castSucc i, map := fun {X Y : Fin n} (hij : X ⟶ Y) => hij }, map_id := ⋯, map_comp := ⋯ }
Instances For
The functor ComposableArrows C (n + 1) ⥤ ComposableArrows C n which forgets
the last arrow.
Equations
- CategoryTheory.ComposableArrows.δlastFunctor = CategoryTheory.ComposableArrows.whiskerLeftFunctor (Fin.castSuccFunctor (n + 1))
Instances For
The ComposableArrows C n obtained by forgetting the first arrow.
Equations
- CategoryTheory.ComposableArrows.δlast F = CategoryTheory.ComposableArrows.δlastFunctor.obj F
Instances For
Inductive construction of morphisms in ComposableArrows C (n + 1): in order to construct
a morphism F ⟶ G, it suffices to provide α : F.obj' 0 ⟶ G.obj' 0 and β : F.δ₀ ⟶ G.δ₀
such that F.map' 0 1 ≫ app' β 0 = α ≫ G.map' 0 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Inductive construction of isomorphisms in ComposableArrows C (n + 1): in order to
construct an isomorphism F ≅ G, it suffices to provide α : F.obj' 0 ≅ G.obj' 0 and
β : F.δ₀ ≅ G.δ₀ such that F.map' 0 1 ≫ app' β.hom 0 = α.hom ≫ G.map' 0 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for morphisms in ComposableArrows C 2.
Equations
- CategoryTheory.ComposableArrows.homMk₂ app₀ app₁ app₂ w₀ w₁ = CategoryTheory.ComposableArrows.homMkSucc app₀ (CategoryTheory.ComposableArrows.homMk₁ app₁ app₂ w₁) w₀
Instances For
Constructor for isomorphisms in ComposableArrows C 2.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for morphisms in ComposableArrows C 3.
Equations
- CategoryTheory.ComposableArrows.homMk₃ app₀ app₁ app₂ app₃ w₀ w₁ w₂ = CategoryTheory.ComposableArrows.homMkSucc app₀ (CategoryTheory.ComposableArrows.homMk₂ app₁ app₂ app₃ w₁ w₂) w₀
Instances For
Constructor for isomorphisms in ComposableArrows C 3.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for morphisms in ComposableArrows C 4.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for isomorphisms in ComposableArrows C 4.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for morphisms in ComposableArrows C 5.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for isomorphisms in ComposableArrows C 5.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The ith arrow of F : ComposableArrows C n.
Equations
- CategoryTheory.ComposableArrows.arrow F i hi = CategoryTheory.ComposableArrows.mk₁ (CategoryTheory.ComposableArrows.map' F i (i + 1) ⋯ hi)
Instances For
Given obj : Fin (n + 1) → C and mapSucc i : obj i.castSucc ⟶ obj i.succ
for all i : Fin n, this is F : ComposableArrows C n such that F.obj i is
definitionally equal to obj i and such that F.map' i (i + 1) = mapSucc ⟨i, hi⟩.
Equations
- CategoryTheory.ComposableArrows.mkOfObjOfMapSucc obj mapSucc = CategoryTheory.Functor.copyObj (Exists.choose ⋯) obj (Exists.choose ⋯)
Instances For
The functor ComposableArrows C n ⥤ ComposableArrows D n obtained by postcomposition
with a functor C ⥤ D.
Equations
- CategoryTheory.Functor.mapComposableArrows G n = (CategoryTheory.whiskeringRight (Fin (n + 1)) C D).obj G