Documentation

LeanPool.PebblingLean.HypercubePath

Paths in hypercubes #

This file connects Hamming distance to the graph-walk API: vertices at Hamming distance d are joined by a walk of length d. This is the geometric input needed for direct delivery in the upper-bound proof.

theorem PebblingLean.Hypercube.diffSet_fromDiffSet_insert {n : } (base : HypercubeVertex n) {s : Finset (Fin n)} {i : Fin n} (hi : is) :
diffSet (fromDiffSet base s) (fromDiffSet base (insert i s)) = {i}
theorem PebblingLean.Hypercube.adj_fromDiffSet_insert {n : } (base : HypercubeVertex n) {s : Finset (Fin n)} {i : Fin n} (hi : is) :
(graph n).Adj (fromDiffSet base s) (fromDiffSet base (insert i s))

Flipping one new coordinate gives an adjacent hypercube vertex.

theorem PebblingLean.Hypercube.exists_walk_fromDiffSet_to_base {n : } (base : HypercubeVertex n) (s : Finset (Fin n)) :
∃ (walk : (graph n).Walk (fromDiffSet base s) base), Graph.Walk.length (graph n) walk = s.card

Flipping the coordinates in s, one at a time, gives a walk back to the base vertex of length s.card.

theorem PebblingLean.Hypercube.exists_walk_length_dist {n : } (x y : HypercubeVertex n) :
∃ (walk : (graph n).Walk x y), Graph.Walk.length (graph n) walk = dist x y

Hypercube Hamming distance is realized by a graph walk of the same length.

theorem PebblingLean.Hypercube.canReachAtLeast_single_dist {n : } (center target : HypercubeVertex n) (T : ) :
Pebbling.CanReachAtLeast (graph n) (Pebbling.single center (T * 2 ^ dist center target)) target T

A single pile of T * 2^d pebbles can directly deliver T pebbles across Hamming distance d.