src/HOL/UNITY/Guar.thy
changeset 32960 69916a850301
parent 27682 25aceefd4786
child 35416 d8d7d1b785af
equal deleted inserted replaced
32959:23a8c5ac35f8 32960:69916a850301
     1 (*  Title:      HOL/UNITY/Guar.thy
     1 (*  Title:      HOL/UNITY/Guar.thy
     2     ID:         $Id$
       
     3     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
     2     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
     4     Copyright   1999  University of Cambridge
     3     Author:     Sidi Ehmety
     5 
     4 
     6 From Chandy and Sanders, "Reasoning About Program Composition",
     5 From Chandy and Sanders, "Reasoning About Program Composition",
     7 Technical Report 2000-003, University of Florida, 2000.
     6 Technical Report 2000-003, University of Florida, 2000.
     8 
     7 
     9 Revised by Sidi Ehmety on January 2001
     8 Compatibility, weakest guarantees, etc.  and Weakest existential
    10 
     9 property, from Charpentier and Chandy "Theorems about Composition",
    11 Added: Compatibility, weakest guarantees, etc.
       
    12 
       
    13 and Weakest existential property,
       
    14 from Charpentier and Chandy "Theorems about Composition",
       
    15 Fifth International Conference on Mathematics of Program, 2000.
    10 Fifth International Conference on Mathematics of Program, 2000.
    16 
       
    17 *)
    11 *)
    18 
    12 
    19 header{*Guarantees Specifications*}
    13 header{*Guarantees Specifications*}
    20 
    14 
    21 theory Guar
    15 theory Guar
    64   (*Ill-defined programs can arise through "Join"*)
    58   (*Ill-defined programs can arise through "Join"*)
    65   welldef :: "'a program set"
    59   welldef :: "'a program set"
    66   "welldef == {F. Init F \<noteq> {}}"
    60   "welldef == {F. Init F \<noteq> {}}"
    67   
    61   
    68   refines :: "['a program, 'a program, 'a program set] => bool"
    62   refines :: "['a program, 'a program, 'a program set] => bool"
    69 			("(3_ refines _ wrt _)" [10,10,10] 10)
    63                         ("(3_ refines _ wrt _)" [10,10,10] 10)
    70   "G refines F wrt X ==
    64   "G refines F wrt X ==
    71      \<forall>H. (F ok H & G ok H & F\<squnion>H \<in> welldef \<inter> X) --> 
    65      \<forall>H. (F ok H & G ok H & F\<squnion>H \<in> welldef \<inter> X) --> 
    72          (G\<squnion>H \<in> welldef \<inter> X)"
    66          (G\<squnion>H \<in> welldef \<inter> X)"
    73 
    67 
    74   iso_refines :: "['a program, 'a program, 'a program set] => bool"
    68   iso_refines :: "['a program, 'a program, 'a program set] => bool"