Represents all the values (or terms) that can be associated with (logic) variables.
Convert to a representation that's useful for debugging and testing.
u : ValueS
u =
Var (Variable "u" 0)
r : ValueS
r =
ReifiedVar 9
toString identity tea == "tea"
toString identity u == "u.0"
toString identity r == "_9"
toString identity Null == "()"
toString identity (Pair tea u) == "(tea . u.0)"
toString identity (Pair tea (Pair u (Pair r Null))) == "(tea u.0 _9)"
toString identity (Pair (Pair tea u) (Pair r Null)) == "((tea . u.0) _9)"
It is polymorphic in
aso that you can specify your own constants.The constant type can be as rich as you need it to be.