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![](FONT/dash.png) Type{i'} 8. w: t:{v:Term| u(v) }![](FONT/dash.png) ![](FONT/then_med.png) 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) ![](FONT/eq.png) a term_types(ds;da;de;t) ![](FONT/eq.png) [[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)) ![](FONT/eq.png) a < lbl_pr( < Trace, y1 > ) > ![](FONT/eq.png) 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![](FONT/dash.png) Type{i'} 8. w: t:{v:Term| u(v) }![](FONT/dash.png) ![](FONT/then_med.png) 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) ![](FONT/eq.png) a term_types(ds;da;de;t) ![](FONT/eq.png) [[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) ![](FONT/eq.png)
a st_app(term_types(ds;da;de;y1);term_types(ds;da;de;y2)) ![](FONT/eq.png)
[[y1]] e s s' v tr([[y2]] e s s' v tr) [[a]] rho |