Nuprl Definition : subst-exc
subst-exc(e;t)
==r eval x = t in
    if x is lambda then λz.subst-exc(e;x z) otherwise if x is a pair then let a,b = x 
                                                                          in eval a' = subst-exc(e;a) in
                                                                             eval b' = subst-exc(e;b) in
                                                                               <a', b'>
                                                      otherwise if x is inl then eval y = subst-exc(e;outl(x)) in
                                                                                 inl y
                                                                else if x is inr then eval y = subst-exc(e;outr(x)) in
                                                                                      inr y 
                                                                     else x?e:v.⊥
subst-exc(e;t) ==
  fix((λsubst-exc,t. eval x = t in
                     if x is lambda then λz.(subst-exc (x z)) otherwise if x is a pair then let a,b = x 
                                                                                            in eval a' = subst-exc a in
                                                                                               eval b' = subst-exc b in
                                                                                                 <a', b'>
                                                                        otherwise if x is inl then eval y = subst-exc 
                                                                                                            outl(x) in
                                                                                                   inl y
                                                                                  else if x is inr
                                                                                       eval y = subst-exc outr(x) in
                                                                                       inr y 
                                                                                       else x?e:v.⊥)) 
  t
Definitions occuring in Statement : 
callbyvalue: callbyvalue, 
outr: outr(x)
, 
outl: outl(x)
, 
ispair: if z is a pair then a otherwise b
, 
islambda: if z is lambda then a otherwise b
, 
isinr: isinr def, 
isinl: isinl def, 
apply: f a
, 
fix: fix(F)
, 
lambda: λx.A[x]
, 
spread: spread def, 
pair: <a, b>
, 
inr: inr x 
, 
inl: inl x
Definitions occuring in definition : 
fix: fix(F)
, 
islambda: if z is lambda then a otherwise b
, 
lambda: λx.A[x]
, 
ispair: if z is a pair then a otherwise b
, 
spread: spread def, 
pair: <a, b>
, 
isinl: isinl def, 
outl: outl(x)
, 
inl: inl x
, 
isinr: isinr def, 
callbyvalue: callbyvalue, 
apply: f a
, 
outr: outr(x)
, 
inr: inr x 
FDL editor aliases : 
subst-exc
Latex:
subst-exc(e;t)
==r  eval  x  =  t  in
        if  x  is  lambda  then  \mlambda{}z.subst-exc(e;x  z)
        otherwise  if  x  is  a  pair  then  let  a,b  =  x 
                                                                    in  eval  a'  =  subst-exc(e;a)  in
                                                                          eval  b'  =  subst-exc(e;b)  in
                                                                              <a',  b'>
                            otherwise  if  x  is  inl  then  eval  y  =  subst-exc(e;outl(x))  in
                                                                                  inl  y
                                                else  if  x  is  inr  then  eval  y  =  subst-exc(e;outr(x))  in
                                                                                            inr  y 
                                                          else  x?e:v.\mbot{}
Latex:
subst-exc(e;t)  ==
    fix((\mlambda{}subst-exc,t.  eval  x  =  t  in
                                          if  x  is  lambda  then  \mlambda{}z.(subst-exc  (x  z))
                                          otherwise  if  x  is  a  pair  then  let  a,b  =  x 
                                                                                                      in  eval  a'  =  subst-exc  a  in
                                                                                                            eval  b'  =  subst-exc  b  in
                                                                                                                <a',  b'>
                                                              otherwise  if  x  is  inl  then  eval  y  =  subst-exc  outl(x)  in
                                                                                                                    inl  y
                                                                                  else  if  x  is  inr  then  eval  y  =  subst-exc  outr(x)  in
                                                                                                                              inr  y 
                                                                                            else  x?e:v.\mbot{})) 
    t
Date html generated:
2017_02_20-AM-10_46_09
Last ObjectModification:
2017_01_25-PM-04_07_43
Theory : call!by!value_1
Home
Index