Subst/Subst.thy
author lcp
Thu, 06 Apr 1995 11:49:42 +0200
changeset 246 0f9230a24164
parent 48 21291189b51e
child 249 492493334e0f
permissions -rw-r--r--
Deleted extra space in clos_mk.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     1
(*  Title: 	Substitutions/subst.thy
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     2
    Author: 	Martin Coen, Cambridge University Computer Laboratory
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     3
    Copyright   1993  University of Cambridge
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     4
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     5
Substitutions on uterms
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     6
*)
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     7
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     8
Subst = Setplus + AList + UTLemmas +
7949f97df77a Initial revision
clasohm
parents:
diff changeset
     9
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    10
consts
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    11
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    12
  "=s="  ::  "[('a*('a uterm)) list,('a*('a uterm)) list] => bool" (infixr 52)
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    13
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    14
  "<|"   ::  "['a uterm,('a*('a uterm)) list] => 'a uterm"         (infixl 55)
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    15
  "<>"   ::  "[('a*('a uterm)) list, ('a*('a uterm)) list] => \
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    16
\                                    ('a*('a uterm)) list"         (infixl 56)
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    17
  sdom   ::  "('a*('a uterm)) list => 'a set"
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    18
  srange ::  "('a*('a uterm)) list => 'a set"
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    19
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    20
rules 
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    21
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    22
  subst_eq_def  "r =s= s == ALL t.t <| r = t <| s"
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    23
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    24
  subst_def    
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    25
  "t <| al == uterm_rec(t, %x.assoc(x,Var(x),al),	\
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    26
\                          %x.Const(x),			\
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    27
\                          %u v q r.Comb(q,r))"
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    28
48
21291189b51e changed "." to "$" and Cons to infix "#" to eliminate ambiguity
clasohm
parents: 0
diff changeset
    29
  comp_def     "al <> bl == alist_rec(al,bl,%x y xs g.<x,y <| bl>#g)"
0
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    30
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    31
  sdom_def
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    32
  "sdom(al) == alist_rec(al, {},  \
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    33
\                        %x y xs g.if(Var(x)=y, g Int Compl({x}), g Un {x}))"
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    34
  srange_def   
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    35
  "srange(al) == Union({y. EX x:sdom(al).y=vars_of(Var(x) <| al)})"
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    36
7949f97df77a Initial revision
clasohm
parents:
diff changeset
    37
end