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)
Defs = Types +
consts nand, exor :: gate
defs nand_def "nand A B == ~(A & B)"
exor_def "exor A B == A & ~B | ~A & B"
end