Subgroupoid #
This file defines subgroupoids as structure
s containing the subsets of arrows and their
stability under composition and inversion.
Also defined are:
- containment of subgroupoids is a complete lattice;
- images and preimages of subgroupoids under a functor;
- the notion of normality of subgroupoids and its stability under intersection and preimage;
- compatibility of the above with
CategoryTheory.Groupoid.vertexGroup
.
Main definitions #
Given a type C
with associated groupoid C
instance.
CategoryTheory.Subgroupoid C
is the type of subgroupoids ofC
CategoryTheory.Subgroupoid.IsNormal
is the property that the subgroupoid is stable under conjugation by arbitrary arrows, and that all identity arrows are contained in the subgroupoid.CategoryTheory.Subgroupoid.comap
is the "preimage" map of subgroupoids along a functor.CategoryTheory.Subgroupoid.map
is the "image" map of subgroupoids along a functor injective on objects.CategoryTheory.Subgroupoid.vertexSubgroup
is the subgroup of the vertex group at a given vertexv
, assumingv
is contained in theCategoryTheory.Subgroupoid
(meaning, by definition, that the arrow𝟙 v
is contained in the subgroupoid).
Implementation details #
The structure of this file is copied from/inspired by Mathlib/GroupTheory/Subgroup/Basic.lean
and Mathlib/Combinatorics/SimpleGraph/Subgraph.lean
.
TODO #
- Equivalent inductive characterization of generated (normal) subgroupoids.
- Characterization of normal subgroupoids as kernels.
- Prove that
CategoryTheory.Subgroupoid.full
andCategoryTheory.Subgroupoid.disconnect
preserve intersections (andCategoryTheory.Subgroupoid.disconnect
also unions)
Tags #
category theory, groupoid, subgroupoid
A sugroupoid of C
consists of a choice of arrows for each pair of vertices, closed
under composition and inverses.
- inv : ∀ {c d : C} {p : c ⟶ d}, p ∈ self.arrows c d → CategoryTheory.Groupoid.inv p ∈ self.arrows d c
Instances For
The vertices of C
on which S
has non-trivial isotropy
Equations
- S.objs = {c : C | (S.arrows c c).Nonempty}
Instances For
A subgroupoid seen as a quiver on vertex set C
Instances For
The coercion of a subgroupoid as a groupoid
Equations
- S.coe = CategoryTheory.Groupoid.mk (fun {X Y : ↑S.objs} (p : X ⟶ Y) => ⟨CategoryTheory.Groupoid.inv ↑p, ⋯⟩) ⋯ ⋯
The embedding of the coerced subgroupoid to its parent
Equations
Instances For
The subgroup of the vertex group at c
given by the subgroupoid
Equations
- S.vertexSubgroup hc = { carrier := S.arrows c c, mul_mem' := ⋯, one_mem' := ⋯, inv_mem' := ⋯ }
Instances For
The set of all arrows of a subgroupoid, as a set in Σ c d : C, c ⟶ d
.
Instances For
Equations
- CategoryTheory.Subgroupoid.instSetLikeSigmaHom = { coe := CategoryTheory.Subgroupoid.toSet, coe_injective' := ⋯ }
Equations
- CategoryTheory.Subgroupoid.instTop = { top := { arrows := fun (x x_1 : C) => Set.univ, inv := ⋯, mul := ⋯ } }
Equations
- CategoryTheory.Subgroupoid.instInf = { inf := fun (S T : CategoryTheory.Subgroupoid C) => { arrows := fun (c d : C) => S.arrows c d ∩ T.arrows c d, inv := ⋯, mul := ⋯ } }
Equations
- CategoryTheory.Subgroupoid.instInfSet = { sInf := fun (s : Set (CategoryTheory.Subgroupoid C)) => { arrows := fun (c d : C) => ⋂ S ∈ s, S.arrows c d, inv := ⋯, mul := ⋯ } }
Equations
- CategoryTheory.Subgroupoid.instCompleteLattice = CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
The functor associated to the embedding of subgroupoids
Equations
- CategoryTheory.Subgroupoid.inclusion h = { obj := fun (s : ↑S.objs) => ⟨↑s, ⋯⟩, map := fun {X Y : ↑S.objs} (f : X ⟶ Y) => ⟨↑f, ⋯⟩, map_id := ⋯, map_comp := ⋯ }
Instances For
The family of arrows of the discrete groupoid
- id: ∀ {C : Type u} [inst : CategoryTheory.Groupoid C] (c : C), CategoryTheory.Subgroupoid.Discrete.Arrows c c (CategoryTheory.CategoryStruct.id c)
Instances For
The only arrows of the discrete groupoid are the identity arrows.
Equations
- CategoryTheory.Subgroupoid.discrete = { arrows := fun (c d : C) => {p : c ⟶ d | CategoryTheory.Subgroupoid.Discrete.Arrows c d p}, inv := ⋯, mul := ⋯ }
Instances For
A subgroupoid is wide if its carrier set is all of C
- wide : ∀ (c : C), CategoryTheory.CategoryStruct.id c ∈ S.arrows c c
Instances For
A subgroupoid is normal if it is wide and satisfies the expected stability under conjugacy.
- wide : ∀ (c : C), CategoryTheory.CategoryStruct.id c ∈ S.arrows c c
- conj : ∀ {c d : C} (p : c ⟶ d) {γ : c ⟶ c}, γ ∈ S.arrows c c → CategoryTheory.CategoryStruct.comp (CategoryTheory.Groupoid.inv p) (CategoryTheory.CategoryStruct.comp γ p) ∈ S.arrows d d
Instances For
The subgropoid generated by the set of arrows X
Equations
- CategoryTheory.Subgroupoid.generated X = sInf {S : CategoryTheory.Subgroupoid C | ∀ (c d : C), X c d ⊆ S.arrows c d}
Instances For
The normal sugroupoid generated by the set of arrows X
Equations
- CategoryTheory.Subgroupoid.generatedNormal X = sInf {S : CategoryTheory.Subgroupoid C | (∀ (c d : C), X c d ⊆ S.arrows c d) ∧ S.IsNormal}
Instances For
A functor between groupoid defines a map of subgroupoids in the reverse direction by taking preimages.
Equations
- CategoryTheory.Subgroupoid.comap φ S = { arrows := fun (c d : C) => {f : c ⟶ d | φ.map f ∈ S.arrows (φ.obj c) (φ.obj d)}, inv := ⋯, mul := ⋯ }
Instances For
The kernel of a functor between subgroupoid is the preimage.
Equations
- CategoryTheory.Subgroupoid.ker φ = CategoryTheory.Subgroupoid.comap φ CategoryTheory.Subgroupoid.discrete
Instances For
The family of arrows of the image of a subgroupoid under a functor injective on objects
- im: ∀ {C : Type u} [inst : CategoryTheory.Groupoid C] {D : Type u_1} [inst_1 : CategoryTheory.Groupoid D] {φ : CategoryTheory.Functor C D} {hφ : Function.Injective φ.obj} {S : CategoryTheory.Subgroupoid C} {c d : C}, ∀ f ∈ S.arrows c d, CategoryTheory.Subgroupoid.Map.Arrows φ hφ S (φ.obj c) (φ.obj d) (φ.map f)
Instances For
The "forward" image of a subgroupoid under a functor injective on objects
Equations
- CategoryTheory.Subgroupoid.map φ hφ S = { arrows := fun (c d : D) => {x : c ⟶ d | CategoryTheory.Subgroupoid.Map.Arrows φ hφ S c d x}, inv := ⋯, mul := ⋯ }
Instances For
The image of a functor injective on objects
Equations
Instances For
A subgroupoid is thin (CategoryTheory.Subgroupoid.IsThin
) if it has at most one arrow between
any two vertices.
Equations
- S.IsThin = Quiver.IsThin ↑S.objs
Instances For
A subgroupoid IsTotallyDisconnected
if it has only isotropy arrows.
Equations
- S.IsTotallyDisconnected = CategoryTheory.Groupoid.IsTotallyDisconnected ↑S.objs
Instances For
The isotropy subgroupoid of S
Equations
Instances For
The full subgroupoid on a set D : Set C