The intended design is that one has static Relation types that are sets of
tuples, and Variable types that represent monotonically increasing sets of
tuples.
The types are mostly wrappers around Vec<Tuple> indicating sorted-ness, and
the intent is that this code can be dropped in the middle of an otherwise
normal Rust program, run to completion, and then the results extracted as
vectors again.