The red-blue pebble game: windows of a calculation, and what dominates them #
Support module of MiscMath.Computability.RedBluePebbleGame, where the results are stated and
where the reader should start. Nothing here is a result on its own.
This is Hong and Kung's key argument (the proof of their Theorem 3.1), in the form the FFT bound
needs and without its partitions. Cut a calculation into windows, each ending once it has made
S loads or stores. The vertices given a red pebble in a window are dominated — every path
to them from an input meets it — by the at most 2S vertices that were red at the window's start
or were loaded in it. So if no set dominated by 2S vertices has more than U elements, a
calculation charged q gives red pebbles to at most (q + S) U / S vertices
(Trace.mul_card_newReds_le).
Domination is read with paths of length 0 included: an input is dominated only by a set
containing it.
Dominated E I D v: every path along E from an input to v meets D, paths of length 0
included. A path avoiding D is a chain of edges none of whose endpoints lies in D.
Equations
- MiscMath.Computability.RedBluePebbleGame.Dominated E I D v = ∀ x ∈ I, x ∉ D → ¬Relation.ReflTransGen (fun (a b : V) => E a b ∧ a ∉ D ∧ b ∉ D) x v
Instances For
The total charge of the first j moves.
Equations
- T.charges j = ∑ i ∈ Finset.range j, T.c i
Instances For
The vertices given a red pebble by moves j, …, e - 1.
Instances For
The dominator of the window of moves j, …, e - 1: the red pebbles at its start, and the
vertices it loads.
Equations
Instances For
Hong and Kung's key argument, without partitions. If no set dominated by at most 2S
vertices has more than U elements, then the vertices given a red pebble from move j on number
at most (q - charges j + S) U / S, where q is the whole calculation's charge.