equal
deleted
inserted
replaced
40 "F \<in> Always INV ==> (F \<in> A LeadsTo (INV \<inter> A')) = (F \<in> A LeadsTo A')" |
40 "F \<in> Always INV ==> (F \<in> A LeadsTo (INV \<inter> A')) = (F \<in> A LeadsTo A')" |
41 by (simp add: LeadsTo_eq_leadsTo Always_eq_includes_reachable Int_absorb2 |
41 by (simp add: LeadsTo_eq_leadsTo Always_eq_includes_reachable Int_absorb2 |
42 Int_assoc [symmetric]) |
42 Int_assoc [symmetric]) |
43 |
43 |
44 (* [| F \<in> Always C; F \<in> (C \<inter> A) LeadsTo A' |] ==> F \<in> A LeadsTo A' *) |
44 (* [| F \<in> Always C; F \<in> (C \<inter> A) LeadsTo A' |] ==> F \<in> A LeadsTo A' *) |
45 lemmas Always_LeadsToI = Always_LeadsTo_pre [THEN iffD1, standard] |
45 lemmas Always_LeadsToI = Always_LeadsTo_pre [THEN iffD1] |
46 |
46 |
47 (* [| F \<in> Always INV; F \<in> A LeadsTo A' |] ==> F \<in> A LeadsTo (INV \<inter> A') *) |
47 (* [| F \<in> Always INV; F \<in> A LeadsTo A' |] ==> F \<in> A LeadsTo (INV \<inter> A') *) |
48 lemmas Always_LeadsToD = Always_LeadsTo_post [THEN iffD2, standard] |
48 lemmas Always_LeadsToD = Always_LeadsTo_post [THEN iffD2] |
49 |
49 |
50 |
50 |
51 subsection{*Introduction rules: Basis, Trans, Union*} |
51 subsection{*Introduction rules: Basis, Trans, Union*} |
52 |
52 |
53 lemma leadsTo_imp_LeadsTo: "F \<in> A leadsTo B ==> F \<in> A LeadsTo B" |
53 lemma leadsTo_imp_LeadsTo: "F \<in> A leadsTo B ==> F \<in> A LeadsTo B" |
102 lemma subset_imp_LeadsTo: "A \<subseteq> B ==> F \<in> A LeadsTo B" |
102 lemma subset_imp_LeadsTo: "A \<subseteq> B ==> F \<in> A LeadsTo B" |
103 apply (simp add: LeadsTo_def) |
103 apply (simp add: LeadsTo_def) |
104 apply (blast intro: subset_imp_leadsTo) |
104 apply (blast intro: subset_imp_leadsTo) |
105 done |
105 done |
106 |
106 |
107 lemmas empty_LeadsTo = empty_subsetI [THEN subset_imp_LeadsTo, standard, simp] |
107 lemmas empty_LeadsTo = empty_subsetI [THEN subset_imp_LeadsTo, simp] |
108 |
108 |
109 lemma LeadsTo_weaken_R: |
109 lemma LeadsTo_weaken_R: |
110 "[| F \<in> A LeadsTo A'; A' \<subseteq> B' |] ==> F \<in> A LeadsTo B'" |
110 "[| F \<in> A LeadsTo A'; A' \<subseteq> B' |] ==> F \<in> A LeadsTo B'" |
111 apply (simp add: LeadsTo_def) |
111 apply (simp add: LeadsTo_def) |
112 apply (blast intro: leadsTo_weaken_R) |
112 apply (blast intro: leadsTo_weaken_R) |