Documentation

LeanPool.PebblingLean.Basic

Basic definitions for graph pebbling #

This file sets up the objects that should remain stable throughout the formalization: simple undirected graphs, pebbling distributions, legal pebbling moves, reachability, solvability, and optimality.

structure PebblingLean.Graph (V : Type u) :

A simple undirected graph, kept intentionally small for the pebbling formalization.

  • Adj : VVProp

    The adjacency relation between vertices.

  • symm {u v : V} : self.Adj u vself.Adj v u

    Adjacency is symmetric.

  • loopless (v : V) : ¬self.Adj v v

    The graph has no self-loops.

Instances For
    theorem PebblingLean.Graph.adj_comm {V : Type u} (G : Graph V) {u v : V} :
    G.Adj u v G.Adj v u
    @[reducible, inline]
    abbrev PebblingLean.Pebbling (V : Type u) :

    A pebbling distribution assigns a nonnegative number of pebbles to each vertex.

    Equations
    Instances For

      The total number of pebbles in a finite distribution.

      Equations
      Instances For

        Pointwise domination of pebbling distributions.

        Equations
        Instances For
          @[simp]
          theorem PebblingLean.Pebbling.size_zero {V : Type u} [Fintype V] :
          (size fun (x : V) => 0) = 0
          theorem PebblingLean.Pebbling.le_size {V : Type u} [Fintype V] (D : Pebbling V) (v : V) :
          D v D.size

          A single vertex count is bounded by the total size of a finite distribution.

          The distribution obtained by moving two pebbles from u to one pebble at v. Legality of this operation is recorded separately in Move.

          Equations
          Instances For
            @[simp]
            @[simp]
            theorem PebblingLean.Pebbling.moveDistribution_apply_to {V : Type u} [DecidableEq V] (D : Pebbling V) {u v : V} (h : v u) :
            D.moveDistribution u v v = D v + 1
            @[simp]
            theorem PebblingLean.Pebbling.moveDistribution_apply_of_ne {V : Type u} [DecidableEq V] (D : Pebbling V) {u v x : V} (hxu : x u) (hxv : x v) :
            D.moveDistribution u v x = D x
            theorem PebblingLean.Pebbling.moveDistribution_mono {V : Type u} [DecidableEq V] {D D' : Pebbling V} {u v : V} (huv : u v) (hdom : D'.Dominates D) :

            Performing the same move from a larger distribution gives a larger result.

            def PebblingLean.Pebbling.Move {V : Type u} [DecidableEq V] (G : Graph V) (D E : Pebbling V) :

            One legal pebbling move: remove two pebbles from u and add one pebble to an adjacent vertex v.

            Equations
            Instances For

              E is reachable from D by zero or more pebbling moves.

              Equations
              Instances For
                def PebblingLean.Pebbling.CanReachAtLeast {V : Type u} [DecidableEq V] (G : Graph V) (D : Pebbling V) (target : V) (T : ) :

                Reach a target with at least T pebbles.

                Equations
                Instances For
                  def PebblingLean.Pebbling.CanReach {V : Type u} [DecidableEq V] (G : Graph V) (D : Pebbling V) (target : V) :

                  A distribution can reach a target if some reachable distribution has at least one pebble on that target.

                  Equations
                  Instances For

                    A distribution is T-solvable if it can move at least T pebbles to every target.

                    Equations
                    Instances For

                      A distribution is solvable if it can reach every target vertex.

                      Equations
                      Instances For
                        theorem PebblingLean.Pebbling.canReachAtLeast_zero {V : Type u} [DecidableEq V] (G : Graph V) (D : Pebbling V) (target : V) :
                        CanReachAtLeast G D target 0

                        Reaching demand zero is automatic.

                        Every distribution is zero-demand solvable.

                        There is a solvable distribution of total size k.

                        Equations
                        Instances For

                          There is a T-solvable distribution of total size k.

                          Equations
                          Instances For

                            There is a T-solvable distribution of total size at most k. This is the natural form for upper-bound constructions.

                            Equations
                            Instances For

                              Every occupied pile in D has size at least S.

                              Equations
                              Instances For

                                Number of occupied vertices in a finite pebbling distribution.

                                Equations
                                Instances For

                                  A relational form of the optimal pebbling number: k is optimal if there is a solvable distribution with k pebbles, and none with fewer. This avoids choosing a numerical value before proving existence for the graph family under study.

                                  Equations
                                  Instances For

                                    A relational form of the optimal T-pebbling number.

                                    Equations
                                    Instances For
                                      theorem PebblingLean.Pebbling.move_of_dominates {V : Type u} [DecidableEq V] {G : Graph V} {D E D' : Pebbling V} (hmove : Move G D E) (hdom : D'.Dominates D) :
                                      ∃ (E' : Pebbling V), Move G D' E' E'.Dominates E

                                      A single move can be replayed from a dominating distribution.

                                      theorem PebblingLean.Pebbling.reaches_of_dominates {V : Type u} [DecidableEq V] {G : Graph V} {D E D' : Pebbling V} (hreach : Reaches G D E) (hdom : D'.Dominates D) :
                                      ∃ (E' : Pebbling V), Reaches G D' E' E'.Dominates E

                                      Any sequence of moves can be replayed from a dominating distribution.

                                      theorem PebblingLean.Pebbling.canReachAtLeast_of_dominates {V : Type u} [DecidableEq V] {G : Graph V} {D D' : Pebbling V} {target : V} {T : } (hcan : CanReachAtLeast G D target T) (hdom : D'.Dominates D) :
                                      CanReachAtLeast G D' target T

                                      Extra pebbles cannot hurt target reachability.

                                      theorem PebblingLean.Pebbling.canReachAtLeast_mono {V : Type u} [DecidableEq V] {G : Graph V} {D : Pebbling V} {target : V} {T T' : } (hTT' : T' T) (hcan : CanReachAtLeast G D target T) :
                                      CanReachAtLeast G D target T'

                                      If a distribution can reach a larger demand, it can reach any smaller demand.

                                      theorem PebblingLean.Pebbling.solvableAtLeast_of_dominates {V : Type u} [DecidableEq V] {G : Graph V} {D D' : Pebbling V} {T : } (hsolv : SolvableAtLeast G D T) (hdom : D'.Dominates D) :

                                      Extra pebbles cannot hurt T-solvability.

                                      theorem PebblingLean.Pebbling.solvableAtLeast_mono {V : Type u} [DecidableEq V] {G : Graph V} {D : Pebbling V} {T T' : } (hTT' : T' T) (hsolv : SolvableAtLeast G D T) :

                                      T-solvability implies any smaller demand.

                                      theorem PebblingLean.Pebbling.solvable_of_solvableAtLeast {V : Type u} [DecidableEq V] {G : Graph V} {D : Pebbling V} {T : } (hT : 1 T) (hsolv : SolvableAtLeast G D T) :

                                      A distribution that is T-solvable for T ≥ 1 is solvable in the usual one-pebble sense.

                                      A bounded-size construction for a larger demand also works for any smaller demand.

                                      A construction with size at most k is also a construction with any larger size bound.

                                      theorem PebblingLean.Pebbling.size_add {V : Type u} [Fintype V] (D E : Pebbling V) :
                                      (D + E).size = D.size + E.size

                                      The size of a sum of two finite distributions is the sum of their sizes.

                                      theorem PebblingLean.Pebbling.sum_ite_nonzero_const {V : Type u} [Fintype V] (D : Pebbling V) (K : ) :
                                      (∑ v : V, if D v = 0 then 0 else K) = D.supportSize * K

                                      If each occupied pile has at least S pebbles, then the number of occupied vertices times S is at most the total size.

                                      Multiplicative form of the occupied-pile count bound, used in product recurrences.