src/ZF/UNITY/WFair.thy
changeset 12195 ed2893765a08
parent 11479 697dcaaf478f
child 12552 d2d2ab3f1f37
--- a/src/ZF/UNITY/WFair.thy	Wed Nov 14 23:22:43 2001 +0100
+++ b/src/ZF/UNITY/WFair.thy	Thu Nov 15 15:07:16 2001 +0100
@@ -13,11 +13,11 @@
 WFair = UNITY +
 constdefs
   
-  (*This definition specifies weak fairness.  The rest of the theory
+  (* This definition specifies weak fairness.  The rest of the theory
     is generic to all forms of fairness.*) 
  transient :: "i=>i"
-  "transient(A) =={F:program. (EX act: Acts(F). 
-			       A<= domain(act) & act``A <= state-A) & A:condition}"
+  "transient(A) =={F:program. (EX act: Acts(F). A<=domain(act) &
+			       act``A <= state-A) & st_set(A)}"
 
   ensures :: "[i,i] => i"       (infixl 60)
   "A ensures B == ((A-B) co (A Un B)) Int transient(A-B)"
@@ -25,31 +25,29 @@
 consts
 
   (*LEADS-TO constant for the inductive definition*)
-  leads :: "i=>i"
+  leads :: "[i, i]=>i"
 
-inductive (* All typing conidition `A:condition' will desapear
-             in the dervied rules *)
+inductive 
   domains
-     "leads(F)" <= "condition*condition"
+     "leads(D, F)" <= "Pow(D)*Pow(D)"
   intrs 
-    Basis  "[| F:A ensures B; A:condition; B:condition |] ==> <A,B>:leads(F)"
-    Trans  "[| <A,B> : leads(F); <B,C> : leads(F) |] ==>  <A,C>:leads(F)"
-    Union   "[| S:Pow({A:S. <A, B>:leads(F)});
-		B:condition; S:Pow(condition) |] ==> 
-	      <Union(S),B>:leads(F)"
+    Basis  "[| F:A ensures B;  A:Pow(D); B:Pow(D) |] ==> <A,B>:leads(D, F)"
+    Trans  "[| <A,B> : leads(D, F); <B,C> : leads(D, F) |] ==>  <A,C>:leads(D, F)"
+    Union   "[| S:Pow({A:S. <A, B>:leads(D, F)}); B:Pow(D); S:Pow(Pow(D)) |] ==> 
+	      <Union(S),B>:leads(D, F)"
 
   monos        Pow_mono
-  type_intrs  "[UnionI, Union_in_conditionI, PowI]"
+  type_intrs  "[Union_PowI, UnionI, PowI]"
  
 constdefs
 
-  (*visible version of the LEADS-TO relation*)
+  (* The Visible version of the LEADS-TO relation*)
   leadsTo :: "[i, i] => i"       (infixl 60)
-    "A leadsTo B == {F:program.  <A,B>:leads(F)}"
+  "A leadsTo B == {F:program. <A,B>:leads(state, F)}"
   
-  (*wlt F B is the largest set that leads to B*)
+  (* wlt(F, B) is the largest set that leads to B*)
   wlt :: "[i, i] => i"
-    "wlt(F, B) == Union({A:condition. F: A leadsTo B})"
+    "wlt(F, B) == Union({A:Pow(state). F: A leadsTo B})"
 
 syntax (xsymbols)
   "op leadsTo" :: "[i, i] => i" (infixl "\\<longmapsto>" 60)