equal
deleted
inserted
replaced
|
1 (* Title: HOL/UNITY/Comp.thy |
|
2 ID: $Id$ |
|
3 Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
|
4 Copyright 1998 University of Cambridge |
|
5 |
|
6 Composition |
|
7 |
|
8 From Chandy and Sanders, "Reasoning About Program Composition" |
|
9 *) |
|
10 |
|
11 Comp = Union + |
|
12 |
|
13 constdefs |
|
14 |
|
15 (*Existential and Universal properties. I formalize the two-program |
|
16 case, proving equivalence with Chandy and Sanders's n-ary definitions*) |
|
17 |
|
18 ex_prop :: 'a program set => bool |
|
19 "ex_prop X == ALL F G. F:X | G: X --> (Join F G) : X" |
|
20 |
|
21 strict_ex_prop :: 'a program set => bool |
|
22 "strict_ex_prop X == ALL F G. (F:X | G: X) = (Join F G : X)" |
|
23 |
|
24 uv_prop :: 'a program set => bool |
|
25 "uv_prop X == SKIP: X & (ALL F G. F:X & G: X --> (Join F G) : X)" |
|
26 |
|
27 strict_uv_prop :: 'a program set => bool |
|
28 "strict_uv_prop X == SKIP: X & (ALL F G. (F:X & G: X) = (Join F G : X))" |
|
29 |
|
30 compatible :: ['a program, 'a program] => bool |
|
31 "compatible F G == Init F Int Init G ~= {}" |
|
32 |
|
33 component :: ['a program, 'a program] => bool |
|
34 "component F H == EX G. Join F G = H" |
|
35 |
|
36 guarantees :: ['a program set, 'a program set] => 'a program set (infixl 65) |
|
37 "X guarantees Y == {F. ALL H. component F H --> H:X --> H:Y}" |
|
38 |
|
39 end |