Symbolic number, i.e., these are not numbers at all, but just build a representation of the expressions. This implementation is incomplete in that it allows comnstruction, but not deconstruction of the expressions. It's mainly useful for debugging.
Symbolic numbers over some base type for the literals.
subst x v e substitutes the expression
v for each
occurence of the variable