Transport across graph isomorphisms #
The recursive upper bound is naturally proved on Cartesian products. To apply those product constructions to hypercubes, we need a lightweight way to move pebbling distributions and solvability statements across graph isomorphisms.
theorem
PebblingLean.GraphIso.map_move
{V : Type u}
{W : Type v}
{G : Graph V}
{H : Graph W}
[DecidableEq V]
[DecidableEq W]
(iso : GraphIso G H)
{D E : Pebbling V}
(hmove : Pebbling.Move G D E)
:
Pebbling.Move H (iso.mapDistribution D) (iso.mapDistribution E)
theorem
PebblingLean.GraphIso.map_reaches
{V : Type u}
{W : Type v}
{G : Graph V}
{H : Graph W}
[DecidableEq V]
[DecidableEq W]
(iso : GraphIso G H)
{D E : Pebbling V}
(hreach : Pebbling.Reaches G D E)
:
Pebbling.Reaches H (iso.mapDistribution D) (iso.mapDistribution E)
theorem
PebblingLean.GraphIso.map_canReachAtLeast
{V : Type u}
{W : Type v}
{G : Graph V}
{H : Graph W}
[DecidableEq V]
[DecidableEq W]
(iso : GraphIso G H)
{D : Pebbling V}
{target : W}
{T : ℕ}
(hcan : Pebbling.CanReachAtLeast G D (iso.toEquiv.symm target) T)
:
Pebbling.CanReachAtLeast H (iso.mapDistribution D) target T
theorem
PebblingLean.GraphIso.map_solvableAtLeast
{V : Type u}
{W : Type v}
{G : Graph V}
{H : Graph W}
[DecidableEq V]
[DecidableEq W]
(iso : GraphIso G H)
{D : Pebbling V}
{T : ℕ}
(hsolv : Pebbling.SolvableAtLeast G D T)
:
Pebbling.SolvableAtLeast H (iso.mapDistribution D) T
theorem
PebblingLean.GraphIso.map_minOccupiedPileSize
{V : Type u}
{W : Type v}
{G : Graph V}
{H : Graph W}
(iso : GraphIso G H)
{D : Pebbling V}
{S : ℕ}
(hmin : D.MinOccupiedPileSize S)
:
(iso.mapDistribution D).MinOccupiedPileSize S
theorem
PebblingLean.GraphIso.map_hasSolvableAtMostSize
{V : Type u}
{W : Type v}
{G : Graph V}
{H : Graph W}
[Fintype V]
[Fintype W]
[DecidableEq V]
[DecidableEq W]
(iso : GraphIso G H)
{T k : ℕ}
(h : Pebbling.HasSolvableAtMostSize G T k)
: