src/HOL/UNITY/ELT.thy
author wenzelm
Thu, 11 Jan 2001 21:51:14 +0100
changeset 10873 50608ca5785c
parent 10834 a7897aebbffc
child 13790 8d7e9fce8c50
permissions -rw-r--r--
do not hilite "xnum";
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
8122
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
     7
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
     8
TRY INSTEAD (to get rid of the {} and to gain strong induction)
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
     9
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    10
  elt :: "['a set set, 'a program, 'a set] => ('a set) set"
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    11
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    12
inductive "elt CC F B"
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    13
  intrs 
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    14
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    15
    Weaken  "A <= B ==> A : elt CC F B"
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    16
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    17
    ETrans  "[| F : A ensures A';  A-A' : CC;  A' : elt CC F B |]
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    18
	     ==> A : elt CC F B"
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    19
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    20
    Union  "{A. A: S} : Pow (elt CC F B) ==> (Union S) : elt CC F B"
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    21
b43ad07660b9 working version, with Alloc now working on the same state space as the whole
paulson
parents: 8072
diff changeset
    22
  monos Pow_mono
8044
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    23
*)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    24
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    25
ELT = Project +
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    26
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    27
consts
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    28
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    29
  (*LEADS-TO constant for the inductive definition*)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    30
  elt :: "['a set set, 'a program] => ('a set * 'a set) set"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    31
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    32
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    33
inductive "elt CC F"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    34
  intrs 
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    35
8072
5b95377d7538 removing the "{} : CC" requirement for leadsTo[CC]
paulson
parents: 8055
diff changeset
    36
    Basis  "[| F : A ensures B;  A-B : (insert {} CC) |] ==> (A,B) : elt CC F"
8044
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    37
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    38
    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
    39
10293
354e885b3e0a quantifiers now allowed in inductive defs
paulson
parents: 8128
diff changeset
    40
    Union  "ALL A: S. (A,B) : elt CC F ==> (Union S, B) : elt CC F"
8044
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    41
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    42
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    43
constdefs
8128
3a5864b465e2 still working; a bit of polishing
paulson
parents: 8122
diff changeset
    44
  
3a5864b465e2 still working; a bit of polishing
paulson
parents: 8122
diff changeset
    45
  (*the set of all sets determined by f alone*)
3a5864b465e2 still working; a bit of polishing
paulson
parents: 8122
diff changeset
    46
  givenBy :: "['a => 'b] => 'a set set"
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10293
diff changeset
    47
    "givenBy f == range (%B. f-` B)"
8044
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    48
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    49
  (*visible version of the LEADS-TO relation*)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    50
  leadsETo :: "['a set, 'a set set, 'a set] => 'a program set"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    51
                                        ("(3_/ leadsTo[_]/ _)" [80,0,80] 80)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    52
    "leadsETo A CC B == {F. (A,B) : elt CC F}"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    53
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    54
  LeadsETo :: "['a set, 'a set set, 'a set] => 'a program set"
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    55
                                        ("(3_/ LeadsTo[_]/ _)" [80,0,80] 80)
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    56
    "LeadsETo A CC B ==
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10293
diff changeset
    57
      {F. F : (reachable F Int A) leadsTo[(%C. reachable F Int C) ` CC] B}"
8044
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    58
296b03b79505 new generalized leads-to theory
paulson
parents:
diff changeset
    59
end