equal
deleted
inserted
replaced
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 |