small improvements to rules
clean up a "-a * -b"-type case
Deal with repeated negative signs (e.g. -----A = -A)