src/ZF/Resid/Substitution.thy
author lcp
Tue, 25 Apr 1995 11:14:03 +0200
changeset 1072 0140ff702b23
parent 1048 5ba0314f8214
child 1155 928a16e02f9f
permissions -rw-r--r--
updated version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1048
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     1
(*  Title: 	Substitution.thy
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     2
    ID:         $Id$
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     3
    Author: 	Ole Rasmussen
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     4
    Copyright   1995  University of Cambridge
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     5
    Logic Image: ZF
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     6
*)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     7
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     8
Substitution = SubUnion +
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
     9
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    10
consts
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    11
  lift_rec	:: "[i,i]=> i"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    12
  lift		:: "i=>i"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    13
  subst_rec	:: "[i,i,i]=> i"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    14
  "'/"          :: "[i,i]=>i"  (infixl 70)  (*subst*)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    15
translations
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    16
  "lift(r)"  == "lift_rec(r,0)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    17
  "u/v" == "subst_rec(u,v,0)"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    18
  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    19
defs
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    20
  lift_rec_def	"lift_rec(r,kg) ==   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    21
\		     redex_rec(r,%i.(lam k:nat.if(i<k,Var(i),Var(succ(i)))), \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    22
\		                 %x m.(lam k:nat.Fun(m`(succ(k)))),   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    23
\		                 %b x y m p.lam k:nat.App(b,m`k,p`k))`kg"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    24
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    25
  
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    26
(* subst_rec(u,Var(i),k)     = if k<i then Var(i-1)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    27
                               else if k=i then u
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    28
                                    else Var(i)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    29
   subst_rec(u,Fun(t),k)     = Fun(subst_rec(lift(u),t,succ(k)))
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    30
   subst_rec(u,App(b,f,a),k) = App(b,subst_rec(u,f,p),subst_rec(u,a,p))
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    31
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    32
*)
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    33
  subst_rec_def	"subst_rec(u,t,kg) ==   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    34
\		     redex_rec(t,   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    35
\		       %i.(lam r:redexes.lam k:nat.   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    36
\		              if(k<i,Var(i#-1),   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    37
\		                if(k=i,r,Var(i)))),   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    38
\		       %x m.(lam r:redexes.lam k:nat.   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    39
\                             Fun(m`(lift(r))`(succ(k)))),   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    40
\		       %b x y m p.lam r:redexes.lam k:nat.   \
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    41
\		              App(b,m`r`k,p`r`k))`u`kg"
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    42
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    43
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    44
end
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    45
5ba0314f8214 New example by Ole Rasmussen
lcp
parents:
diff changeset
    46