Documentation

Mathlib.CategoryTheory.Groupoid.Subgroupoid

Subgroupoid #

This file defines subgroupoids as structures containing the subsets of arrows and their stability under composition and inversion. Also defined are:

Main definitions #

Given a type C with associated groupoid C instance.

Implementation details #

The structure of this file is copied from/inspired by Mathlib/GroupTheory/Subgroup/Basic.lean and Mathlib/Combinatorics/SimpleGraph/Subgraph.lean.

TODO #

Tags #

category theory, groupoid, subgroupoid

structure CategoryTheory.Subgroupoid (C : Type u) [Groupoid C] :
Type (max u u_1)

A sugroupoid of C consists of a choice of arrows for each pair of vertices, closed under composition and inverses.

Instances For
    theorem CategoryTheory.Subgroupoid.ext {C : Type u} {inst✝ : Groupoid C} {x y : Subgroupoid C} (arrows : x.arrows = y.arrows) :
    x = y
    theorem CategoryTheory.Subgroupoid.ext_iff {C : Type u} {inst✝ : Groupoid C} {x y : Subgroupoid C} :
    theorem CategoryTheory.Subgroupoid.mul_mem_cancel_left {C : Type u} [Groupoid C] (S : Subgroupoid C) {c d e : C} {f : c ⟢ d} {g : d ⟢ e} (hf : f ∈ S.arrows c d) :
    theorem CategoryTheory.Subgroupoid.mul_mem_cancel_right {C : Type u} [Groupoid C] (S : Subgroupoid C) {c d e : C} {f : c ⟢ d} {g : d ⟢ e} (hg : g ∈ S.arrows d e) :

    The vertices of C on which S has non-trivial isotropy

    Equations
      Instances For
        theorem CategoryTheory.Subgroupoid.mem_objs_of_src {C : Type u} [Groupoid C] (S : Subgroupoid C) {c d : C} {f : c ⟢ d} (h : f ∈ S.arrows c d) :
        theorem CategoryTheory.Subgroupoid.mem_objs_of_tgt {C : Type u} [Groupoid C] (S : Subgroupoid C) {c d : C} {f : c ⟢ d} (h : f ∈ S.arrows c d) :
        theorem CategoryTheory.Subgroupoid.id_mem_of_src {C : Type u} [Groupoid C] (S : Subgroupoid C) {c d : C} {f : c ⟢ d} (h : f ∈ S.arrows c d) :
        theorem CategoryTheory.Subgroupoid.id_mem_of_tgt {C : Type u} [Groupoid C] (S : Subgroupoid C) {c d : C} {f : c ⟢ d} (h : f ∈ S.arrows c d) :

        A subgroupoid seen as a quiver on vertex set C

        Equations
          Instances For

            The coercion of a subgroupoid as a groupoid

            Equations
              @[simp]
              theorem CategoryTheory.Subgroupoid.coe_comp_coe {C : Type u} [Groupoid C] (S : Subgroupoid C) {X✝ Y✝ Z✝ : ↑S.objs} (p : ↑(S.arrows ↑X✝ ↑Y✝)) (q : ↑(S.arrows ↑Y✝ ↑Z✝)) :
              ↑(CategoryStruct.comp p q) = CategoryStruct.comp ↑p ↑q
              theorem CategoryTheory.Subgroupoid.coe_inv_coe {C : Type u} [Groupoid C] (S : Subgroupoid C) {X✝ Y✝ : ↑S.objs} (p : ↑(S.arrows ↑X✝ ↑Y✝)) :
              ↑(Groupoid.inv p) = Groupoid.inv ↑p
              @[simp]
              theorem CategoryTheory.Subgroupoid.coe_inv_coe' {C : Type u} [Groupoid C] (S : Subgroupoid C) {c d : ↑S.objs} (p : c ⟢ d) :
              ↑(inv p) = inv ↑p

              The embedding of the coerced subgroupoid to its parent

              Equations
                Instances For
                  theorem CategoryTheory.Subgroupoid.hom.faithful {C : Type u} [Groupoid C] (S : Subgroupoid C) (c d : ↑S.objs) :
                  Function.Injective fun (f : c ⟢ d) => S.hom.map f

                  The subgroup of the vertex group at c given by the subgroupoid

                  Equations
                    Instances For
                      def CategoryTheory.Subgroupoid.toSet {C : Type u} [Groupoid C] (S : Subgroupoid C) :
                      Set ((c : C) Γ— (d : C) Γ— (c ⟢ d))

                      The set of all arrows of a subgroupoid, as a set in Σ c d : C, c ⟢ d.

                      Equations
                        Instances For
                          instance CategoryTheory.Subgroupoid.instSetLikeSigmaHom {C : Type u} [Groupoid C] :
                          SetLike (Subgroupoid C) ((c : C) Γ— (d : C) Γ— (c ⟢ d))
                          Equations
                            theorem CategoryTheory.Subgroupoid.mem_iff {C : Type u} [Groupoid C] (S : Subgroupoid C) (F : (c : C) Γ— (d : C) Γ— (c ⟢ d)) :
                            theorem CategoryTheory.Subgroupoid.le_iff {C : Type u} [Groupoid C] (S T : Subgroupoid C) :
                            S ≀ T ↔ βˆ€ {c d : C}, S.arrows c d βŠ† T.arrows c d
                            theorem CategoryTheory.Subgroupoid.mem_top {C : Type u} [Groupoid C] {c d : C} (f : c ⟢ d) :
                            theorem CategoryTheory.Subgroupoid.mem_sInf_arrows {C : Type u} [Groupoid C] {s : Set (Subgroupoid C)} {c d : C} {p : c ⟢ d} :
                            p ∈ (sInf s).arrows c d ↔ βˆ€ S ∈ s, p ∈ S.arrows c d
                            theorem CategoryTheory.Subgroupoid.mem_sInf {C : Type u} [Groupoid C] {s : Set (Subgroupoid C)} {p : (c : C) Γ— (d : C) Γ— (c ⟢ d)} :
                            p ∈ sInf s ↔ βˆ€ S ∈ s, p ∈ S
                            def CategoryTheory.Subgroupoid.inclusion {C : Type u} [Groupoid C] {S T : Subgroupoid C} (h : S ≀ T) :
                            Functor ↑S.objs ↑T.objs

                            The functor associated to the embedding of subgroupoids

                            Equations
                              Instances For
                                theorem CategoryTheory.Subgroupoid.inclusion_faithful {C : Type u} [Groupoid C] {S T : Subgroupoid C} (h : S ≀ T) (s t : ↑S.objs) :
                                Function.Injective fun (f : s ⟢ t) => (inclusion h).map f
                                theorem CategoryTheory.Subgroupoid.inclusion_trans {C : Type u} [Groupoid C] {R S T : Subgroupoid C} (k : R ≀ S) (h : S ≀ T) :
                                inductive CategoryTheory.Subgroupoid.Discrete.Arrows {C : Type u} [Groupoid C] (c d : C) :
                                (c ⟢ d) β†’ Prop

                                The family of arrows of the discrete groupoid

                                Instances For

                                  The only arrows of the discrete groupoid are the identity arrows.

                                  Equations
                                    Instances For
                                      theorem CategoryTheory.Subgroupoid.mem_discrete_iff {C : Type u} [Groupoid C] {c d : C} (f : c ⟢ d) :
                                      f ∈ discrete.arrows c d ↔ βˆƒ (h : c = d), f = eqToHom h

                                      A subgroupoid is wide if its carrier set is all of C.

                                      Instances For
                                        theorem CategoryTheory.Subgroupoid.IsWide.eqToHom_mem {C : Type u} [Groupoid C] {S : Subgroupoid C} (Sw : S.IsWide) {c d : C} (h : c = d) :
                                        structure CategoryTheory.Subgroupoid.IsNormal {C : Type u} [Groupoid C] (S : Subgroupoid C) extends S.IsWide :

                                        A subgroupoid is normal if it is wide and satisfies the expected stability under conjugacy.

                                        Instances For
                                          theorem CategoryTheory.Subgroupoid.IsNormal.conj' {C : Type u} [Groupoid C] {S : Subgroupoid C} (Sn : S.IsNormal) {c d : C} (p : d ⟢ c) {γ : c ⟢ c} :
                                          theorem CategoryTheory.Subgroupoid.IsNormal.conjugation_bij {C : Type u} [Groupoid C] (S : Subgroupoid C) (Sn : S.IsNormal) {c d : C} (p : c ⟢ d) :
                                          Set.BijOn (fun (γ : c ⟢ c) => CategoryStruct.comp (Groupoid.inv p) (CategoryStruct.comp γ p)) (S.arrows c c) (S.arrows d d)
                                          theorem CategoryTheory.Subgroupoid.sInf_isNormal {C : Type u} [Groupoid C] (s : Set (Subgroupoid C)) (sn : βˆ€ S ∈ s, S.IsNormal) :
                                          def CategoryTheory.Subgroupoid.generated {C : Type u} [Groupoid C] (X : (c d : C) β†’ Set (c ⟢ d)) :

                                          The subgroupoid generated by the set of arrows X

                                          Equations
                                            Instances For
                                              theorem CategoryTheory.Subgroupoid.subset_generated {C : Type u} [Groupoid C] (X : (c d : C) β†’ Set (c ⟢ d)) (c d : C) :
                                              X c d βŠ† (generated X).arrows c d
                                              def CategoryTheory.Subgroupoid.generatedNormal {C : Type u} [Groupoid C] (X : (c d : C) β†’ Set (c ⟢ d)) :

                                              The normal sugroupoid generated by the set of arrows X

                                              Equations
                                                Instances For
                                                  theorem CategoryTheory.Subgroupoid.IsNormal.generatedNormal_le {C : Type u} [Groupoid C] (X : (c d : C) β†’ Set (c ⟢ d)) {S : Subgroupoid C} (Sn : S.IsNormal) :
                                                  generatedNormal X ≀ S ↔ βˆ€ (c d : C), X c d βŠ† S.arrows c d
                                                  def CategoryTheory.Subgroupoid.comap {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) (S : Subgroupoid D) :

                                                  A functor between groupoid defines a map of subgroupoids in the reverse direction by taking preimages.

                                                  Equations
                                                    Instances For
                                                      theorem CategoryTheory.Subgroupoid.comap_mono {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) (S T : Subgroupoid D) :
                                                      S ≀ T β†’ comap Ο† S ≀ comap Ο† T
                                                      theorem CategoryTheory.Subgroupoid.isNormal_comap {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) {S : Subgroupoid D} (Sn : S.IsNormal) :
                                                      (comap Ο† S).IsNormal
                                                      @[simp]
                                                      theorem CategoryTheory.Subgroupoid.comap_comp {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) {E : Type u_2} [Groupoid E] (ψ : Functor D E) :
                                                      comap (Ο†.comp ψ) = comap Ο† ∘ comap ψ
                                                      def CategoryTheory.Subgroupoid.ker {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) :

                                                      The kernel of a functor between subgroupoid is the preimage.

                                                      Equations
                                                        Instances For
                                                          theorem CategoryTheory.Subgroupoid.mem_ker_iff {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) {c d : C} (f : c ⟢ d) :
                                                          f ∈ (ker Ο†).arrows c d ↔ βˆƒ (h : Ο†.obj c = Ο†.obj d), Ο†.map f = eqToHom h
                                                          theorem CategoryTheory.Subgroupoid.ker_isNormal {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) :
                                                          (ker Ο†).IsNormal
                                                          @[simp]
                                                          theorem CategoryTheory.Subgroupoid.ker_comp {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) {E : Type u_2} [Groupoid E] (ψ : Functor D E) :
                                                          ker (Ο†.comp ψ) = comap Ο† (ker ψ)
                                                          inductive CategoryTheory.Subgroupoid.Map.Arrows {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (S : Subgroupoid C) (c d : D) :
                                                          (c ⟢ d) β†’ Prop

                                                          The family of arrows of the image of a subgroupoid under a functor injective on objects

                                                          Instances For
                                                            theorem CategoryTheory.Subgroupoid.Map.arrows_iff {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) (hΟ† : Function.Injective Ο†.obj) (S : Subgroupoid C) {c d : D} (f : c ⟢ d) :
                                                            Arrows Ο† hΟ† S c d f ↔ βˆƒ (a : C) (b : C) (g : a ⟢ b) (ha : Ο†.obj a = c) (hb : Ο†.obj b = d) (_ : g ∈ S.arrows a b), f = CategoryStruct.comp (eqToHom β‹―) (CategoryStruct.comp (Ο†.map g) (eqToHom hb))
                                                            def CategoryTheory.Subgroupoid.map {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (S : Subgroupoid C) :

                                                            The "forward" image of a subgroupoid under a functor injective on objects

                                                            Equations
                                                              Instances For
                                                                theorem CategoryTheory.Subgroupoid.mem_map_iff {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) (hΟ† : Function.Injective Ο†.obj) (S : Subgroupoid C) {c d : D} (f : c ⟢ d) :
                                                                f ∈ (map Ο† hΟ† S).arrows c d ↔ βˆƒ (a : C) (b : C) (g : a ⟢ b) (ha : Ο†.obj a = c) (hb : Ο†.obj b = d) (_ : g ∈ S.arrows a b), f = CategoryStruct.comp (eqToHom β‹―) (CategoryStruct.comp (Ο†.map g) (eqToHom hb))
                                                                theorem CategoryTheory.Subgroupoid.galoisConnection_map_comap {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) :
                                                                GaloisConnection (map φ hφ) (comap φ)
                                                                theorem CategoryTheory.Subgroupoid.map_mono {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (S T : Subgroupoid C) :
                                                                S ≀ T β†’ map Ο† hΟ† S ≀ map Ο† hΟ† T
                                                                theorem CategoryTheory.Subgroupoid.le_comap_map {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (S : Subgroupoid C) :
                                                                S ≀ comap Ο† (map Ο† hΟ† S)
                                                                theorem CategoryTheory.Subgroupoid.map_comap_le {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (T : Subgroupoid D) :
                                                                map Ο† hΟ† (comap Ο† T) ≀ T
                                                                theorem CategoryTheory.Subgroupoid.map_le_iff_le_comap {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (S : Subgroupoid C) (T : Subgroupoid D) :
                                                                map Ο† hΟ† S ≀ T ↔ S ≀ comap Ο† T
                                                                theorem CategoryTheory.Subgroupoid.mem_map_objs_iff {C : Type u} [Groupoid C] (S : Subgroupoid C) {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (d : D) :
                                                                d ∈ (map Ο† hΟ† S).objs ↔ βˆƒ c ∈ S.objs, Ο†.obj c = d
                                                                @[simp]
                                                                theorem CategoryTheory.Subgroupoid.map_objs_eq {C : Type u} [Groupoid C] (S : Subgroupoid C) {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) :
                                                                (map φ hφ S).objs = φ.obj '' S.objs
                                                                def CategoryTheory.Subgroupoid.im {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) :

                                                                The image of a functor injective on objects

                                                                Equations
                                                                  Instances For
                                                                    theorem CategoryTheory.Subgroupoid.mem_im_iff {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) (hΟ† : Function.Injective Ο†.obj) {c d : D} (f : c ⟢ d) :
                                                                    f ∈ (im Ο† hΟ†).arrows c d ↔ βˆƒ (a : C) (b : C) (g : a ⟢ b) (ha : Ο†.obj a = c) (hb : Ο†.obj b = d), f = CategoryStruct.comp (eqToHom β‹―) (CategoryStruct.comp (Ο†.map g) (eqToHom hb))
                                                                    theorem CategoryTheory.Subgroupoid.mem_im_objs_iff {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (φ : Functor C D) (hφ : Function.Injective φ.obj) (d : D) :
                                                                    d ∈ (im Ο† hΟ†).objs ↔ βˆƒ (c : C), Ο†.obj c = d
                                                                    theorem CategoryTheory.Subgroupoid.obj_surjective_of_im_eq_top {C : Type u} [Groupoid C] {D : Type u_1} [Groupoid D] (Ο† : Functor C D) (hΟ† : Function.Injective Ο†.obj) (hΟ†' : im Ο† hΟ† = ⊀) :
                                                                    theorem CategoryTheory.Subgroupoid.isNormal_map {C : Type u} [Groupoid C] (S : Subgroupoid C) {D : Type u_1} [Groupoid D] (Ο† : Functor C D) (hΟ† : Function.Injective Ο†.obj) (hΟ†' : im Ο† hΟ† = ⊀) (Sn : S.IsNormal) :
                                                                    (map φ hφ S).IsNormal
                                                                    @[reducible, inline]

                                                                    A subgroupoid is thin (CategoryTheory.Subgroupoid.IsThin) if it has at most one arrow between any two vertices.

                                                                    Equations
                                                                      Instances For
                                                                        theorem CategoryTheory.Subgroupoid.isThin_iff {C : Type u} [Groupoid C] (S : Subgroupoid C) :
                                                                        S.IsThin ↔ βˆ€ (c : ↑S.objs), Subsingleton ↑(S.arrows ↑c ↑c)
                                                                        @[reducible, inline]

                                                                        A subgroupoid IsTotallyDisconnected if it has only isotropy arrows.

                                                                        Equations
                                                                          Instances For

                                                                            The isotropy subgroupoid of S

                                                                            Equations
                                                                              Instances For

                                                                                The full subgroupoid on a set D : Set C

                                                                                Equations
                                                                                  Instances For
                                                                                    @[simp]
                                                                                    theorem CategoryTheory.Subgroupoid.mem_full_iff {C : Type u} [Groupoid C] (D : Set C) {c d : C} {f : c ⟢ d} :
                                                                                    @[simp]
                                                                                    theorem CategoryTheory.Subgroupoid.full_arrow_eq_iff {C : Type u} [Groupoid C] (D : Set C) {c d : ↑(full D).objs} {f g : c ⟢ d} :
                                                                                    f = g ↔ ↑f = ↑g