Implemented "ordered rewriting": rules which merely permute variables, such
as commutativity, are only applied if the term becaomes lexicographically
smaller (according to some fixed ordering on the term structure).
Arith = FOL +
classes arith < term
consts "0" :: "'a::arith" ("0")
"1" :: "'a::arith" ("1")
"+" :: "['a::arith,'a] => 'a" (infixl 60)
end