src/HOL/UNITY/Comp.thy
changeset 5597 a12b25c53df1
child 5612 e981ca6f7332
equal deleted inserted replaced
5596:b29d18d8c4d2 5597:a12b25c53df1
       
     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