The red-blue pebble game: the two I/O bounds for the FFT graph #
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.
In a complete calculation of the 2^k-point FFT graph every vertex holds a red pebble at some
point (fft_exists_red): the outputs end blue, the first pebble on a non-input comes from computing
it, and computing a vertex needs its predecessors red. Two bounds follow:
fft_two_pow_succ_le: each of the2^kinputs is loaded and each of the2^koutputs stored, soq ≥ 2^(k+1);fft_mul_card_le: Hong and Kung's key argument (Trace.mul_card_newReds_le) with the domination bound for the FFT graph (card_le_bfly_of_dominated) givesS · (k + 1) 2^k ≤ (q + S) · 2S log₂ (4S).
The butterfly's edges can be decided, which lets concrete calculations be checked by
decide.
In a complete calculation of the FFT graph, every vertex holds a red pebble at some point.
The trivial bound. Every input is loaded and every output stored: q ≥ 2^(k+1).
The domination bound on I/O. S · (k + 1) 2^k ≤ (q + S) · 2S log₂ (4S).