src/HOL/UNITY/PriorityAux.thy
author nipkow
Tue, 09 Jan 2001 15:32:27 +0100
changeset 10834 a7897aebbffc
parent 10797 028d22926a41
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10782
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     1
(*  Title:      HOL/UNITY/PriorityAux
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     2
    ID:         $Id$
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     3
    Author:     Sidi O Ehmety, Cambridge University Computer Laboratory
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     4
    Copyright   2001  University of Cambridge
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     5
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     6
Auxiliary definitions needed in Priority.thy
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     7
*)
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     8
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
     9
PriorityAux  =  Main +
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    10
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    11
types vertex
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    12
arities vertex::term
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    13
  
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    14
constdefs
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    15
  (* symmetric closure: removes the orientation of a relation *)
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    16
  symcl :: "(vertex*vertex)set=>(vertex*vertex)set"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    17
  "symcl r == r Un (r^-1)"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    18
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    19
  (* Neighbors of a vertex i *)
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    20
  neighbors :: "[vertex, (vertex*vertex)set]=>vertex set"
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    21
 "neighbors i r == ((r Un r^-1)``{i}) - {i}"
10782
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    22
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    23
  R :: "[vertex, (vertex*vertex)set]=>vertex set"
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    24
  "R i r == r``{i}"
10782
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    25
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    26
  A :: "[vertex, (vertex*vertex)set]=>vertex set"
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    27
  "A i r == (r^-1)``{i}"
10782
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    28
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    29
  (* reachable and above vertices: the original notation was R* and A* *)  
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    30
  reach :: "[vertex, (vertex*vertex)set]=> vertex set"
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    31
  "reach i r == (r^+)``{i}"
10782
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    32
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    33
  above :: "[vertex, (vertex*vertex)set]=> vertex set"
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10797
diff changeset
    34
  "above i r == ((r^-1)^+)``{i}"  
10782
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    35
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    36
  reverse :: "[vertex, (vertex*vertex) set]=>(vertex*vertex)set"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    37
  "reverse i r == (r - {(x,y). x=i | y=i} Int r) Un ({(x,y). x=i|y=i} Int r)^-1"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    38
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    39
  (* The original definition *)
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    40
  derive1 :: "[vertex, (vertex*vertex)set, (vertex*vertex)set]=>bool"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    41
  "derive1 i r q == symcl r = symcl q &
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    42
                    (ALL k k'. k~=i & k'~=i -->((k,k'):r) = ((k,k'):q)) &
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    43
                    A i r = {} & R i q = {}"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    44
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    45
  (* Our alternative definition *)
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    46
  derive :: "[vertex, (vertex*vertex)set, (vertex*vertex)set]=>bool"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    47
  "derive i r q == A i r = {} & (q = reverse i r)"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    48
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    49
rules
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    50
  (* we assume that the universe of vertices is finite  *)
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    51
  finite_vertex_univ "finite (UNIV :: vertex set)"
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    52
ddb433987557 new examples by Sidi Ehmety
paulson
parents:
diff changeset
    53
end