new results about SKIP
authorpaulson
Thu, 17 Jun 1999 10:41:39 +0200
changeset 6836 0b06eac56dd5
parent 6835 588f791ee737
child 6837 1bd850260747
new results about SKIP
src/HOL/UNITY/Union.ML
--- a/src/HOL/UNITY/Union.ML	Thu Jun 17 10:39:30 1999 +0200
+++ b/src/HOL/UNITY/Union.ML	Thu Jun 17 10:41:39 1999 +0200
@@ -30,6 +30,23 @@
 
 Addsimps [reachable_SKIP];
 
+(** SKIP and safety properties **)
+
+Goalw [constrains_def] "(SKIP : A co B) = (A<=B)";
+by Auto_tac;
+qed "SKIP_in_constrains_iff";
+AddIffs [SKIP_in_constrains_iff];
+
+Goalw [Constrains_def] "(SKIP : A Co B) = (A<=B)";
+by Auto_tac;
+qed "SKIP_in_Constrains_iff";
+AddIffs [SKIP_in_Constrains_iff];
+
+Goalw [stable_def] "SKIP : stable A";
+by Auto_tac;
+qed "SKIP_in_stable";
+AddIffs [SKIP_in_stable, SKIP_in_stable RS stable_imp_Stable];
+
 
 (** Join **)
 
@@ -120,7 +137,7 @@
 	      simpset() addsimps [Acts_JN, Acts_Join]));
 qed "JN_Un";
 
-Goal "i: I ==> (JN i:I. c) = c";
+Goal "(JN i:I. c) = (if I={} then SKIP else c)";
 by (auto_tac (claset() addSIs [program_equalityI],
 	      simpset() addsimps [Acts_JN]));
 qed "JN_constant";
@@ -132,6 +149,7 @@
 
 Goal "i : I ==> (JN i:I. F i Join G) = ((JN i:I. F i) Join G)";
 by (asm_simp_tac (simpset() addsimps [JN_Join_distrib, JN_constant]) 1);
+by Auto_tac;
 qed "JN_Join_miniscope";