diff -r 0f57375aafce -r 697dcaaf478f src/ZF/UNITY/Comp.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ZF/UNITY/Comp.thy Wed Aug 08 14:33:10 2001 +0200 @@ -0,0 +1,44 @@ +(* Title: ZF/UNITY/Comp.thy + ID: $Id$ + Author: Sidi O Ehmety, Computer Laboratory + Copyright 1998 University of Cambridge + +Composition +From Chandy and Sanders, "Reasoning About Program Composition", +Technical Report 2000-003, University of Florida, 2000. + +Revised by Sidi Ehmety on January 2001 + +Added: a strong form of the order relation over component and localize + +Theory ported from HOL. + +*) + +Comp = Union + + +constdefs + + component :: [i, i] => o (infixl 65) + "F component H == (EX G. F Join G = H)" + + strict_component :: [i, i] => o (infixl "strict'_component" 65) + "F strict_component H == F component H & F~=H" + + (* A stronger form of the component relation *) + component_of :: "[i,i]=>o" (infixl "component'_of" 65) + "F component_of H == (EX G. F ok G & F Join G = H)" + + strict_component_of :: "[i,i]=>o" (infixl "strict'_component'_of" 65) + "F strict_component_of H == F component_of H & F~=H" + + (* preserves any state function f, in particular a variable *) + preserves :: (i=>i)=>i + "preserves(f) == {F:program. ALL z. F: stable({s:state. f(s) = z})}" + +localize :: "[i=>i, i] => i" + "localize(f,F) == mk_program(Init(F), Acts(F), + AllowedActs(F Int (UN G:preserves(f). Acts(G))))" + + + end