{ 
[X:
{j}]. 
[x:esharp_exp()]. 
[var:name:Atom 
 X]. 
[basic:val:Base 
 X].
  
[op:name:Atom 
 X]. 
[apply:fun:esharp_exp()
                                
 arg:esharp_exp()
                                
 rec1:X
                                
 rec2:X
                                
 X]. 
[lambda:var:Atom
                                                
 body:esharp_exp()
                                                
 rec1:X
                                                
 X].
  
[let:lhs:E#Lhs
        
 rsh:esharp_exp()
        
 body:esharp_exp()
        
 rec1:X
        
 rec2:X
        
 X].
    (case(x)
       var(name)=>var[name]
       basic(val)=>basic[val]
       operator(name)=>op[name]
       fun(arg)=>rec1,rec2.apply[fun;arg;rec1;rec2]
       lambda v1. body=>rec1.lambda[v1;body;rec1]
       let lhs = rsh in body=> rec1,rec2.let[lhs;rsh;body;rec1;rec2]) 
 X) }
{ Proof }
Definitions occuring in Statement : 
esharp_exp_ind: esharp_exp_ind, 
esharp_exp: esharp_exp(), 
esharp-lhs: E#Lhs, 
uall:
[x:A]. B[x], 
so_apply: x[s1;s2;s3;s4;s5], 
so_apply: x[s1;s2;s3;s4], 
so_apply: x[s1;s2;s3], 
so_apply: x[s], 
member: t 
 T, 
function: x:A 
 B[x], 
base: Base, 
atom: Atom, 
universe: Type
Definitions : 
type-expr: Error :type-expr, 
fpf: a:A fp-> B[a], 
strong-subtype: strong-subtype(A;B), 
le: A 
 B, 
ge: i 
 j , 
not:
A, 
less_than: a < b, 
tag-by: z
T, 
ldag: LabeledDAG(T), 
labeled-graph: LabeledGraph(T), 
record+: record+, 
record: record(x.T[x]), 
eclass: EClass(A[eo; e]), 
fset: FSet{T}, 
dataflow: dataflow(A;B), 
isect2: T1 
 T2, 
b-union: A 
 B, 
rev_implies: P 
 Q, 
or: P 
 Q, 
implies: P 
 Q, 
iff: P 

 Q, 
uiff: uiff(P;Q), 
and: P 
 Q, 
bag: bag(T), 
list: type List, 
set: {x:A| B[x]} , 
top: Top, 
true: True, 
subtype_rel: A 
r B, 
uimplies: b supposing a, 
type-monotone: Monotone(T.F[T]), 
product: x:A 
 B[x], 
union: left + right, 
rec: rec(x.A[x]), 
all:
x:A. B[x], 
axiom: Ax, 
so_apply: x[s1;s2;s3;s4;s5], 
so_apply: x[s1;s2;s3], 
so_apply: x[s1;s2;s3;s4], 
apply: f a, 
so_apply: x[s], 
esharp_exp_ind: esharp_exp_ind, 
equal: s = t, 
so_lambda: 
x.t[x], 
member: t 
 T, 
prop:
, 
esharp-lhs: E#Lhs, 
base: Base, 
function: x:A 
 B[x], 
atom: Atom, 
esharp_exp: esharp_exp(), 
universe: Type, 
uall:
[x:A]. B[x], 
isect:
x:A. B[x]
Lemmas : 
esharp_exp_wf, 
base_wf, 
uall_wf, 
esharp-lhs_wf, 
member_wf, 
type-monotone_wf, 
subtype_rel_wf, 
subtype_rel_sum, 
subtype_rel_simple_product
\mforall{}[X:\mBbbU{}\{j\}].  \mforall{}[x:esharp\_exp()].  \mforall{}[var:name:Atom  {}\mrightarrow{}  X].  \mforall{}[basic:val:Base  {}\mrightarrow{}  X].  \mforall{}[op:name:Atom  {}\mrightarrow{}  X].
\mforall{}[apply:fun:esharp\_exp()  {}\mrightarrow{}  arg:esharp\_exp()  {}\mrightarrow{}  rec1:X  {}\mrightarrow{}  rec2:X  {}\mrightarrow{}  X].
\mforall{}[lambda:var:Atom  {}\mrightarrow{}  body:esharp\_exp()  {}\mrightarrow{}  rec1:X  {}\mrightarrow{}  X].  \mforall{}[let:lhs:E\#Lhs
                                                                                                                            {}\mrightarrow{}  rsh:esharp\_exp()
                                                                                                                            {}\mrightarrow{}  body:esharp\_exp()
                                                                                                                            {}\mrightarrow{}  rec1:X
                                                                                                                            {}\mrightarrow{}  rec2:X
                                                                                                                            {}\mrightarrow{}  X].
    (case(x)
          var(name)=>var[name]
          basic(val)=>basic[val]
          operator(name)=>op[name]
          fun(arg)=>rec1,rec2.apply[fun;arg;rec1;rec2]
          lambda  v1.  body=>rec1.lambda[v1;body;rec1]
          let  lhs  =  rsh  in  body=>  rec1,rec2.let[lhs;rsh;body;rec1;rec2])  \mmember{}  X)
Date html generated:
2011_08_17-PM-05_14_23
Last ObjectModification:
2011_02_03-PM-04_33_13
Home
Index