Documentation

LeanPool.MooreBound.DegreeDiameter.MooreBound

The exact Moore bound #

This module proves the standard breadth-first (Moore) bound used in the degree--diameter problem. Starting from a root, a shortest route has at most d choices for its first edge and at most d - 1 choices for each later edge: the edge just traversed cannot immediately be traversed backwards.

The route types below make that argument literal. In particular, the proof does not obtain the leading term indirectly from the coarser (d + 1)^k bound in Framework.

Lean Pool port of wewantmoore commit d59bd80ea93fabb9faf769e790ab47692645e022. The port adds a namespace and adapts proofs to the current Mathlib APIs and repository style.

def MooreBound.DegreeDiameter.ForwardNeighbor {V : Type u} (G : SimpleGraph V) (previous current : V) :

A possible next vertex after traversing previous -- current, excluding the immediate reverse step.

Equations
Instances For
    instance MooreBound.DegreeDiameter.finite_forwardNeighbor {V : Type u} [Finite V] (G : SimpleGraph V) (previous current : V) :
    Finite (ForwardNeighbor G previous current)
    def MooreBound.DegreeDiameter.NBContinuation {V : Type u} (G : SimpleGraph V) :
    V → V → ℕ → Type u

    An exact-length nonbacktracking continuation, after an initial directed edge previous -- current has already been traversed.

    Equations
    Instances For
      instance MooreBound.DegreeDiameter.finite_nbContinuation {V : Type u} [Finite V] (G : SimpleGraph V) (previous current : V) (n : ℕ) :
      Finite (NBContinuation G previous current n)
      def MooreBound.DegreeDiameter.ExactNBRoute {V : Type u} (G : SimpleGraph V) (root : V) :
      ℕ → Type u

      An exact-length nonbacktracking route beginning at root.

      Equations
      Instances For
        instance MooreBound.DegreeDiameter.finite_exactNBRoute {V : Type u} [Finite V] (G : SimpleGraph V) (root : V) (n : ℕ) :
        Finite (ExactNBRoute G root n)
        def MooreBound.DegreeDiameter.NBContinuation.endpoint {V : Type u} (G : SimpleGraph V) {previous current : V} {n : ℕ} :
        NBContinuation G previous current n → V

        The last vertex of a nonbacktracking continuation.

        Equations
        Instances For
          def MooreBound.DegreeDiameter.ExactNBRoute.endpoint {V : Type u} (G : SimpleGraph V) (root : V) {n : ℕ} :
          ExactNBRoute G root n → V

          The last vertex of an exact nonbacktracking route.

          Equations
          Instances For
            theorem MooreBound.DegreeDiameter.ExactNBRoute.endpoint_cast {V : Type u} (G : SimpleGraph V) (root : V) {m n : ℕ} (h : m = n) (route : ExactNBRoute G root m) :
            endpoint G root (h ▸ route) = endpoint G root route
            def MooreBound.DegreeDiameter.NBContinuation.ofPath {V : Type u} {G : SimpleGraph V} {previous current target : V} (p : G.Walk current target) :
            p.IsPath → previous ∉ p.support → NBContinuation G previous current p.length

            Convert a path beginning at current, which avoids previous, into the corresponding nonbacktracking continuation.

            Equations
            Instances For
              theorem MooreBound.DegreeDiameter.NBContinuation.endpoint_ofPath {V : Type u} {G : SimpleGraph V} {previous current target : V} (p : G.Walk current target) (hp : p.IsPath) (hprevious : previous ∉ p.support) :
              endpoint G (ofPath p hp hprevious) = target
              def MooreBound.DegreeDiameter.ExactNBRoute.ofPath {V : Type u} {G : SimpleGraph V} {root target : V} (p : G.Walk root target) (hp : p.IsPath) :

              Every path gives an exact nonbacktracking route with the same endpoint.

              Equations
              Instances For
                theorem MooreBound.DegreeDiameter.ExactNBRoute.endpoint_ofPath {V : Type u} {G : SimpleGraph V} {root target : V} (p : G.Walk root target) (hp : p.IsPath) :
                endpoint G root (ofPath p hp) = target
                theorem MooreBound.DegreeDiameter.natCard_forwardNeighbor_le {V : Type u} {G : SimpleGraph V} {d : ℕ} (hdegree : MaxDegreeLE G d) {previous current : V} (hpc : G.Adj previous current) :
                Nat.card (ForwardNeighbor G previous current) ≤ d - 1

                Removing the vertex just left leaves at most d - 1 choices.

                theorem MooreBound.DegreeDiameter.natCard_nbContinuation_le {V : Type u} [Finite V] {G : SimpleGraph V} {d : ℕ} (hdegree : MaxDegreeLE G d) {previous current : V} (hpc : G.Adj previous current) (n : ℕ) :
                Nat.card (NBContinuation G previous current n) ≤ (d - 1) ^ n

                There are at most (d - 1)^n nonbacktracking continuations of length n after a directed edge.

                theorem MooreBound.DegreeDiameter.natCard_exactNBRoute_succ_le {V : Type u} [Finite V] {G : SimpleGraph V} {d : ℕ} (hdegree : MaxDegreeLE G d) (root : V) (n : ℕ) :
                Nat.card (ExactNBRoute G root (n + 1)) ≤ d * (d - 1) ^ n

                The distance-n+1 route layer has at most d(d-1)^n members.

                def MooreBound.DegreeDiameter.BoundedNBRoute {V : Type u} (G : SimpleGraph V) (root : V) :
                ℕ → Type u

                Routes of length at most k, presented recursively as the disjoint union of the earlier layers and the exact length-k layer.

                Equations
                Instances For
                  theorem MooreBound.DegreeDiameter.exists_boundedNBRoute_endpoint_of_path {V : Type u} {G : SimpleGraph V} {root target : V} (p : G.Walk root target) (hp : p.IsPath) {k : ℕ} (hlength : p.length ≤ k) :
                  ∃ (route : BoundedNBRoute G root k), BoundedNBRoute.endpoint G root route = target

                  A path of length at most k belongs to the bounded route type and keeps its endpoint. This is the formal shortest/nonbacktracking-route step in the standard Moore-bound proof.

                  theorem MooreBound.DegreeDiameter.natCard_boundedNBRoute_le {V : Type u} [Finite V] {G : SimpleGraph V} {d : ℕ} (hdegree : MaxDegreeLE G d) (root : V) (k : ℕ) :

                  The recursive bounded-route type has exactly the cardinality estimate in the Moore expression.

                  The exact Moore expression is bounded by the convenient leading-term comparison (d + 1)^k. This lemma is used only after the exact graph bound has been established.

                  theorem MooreBound.DegreeDiameter.natCard_le_mooreBound_of_ediam_le {V : Type u} [Finite V] [Nonempty V] {G : SimpleGraph V} {d k : ℕ} (hdegree : MaxDegreeLE G d) (hdiam : G.ediam ≤ ↑k) :

                  Exact Moore bound for every finite graph of maximum degree at most d and extended diameter at most k.

                  theorem MooreBound.DegreeDiameter.natCard_le_mooreBound_of_ediam_le' {V : Type u} [Finite V] {G : SimpleGraph V} {d k : ℕ} (hdegree : MaxDegreeLE G d) (hdiam : G.ediam ≤ ↑k) :

                  The exact Moore bound, including the empty vertex type.

                  Every graph order admitted in the definition of nKD obeys the exact Moore bound.

                  The exact paper inequality n_k(d) ≤ 1 + d ∑_{j<k}(d-1)^j.