equal
deleted
inserted
replaced
336 |
336 |
337 text{*Next, we express the @{term "wens_set"} for single-assignment programs*} |
337 text{*Next, we express the @{term "wens_set"} for single-assignment programs*} |
338 |
338 |
339 constdefs |
339 constdefs |
340 wens_single_finite :: "[('a*'a) set, 'a set, nat] => 'a set" |
340 wens_single_finite :: "[('a*'a) set, 'a set, nat] => 'a set" |
341 "wens_single_finite act B k == \<Union>i \<in> atMost k. (wp act o^ i) B" |
341 "wens_single_finite act B k == \<Union>i \<in> atMost k. (wp act ^^ i) B" |
342 |
342 |
343 wens_single :: "[('a*'a) set, 'a set] => 'a set" |
343 wens_single :: "[('a*'a) set, 'a set] => 'a set" |
344 "wens_single act B == \<Union>i. (wp act o^ i) B" |
344 "wens_single act B == \<Union>i. (wp act ^^ i) B" |
345 |
345 |
346 lemma wens_single_Un_eq: |
346 lemma wens_single_Un_eq: |
347 "single_valued act |
347 "single_valued act |
348 ==> wens_single act B \<union> wp act (wens_single act B) = wens_single act B" |
348 ==> wens_single act B \<union> wp act (wens_single act B) = wens_single act B" |
349 apply (rule equalityI) |
349 apply (rule equalityI) |