--- /dev/null
+Problem: we need to be able to persist the output of operands to
+temporary buffers.
+
+
+Case examples
+-------------
+
+- Matrix (treated as dense):
+1. Both indices have well defined ranges from 1 to n.
+2. Size of indices do not depend on each other.
+
+- Matrix (treated as sparse):
+1. Has a block sparse format.
+2. Depends on whether we know how to persist each block.
+3. Need to store offsets for each block.
+
+- PPD function set:
+1. PPD positions are dependent on all indices up to the ppd index.
+2. Tight-box positions are only dependent on function index.
+3. Data doesn't have especially well-defined ranges.
+4. Max range is bound of simulation cell (but what if multiple
+simulation cells?).
+5. We need explicit bounding to construct a FFT-box.
+
+
+Storage in a dense array
+------------------------
+
+1. If we know an index, we don't need to persist storage across it.
+2. When we persist storage, we can use known indices to restrict the
+size.
+
+Abstractions breakdown
+----------------------
+
+1. Spatial indices are typically independent since we cover rectangular
+regions.