Wed Feb 10 10:33:20 CET 2010
Using normal forms is useful for reducing nested expressions.
Let's try commutativity:
(1 + 1) -> 2 [e1]
(1 + (1 + a)) -> (2 + a) [e2]
(a + 1) -> (1 + a) [c]
((x + y) + z) -> (x + (y + z)) [a]
It's probably simplest to represent the sum/product of a value with a
fully reduced term as an intermediate object.
What I'm thinking now is that it might be better to abstract Ring /
Field first, such that abstract evaluation doesn't need any string