At:
vc trace correctness
1
3
2
1
2
2
2
2
1.
A: ioa{i:l}()
2.
I: Fmla
3.
rho: Decl
4.
de: sig()
5.
e: {[[de]] rho}
6.
te: Label
Label

7.
tc_ioa(A;de)
8.
ioa_mentions_trace(A)
9.
trace_consistent_pred(rho;A.da;te;I)
10.
guarded_trace(A.da;te;I)
11.
tc_pred(I;A.ds; < > ;de)
12.
covers_pred(A;I)
13.
closed_pred(I)
14.
single_valued_decls(A.ds)
15.
s0: [[A]] rho de e.state
16.
x: [[A]] rho de e.state
17.
act: [[A]] rho de e.action
18.
x': [[A]] rho de e.state
19.
l: [[A]] rho de e.action List
20.
[[A]] rho de e.init(s0)
21.
trace_reachable([[A]] rho de e;s0;l;x)
22.
mk_trace_env(l, te)
trace_env([[A.da]] rho)
23.
[[I]] rho A.ds < > de e x
mk_trace_env(l, te)
24.
[[A]] rho de e.trans(x,act,x')
25.
l
(
[[A.da]] rho) List
26.
[[VCs(A;I)]] rho A.ds A.da de e x mk_trace_env(l, te)
27.
act
(
[[A.da]] rho)
28.
(
t:dec(). t
A.da & t.lbl = kind(act)) 
[[I]] rho A.ds < > de e x'
mk_trace_env(l @ [act], te)
[[I]] rho A.ds < > de e x'
mk_trace_env(l @ [act], te)
By:
(Inst
Thm*
A:ioa{i:l}(), I:Fmla, rho:Decl, de:sig(), e:{[[de]] rho}, te:(Label
Label

). tc_ioa(A;de) 
ioa_mentions_trace(A) 
trace_consistent_pred(rho;A.da;te;I) 
tc_pred(I;A.ds; < > ;de) 
covers_pred(A;I) 
guarded_trace(A.da;te;I) 
closed_pred(I) 
single_valued_decls(A.ds) 
(
s0,x:[[A]] rho de e.state, act:[[A]] rho de e.action, x':[[A]] rho de e.state, tr:(
[[A.da]] rho) List. [[A]] rho de e.init(s0) 
trace_reachable([[A]] rho de e;s0;mk_trace_env(tr, te).trace;x) 
[[I]] rho A.ds < > de e x
mk_trace_env(tr, te) 
[[A]] rho de e.trans(x,act,x') 
((
t:dec(). t
A.da & t.lbl = kind(act)) 
[[I]] rho A.ds < > de e x'
tappend(mk_trace_env(tr, te);act)) 
[[I]] rho A.ds < > de e x'
tappend(mk_trace_env(tr, te);act))
[A;I;rho;de;e;te;s0;x;act;x';l])
THENA
(Auto THEN (Reduce 0))
THEN
ThinTrivial
THEN
All (
h.(Unfold `tappend` h) THEN (Reduce h) THEN Trivial)
Generated subgoals:
None
About: