equal
deleted
inserted
replaced
86 Impl (D,m) {Q} ==> |
86 Impl (D,m) {Q} ==> |
87 A |- {P} Meth (C,m) {Q}" |
87 A |- {P} Meth (C,m) {Q}" |
88 |
88 |
89 (*\<Union>z instead of \<forall>z in the conclusion and |
89 (*\<Union>z instead of \<forall>z in the conclusion and |
90 z restricted to type state due to limitations of the inductive package *) |
90 z restricted to type state due to limitations of the inductive package *) |
91 Impl: "\<forall>z::state. A\<union> (\<Union>z. (\<lambda>M. (P z M, Impl M, Q z M))`Ms) ||- |
91 Impl: "\<forall>z::state. A\<union> (\<Union>z. (\<lambda>Cm. (P z Cm, Impl Cm, Q z Cm))`Ms) ||- |
92 (\<lambda>M. (P z M, body M, Q z M))`Ms ==> |
92 (\<lambda>Cm. (P z Cm, body Cm, Q z Cm))`Ms ==> |
93 A ||- (\<lambda>M. (P z M, Impl M, Q z M))`Ms" |
93 A ||- (\<lambda>Cm. (P z Cm, Impl Cm, Q z Cm))`Ms" |
94 |
94 |
95 (* structural rules *) |
95 (* structural rules *) |
96 |
96 |
97 Asm: " a \<in> A ==> A ||- {a}" |
97 Asm: " a \<in> A ==> A ||- {a}" |
98 |
98 |
146 |
146 |
147 lemma Union: "A |\<turnstile> (\<Union>z. C z) = (\<forall>z. A |\<turnstile> C z)" |
147 lemma Union: "A |\<turnstile> (\<Union>z. C z) = (\<forall>z. A |\<turnstile> C z)" |
148 by (auto intro: hoare_ehoare.ConjI hoare_ehoare.ConjE) |
148 by (auto intro: hoare_ehoare.ConjI hoare_ehoare.ConjE) |
149 |
149 |
150 lemma Impl1: |
150 lemma Impl1: |
151 "\<lbrakk>\<forall>z::state. A\<union> (\<Union>z. (\<lambda>M. (P z M, Impl M, Q z M))`Ms) |\<turnstile> |
151 "\<lbrakk>\<forall>z::state. A\<union> (\<Union>z. (\<lambda>Cm. (P z Cm, Impl Cm, Q z Cm))`Ms) |\<turnstile> |
152 (\<lambda>M. (P z M, body M, Q z M))`Ms; |
152 (\<lambda>Cm. (P z Cm, body Cm, Q z Cm))`Ms; |
153 M \<in> Ms\<rbrakk> \<Longrightarrow> |
153 Cm \<in> Ms\<rbrakk> \<Longrightarrow> |
154 A \<turnstile> {P z M} Impl M {Q z M}" |
154 A \<turnstile> {P z Cm} Impl Cm {Q z Cm}" |
155 apply (drule hoare_ehoare.Impl) |
155 apply (drule hoare_ehoare.Impl) |
156 apply (erule Weaken) |
156 apply (erule Weaken) |
157 apply (auto del: image_eqI intro: rev_image_eqI) |
157 apply (auto del: image_eqI intro: rev_image_eqI) |
158 done |
158 done |
159 |
159 |