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

theorem CategoryTheory.Subgroupoid.ext_iff {C : Type u} :
∀ {inst : CategoryTheory.Groupoid C} {x y : CategoryTheory.Subgroupoid C}, x = y x.arrows = y.arrows
theorem CategoryTheory.Subgroupoid.ext {C : Type u} :
∀ {inst : CategoryTheory.Groupoid C} {x y : CategoryTheory.Subgroupoid C}, x.arrows = y.arrowsx = y
structure CategoryTheory.Subgroupoid (C : Type u) [CategoryTheory.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.inv {C : Type u} [CategoryTheory.Groupoid C] (self : CategoryTheory.Subgroupoid C) {c : C} {d : C} {p : c d} :
    p self.arrows c dCategoryTheory.Groupoid.inv p self.arrows d c
    theorem CategoryTheory.Subgroupoid.mul {C : Type u} [CategoryTheory.Groupoid C] (self : CategoryTheory.Subgroupoid C) {c : C} {d : C} {e : C} {p : c d} :
    p self.arrows c d∀ {q : d e}, q self.arrows d eCategoryTheory.CategoryStruct.comp p q self.arrows c e
    theorem CategoryTheory.Subgroupoid.inv_mem_iff {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) {c : C} {d : C} (f : c d) :
    CategoryTheory.Groupoid.inv f S.arrows d c f S.arrows c d
    theorem CategoryTheory.Subgroupoid.mul_mem_cancel_left {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) {c : C} {d : C} {e : C} {f : c d} {g : d e} (hf : f S.arrows c d) :
    CategoryTheory.CategoryStruct.comp f g S.arrows c e g S.arrows d e
    theorem CategoryTheory.Subgroupoid.mul_mem_cancel_right {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) {c : C} {d : C} {e : C} {f : c d} {g : d e} (hg : g S.arrows d e) :
    CategoryTheory.CategoryStruct.comp f g S.arrows c e f S.arrows c d

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

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

      A subgroupoid seen as a quiver on vertex set C

      Equations
      • S.asWideQuiver = { Hom := fun (c d : C) => Subtype (S.arrows c d) }
      Instances For

        The coercion of a subgroupoid as a groupoid

        Equations
        @[simp]
        theorem CategoryTheory.Subgroupoid.coe_inv_coe' {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) {c : S.objs} {d : S.objs} (p : c d) :

        The embedding of the coerced subgroupoid to its parent

        Equations
        • S.hom = { obj := fun (c : S.objs) => c, map := fun {X Y : S.objs} (f : X Y) => f, map_id := , map_comp := }
        Instances For
          theorem CategoryTheory.Subgroupoid.hom.faithful {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) (c : S.objs) (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
          • 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.

            Equations
            • S = {F : (c : C) × (d : C) × (c d) | F.snd.snd S.arrows F.fst F.snd.fst}
            Instances For
              Equations
              • CategoryTheory.Subgroupoid.instSetLikeSigmaHom = { coe := CategoryTheory.Subgroupoid.toSet, coe_injective' := }
              theorem CategoryTheory.Subgroupoid.mem_iff {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) (F : (c : C) × (d : C) × (c d)) :
              F S F.snd.snd S.arrows F.fst F.snd.fst
              theorem CategoryTheory.Subgroupoid.le_iff {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) (T : CategoryTheory.Subgroupoid C) :
              S T ∀ {c d : C}, S.arrows c d T.arrows c d
              Equations
              • CategoryTheory.Subgroupoid.instTop = { top := { arrows := fun (x x_1 : C) => Set.univ, inv := , mul := } }
              theorem CategoryTheory.Subgroupoid.mem_top {C : Type u} [CategoryTheory.Groupoid C] {c : C} {d : C} (f : c d) :
              f .arrows c d
              Equations
              • CategoryTheory.Subgroupoid.instBot = { bot := { arrows := fun (x x_1 : C) => , inv := , mul := } }
              Equations
              • CategoryTheory.Subgroupoid.instInhabited = { default := }
              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) => Ss, S.arrows c d, inv := , mul := } }
              theorem CategoryTheory.Subgroupoid.mem_sInf_arrows {C : Type u} [CategoryTheory.Groupoid C] {s : Set (CategoryTheory.Subgroupoid C)} {c : C} {d : C} {p : c d} :
              p (sInf s).arrows c d Ss, p S.arrows c d
              theorem CategoryTheory.Subgroupoid.mem_sInf {C : Type u} [CategoryTheory.Groupoid C] {s : Set (CategoryTheory.Subgroupoid C)} {p : (c : C) × (d : C) × (c d)} :
              p sInf s Ss, p S
              Equations

              The functor associated to the embedding of subgroupoids

              Equations
              Instances For
                inductive CategoryTheory.Subgroupoid.Discrete.Arrows {C : Type u} [CategoryTheory.Groupoid C] (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} [CategoryTheory.Groupoid C] {c : C} {d : C} (f : c d) :
                    f CategoryTheory.Subgroupoid.discrete.arrows c d ∃ (h : c = d), f = CategoryTheory.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} [CategoryTheory.Groupoid C] {S : CategoryTheory.Subgroupoid C} (Sw : S.IsWide) {c : C} {d : C} (h : c = d) :

                      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} [CategoryTheory.Groupoid C] {S : CategoryTheory.Subgroupoid C} (self : S.IsNormal) {c : C} {d : C} (p : c d) {γ : c c} :
                        theorem CategoryTheory.Subgroupoid.IsNormal.conj' {C : Type u} [CategoryTheory.Groupoid C] {S : CategoryTheory.Subgroupoid C} (Sn : S.IsNormal) {c : C} {d : C} (p : d c) {γ : c c} :
                        theorem CategoryTheory.Subgroupoid.sInf_isNormal {C : Type u} [CategoryTheory.Groupoid C] (s : Set (CategoryTheory.Subgroupoid C)) (sn : Ss, S.IsNormal) :
                        (sInf s).IsNormal
                        theorem CategoryTheory.Subgroupoid.discrete_isNormal {C : Type u} [CategoryTheory.Groupoid C] :
                        CategoryTheory.Subgroupoid.discrete.IsNormal
                        theorem CategoryTheory.Subgroupoid.IsNormal.vertexSubgroup {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) (Sn : S.IsNormal) (c : C) (cS : c S.objs) :
                        (S.vertexSubgroup cS).Normal

                        The subgropoid generated by the set of arrows X

                        Equations
                        Instances For
                          theorem CategoryTheory.Subgroupoid.subset_generated {C : Type u} [CategoryTheory.Groupoid C] (X : (c d : C) → Set (c d)) (c : C) (d : C) :

                          The normal sugroupoid generated by the set of arrows X

                          Equations
                          Instances For
                            theorem CategoryTheory.Subgroupoid.IsNormal.generatedNormal_le {C : Type u} [CategoryTheory.Groupoid C] (X : (c d : C) → Set (c d)) {S : CategoryTheory.Subgroupoid C} (Sn : S.IsNormal) :
                            CategoryTheory.Subgroupoid.generatedNormal X S ∀ (c d : C), X c d S.arrows c d

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

                            Equations
                            Instances For

                              The kernel of a functor between subgroupoid is the preimage.

                              Equations
                              Instances For
                                theorem CategoryTheory.Subgroupoid.mem_ker_iff {C : Type u} [CategoryTheory.Groupoid C] {D : Type u_1} [CategoryTheory.Groupoid D] (φ : CategoryTheory.Functor C D) {c : C} {d : C} (f : c d) :
                                f (CategoryTheory.Subgroupoid.ker φ).arrows c d ∃ (h : φ.obj c = φ.obj d), φ.map f = CategoryTheory.eqToHom h

                                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} [CategoryTheory.Groupoid C] {D : Type u_1} [CategoryTheory.Groupoid D] (φ : CategoryTheory.Functor C D) (hφ : Function.Injective φ.obj) (S : CategoryTheory.Subgroupoid C) {c : D} {d : D} (f : c d) :
                                  CategoryTheory.Subgroupoid.Map.Arrows φ 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 = CategoryTheory.CategoryStruct.comp (CategoryTheory.eqToHom ) (CategoryTheory.CategoryStruct.comp (φ.map g) (CategoryTheory.eqToHom hb))

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

                                  Equations
                                  Instances For
                                    theorem CategoryTheory.Subgroupoid.mem_map_iff {C : Type u} [CategoryTheory.Groupoid C] {D : Type u_1} [CategoryTheory.Groupoid D] (φ : CategoryTheory.Functor C D) (hφ : Function.Injective φ.obj) (S : CategoryTheory.Subgroupoid C) {c : D} {d : D} (f : c d) :
                                    f (CategoryTheory.Subgroupoid.map φ 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 = CategoryTheory.CategoryStruct.comp (CategoryTheory.eqToHom ) (CategoryTheory.CategoryStruct.comp (φ.map g) (CategoryTheory.eqToHom hb))

                                    The image of a functor injective on objects

                                    Equations
                                    Instances For
                                      theorem CategoryTheory.Subgroupoid.mem_im_iff {C : Type u} [CategoryTheory.Groupoid C] {D : Type u_1} [CategoryTheory.Groupoid D] (φ : CategoryTheory.Functor C D) (hφ : Function.Injective φ.obj) {c : D} {d : D} (f : c d) :
                                      f (CategoryTheory.Subgroupoid.im φ ).arrows c d ∃ (a : C) (b : C) (g : a b) (ha : φ.obj a = c) (hb : φ.obj b = d), f = CategoryTheory.CategoryStruct.comp (CategoryTheory.eqToHom ) (CategoryTheory.CategoryStruct.comp (φ.map g) (CategoryTheory.eqToHom hb))
                                      theorem CategoryTheory.Subgroupoid.mem_im_objs_iff {C : Type u} [CategoryTheory.Groupoid C] {D : Type u_1} [CategoryTheory.Groupoid D] (φ : CategoryTheory.Functor C D) (hφ : Function.Injective φ.obj) (d : D) :
                                      d (CategoryTheory.Subgroupoid.im φ ).objs ∃ (c : C), φ.obj c = d
                                      @[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} [CategoryTheory.Groupoid C] (S : CategoryTheory.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
                                          theorem CategoryTheory.Subgroupoid.isTotallyDisconnected_iff {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) :
                                          S.IsTotallyDisconnected ∀ (c d : C), (S.arrows c d).Nonemptyc = d

                                          The isotropy subgroupoid of S

                                          Equations
                                          • S.disconnect = { arrows := fun (c d : C) => {f : c d | c = d f S.arrows c d}, inv := , mul := }
                                          Instances For
                                            theorem CategoryTheory.Subgroupoid.disconnect_normal {C : Type u} [CategoryTheory.Groupoid C] (S : CategoryTheory.Subgroupoid C) (Sn : S.IsNormal) :
                                            S.disconnect.IsNormal
                                            @[simp]

                                            The full subgroupoid on a set D : Set C

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