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.
A possible next vertex after traversing previous -- current, excluding
the immediate reverse step.
Equations
Instances For
An exact-length nonbacktracking continuation, after an initial directed
edge previous -- current has already been traversed.
Equations
- MooreBound.DegreeDiameter.NBContinuation G x✝¹ x✝ 0 = PUnit.{?u.1 + 1}
- MooreBound.DegreeDiameter.NBContinuation G x✝¹ x✝ n.succ = ((next : MooreBound.DegreeDiameter.ForwardNeighbor G x✝¹ x✝) × MooreBound.DegreeDiameter.NBContinuation G x✝ (↑next) n)
Instances For
An exact-length nonbacktracking route beginning at root.
Equations
- MooreBound.DegreeDiameter.ExactNBRoute G root 0 = PUnit.{?u.1 + 1}
- MooreBound.DegreeDiameter.ExactNBRoute G root n.succ = ((first : ↑(G.neighborSet root)) × MooreBound.DegreeDiameter.NBContinuation G root (↑first) n)
Instances For
The last vertex of a nonbacktracking continuation.
Equations
Instances For
The last vertex of an exact nonbacktracking route.
Equations
- MooreBound.DegreeDiameter.ExactNBRoute.endpoint G root x_2 = root
- MooreBound.DegreeDiameter.ExactNBRoute.endpoint G root route = MooreBound.DegreeDiameter.NBContinuation.endpoint G route.snd
Instances For
Convert a path beginning at current, which avoids previous, into the
corresponding nonbacktracking continuation.
Equations
- MooreBound.DegreeDiameter.NBContinuation.ofPath SimpleGraph.Walk.nil x_8 x_9 = PUnit.unit
- MooreBound.DegreeDiameter.NBContinuation.ofPath (SimpleGraph.Walk.cons hadj tail) hp hprevious = ⟨⟨v, ⋯⟩, MooreBound.DegreeDiameter.NBContinuation.ofPath tail ⋯ ⋯⟩
Instances For
Every path gives an exact nonbacktracking route with the same endpoint.
Equations
Instances For
Removing the vertex just left leaves at most d - 1 choices.
There are at most (d - 1)^n nonbacktracking continuations of length
n after a directed edge.
The distance-n+1 route layer has at most d(d-1)^n members.
Routes of length at most k, presented recursively as the disjoint union
of the earlier layers and the exact length-k layer.
Equations
- MooreBound.DegreeDiameter.BoundedNBRoute G root 0 = PUnit.{?u.1 + 1}
- MooreBound.DegreeDiameter.BoundedNBRoute G root n.succ = (MooreBound.DegreeDiameter.BoundedNBRoute G root n ⊕ MooreBound.DegreeDiameter.ExactNBRoute G root (n + 1))
Instances For
Endpoint of a route of length at most k.
Equations
- MooreBound.DegreeDiameter.BoundedNBRoute.endpoint G root x_2 = root
- MooreBound.DegreeDiameter.BoundedNBRoute.endpoint G root (Sum.inl route) = MooreBound.DegreeDiameter.BoundedNBRoute.endpoint G root route
- MooreBound.DegreeDiameter.BoundedNBRoute.endpoint G root (Sum.inr route) = MooreBound.DegreeDiameter.ExactNBRoute.endpoint G root route
Instances For
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.
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.
Exact Moore bound for every finite graph of maximum degree at most d
and extended diameter at most 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.