major code change: refute can now handle any Isabelle term, adds certain axioms automatically, and can handle inductive datatypes (but not yet recursion over them)
ConstDefs = Types +
constdefs nand :: gate
"nand A B == ~(A & B)"
exor :: gate
"exor A B == A & ~B | ~A & B"
end