1 | 1. ds: Collection{i}(dec()) 2. daa: Collection{i}(dec()) 3. da: Collection{i}(SimpleType) 4. de: sig() 5. rho: Decl{i} 6. t: Term 7. u: Term Type{i'} 8. w: t:{v:Term| u(v) }  s,s':{[[ds]] rho}, e:{1of(sig_mng{i:l}(de; rho))}, a:SimpleType, v:[[da]] rho
, tr:trace_env([[daa]] rho).
trace_consistent(rho;daa;tr.proj;t)  a term_types(ds;da;de;t)  [[t]] e s s' v tr [[a]] rho 9. y1: Label s,s':{[[ds]] rho}, e:{1of(sig_mng{i:l}(de; rho))}, a:SimpleType, v:[[da]] rho
, tr:trace_env([[daa]] rho).
trace_consistent(rho;daa;tr.proj;trace(y1))  a < lbl_pr( < Trace, y1 > ) >  tr.y1 [[a]] rho |
2 | 1. ds: Collection{i}(dec()) 2. daa: Collection{i}(dec()) 3. da: Collection{i}(SimpleType) 4. de: sig() 5. rho: Decl{i} 6. t: Term 7. u: Term Type{i'} 8. w: t:{v:Term| u(v) }  s,s':{[[ds]] rho}, e:{1of(sig_mng{i:l}(de; rho))}, a:SimpleType, v:[[da]] rho
, tr:trace_env([[daa]] rho).
trace_consistent(rho;daa;tr.proj;t)  a term_types(ds;da;de;t)  [[t]] e s s' v tr [[a]] rho 9. y1: {v:Term| u(v) } 10. y2: {v:Term| u(v) } s,s':{[[ds]] rho}, e:{1of(sig_mng{i:l}(de; rho))}, a:SimpleType, v:[[da]] rho
, tr:trace_env([[daa]] rho).
trace_consistent(rho;daa;tr.proj;y1 y2) 
a st_app(term_types(ds;da;de;y1);term_types(ds;da;de;y2)) 
[[y1]] e s s' v tr([[y2]] e s s' v tr) [[a]] rho |