Documentation

Mathlib.Combinatorics.SimpleGraph.Walks.Operations

Operations on walks #

Operations on walks that produce a new walk in the same graph.

Main definitions #

Tags #

walks

def SimpleGraph.Walk.copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') :
G.Walk u' v'

Change the endpoints of a walk using equalities. This is helpful for relaxing definitional equality constraints and to be able to state otherwise difficult-to-state lemmas. While this is a simple wrapper around Eq.rec, it gives a canonical way to write it.

The simp-normal form is for the copy to be pushed outward. That way calculations can occur within the "copy context."

Equations
    Instances For
      @[simp]
      theorem SimpleGraph.Walk.copy_rfl_rfl {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
      p.copy = p
      @[simp]
      theorem SimpleGraph.Walk.copy_copy {V : Type u} {G : SimpleGraph V} {u v u' v' u'' v'' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') (hu' : u' = u'') (hv' : v' = v'') :
      (p.copy hu hv).copy hu' hv' = p.copy
      @[simp]
      theorem SimpleGraph.Walk.copy_nil {V : Type u} {G : SimpleGraph V} {u u' : V} (hu : u = u') :
      nil.copy hu hu = nil
      theorem SimpleGraph.Walk.copy_cons {V : Type u} {G : SimpleGraph V} {u v w u' w' : V} (h : G.Adj u v) (p : G.Walk v w) (hu : u = u') (hw : w = w') :
      (cons h p).copy hu hw = cons (p.copy hw)
      @[simp]
      theorem SimpleGraph.Walk.cons_copy {V : Type u} {G : SimpleGraph V} {u v w v' w' : V} (h : G.Adj u v) (p : G.Walk v' w') (hv : v' = v) (hw : w' = w) :
      cons h (p.copy hv hw) = (cons p).copy hw
      def SimpleGraph.Walk.append {V : Type u} {G : SimpleGraph V} {u v w : V} :
      G.Walk u vG.Walk v wG.Walk u w

      The concatenation of two compatible walks.

      Equations
        Instances For
          def SimpleGraph.Walk.concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
          G.Walk u w

          The reversed version of SimpleGraph.Walk.cons, concatenating an edge to the end of a walk.

          Equations
            Instances For
              theorem SimpleGraph.Walk.concat_eq_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
              p.concat h = p.append (cons h nil)
              def SimpleGraph.Walk.reverseAux {V : Type u} {G : SimpleGraph V} {u v w : V} :
              G.Walk u vG.Walk u wG.Walk v w

              The concatenation of the reverse of the first walk with the second walk.

              Equations
                Instances For
                  def SimpleGraph.Walk.reverse {V : Type u} {G : SimpleGraph V} {u v : V} (w : G.Walk u v) :
                  G.Walk v u

                  The walk in reverse.

                  Equations
                    Instances For
                      @[simp]
                      theorem SimpleGraph.Walk.cons_append {V : Type u} {G : SimpleGraph V} {u v w x : V} (h : G.Adj u v) (p : G.Walk v w) (q : G.Walk w x) :
                      (cons h p).append q = cons h (p.append q)
                      @[simp]
                      theorem SimpleGraph.Walk.cons_nil_append {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) :
                      (cons h nil).append p = cons h p
                      @[simp]
                      theorem SimpleGraph.Walk.nil_append {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                      @[simp]
                      theorem SimpleGraph.Walk.append_nil {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                      theorem SimpleGraph.Walk.append_assoc {V : Type u} {G : SimpleGraph V} {u v w x : V} (p : G.Walk u v) (q : G.Walk v w) (r : G.Walk w x) :
                      p.append (q.append r) = (p.append q).append r
                      @[simp]
                      theorem SimpleGraph.Walk.append_copy_copy {V : Type u} {G : SimpleGraph V} {u v w u' v' w' : V} (p : G.Walk u v) (q : G.Walk v w) (hu : u = u') (hv : v = v') (hw : w = w') :
                      (p.copy hu hv).append (q.copy hv hw) = (p.append q).copy hu hw
                      theorem SimpleGraph.Walk.concat_nil {V : Type u} {G : SimpleGraph V} {u v : V} (h : G.Adj u v) :
                      @[simp]
                      theorem SimpleGraph.Walk.concat_cons {V : Type u} {G : SimpleGraph V} {u v w x : V} (h : G.Adj u v) (p : G.Walk v w) (h' : G.Adj w x) :
                      (cons h p).concat h' = cons h (p.concat h')
                      theorem SimpleGraph.Walk.append_concat {V : Type u} {G : SimpleGraph V} {u v w x : V} (p : G.Walk u v) (q : G.Walk v w) (h : G.Adj w x) :
                      p.append (q.concat h) = (p.append q).concat h
                      theorem SimpleGraph.Walk.concat_append {V : Type u} {G : SimpleGraph V} {u v w x : V} (p : G.Walk u v) (h : G.Adj v w) (q : G.Walk w x) :
                      (p.concat h).append q = p.append (cons h q)
                      theorem SimpleGraph.Walk.exists_cons_eq_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) :
                      ∃ (x : V) (q : G.Walk u x) (h' : G.Adj x w), cons h p = q.concat h'

                      A non-trivial cons walk is representable as a concat walk.

                      theorem SimpleGraph.Walk.exists_concat_eq_cons {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                      ∃ (x : V) (h' : G.Adj u x) (q : G.Walk x w), p.concat h = cons h' q

                      A non-trivial concat walk is representable as a cons walk.

                      theorem SimpleGraph.Walk.reverse_singleton {V : Type u} {G : SimpleGraph V} {u v : V} (h : G.Adj u v) :
                      @[simp]
                      theorem SimpleGraph.Walk.reverse_toWalk {V : Type u} {G : SimpleGraph V} {u v : V} (h : G.Adj u v) :
                      @[simp]
                      theorem SimpleGraph.Walk.cons_reverseAux {V : Type u} {G : SimpleGraph V} {u v w x : V} (p : G.Walk u v) (q : G.Walk w x) (h : G.Adj w u) :
                      (cons h p).reverseAux q = p.reverseAux (cons q)
                      @[simp]
                      theorem SimpleGraph.Walk.append_reverseAux {V : Type u} {G : SimpleGraph V} {u v w x : V} (p : G.Walk u v) (q : G.Walk v w) (r : G.Walk u x) :
                      @[simp]
                      theorem SimpleGraph.Walk.reverseAux_append {V : Type u} {G : SimpleGraph V} {u v w x : V} (p : G.Walk u v) (q : G.Walk u w) (r : G.Walk w x) :
                      theorem SimpleGraph.Walk.reverseAux_eq_reverse_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk u w) :
                      @[simp]
                      theorem SimpleGraph.Walk.reverse_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.reverse_copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') :
                      (p.copy hu hv).reverse = p.reverse.copy hv hu
                      @[simp]
                      theorem SimpleGraph.Walk.reverse_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk v w) :
                      @[simp]
                      theorem SimpleGraph.Walk.reverse_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                      @[simp]
                      theorem SimpleGraph.Walk.reverse_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                      @[simp]
                      theorem SimpleGraph.Walk.length_copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') :
                      (p.copy hu hv).length = p.length
                      @[simp]
                      theorem SimpleGraph.Walk.length_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk v w) :
                      @[simp]
                      theorem SimpleGraph.Walk.length_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                      (p.concat h).length = p.length + 1
                      @[simp]
                      theorem SimpleGraph.Walk.length_reverseAux {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk u w) :
                      @[simp]
                      theorem SimpleGraph.Walk.length_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                      theorem SimpleGraph.Walk.getVert_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk v w) (i : ) :
                      (p.append q).getVert i = if i < p.length then p.getVert i else q.getVert (i - p.length)
                      theorem SimpleGraph.Walk.getVert_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (i : ) :
                      def SimpleGraph.Walk.concatRecAux {V : Type u} {G : SimpleGraph V} {motive : (u v : V) → G.Walk u vSort u_1} (Hnil : {u : V} → motive u u nil) (Hconcat : {u v w : V} → (p : G.Walk u v) → (h : G.Adj v w) → motive u v pmotive u w (p.concat h)) {u v : V} (p : G.Walk u v) :
                      motive v u p.reverse

                      Auxiliary definition for SimpleGraph.Walk.concatRec

                      Equations
                        Instances For
                          def SimpleGraph.Walk.concatRec {V : Type u} {G : SimpleGraph V} {motive : (u v : V) → G.Walk u vSort u_1} (Hnil : {u : V} → motive u u nil) (Hconcat : {u v w : V} → (p : G.Walk u v) → (h : G.Adj v w) → motive u v pmotive u w (p.concat h)) {u v : V} (p : G.Walk u v) :
                          motive u v p

                          Recursor on walks by inducting on SimpleGraph.Walk.concat.

                          This is inducting from the opposite end of the walk compared to SimpleGraph.Walk.rec, which inducts on SimpleGraph.Walk.cons.

                          Equations
                            Instances For
                              @[simp]
                              theorem SimpleGraph.Walk.concatRec_nil {V : Type u} {G : SimpleGraph V} {motive : (u v : V) → G.Walk u vSort u_1} (Hnil : {u : V} → motive u u nil) (Hconcat : {u v w : V} → (p : G.Walk u v) → (h : G.Adj v w) → motive u v pmotive u w (p.concat h)) (u : V) :
                              concatRec Hnil Hconcat nil = Hnil
                              @[simp]
                              theorem SimpleGraph.Walk.concatRec_concat {V : Type u} {G : SimpleGraph V} {motive : (u v : V) → G.Walk u vSort u_1} (Hnil : {u : V} → motive u u nil) (Hconcat : {u v w : V} → (p : G.Walk u v) → (h : G.Adj v w) → motive u v pmotive u w (p.concat h)) {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                              concatRec Hnil Hconcat (p.concat h) = Hconcat p h (concatRec Hnil Hconcat p)
                              theorem SimpleGraph.Walk.concat_ne_nil {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (h : G.Adj v u) :
                              theorem SimpleGraph.Walk.concat_inj {V : Type u} {G : SimpleGraph V} {u v v' w : V} {p : G.Walk u v} {h : G.Adj v w} {p' : G.Walk u v'} {h' : G.Adj v' w} (he : p.concat h = p'.concat h') :
                              ∃ (hv : v = v'), p.copy hv = p'
                              @[simp]
                              theorem SimpleGraph.Walk.support_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                              @[simp]
                              theorem SimpleGraph.Walk.support_copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') :
                              (p.copy hu hv).support = p.support
                              theorem SimpleGraph.Walk.support_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              @[simp]
                              theorem SimpleGraph.Walk.support_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                              theorem SimpleGraph.Walk.tail_support_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              theorem SimpleGraph.Walk.ext_support {V : Type u} {G : SimpleGraph V} {u v : V} {p q : G.Walk u v} (h : p.support = q.support) :
                              p = q
                              @[simp]
                              theorem SimpleGraph.Walk.mem_tail_support_append_iff {V : Type u} {G : SimpleGraph V} {t u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              @[simp]
                              theorem SimpleGraph.Walk.mem_support_append_iff {V : Type u} {G : SimpleGraph V} {t u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              theorem SimpleGraph.Walk.support_subset_support_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (hadj : G.Adj v w) :
                              @[simp]
                              theorem SimpleGraph.Walk.subset_support_append_left {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk v w) :
                              @[simp]
                              theorem SimpleGraph.Walk.subset_support_append_right {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk v w) :
                              theorem SimpleGraph.Walk.coe_support_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              (p.append p').support = {u} + p.support.tail + p'.support.tail
                              theorem SimpleGraph.Walk.coe_support_append' {V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              (p.append p').support = p.support + p'.support - {v}
                              @[simp]
                              theorem SimpleGraph.Walk.darts_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                              (p.concat h).darts = p.darts.concat { fst := v, snd := w, adj := h }
                              @[simp]
                              theorem SimpleGraph.Walk.darts_copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') :
                              (p.copy hu hv).darts = p.darts
                              @[simp]
                              theorem SimpleGraph.Walk.darts_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              (p.append p').darts = p.darts ++ p'.darts
                              theorem SimpleGraph.Walk.mem_darts_reverse {V : Type u} {G : SimpleGraph V} {u v : V} {d : G.Dart} {p : G.Walk u v} :
                              @[simp]
                              theorem SimpleGraph.Walk.edges_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                              @[simp]
                              theorem SimpleGraph.Walk.edges_copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') :
                              (p.copy hu hv).edges = p.edges
                              @[simp]
                              theorem SimpleGraph.Walk.edges_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (p' : G.Walk v w) :
                              (p.append p').edges = p.edges ++ p'.edges
                              @[simp]
                              theorem SimpleGraph.Walk.edges_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                              theorem SimpleGraph.Walk.dart_snd_mem_support_of_mem_darts {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) {d : G.Dart} (h : d p.darts) :
                              theorem SimpleGraph.Walk.fst_mem_support_of_mem_edges {V : Type u} {G : SimpleGraph V} {t u v w : V} (p : G.Walk v w) (he : s(t, u) p.edges) :
                              theorem SimpleGraph.Walk.snd_mem_support_of_mem_edges {V : Type u} {G : SimpleGraph V} {t u v w : V} (p : G.Walk v w) (he : s(t, u) p.edges) :
                              theorem SimpleGraph.Walk.mem_support_of_mem_edges {V : Type u} {G : SimpleGraph V} {u v w : V} {e : Sym2 V} {p : G.Walk u v} (he : e p.edges) (hv : w e) :
                              @[simp]
                              theorem SimpleGraph.Walk.edgeSet_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                              @[simp]
                              theorem SimpleGraph.Walk.edgeSet_concat {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (h : G.Adj v w) :
                              theorem SimpleGraph.Walk.edgeSet_append {V : Type u} {G : SimpleGraph V} {u v w : V} (p : G.Walk u v) (q : G.Walk v w) :
                              @[simp]
                              theorem SimpleGraph.Walk.edgeSet_copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} (p : G.Walk u v) (hu : u = u') (hv : v = v') :
                              (p.copy hu hv).edgeSet = p.edgeSet
                              @[simp]
                              theorem SimpleGraph.Walk.nil_append_iff {V : Type u} {G : SimpleGraph V} {u v w : V} {p : G.Walk u v} {q : G.Walk v w} :
                              (p.append q).Nil p.Nil q.Nil
                              theorem SimpleGraph.Walk.Nil.append {V : Type u} {G : SimpleGraph V} {u v w : V} {p : G.Walk u v} {q : G.Walk v w} (hp : p.Nil) (hq : q.Nil) :
                              (p.append q).Nil
                              @[simp]
                              theorem SimpleGraph.Walk.nil_reverse {V : Type u} {G : SimpleGraph V} {v w : V} {p : G.Walk v w} :
                              def SimpleGraph.Walk.drop {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                              G.Walk (p.getVert n) v

                              The walk obtained by removing the first n darts of a walk.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem SimpleGraph.Walk.drop_length {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                  (p.drop n).length = p.length - n
                                  @[simp]
                                  theorem SimpleGraph.Walk.drop_getVert {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n m : ) :
                                  (p.drop n).getVert m = p.getVert (n + m)
                                  theorem SimpleGraph.Walk.drop_add_heq {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n m : ) :
                                  p.drop (n + m) (p.drop n).drop m
                                  theorem SimpleGraph.Walk.drop_add_eq {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n m : ) :
                                  p.drop (n + m) = ((p.drop n).drop m).copy
                                  theorem SimpleGraph.Walk.nil_drop_iff {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                  (p.drop n).Nil p.length n
                                  theorem SimpleGraph.Walk.drop_cons_eq {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) (n : ) (hn : n 0) :
                                  (cons h p).drop n = (p.drop (n - 1)).copy
                                  theorem SimpleGraph.Walk.darts_drop {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                  theorem SimpleGraph.Walk.edges_drop {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                  def SimpleGraph.Walk.take {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                  G.Walk u (p.getVert n)

                                  The walk obtained by taking the first n darts of a walk.

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem SimpleGraph.Walk.take_zero {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                                      p.take 0 = nil.copy
                                      @[simp]
                                      theorem SimpleGraph.Walk.take_length {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                      (p.take n).length = min n p.length
                                      @[simp]
                                      theorem SimpleGraph.Walk.take_getVert {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n m : ) :
                                      (p.take n).getVert m = p.getVert (min n m)
                                      theorem SimpleGraph.Walk.take_add_heq {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n m : ) :
                                      p.take (n + m) (p.take n).append ((p.drop n).take m)
                                      theorem SimpleGraph.Walk.take_add_eq {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n m : ) :
                                      p.take (n + m) = ((p.take n).append ((p.drop n).take m)).copy
                                      theorem SimpleGraph.Walk.nil_take_iff {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                      (p.take n).Nil p.Nil n = 0
                                      theorem SimpleGraph.Walk.take_of_length_le {V : Type u} {G : SimpleGraph V} {u v : V} {n : } {p : G.Walk u v} (h : p.length n) :
                                      p.take n = p.copy
                                      theorem SimpleGraph.Walk.take_cons_eq {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) (n : ) (hn : n 0) :
                                      (cons h p).take n = cons h ((p.take (n - 1)).copy )
                                      theorem SimpleGraph.Walk.darts_take {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                      theorem SimpleGraph.Walk.edges_take {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                      @[simp]
                                      theorem SimpleGraph.Walk.penultimate_concat {V : Type u} {G : SimpleGraph V} {t u v : V} (p : G.Walk u v) (h : G.Adj v t) :
                                      @[simp]
                                      theorem SimpleGraph.Walk.snd_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                                      @[simp]
                                      theorem SimpleGraph.Walk.penultimate_reverse {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                                      def SimpleGraph.Walk.tail {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                                      G.Walk p.snd v

                                      The walk obtained by removing the first dart of a walk. A nil walk stays nil.

                                      Equations
                                        Instances For
                                          @[simp]
                                          theorem SimpleGraph.Walk.drop_zero {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :
                                          p.drop 0 = p.copy
                                          theorem SimpleGraph.Walk.nil_drop_of_length_le {V : Type u} {G : SimpleGraph V} {u v : V} {n : } {p : G.Walk u v} (h : p.length n) :
                                          (p.drop n).Nil
                                          @[simp]
                                          theorem SimpleGraph.Walk.append_take_drop_eq {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (n : ) :
                                          (p.take n).append (p.drop n) = p
                                          def SimpleGraph.Walk.dropLast {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) :

                                          The walk obtained by removing the last dart of a walk. A nil walk stays nil.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem SimpleGraph.Walk.tail_nil {V : Type u} {G : SimpleGraph V} {v : V} :
                                              @[simp]
                                              theorem SimpleGraph.Walk.tail_cons_nil {V : Type u} {G : SimpleGraph V} {u v : V} (h : G.Adj u v) :
                                              @[simp]
                                              theorem SimpleGraph.Walk.tail_cons {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) :
                                              (cons h p).tail = p.copy
                                              @[deprecated SimpleGraph.Walk.tail_cons (since := "2025-08-19")]
                                              theorem SimpleGraph.Walk.tail_cons_eq {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) :
                                              (cons h p).tail = p.copy

                                              Alias of SimpleGraph.Walk.tail_cons.

                                              @[simp]
                                              theorem SimpleGraph.Walk.dropLast_cons_nil {V : Type u} {G : SimpleGraph V} {u v : V} (h : G.Adj u v) :
                                              @[simp]
                                              theorem SimpleGraph.Walk.dropLast_cons_cons {V : Type u} {G : SimpleGraph V} {u v w w' : V} (h : G.Adj u v) (h₂ : G.Adj v w) (p : G.Walk w w') :
                                              (cons h (cons h₂ p)).dropLast = cons h (cons h₂ p).dropLast
                                              theorem SimpleGraph.Walk.dropLast_cons_of_not_nil {V : Type u} {G : SimpleGraph V} {u v w : V} (h : G.Adj u v) (p : G.Walk v w) (hp : ¬p.Nil) :
                                              (cons h p).dropLast = cons h (p.dropLast.copy )
                                              @[simp]
                                              theorem SimpleGraph.Walk.dropLast_concat {V : Type u} {G : SimpleGraph V} {t u v : V} (p : G.Walk u v) (h : G.Adj v t) :
                                              (p.concat h).dropLast = p.copy
                                              theorem SimpleGraph.Walk.cons_tail_eq {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (hp : ¬p.Nil) :
                                              cons p.tail = p
                                              @[simp]
                                              theorem SimpleGraph.Walk.concat_dropLast {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (hp : G.Adj p.penultimate v) :
                                              @[simp]
                                              theorem SimpleGraph.Walk.cons_support_tail {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (hp : ¬p.Nil) :
                                              @[simp]
                                              theorem SimpleGraph.Walk.length_tail_add_one {V : Type u} {G : SimpleGraph V} {u v : V} {p : G.Walk u v} (hp : ¬p.Nil) :
                                              theorem SimpleGraph.Walk.Nil.tail {V : Type u} {G : SimpleGraph V} {v w : V} {p : G.Walk v w} (hp : p.Nil) :
                                              theorem SimpleGraph.Walk.not_nil_of_tail_not_nil {V : Type u} {G : SimpleGraph V} {v w : V} {p : G.Walk v w} (hp : ¬p.tail.Nil) :
                                              @[simp]
                                              theorem SimpleGraph.Walk.nil_copy {V : Type u} {G : SimpleGraph V} {u v u' v' : V} {p : G.Walk u v} (hu : u = u') (hv : v = v') :
                                              (p.copy hu hv).Nil = p.Nil
                                              theorem SimpleGraph.Walk.Nil.eq_copy_nil {V : Type u} {G : SimpleGraph V} {u v : V} {p : G.Walk u v} (h : p.Nil) :
                                              p = Walk.nil.copy
                                              theorem SimpleGraph.Walk.drop_of_length_le {V : Type u} {G : SimpleGraph V} {u v : V} {n : } {p : G.Walk u v} (h : p.length n) :
                                              p.drop n = nil.copy
                                              theorem SimpleGraph.Walk.support_tail_of_not_nil {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (hp : ¬p.Nil) :
                                              @[deprecated SimpleGraph.Walk.support_tail_of_not_nil (since := "2025-08-26")]
                                              theorem SimpleGraph.Walk.support_tail {V : Type u} {G : SimpleGraph V} {u v : V} (p : G.Walk u v) (hp : ¬p.Nil) :

                                              Alias of SimpleGraph.Walk.support_tail_of_not_nil.

                                              @[simp]
                                              theorem SimpleGraph.Walk.getVert_copy {V : Type u} {G : SimpleGraph V} {u v w x : V} (p : G.Walk u v) (i : ) (h : u = w) (h' : v = x) :
                                              (p.copy h h').getVert i = p.getVert i
                                              @[simp]
                                              theorem SimpleGraph.Walk.getVert_tail {V : Type u} {G : SimpleGraph V} {u v : V} {n : } (p : G.Walk u v) :
                                              p.tail.getVert n = p.getVert (n + 1)
                                              theorem SimpleGraph.Walk.getVert_mem_tail_support {V : Type u} {G : SimpleGraph V} {u v : V} {p : G.Walk u v} (hp : ¬p.Nil) {i : } :
                                              i 0p.getVert i p.support.tail
                                              theorem SimpleGraph.Walk.ext_getVert_le_length {V : Type u} {G : SimpleGraph V} {u v : V} {p q : G.Walk u v} (hl : p.length = q.length) (h : kp.length, p.getVert k = q.getVert k) :
                                              p = q
                                              theorem SimpleGraph.Walk.ext_getVert {V : Type u} {G : SimpleGraph V} {u v : V} {p q : G.Walk u v} (h : ∀ (k : ), p.getVert k = q.getVert k) :
                                              p = q