Nuprl Definition : pi-subst-aux
pi-subst-aux(p) ==
  F(p) where 
  F(0) = λY,s. pizero()  
  F(pre.P) = λY,s. pi_prefix_ind(pre;
                                 pisend(c,v)
⇒ picomm(pisend(name-subst(s;c);name-subst(s;v));P1 Y s);
                                 pircv(c,v)
⇒ if v ∈b Y)
                                 then let w = maybe-new(v;Y @ pi-names(P)) in
                                       let s' = filter(λp.(¬bname_eq(w;fst(p)));s) in
                                       picomm(pircv(name-subst(s;c);w);P1 [w / Y] [<v, w> / s'])
                                 else let s' = filter(λp.(¬bname_eq(v;fst(p)));s) in
                                          picomm(pircv(name-subst(s;c);v);P1 Y s')
                                 fi )  where  
              P1 = F(P)   
  F(P + Q) = λY,s. pioption(P1 Y s;Q1 Y s) where  
              P1 = F(P)  
              Q1 = F(Q)  
  F(P | Q) = λY,s. pipar(P1 Y s;Q1 Y s) where  
              P1 = F(P)  
              Q1 = F(Q)  
  F(!P) = λY,s. pirep(P1 Y s) where  
           P1 = F(P)  
  F(new v.R) = λY,s. if v ∈b Y)
                    then let w = maybe-new(v;Y @ pi-names(R)) in
                          let s' = filter(λp.(¬bname_eq(w;fst(p)));s) in
                          pinew(w;R1 [w / Y] [<v, w> / s'])
                    else let s' = filter(λp.(¬bname_eq(v;fst(p)));s) in
                             pinew(v;R1 Y s')
                    fi  where  
                R1 = F(R)
Definitions occuring in Statement : 
pi-names: pi-names(p)
, 
pi_term_ind: pi_term_ind(v;zero;pre,body,rec1....;left,right,rec2,rec3....;left,right,rec4,rec5....;body,rec6....;name,body,rec7....)
, 
pinew: pinew(name;body)
, 
pirep: pirep(body)
, 
pipar: pipar(left;right)
, 
pioption: pioption(left;right)
, 
picomm: picomm(pre;body)
, 
pizero: pizero()
, 
pi_prefix_ind: pi_prefix_ind, 
pircv: pircv(chan;var)
, 
pisend: pisend(chan;var)
, 
maybe-new: maybe-new(s;avoid)
, 
name-subst: name-subst(s;x)
, 
name_eq: name_eq(x;y)
, 
name-deq: NameDeq
, 
deq-member: x ∈b L)
, 
filter: filter(P;l)
, 
append: as @ bs
, 
cons: [a / b]
, 
bnot: ¬bb
, 
ifthenelse: if b then t else f fi 
, 
let: let, 
pi1: fst(t)
, 
apply: f a
, 
lambda: λx.A[x]
, 
pair: <a, b>
FDL editor aliases : 
pi-subst-aux
Latex:
pi-subst-aux(p)  ==
    F(p)  where 
    F(0)  =  \mlambda{}Y,s.  pizero()   
    F(pre.P)  =  \mlambda{}Y,s.  pi\_prefix\_ind(pre;
                                                                  pisend(c,v){}\mRightarrow{}  picomm(pisend(name-subst(s;c);name-subst(s;v));P1  Y 
                                                                                                                                                                                            s);
                                                                  pircv(c,v){}\mRightarrow{}  if  v  \mmember{}\msubb{}  Y)
                                                                  then  let  w  =  maybe-new(v;Y  @  pi-names(P))  in
                                                                              let  s'  =  filter(\mlambda{}p.(\mneg{}\msubb{}name\_eq(w;fst(p)));s)  in
                                                                              picomm(pircv(name-subst(s;c);w);P1  [w  /  Y]  [<v,  w>  /  s'])
                                                                  else  let  s'  =  filter(\mlambda{}p.(\mneg{}\msubb{}name\_eq(v;fst(p)));s)  in
                                                                                    picomm(pircv(name-subst(s;c);v);P1  Y  s')
                                                                  fi  )    where   
                            P1  =  F(P)     
    F(P  +  Q)  =  \mlambda{}Y,s.  pioption(P1  Y  s;Q1  Y  s)  where   
                            P1  =  F(P)   
                            Q1  =  F(Q)   
    F(P  |  Q)  =  \mlambda{}Y,s.  pipar(P1  Y  s;Q1  Y  s)  where   
                            P1  =  F(P)   
                            Q1  =  F(Q)   
    F(!P)  =  \mlambda{}Y,s.  pirep(P1  Y  s)  where   
                      P1  =  F(P)   
    F(new  v.R)  =  \mlambda{}Y,s.  if  v  \mmember{}\msubb{}  Y)
                                        then  let  w  =  maybe-new(v;Y  @  pi-names(R))  in
                                                    let  s'  =  filter(\mlambda{}p.(\mneg{}\msubb{}name\_eq(w;fst(p)));s)  in
                                                    pinew(w;R1  [w  /  Y]  [<v,  w>  /  s'])
                                        else  let  s'  =  filter(\mlambda{}p.(\mneg{}\msubb{}name\_eq(v;fst(p)));s)  in
                                                          pinew(v;R1  Y  s')
                                        fi    where   
                                R1  =  F(R)
Date html generated:
2015_07_23-AM-11_33_37
Last ObjectModification:
2012_08_30-PM-01_19_13
Home
Index