Documentation

TauCeti.Combinatorics.SimpleGraph.Connectivity.ArrowWalk

Walks of a simple graph as directed walks of its adjacency arrow family #

The adjacency arrow family SimpleGraph.AdjHom G of a simple graph G has a single arrow from v to w exactly when v and w are adjacent, so every edge gives one arrow in each direction. Directed walks along it (TauCeti.ArrowWalk) are the objects on which the network theory runs, including the directed forms of Menger's theorem.

This file identifies the walks of G with the directed walks of its adjacency arrow family (SimpleGraph.Walk.arrowWalkEquiv). The identification preserves the length and the vertex sequence, hence paths. Deleting a set X of vertices corresponds to avoiding it: reachability in the subgraph induced on the complement of X is reachability along the adjacency arrow family through walks visiting no vertex of X. This is what transports the vertex forms of Menger's theorem from arrow families to simple graphs.

Main definitions #

Main results #

@[reducible, inline]
abbrev SimpleGraph.AdjHom {V : Type u} (G : SimpleGraph V) (v w : V) :

The adjacency arrow family of a simple graph: a single arrow from v to w exactly when v and w are adjacent, so every edge gives one arrow in each direction.

Instances For
    def SimpleGraph.Walk.toArrowWalk {V : Type u} {G : SimpleGraph V} {u v : V} :
    G.Walk u v → TauCeti.ArrowWalk G.AdjHom u v

    A walk of G as a directed walk of the adjacency arrow family, visiting the same vertices in the same order.

    Instances For
      @[simp]
      theorem SimpleGraph.Walk.toArrowWalk_cons {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) :
      @[simp]
      theorem SimpleGraph.Walk.toArrowWalk_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk v w) :

      The directed walk of a concatenation is the composite of the directed walks.

      @[simp]
      theorem SimpleGraph.Walk.vertices_toArrowWalk {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :

      The directed walk of a walk visits the vertices of its support, in order.

      @[simp]
      theorem SimpleGraph.Walk.length_toArrowWalk {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
      @[simp]
      theorem SimpleGraph.Walk.isPath_toArrowWalk_iff {V : Type u} {G : SimpleGraph V} {u v : V} {p : G.Walk u v} :
      def TauCeti.ArrowWalk.toWalk {V : Type u} {G : SimpleGraph V} {u v : V} :
      ArrowWalk G.AdjHom u v → G.Walk u v

      A directed walk of the adjacency arrow family of G, as a walk of G visiting the same vertices in the same order.

      Instances For
        @[simp]
        theorem TauCeti.ArrowWalk.toWalk_cons {V : Type u} {G : SimpleGraph V} {u v w : V} (q : ArrowWalk G.AdjHom u v) (e : G.AdjHom v w) :
        (q.cons e).toWalk = q.toWalk.concat ⋯
        @[simp]
        theorem TauCeti.ArrowWalk.toWalk_comp {V : Type u} {G : SimpleGraph V} {u v w : V} (q : ArrowWalk G.AdjHom u v) (r : ArrowWalk G.AdjHom v w) :

        The walk of a composite directed walk is the concatenation of the walks.

        @[simp]
        theorem TauCeti.ArrowWalk.support_toWalk {V : Type u} {G : SimpleGraph V} {u v : V} (q : ArrowWalk G.AdjHom u v) :

        The walk of a directed walk has the vertices of the directed walk as its support.

        @[simp]
        theorem TauCeti.ArrowWalk.length_toWalk {V : Type u} {G : SimpleGraph V} {u v : V} (q : ArrowWalk G.AdjHom u v) :
        @[simp]
        theorem TauCeti.ArrowWalk.isPath_toWalk_iff {V : Type u} {G : SimpleGraph V} {u v : V} {q : ArrowWalk G.AdjHom u v} :
        @[simp]
        theorem SimpleGraph.Walk.toWalk_toArrowWalk {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :

        Returning a walk from the adjacency arrow family recovers it.

        @[simp]

        Every directed walk of the adjacency arrow family is the directed walk of its walk in G.

        The walks of G between two vertices are the directed walks of the adjacency arrow family between them, with the same vertex sequences.

        Instances For
          @[simp]
          theorem SimpleGraph.Walk.arrowWalkEquiv_apply {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
          @[simp]

          Reachability #

          Reachability in G is reachability along its adjacency arrow family.

          theorem SimpleGraph.reachable_induce_iff {V : Type u} {G : SimpleGraph V} {S : Set V} {s t : ↑S} :
          (induce S G).Reachable s t ↔ ∃ (p : G.Walk ↑s ↑t), ∀ v ∈ p.support, v ∈ S

          Two vertices of a set S are reachable in the subgraph induced on S exactly when some walk of G between them visits only vertices of S.

          theorem SimpleGraph.reachableAvoiding_adjHom_iff {V : Type u} {G : SimpleGraph V} {s t : V} {X : Set V} :
          TauCeti.ReachableAvoiding G.AdjHom X s t ↔ ∃ (p : G.Walk s t), ∀ v ∈ p.support, v ∉ X

          Reachability along the adjacency arrow family avoiding a set X of vertices is the existence of a walk of G visiting no vertex of X.

          theorem SimpleGraph.reachableAvoiding_singleton_adjHom_iff {V : Type u} {G : SimpleGraph V} {s t x : V} :
          TauCeti.ReachableAvoiding G.AdjHom {x} s t ↔ ∃ (p : G.Walk s t), x ∉ p.support

          Avoiding one vertex along the adjacency arrow family is the existence of a simple-graph walk whose support avoids that vertex.

          theorem TauCeti.ReachableAvoiding.reachable {V : Type u} {G : SimpleGraph V} {s t : V} {X : Set V} (h : ReachableAvoiding G.AdjHom X s t) :
          G.Reachable s t

          Reachability while avoiding vertices implies ordinary simple-graph reachability.

          theorem SimpleGraph.reachable_induce_compl_iff {V : Type u} {G : SimpleGraph V} {X : Set V} {s t : ↑Xᶜ} :

          Reachability after deleting a set X of vertices, in the subgraph induced on its complement, is reachability along the adjacency arrow family avoiding X.