equal
deleted
inserted
replaced
157 done |
157 done |
158 |
158 |
159 |
159 |
160 subsection{*Defining the Weakest Ensures Set*} |
160 subsection{*Defining the Weakest Ensures Set*} |
161 |
161 |
162 consts |
162 inductive_set |
163 wens_set :: "['a program, 'a set] => 'a set set" |
163 wens_set :: "['a program, 'a set] => 'a set set" |
164 |
164 for F :: "'a program" and B :: "'a set" |
165 inductive "wens_set F B" |
165 where |
166 intros |
|
167 |
166 |
168 Basis: "B \<in> wens_set F B" |
167 Basis: "B \<in> wens_set F B" |
169 |
168 |
170 Wens: "[|X \<in> wens_set F B; act \<in> Acts F|] ==> wens F act X \<in> wens_set F B" |
169 | Wens: "[|X \<in> wens_set F B; act \<in> Acts F|] ==> wens F act X \<in> wens_set F B" |
171 |
170 |
172 Union: "W \<noteq> {} ==> \<forall>U \<in> W. U \<in> wens_set F B ==> \<Union>W \<in> wens_set F B" |
171 | Union: "W \<noteq> {} ==> \<forall>U \<in> W. U \<in> wens_set F B ==> \<Union>W \<in> wens_set F B" |
173 |
172 |
174 lemma wens_set_imp_co: "A \<in> wens_set F B ==> F \<in> (A-B) co A" |
173 lemma wens_set_imp_co: "A \<in> wens_set F B ==> F \<in> (A-B) co A" |
175 apply (erule wens_set.induct) |
174 apply (erule wens_set.induct) |
176 apply (simp add: constrains_def) |
175 apply (simp add: constrains_def) |
177 apply (drule_tac act1=act and A1=X |
176 apply (drule_tac act1=act and A1=X |