src/ZF/UNITY/Comp.thy
author paulson
Wed, 08 Aug 2001 14:33:10 +0200
changeset 11479 697dcaaf478f
child 12195 ed2893765a08
permissions -rw-r--r--
new ZF/UNITY theory
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11479
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     1
(*  Title:      ZF/UNITY/Comp.thy
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     2
    ID:         $Id$
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     3
    Author:     Sidi O Ehmety, Computer Laboratory
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     4
    Copyright   1998  University of Cambridge
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     5
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     6
Composition
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     7
From Chandy and Sanders, "Reasoning About Program Composition",
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     8
Technical Report 2000-003, University of Florida, 2000.
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
     9
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    10
Revised by Sidi Ehmety on January  2001 
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    11
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    12
Added: a strong form of the order relation over component and localize 
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    13
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    14
Theory ported from HOL.
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    15
  
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    16
*)
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    17
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    18
Comp = Union +
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    19
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    20
constdefs
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    21
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    22
  component :: [i, i] => o  (infixl 65) 
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    23
  "F component H == (EX G. F Join G = H)"
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    24
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    25
  strict_component :: [i, i] => o (infixl "strict'_component" 65)
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    26
  "F strict_component H == F component H & F~=H"
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    27
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    28
  (* A stronger form of the component relation *)
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    29
  component_of :: "[i,i]=>o"   (infixl "component'_of" 65)
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    30
  "F component_of H  == (EX G. F ok G & F Join G = H)"
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    31
  
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    32
  strict_component_of :: "[i,i]=>o" (infixl "strict'_component'_of" 65)
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    33
  "F strict_component_of H  == F component_of H  & F~=H"
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    34
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    35
  (* preserves any state function f, in particular a variable *)
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    36
  preserves :: (i=>i)=>i
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    37
  "preserves(f) == {F:program. ALL z. F: stable({s:state. f(s) = z})}"
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    38
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    39
localize  :: "[i=>i, i] => i"
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    40
  "localize(f,F) == mk_program(Init(F), Acts(F),
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    41
			       AllowedActs(F Int (UN G:preserves(f). Acts(G))))"
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    42
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    43
  
697dcaaf478f new ZF/UNITY theory
paulson
parents:
diff changeset
    44
  end