Thm* d:Decl, tr:trace_env(d), a:( d), r:rel(), rho,ds,da,de,e,s,v:Top.
affects_trace_rel(tr.proj;kind(a);r) 
([[r]] rho ds da de e s v tappend(tr;a) ~ [[r]] rho ds da de e s v tr) | [rel_mng_tappend] |
Thm* ds:Collection(dec()), rho:Decl, a:( [[ds]] rho), x:Label.
mk_dec(kind(a), x) ds  value(a) rho(x) | [sigma_decls_mng_value2] |
Thm* d1,d2:Collection(dec()), rho:Decl, u:( [[d1]] rho).
d1 = d2  u ( [[d2]] rho) | [sigma_decls_mng_functionality] |
Thm* ds:Collection(dec()), rho:Decl, a:( [[ds]] rho).
value(a) [[dec_lookup(ds;kind(a))]] rho | [sigma_decls_mng_value] |
Thm* da:Collection(dec()), rho:Decl, k:Label, w:[[dec_lookup(da;k)]] rho.
< k,w > ( [[da]] rho) | [sigma_decls_mng2] |
Thm* ds1,ds2:Collection(dec()), rho:Decl, r:( [[ds1]] rho).
ds1 = ds2  r ( [[ds2]] rho) | [decls_mng_functionality_sigma] |
Thm* da:Collection(dec()), rho:Decl, tr:trace_env([[da]] rho), y1:Label.
tr.y1 {a:( [[da]] rho)| tr.proj(y1,kind(a)) } List | [tproj_w_f] |
Thm* d1,d2:Collection(dec()), rho:Decl, u:( [[d1]] rho).
d2 d1  u ( [[d2]] rho) | [sigma_decls_mng_monotone] |
Def trace_consistent(rho;da;R;t)
== g:Label.
term_mentions_guard(g;t) 
subtype_rel(({a:( [[da]] rho)| (R(g,kind(a))) } List); (rho(lbl_pr( < Trace, g > )))) | [trace_consistent] |