Thm* A:ioa{i:l}(), rho:Decl, te:(Label Label  ), k:Label. ioa_mentions_trace(A)  trace_consistent_pred(rho;A.da;te;action_pre(k;A.pre)) | [trace_consistent_action_pre] |
Def ioa_trans(A;a;I) == vc_qimp(mk_qimp(a, I action_pre(a;A.pre), smts_eff_pred(action_effect(a;A.eff;A.frame);I))) | [ioa_trans] |
Def tc_ioa(A;de) == tc_pred(A.init;A.ds; < > ;de) & ( p:pre(). p A.pre  tc(p.rel;A.ds;dec_lookup(A.da;p.kind);de)) & ( ef:eff(). ef A.eff  mk_dec(ef.kind, ef.typ) A.da & tc_eff(ef;A.ds;de)) & ( f:frame(). f A.frame  mk_dec(f.var, f.typ) A.ds) | [tc_ioa] |
Def [[A]] rho de e == mk_sm([[A.da]] rho, [[A.ds]] rho, s.[[A.init]] rho A.ds < > de e s niltrace(), s1,a,s2. ( p:pre(). p A.pre  p.kind = kind(a)  [[p.rel]] rho A.ds dec_lookup(A.da;kind(a)) de e s1 value(a) niltrace()) & ( ef:eff(). ef A.eff  ef.kind = kind(a)  s2.ef.smt.lbl = [[ef.smt.term]] 1of(e) s1 value(a) niltrace() [[ef.smt.typ]] rho) & ( fr:frame(). fr A.frame  (kind(a) fr.acts)  s2.fr.var = s1.fr.var [[fr.typ]] rho)) | [ioa_mng] |