Origin Definitions Sections GenAutomata Doc

mb_automata_3
Nuprl Section: mb_automata_3
Selected Objects
defsubst_mentions_tracesubst_mentions_trace(as) == reduce(a,b. mentions_trace(2of(a)) b;false;as)
defrel_eqrel_eq(a;b) == eq_relname(a.name;b.name)termlist_eq(a.args;b.args)
THMassert_rel_eqa,b:rel(). rel_eq(a;b) a = b
THMassert_subst_mentions_traceas:(LabelTerm) List. subst_mentions_trace(as) (i:||as||. mentions_trace(2of(as[i])))
defprepre() == LabelLabelrel()
THMterm_subst_mentions_guardas:(LabelTerm) List, g:Label, t:Term. subst_mentions_trace(as) term_mentions_guard(g;term_subst(as;t)) term_mentions_guard(g;t)
THMterm_subst2_mentions_guardas:(LabelTerm) List, g:Label, t:Term. subst_mentions_trace(as) term_mentions_guard(g;term_subst2(as;t)) term_mentions_guard(g;t)
defioaioa{i:l}() == Collection(dec())Collection(dec())Collection(rel())Collection(pre())Collection(eff()) Collection(frame())
THMioa_univ_lemmaA:ioa{i:l}(). A ioa{i':l}
defterm_typesterm_types(ds;da;de;t) == iterate(statevar x- > dec_lookup(ds;x) statevar x'- > dec_lookup(ds;x) funsymbol op- > < de.fun(op) > freevar x- > da trace(P)- > < lbl_pr( < Trace, P > ) > c1(c2)- > st_app(c1;c2) over t)
THMterm_types_addprimet:Term, ds,da,de:Top. term_types(ds;da;de;(t)') ~ term_types(ds;da;de;t)
THMterm_types_unprimet:Term, ds,da,de:Top. term_types(ds;da;de;unprime(t)) ~ term_types(ds;da;de;t)
THMtrivial_term_substt:Term, as:(LabelTerm) List. (x:Label. unprime(apply_alist(as;x;x)) = x) unprime(term_subst(as;t)) = unprime(t)
defsig_mng[[s]] rho == < op.[[s.fun(op)]] rho,R.[[s.rel(R)]] rho >
THMterm_types_functionalityds1,ds2:Collection(dec()), da1,da2:Collection(SimpleType), de:sig(), t:Term. ds1 = ds2 da1 = da2 term_types(ds1;da1;de;t) = term_types(ds2;da2;de;t)
THMterm_types_monotoneds1,ds2:Collection(dec()), da1,da2:Collection(SimpleType), de:sig(), t:Term. ds1 ds2 da1 da2 term_types(ds1;da1;de;t) term_types(ds2;da2;de;t)
THMterm_types_closedt:Term, ds:Collection(dec()), da1,da2:Collection(SimpleType), de:sig(). closed_term(t) term_types(ds;da1;de;t) = term_types(ds;da2;de;t)
THMterm_subst_tct:Term, s:SimpleType, as:(LabelTerm) List, ds:Collection(dec()), da:Collection(SimpleType) , de:sig(). s term_types(ds;da;de;t) (x:Label. (x term_vars(t)) (t:SimpleType. mk_dec(x, t) ds t term_types(ds;da;de;apply_alist(as;x;x)))) s term_types(ds;da;de;term_subst(as;t))
THMterm_subst2_tct:Term, s:SimpleType, as:(LabelTerm) List, ds:Collection(dec()), da:Collection(SimpleType) , de:sig(). s term_types(ds;da;de;t) (x:Label. (x term_primed_vars(t)) (t:SimpleType. mk_dec(x, t) ds t term_types(ds;da;de;apply_alist(as;x;x)))) s term_types(ds;da;de;term_subst2(as;t))
THMtrivial_rel_substr:rel(), as:(LabelTerm) List. (x:Label. unprime(apply_alist(as;x;x)) = x) rel_unprime(rel_subst(as;r)) = rel_unprime(r)
defdecls_mng[[ds]] rho == [[d]] rho for d {d:dec()| d ds }
THMempty_decls_mngv:Top, rho:Decl, x:Label. v [[ < > ]] rho(x)
THMdecls_mng_memberds1,ds2:Collection(dec()), x:Label, rho:Decl, v:[[ds1]] rho(x). (d:dec(). d ds2 d.lbl = x d ds1) v [[ds2]] rho(x)
THMdecls_mng_subtypeds:Collection(dec()), rho:Decl, x:Label, y:[[ds]] rho(x), a:SimpleType. mk_dec(x, a) ds y [[a]] rho
THMdecls_mng_singletond:dec(), rho:Decl, s:{[[d]] rho}. s {[[ < d > ]] rho}
THMdecls_mng_rename_memberds1,ds2:Collection(dec()), x,y:Label, rho:Decl, v:[[ds1]] rho(x). (d:dec(). d ds2 d.lbl = y mk_dec(x, d.typ) ds1) v [[ds2]] rho(y)
THMterm_types_monotone_memberds1,ds2:Collection(dec()), da1,da2:Collection(SimpleType), de:sig(), t:Term. ds1 ds2 da1 da2 (a:SimpleType. a term_types(ds1;da1;de;t) a term_types(ds2;da2;de;t))
defrel_mng[[r]] rho ds da de e s a tr == list_accum(x,t.x([[t]] 1of(e) s a tr);[[r.name]] rho 2of(e) ;r.args)
THMrel_mng_nilr:rel(), te:(LabelLabel), rho,ds,da,de,e,s,a:Top. [[r]] rho ds da de e s a mk_trace_env(nil, te) ~ [[r]] rho ds da de e s a niltrace()
THMrel_mng_unprimer:rel(), e,a,s,ds,da,de,rho,tr:Top. [[r]] rho ds da de e s a tr ~ [[rel_unprime(r)]] rho ds da de e s a tr
THMsigma_decls_mng_monotoned1,d2:Collection(dec()), rho:Decl, u:([[d1]] rho). d2 d1 u ([[d2]] rho)
THMtproj_w_fda:Collection(dec()), rho:Decl, tr:trace_env([[da]] rho), y1:Label. tr.y1 {a:([[da]] rho)| tr.proj(y1,kind(a)) } List
THMdecls_mng_functionalityds1,ds2:Collection(dec()), rho:Decl, r:{[[ds1]] rho}. ds1 = ds2 r {[[ds2]] rho}
THMdecls_mng_functionality_sigmads1,ds2:Collection(dec()), rho:Decl, r:([[ds1]] rho). ds1 = ds2 r ([[ds2]] rho)
THMdecls_mng_record_subtypeds1,ds2:Collection(dec()), rho:Decl, r:{[[ds1]] rho}. ds2 ds1 r {[[ds2]] rho}
THMdecls_mng_monotoneds1,ds2:Collection(dec()), rho:Decl, r:{[[ds1]] rho}. ds2 ds1 r {[[ds2]] rho}
THMsigma_decls_mng2da:Collection(dec()), rho:Decl, k:Label, w:[[dec_lookup(da;k)]] rho. < k,w > ([[da]] rho)
THMsigma_decls_mng_valueds:Collection(dec()), rho:Decl, a:([[ds]] rho). value(a) [[dec_lookup(ds;kind(a))]] rho
defpred_unprimepred_unprime(P) == < rel_unprime(r) | r P >
THMsigma_decls_mng_functionalityd1,d2:Collection(dec()), rho:Decl, u:([[d1]] rho). d1 = d2 u ([[d2]] rho)
THMsigma_decls_mng_value2ds:Collection(dec()), rho:Decl, a:([[ds]] rho), x:Label. mk_dec(kind(a), x) ds value(a) rho(x)
defrel_primed_varsrel_primed_vars(r) == reduce(t,vs. term_primed_vars(t) @ vs;nil;r.args)
THMmember_rel_primed_varsx:Label, r:rel(). (x rel_primed_vars(r)) (i:. i < ||r.args|| & (x term_primed_vars(r.args[i])))
THMrel_vars_addprimer:rel(). rel_primed_vars((r)') = rel_vars(r)
defclosed_relclosed_rel(r) == rel_free_vars(r) = nil
THMclosed_rel_argsr:rel(), i:. closed_rel(r) i < ||r.args|| closed_term(r.args[i])
THMrel_primed_vars_rel_varsr:rel(), x:Label. (x rel_primed_vars(r)) (x rel_vars(r))
defrel_mentions_tracerel_mentions_trace(r) == reduce(x,y. mentions_trace(x) y;false;r.args)
THMrel_mentions_trace_iffr:rel(). rel_mentions_trace(r) (i:. i < ||r.args|| & mentions_trace(r.args[i]))
THMclosed_rel_mng_sqr:rel(), rho,ds,da1,da2,de,s,e,a1,a2,tr:Top. closed_rel(r) ([[r]] rho ds da1 de e s a1 tr ~ [[r]] rho ds da2 de e s a2 tr)
defaffects_trace_relaffects_trace_rel(e;k;r) == reduce(x,y. affects_trace(e;k;x) y;false;r.args)
THMrel_mng_staticr:rel(), rho,ds,da,de,e,s,a,tr,tr':Top. rel_mentions_trace(r) ([[r]] rho ds da de e s a tr' ~ [[r]] rho ds da de e s a tr)
defcovers_predcovers_pred(A;p) == x:Label. pred_mentions(p;x) covers_var(A;x)
THMrel_mng_tappendd: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)
THMcovers_pred_rel_memberA:ioa{i:l}(), I:Fmla, r:rel(). r I covers_pred(A;I) covers_rel(A;r)
defcol_substcol_subst(c;r) == col_map_subst(as.rel_subst(as;r); < zip(rel_vars(r);s) | s col_list_prod(map(c;rel_vars(r))) > )
THMmember_col_substc:(LabelCollection(Term)), r,r':rel(). r' col_subst(c;r) (as:(LabelTerm) List. 1of(unzip(as)) = rel_vars(r) & (i:. i < ||as|| 2of(as[i]) c(1of(as[i]))) & r' = rel_subst(as;r))
defpred_addprime(P)' == (rP. < (r)' > )
THMcovers_pred_addprimeQ:Fmla, A:ioa{i:l}(). covers_pred(A;(Q)') covers_pred(A;Q)
defrel_mng_2rel_mng_2(r; rho; ds; da; de; e; s; s'; a; tr) == list_accum(x,t.x([[t]] 1of(e) s s' a tr);[[r.name]] rho 2of(e) ;r.args)
THMrel_mng_2_addprimer:rel(), rho,ds,da,de,e,s,s',a,tr:Top. rel_mng_2((r)'; rho; ds; da; de; e; s; s'; a; tr) ~ [[r]] rho ds da de e s' a tr
THMrel_mng_2_unprimer:rel(), rho,ds,da,de,e,s,s',a,tr:Top. rel_mng_2(rel_unprime(r); rho; ds; da; de; e; s; s'; a; tr) ~ [[r]] rho ds da de e s a tr
THMclosed_rel_mng2r:rel(), rho,ds,da1,da2,de,s,s',e,a1,a2,tr:Top. closed_rel(r) (rel_mng_2(r; rho; ds; da1; de; e; s; s'; a1; tr) ~ rel_mng_2 (r; rho; ds; da2; de; e; s; s'; a2; tr))
defcol_subst2col_subst2(c;r) == col_map_subst(as.rel_subst2(as;r); < zip(rel_primed_vars(r);s) | s col_list_prod(map(c;rel_primed_vars(r))) > )
THMmember_col_subst2c:(LabelCollection(Term)), r,r':rel(). r' col_subst2(c;r) (as:(LabelTerm) List. 1of(unzip(as)) = rel_primed_vars(r) & (i:. i < ||as|| 2of(as[i]) c(1of(as[i]))) & r' = rel_subst2(as;r))
deftrace_consistenttrace_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 > ))))
THMno_mention_implies_consistent_termrho:Decl, t:Term, da:Collection(dec()), R:(LabelLabel). mentions_trace(t) trace_consistent(rho;da;R;t)
THMcovers_pred_lemma2r:rel(), I:Fmla, A:ioa{i:l}(), a:Label. covers_pred(A;I) r I (r':rel(). r' col_subst2(x.smts_eff(action_effect(a;A.eff;A.frame);x);r))
deftctc(r;ds;da;de) == Case(r.name) Case eq(Q) = > ||r.args|| = 2 & Q term_types(ds;da;de;r.args[0]) & Q term_types(ds;da;de;r.args[1]) Case R = > ||de.rel(R)|| = ||r.args|| & (i:. i < ||r.args|| (de.rel(R))[i] term_types(ds;da;de;r.args[i])) Default = > False
THMtproj_w_f2da:Collection(dec()), rho:Decl, tr:trace_env([[da]] rho), y1:Label. trace_consistent(rho;da;tr.proj;trace(y1)) tr.y1 [[lbl_pr( < Trace, y1 > )]] rho
THMtc_functionalityr:rel(), ds1,ds2:Collection(dec()), da1,da2:Collection(SimpleType), de:sig(). ds1 = ds2 da1 = da2 (tc(r;ds1;da1;de) tc(r;ds2;da2;de))
deftc_smttc_smt(s;ds;da;de) == mk_dec(s.lbl, s.typ) ds & s.typ term_types(ds;da;de;s.term)
THMtc_closed_relr:rel(), ds:Collection(dec()), da1,da2:Collection(SimpleType), de:sig(). closed_rel(r) tc(r;ds;da1;de) tc(r;ds;da2;de)
THMtc_addprimer:rel(), ds:Collection(dec()), da:Collection(SimpleType), de:sig(). tc(r;ds;da;de) tc((r)';ds;da;de)
THMtc_unprimer:rel(), ds:Collection(dec()), da:Collection(SimpleType), de:sig(). tc(r;ds;da;de) tc(rel_unprime(r);ds;da;de)
THMrel_subst2_tcr:rel(), as:(LabelTerm) List, ds:Collection(dec()), da:Collection(SimpleType), de:sig(). tc(r;ds;da;de) (x:Label. (x rel_primed_vars(r)) (t:SimpleType. mk_dec(x, t) ds t term_types(ds;da;de;apply_alist(as;x;x)))) tc(rel_subst2(as;r);ds;da;de)
THMrel_subst_tcr:rel(), as:(LabelTerm) List, ds:Collection(dec()), da:Collection(SimpleType), de:sig(). tc(r;ds;da;de) (x:Label. (x rel_vars(r)) (t:SimpleType. mk_dec(x, t) ds t term_types(ds;da;de;apply_alist(as;x;x)))) tc(rel_subst(as;r);ds;da;de)
THMterm_mng_equalds,da:Collection(dec()), st:Collection(SimpleType), de:sig(), rho:Decl, e1:{1of([[de]] rho)} , s1,s2:{[[ds]] rho}, a:[[st]] rho, tr:trace_env([[da]] rho), u:Term, t:SimpleType. trace_consistent(rho;da;tr.proj;u) (x:Label. (x term_vars(u)) s1.x = s2.x) t term_types(ds;st;de;u) [[u]] e1 s1 a tr = [[u]] e1 s2 a tr [[t]] rho
THMterm_typing2ds,daa:Collection(dec()), da:Collection(SimpleType), de:sig(), rho:Decl, t:Term, s,s':{[[ds]] rho} , e:{1of([[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
THMtc_monotoner:rel(), de:sig(), ds1,ds2:Collection(dec()), da1,da2:Collection(SimpleType). ds1 ds2 da1 da2 tc(r;ds1;da1;de) tc(r;ds2;da2;de)
defguarded_traceguarded_trace(da;e;I) == r:rel(). r I (k:Label. affects_trace_rel(e;k;r) (t:dec(). t da & t.lbl = k))
THMterm_typingds,da:Collection(dec()), st1:Collection(SimpleType), de:sig(), rho:Decl, t:Term, s:{[[ds]] rho} , e:{1of([[de]] rho)}, a:SimpleType, v:[[st1]] rho, tr:trace_env([[da]] rho). trace_consistent(rho;da;tr.proj;t) a term_types(ds;st1;de;t) [[t]] e s v tr [[a]] rho
THMrel_mng_2_lemmads,da:Collection(dec()), de:sig(), rho:Decl, st1:Collection(SimpleType), e1:{1of([[de]] rho)} , s,s':{[[ds]] rho}, a:[[st1]] rho, tr:trace_env([[da]] rho), l:Term List. (i:||l||. trace_consistent(rho;da;tr.proj;l[i])) (ls:SimpleType List, f:reduce(s,m. [[s]] rhom;Prop;ls). ||ls|| = ||l|| & (i:. i < ||l|| ls[i] term_types(ds;st1;de;l[i])) list_accum(x,t.x([[t]] e1 s s' a tr);f;l) Prop)
defpred_mng[[p]] rho ds da de e s a tr == r:rel(). r p [[r]] rho ds da de e s a tr
THMrel_mng_lemmads,da:Collection(dec()), de:sig(), rho:Decl, st1:Collection(SimpleType), e1:{1of([[de]] rho)} , s:{[[ds]] rho}, a:[[st1]] rho, tr:trace_env([[da]] rho), l:Term List. (i:||l||. trace_consistent(rho;da;tr.proj;l[i])) (ls:SimpleType List, f:reduce(s,m. [[s]] rhom;Prop;ls). ||ls|| = ||l|| & (i:. i < ||l|| ls[i] term_types(ds;st1;de;l[i])) list_accum(x,t.x([[t]] e1 s a tr);f;l) Prop)
defclosed_predclosed_pred(p) == r:rel(). r p closed_rel(r)
THMclosed_pred_addprimeQ:Fmla. closed_pred((Q)') closed_pred(Q)
defioa_mentions_traceioa_mentions_trace(A) == (e:eff(). e A.eff & mentions_trace(e.smt.term)) (p:pre(). p A.pre & rel_mentions_trace(p.rel)) (r:rel(). r A.init & rel_mentions_trace(r))
defsmts_eff_relsmts_eff_rel(ss;r) == col_subst(x.smts_eff(ss;x);r)
THMeffect_subst_mentions_traceA:ioa{i:l}(), as:(LabelTerm) List, k:Label. ioa_mentions_trace(A) (i:. i < ||as|| 2of(as[i]) smts_eff(action_effect(k;A.eff;A.frame);1of(as[i]))) subst_mentions_trace(as)
defpred_mng_2pred_mng_2(p; rho; ds; da; de; e; s; s'; a; tr) == r:rel(). r p rel_mng_2(r; rho; ds; da; de; e; s; s'; a; tr)
defwp2wp2(A;a;Q) == (rQ.col_subst2(x.smts_eff(action_effect(a;A.eff;A.frame);x);r))
defwp2_relwp2_rel(A;a;r) == col_subst2(x.smts_eff(action_effect(a;A.eff;A.frame);x);r)
deftrace_consistent_reltrace_consistent_rel(rho;da;R;r) == i:||r.args||. trace_consistent(rho;da;R;r.args[i])
THMno_mention_implies_consistent_relrho:Decl, r:rel(), da:Collection(dec()), R:(LabelLabel). rel_mentions_trace(r) trace_consistent_rel(rho;da;R;r)

Origin Definitions Sections GenAutomata Doc