cartesiano... slow and dup galore. cc @webyrd
TAPL 3.2.3. S is too slow, for S2. Created mini-S to try things out.

cc @webyrd