Documentation

TauCeti.Combinatorics.Graph.Stallings.Basic

Subgroups read by labelled graphs #

A labelled Serre graph assigns inverse letters to reversed darts. Reading the labels of closed paths at a vertex gives a subgroup of the free group. Based label-preserving morphisms send the accepted subgroup into that of the target. Moving the base vertex along a path conjugates the accepted subgroup. Every accepted word also has a reduced-path witness. A graph with finitely many darts accepts a finitely generated subgroup at every vertex.

References #

structure TauCeti.StallingsGraph (α : Type u) :
Type (max (max u (v + 1)) (w + 1))

A based Serre graph with signed-letter dart labels, inverted by reversal.

Instances For
    def TauCeti.StallingsGraph.word {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} :
    S.graph.Path a b → List (α × Bool)

    The label word of a path, in traversal order.

    Instances For
      @[simp]
      theorem TauCeti.StallingsGraph.word_cons {α : Type u_1} (S : StallingsGraph α) {a b c : S.graph.V} (p : S.graph.Path a b) (e : b ⟶ c) :
      S.word (Quiver.Path.cons p e) = S.word p ++ [S.label ↑e]
      @[simp]
      theorem TauCeti.StallingsGraph.word_toPath {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} (e : a ⟶ b) :
      S.word e.toPath = [S.label ↑e]
      @[simp]
      theorem TauCeti.StallingsGraph.word_comp {α : Type u_1} (S : StallingsGraph α) {a b c : S.graph.V} (p : S.graph.Path a b) (q : S.graph.Path b c) :
      S.word (Quiver.Path.comp p q) = S.word p ++ S.word q
      def TauCeti.StallingsGraph.read {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} (p : S.graph.Path a b) :

      The free-group element represented by the word of a path.

      Instances For
        theorem TauCeti.StallingsGraph.read_eq_weight {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} (p : S.graph.Path a b) :
        S.read p = Quiver.Path.weight (fun {i j : S.graph.V} (e : i ⟶ j) => FreeGroup.mk [S.label ↑e]) p

        Reading a path is its weight under the signed-letter labelling.

        @[simp]
        theorem TauCeti.StallingsGraph.read_cons {α : Type u_1} (S : StallingsGraph α) {a b c : S.graph.V} (p : S.graph.Path a b) (e : b ⟶ c) :
        theorem TauCeti.StallingsGraph.read_eq_mk_word {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} (p : S.graph.Path a b) :
        @[simp]
        theorem TauCeti.StallingsGraph.read_toPath {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} (e : a ⟶ b) :
        @[simp]
        @[simp]
        theorem TauCeti.StallingsGraph.read_comp {α : Type u_1} (S : StallingsGraph α) {a b c : S.graph.V} (p : S.graph.Path a b) (q : S.graph.Path b c) :
        S.read (Quiver.Path.comp p q) = S.read p * S.read q
        @[simp]
        @[simp]
        theorem TauCeti.StallingsGraph.read_reverse {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} (p : S.graph.Path a b) :

        The subgroup of the free group read by closed paths at a vertex.

        Instances For
          @[simp]
          theorem TauCeti.StallingsGraph.mem_subgroup_iff {α : Type u_1} (S : StallingsGraph α) {a : S.graph.V} {g : FreeGroup α} :
          g ∈ S.subgroup a ↔ ∃ (p : S.graph.Path a a), S.read p = g
          theorem TauCeti.StallingsGraph.read_mem_subgroup {α : Type u_1} (S : StallingsGraph α) {a : S.graph.V} (p : S.graph.Path a a) :
          S.read p ∈ S.subgroup a
          theorem TauCeti.StallingsGraph.exists_reduced_path_read_eq {α : Type u_1} (S : StallingsGraph α) {a b : S.graph.V} (p : S.graph.Path a b) :
          ∃ (q : S.graph.Path a b), SerreGraph.Path.IsReduced S.graph q ∧ S.read q = S.read p

          Every path has a reduced path with the same endpoints and free-group reading.

          Membership in the accepted subgroup can be witnessed by a reduced closed path.

          Moving the base vertex along a path conjugates the accepted subgroup by its label.

          theorem TauCeti.StallingsGraph.subgroup_fg {α : Type u_1} (S : StallingsGraph α) [Finite S.graph.E] (a : S.graph.V) :
          (S.subgroup a).FG

          A labelled graph with finitely many darts accepts a finitely generated subgroup at each vertex.

          structure TauCeti.StallingsGraph.Hom {α : Type u_1} (S : StallingsGraph α) (T : StallingsGraph α) :
          Type (max (max (max u_2 u_3) u_4) u_5)

          A based Serre-graph morphism preserving dart labels.

          Instances For
            theorem TauCeti.StallingsGraph.Hom.ext {α : Type u_1} {S : StallingsGraph α} {T : StallingsGraph α} {f g : S.Hom T} (h : f.graphHom = g.graphHom) :
            f = g
            theorem TauCeti.StallingsGraph.Hom.ext_iff {α : Type u_1} {S : StallingsGraph α} {T : StallingsGraph α} {f g : S.Hom T} :

            Identity morphism of a based labelled graph.

            Instances For
              def TauCeti.StallingsGraph.Hom.comp {α : Type u_1} {R : StallingsGraph α} {S : StallingsGraph α} {T : StallingsGraph α} (g : S.Hom T) (f : R.Hom S) :
              R.Hom T

              Composition of based labelled-graph morphisms.

              Instances For
                @[simp]
                theorem TauCeti.StallingsGraph.Hom.comp_graphHom {α : Type u_1} {R : StallingsGraph α} {S : StallingsGraph α} {T : StallingsGraph α} (g : S.Hom T) (f : R.Hom S) :
                @[simp]
                theorem TauCeti.StallingsGraph.Hom.id_comp {α : Type u_1} {S : StallingsGraph α} {T : StallingsGraph α} (f : S.Hom T) :
                (id T).comp f = f
                @[simp]
                theorem TauCeti.StallingsGraph.Hom.comp_id {α : Type u_1} {S : StallingsGraph α} {T : StallingsGraph α} (f : S.Hom T) :
                f.comp (id S) = f
                theorem TauCeti.StallingsGraph.Hom.comp_assoc {α : Type u_1} {R : StallingsGraph α} {S : StallingsGraph α} {T : StallingsGraph α} {U : StallingsGraph α} (f : R.Hom S) (g : S.Hom T) (h : T.Hom U) :
                h.comp (g.comp f) = (h.comp g).comp f
                @[simp]
                theorem TauCeti.StallingsGraph.Hom.word_mapPath {α : Type u_1} {S : StallingsGraph α} {T : StallingsGraph α} (f : S.Hom T) {a b : S.graph.V} (p : S.graph.Path a b) :
                @[simp]
                theorem TauCeti.StallingsGraph.Hom.read_mapPath {α : Type u_1} {S : StallingsGraph α} {T : StallingsGraph α} (f : S.Hom T) {a b : S.graph.V} (p : S.graph.Path a b) :

                A labelled morphism sends loops at any vertex to loops with the same reading.

                A based label-preserving morphism sends every accepted word to an accepted word.

                The rose with one petal for each generator, labelled by those generators.

                Instances For
                  @[simp]
                  theorem TauCeti.StallingsGraph.rose_label (α : Type u_2) (e : (rose α).graph.E) :
                  (rose α).label e = e
                  def TauCeti.StallingsGraph.toRose {α : Type u_1} (S : StallingsGraph α) :
                  S.Hom (rose α)

                  The labels give the canonical morphism from any labelled graph to the rose.

                  Instances For
                    @[simp]
                    theorem TauCeti.StallingsGraph.Hom.eq_toRose {α : Type u_1} (S : StallingsGraph α) (f : S.Hom (rose α)) :
                    f = S.toRose

                    The rose admits exactly one labelled morphism from each labelled graph.

                    Every free-group element is read by a loop in the rose.