src/HOL/UNITY/ELT.thy
author paulson
Wed, 08 Dec 1999 13:53:29 +0100
changeset 8055 bb15396278fb
parent 8044 296b03b79505
child 8072 5b95377d7538
permissions -rw-r--r--
abolition of localTo: instead "guarantees" has local vars as extra argument
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8044
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     1
(*  Title:      HOL/UNITY/ELT
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     2
    ID:         $Id$
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     3
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     4
    Copyright   1999  University of Cambridge
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     5
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     6
leadsTo strengthened with a specification of the allowable sets transient parts
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     7
*)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     8
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
     9
ELT = Project +
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    10
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    11
consts
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    12
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    13
  (*LEADS-TO constant for the inductive definition*)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    14
  elt :: "['a set set, 'a program] => ('a set * 'a set) set"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    15
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    16
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    17
inductive "elt CC F"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    18
  intrs 
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    19
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    20
    Basis  "[| F : A ensures B;  A-B : CC |] ==> (A,B) : elt CC F"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    21
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    22
    Trans  "[| (A,B) : elt CC F;  (B,C) : elt CC F |] ==> (A,C) : elt CC F"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    23
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    24
    Union  "{(A,B) | A. A: S} : Pow (elt CC F) ==> (Union S, B) : elt CC F"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    25
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    26
  monos Pow_mono
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    27
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    28
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    29
constdefs
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    30
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    31
  (*the set of all sets determined by f alone*)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    32
  givenBy :: "['a => 'b] => 'a set set"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    33
    "givenBy f == range (%B. f-`` B)"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    34
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    35
  (*visible version of the LEADS-TO relation*)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    36
  leadsETo :: "['a set, 'a set set, 'a set] => 'a program set"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    37
                                        ("(3_/ leadsTo[_]/ _)" [80,0,80] 80)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    38
    "leadsETo A CC B == {F. (A,B) : elt CC F}"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    39
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    40
  LeadsETo :: "['a set, 'a set set, 'a set] => 'a program set"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    41
                                        ("(3_/ LeadsTo[_]/ _)" [80,0,80] 80)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    42
    "LeadsETo A CC B ==
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    43
      {F. F : (reachable F Int A) leadsTo[(%C. reachable F Int C) `` CC] B}"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    44
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    45
end