At:
wp2 rel correct
1
1
1
2
2
1
1
1
1.
A: ioa{i:l}()
2.
r: rel()
3.
rho: Decl
4.
de: sig()
5.
e: {[[de]] rho}
6.
a: (
[[A.da]] rho)
7.
tr: trace_env([[A.da]] rho)
8.
tc_pred(A.init;A.ds; < > ;de)
9.
p:pre(). p
A.pre 
tc(p.rel;A.ds;dec_lookup(A.da;p.kind);de)
10.
ef:eff().
ef
A.eff

mk_dec(ef.kind, ef.typ)
A.da
& mk_dec(ef.smt.lbl, ef.smt.typ)
A.ds
& ef.smt.typ
term_types(A.ds; < ef.typ > ;de;ef.smt.term)
11.
f:frame(). f
A.frame 
mk_dec(f.var, f.typ)
A.ds
12.
ioa_mentions_trace(A)
13.
trace_consistent_rel(rho;A.da;tr.proj;r)
14.
single_valued_decls(A.ds)
15.
s: [[A]] rho de e.state
16.
x': [[A]] rho de e.state
17.
tc(r;A.ds;dec_lookup(A.da;kind(a));de)
18.
covers_rel(A;r)
19.
value(a)
[[dec_lookup(A.da;kind(a))]] rho
20.
p:pre().
p
A.pre

p.kind = kind(a) 
[[p.rel]] rho A.ds dec_lookup(A.da;kind(a)) de e s value(a) niltrace()
21.
ef:eff().
ef
A.eff

ef.kind = kind(a)

x'.ef.smt.lbl = [[ef.smt.term]] 1of(e) s value(a) niltrace()
[[ef.smt.typ]] rho
22.
fr:frame(). fr
A.frame 
(kind(a)
fr.acts) 
x'.fr.var = s.fr.var
[[fr.typ]] rho
23.
rel_mng_2(r; rho; A.ds; dec_lookup(A.da;kind(a)); de; e; s; x'; value(a); tr)
24.
r@0: rel()
25.
as: (Label
Term) List
26.
1of(unzip(as)) = rel_primed_vars(r)
27.
i:
. i < ||as|| 
2of(as[i])
(
x.smts_eff(action_effect(kind(a);A.eff;A.frame);x))(1of(as[i]))
28.
r@0 = rel_subst2(as;r)
29.
x: Label
30.
(x
1of(unzip(as)))
31.
i:
32.
i < ||as||
33.
< x,apply_alist(as;x;x) > = as[i]
34.
xxx: Term
35.
2of(as[i]) = xxx
36.
xx: Label
37.
1of(as[i]) = xx
38.
s1: smt()
39.
e1: eff()
40.
e1
A.eff
41.
e1.kind =
kind(a)
42.
s1 = e1.smt
43.
e1.kind = kind(a)
44.
x'.e1.smt.lbl = [[e1.smt.term]] 1of(e) s value(a) niltrace()
[[e1.smt.typ]] rho
45.
t: SimpleType
46.
mk_dec(e1.smt.lbl, t)
A.ds
47.
mk_dec(e1.kind, e1.typ)
A.da
48.
mk_dec(e1.smt.lbl, e1.smt.typ)
A.ds
49.
e1.smt.typ
term_types(A.ds; < e1.typ > ;de;e1.smt.term)
e1.smt.typ
term_types(A.ds;dec_lookup(A.da;kind(a));de;e1.smt.term)
By:
Using [`ds1',A.ds;`da1', < e1.typ > ]
(BackThru
Thm*
ds1,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)))
THEN
Unfold `col_le` 0
THEN
Try (RW ColMemberC 0)
THEN
Try
(BackThru
Thm*
ds:Collection(dec()), x:Label, T:SimpleType. T
dec_lookup(ds;x) 
mk_dec(x, T)
ds)
THEN
Try ((SubstFor kind(a) 0) THEN (SubstFor x1 0))
Generated subgoals:
None
About: