I'm looking for a tool to refactor boolean expression. I've got expressions like
a1 => (b1 <=> c or d) AND
a2 => (b2 <=> c or d) AND
a2 => (b2 <=> c or d)
The tool should be able to simplify expressions, e.g. extract the sub expression "c or d" in the example above. Is there a free computer algebra system which can do this?
Currently I think of refactoring the expressions manually an prove the equivalence with a little haskell quickcheck script.