--- a/src/HOL/simpdata.ML Fri Oct 17 11:00:00 1997 +0200
+++ b/src/HOL/simpdata.ML Fri Oct 17 11:00:50 1997 +0200
@@ -103,9 +103,11 @@
"(P & True) = P", "(True & P) = P",
"(P & False) = False", "(False & P) = False",
"(P & P) = P", "(P & (P & Q)) = (P & Q)",
+ "(P & ~P) = False", "(~P & P) = False",
"(P | True) = True", "(True | P) = True",
"(P | False) = P", "(False | P) = P",
"(P | P) = P", "(P | (P | Q)) = (P | Q)",
+ "(P | ~P) = True", "(~P | P) = True",
"((~P) = (~Q)) = (P=Q)",
"(!x. P) = P", "(? x. P) = P", "? x. x=t", "? x. t=x",
"(? x. x=t & P(x)) = P(t)",
@@ -312,6 +314,10 @@
"(if P then Q else R) = ((P-->Q) & (~P-->R))"
(fn _ => [rtac expand_if 1]);
+
+
+(** Case splitting **)
+
local val mktac = mk_case_split_tac (meta_eq_to_obj_eq RS iffD2)
in
fun split_tac splits = mktac (map mk_meta_eq splits)