forAll package:row-types
Any structure over a row in which every element is similarly
constrained can be metamorphized into another structure over the same
row.
Any structure over two rows in which the elements of each row satisfy
some constraints can be metamorphized into another structure over both
of the rows.
FreeForall can be used when a
BiForall constraint is
necessary but there is no particular constraint we care about.
FreeForall can be used when a
Forall constraint is
necessary but there is no particular constraint we care about.
This allows us to derive a Forall (ApSingle f r) .. from a
Forall f ...
This allows us to derive a Forall (Map f r) .. from a
Forall r ...