src/HOL/UNITY/Transformers.thy
changeset 23767 7272a839ccd9
parent 21733 131dd2a27137
child 24345 86a3557a9ebb
equal deleted inserted replaced
23766:77e796fe89eb 23767:7272a839ccd9
   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