{ 
[X:
{j}]. 
[x:Pi_term]. 
[zero:X]. 
[comm:pre:pi_prefix()
                                             
 body:Pi_term
                                             
 rec1:X
                                             
 X].
  
[option,par:left:Pi_term 
 right:Pi_term 
 rec1:X 
 rec2:X 
 X].
  
[rep:body:Pi_term 
 rec1:X 
 X]. 
[new:name:Name
                                            
 body:Pi_term
                                            
 rec1:X
                                            
 X].
    (F(x) where 
     F(0) = zero  
     F(pre.body) = comm[pre;body;rec1] where  
                    rec1 = F(body)   
     F(left + right) = option[left;right;rec1;rec2] where  
                        rec1 = F(left)  
                        rec2 = F(right)  
     F(left | right) = par[left;right;rec1;rec2] where  
                        rec1 = F(left)  
                        rec2 = F(right)  
     F(!body) = rep[body;rec1] where  
                 rec1 = F(body)  
     F(new name.body) = new[name;body;rec1] where  
                         rec1 = F(body) 
 X) }
{ Proof }
Definitions occuring in Statement : 
pi_term_ind: pi_term_ind, 
pi_term: Pi_term, 
pi_prefix: pi_prefix(), 
name: Name, 
uall:
[x:A]. B[x], 
so_apply: x[s1;s2;s3;s4], 
so_apply: x[s1;s2;s3], 
so_apply: x[s1;s2], 
member: t 
 T, 
function: x:A 
 B[x], 
universe: Type
Definitions : 
uall:
[x:A]. B[x], 
pi_term: Pi_term, 
member: t 
 T, 
pi_term_ind: pi_term_ind, 
so_apply: x[s1;s2;s3], 
so_apply: x[s1;s2;s3;s4], 
so_apply: x[s1;s2], 
type-monotone: Monotone(T.F[T]), 
uimplies: b supposing a, 
ycomb: Y, 
pi1: fst(t), 
pi2: snd(t)
Lemmas : 
unit_wf, 
pi_prefix_wf, 
name_wf, 
subtype_rel_sum, 
subtype_rel_simple_product, 
pi_term_wf
\mforall{}[X:\mBbbU{}\{j\}].  \mforall{}[x:Pi\_term].  \mforall{}[zero:X].  \mforall{}[comm:pre:pi\_prefix()  {}\mrightarrow{}  body:Pi\_term  {}\mrightarrow{}  rec1:X  {}\mrightarrow{}  X].
\mforall{}[option,par:left:Pi\_term  {}\mrightarrow{}  right:Pi\_term  {}\mrightarrow{}  rec1:X  {}\mrightarrow{}  rec2:X  {}\mrightarrow{}  X].  \mforall{}[rep:body:Pi\_term
                                                                                                                                                        {}\mrightarrow{}  rec1:X
                                                                                                                                                        {}\mrightarrow{}  X].
\mforall{}[new:name:Name  {}\mrightarrow{}  body:Pi\_term  {}\mrightarrow{}  rec1:X  {}\mrightarrow{}  X].
    (F(x)  where 
      F(0)  =  zero   
      F(pre.body)  =  comm[pre;body;rec1]  where   
                                    rec1  =  F(body)     
      F(left  +  right)  =  option[left;right;rec1;rec2]  where   
                                            rec1  =  F(left)   
                                            rec2  =  F(right)   
      F(left  |  right)  =  par[left;right;rec1;rec2]  where   
                                            rec1  =  F(left)   
                                            rec2  =  F(right)   
      F(!body)  =  rep[body;rec1]  where   
                              rec1  =  F(body)   
      F(new  name.body)  =  new[name;body;rec1]  where   
                                              rec1  =  F(body)  \mmember{}  X)
Date html generated:
2011_08_17-PM-06_42_30
Last ObjectModification:
2011_06_18-PM-12_10_07
Home
Index