src/ZF/UNITY/Guar.thy
changeset 69587 53982d5ec0bb
parent 61392 331be2820f90
child 76213 e44d86131648
equal deleted inserted replaced
69586:9171d1ce5a35 69587:53982d5ec0bb
    55  strict_uv_prop  :: "i => o"  where
    55  strict_uv_prop  :: "i => o"  where
    56    "strict_uv_prop(X) == X<=program &
    56    "strict_uv_prop(X) == X<=program &
    57     (SKIP \<in> X & (\<forall>F \<in> program. \<forall>G \<in> program. F ok G \<longrightarrow>(F \<in> X & G \<in> X) \<longleftrightarrow> (F \<squnion> G \<in> X)))"
    57     (SKIP \<in> X & (\<forall>F \<in> program. \<forall>G \<in> program. F ok G \<longrightarrow>(F \<in> X & G \<in> X) \<longleftrightarrow> (F \<squnion> G \<in> X)))"
    58 
    58 
    59 definition
    59 definition
    60   guar :: "[i, i] => i" (infixl "guarantees" 55)  where
    60   guar :: "[i, i] => i" (infixl \<open>guarantees\<close> 55)  where
    61               (*higher than membership, lower than Co*)
    61               (*higher than membership, lower than Co*)
    62   "X guarantees Y == {F \<in> program. \<forall>G \<in> program. F ok G \<longrightarrow> F \<squnion> G \<in> X \<longrightarrow> F \<squnion> G \<in> Y}"
    62   "X guarantees Y == {F \<in> program. \<forall>G \<in> program. F ok G \<longrightarrow> F \<squnion> G \<in> X \<longrightarrow> F \<squnion> G \<in> Y}"
    63   
    63   
    64 definition
    64 definition
    65   (* Weakest guarantees *)
    65   (* Weakest guarantees *)
    75   (*Ill-defined programs can arise through "\<squnion>"*)
    75   (*Ill-defined programs can arise through "\<squnion>"*)
    76   welldef :: i  where
    76   welldef :: i  where
    77   "welldef == {F \<in> program. Init(F) \<noteq> 0}"
    77   "welldef == {F \<in> program. Init(F) \<noteq> 0}"
    78   
    78   
    79 definition
    79 definition
    80   refines :: "[i, i, i] => o" ("(3_ refines _ wrt _)" [10,10,10] 10)  where
    80   refines :: "[i, i, i] => o" (\<open>(3_ refines _ wrt _)\<close> [10,10,10] 10)  where
    81   "G refines F wrt X ==
    81   "G refines F wrt X ==
    82    \<forall>H \<in> program. (F ok H  & G ok H & F \<squnion> H \<in> welldef \<inter> X)
    82    \<forall>H \<in> program. (F ok H  & G ok H & F \<squnion> H \<in> welldef \<inter> X)
    83     \<longrightarrow> (G \<squnion> H \<in> welldef \<inter> X)"
    83     \<longrightarrow> (G \<squnion> H \<in> welldef \<inter> X)"
    84 
    84 
    85 definition
    85 definition
    86   iso_refines :: "[i,i, i] => o"  ("(3_ iso'_refines _ wrt _)" [10,10,10] 10)  where
    86   iso_refines :: "[i,i, i] => o"  (\<open>(3_ iso'_refines _ wrt _)\<close> [10,10,10] 10)  where
    87   "G iso_refines F wrt X ==  F \<in> welldef \<inter> X \<longrightarrow> G \<in> welldef \<inter> X"
    87   "G iso_refines F wrt X ==  F \<in> welldef \<inter> X \<longrightarrow> G \<in> welldef \<inter> X"
    88 
    88 
    89 
    89 
    90 (*** existential properties ***)
    90 (*** existential properties ***)
    91 
    91