At:
wp2 rel correct
2
1
2
1
1
1
2
2
1
1
2
1
2
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_ioa(A;de)
9.
ioa_mentions_trace(A)
10.
trace_consistent_rel(rho;A.da;tr.proj;r)
11.
single_valued_decls(A.ds)
12.
s: {[[A.ds]] rho}
13.
x': {[[A.ds]] rho}
14.
tc(r;A.ds;dec_lookup(A.da;kind(a));de)
15.
covers_rel(A;r)
16.
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()
17.
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
18.
tc(r;A.ds;dec_lookup(A.da;kind(a));de)
19.
fr:frame(). fr
A.frame 
(kind(a)
fr.acts) 
x'.fr.var = s.fr.var
[[fr.typ]] rho
20.
x:Label. rel_mentions(r;x) 
covers_var(A;x)
21.
value(a)
[[dec_lookup(A.da;kind(a))]] rho
22.
r@0:rel().
r@0
col_subst2(
x.smts_eff(action_effect(kind(a);A.eff;A.frame);x);r)

[[r@0]] rho A.ds dec_lookup(A.da;kind(a)) de e s value(a) tr
23.
r': rel()
24.
as: (Label
Term) List
25.
1of(unzip(as)) = rel_primed_vars(r)
26.
i:
. i < ||as|| 
2of(as[i])
smts_eff(action_effect(kind(a);A.eff;A.frame);1of(as[i]))
27.
r' = rel_subst2(as;r)
28.
x: Label
29.
(x
1of(unzip(as)))
30.
i:
31.
i < ||as||
32.
< x,apply_alist(as;x;x) > = as[i]
33.
xxx: Term
34.
2of(as[i]) = xxx
35.
xx: Label
36.
1of(as[i]) = xx
37.
s1: smt()
38.
f: frame()
39.
f
A.frame
40.
(kind(a)
f.acts)
41.
s1 = mk_smt(f.var, f.var, f.typ)
42.
x'.f.var = s.f.var
[[f.typ]] rho
43.
t: SimpleType
44.
mk_dec(f.var, t)
A.ds
x'.f.var = s.f.var
[[t]] rho
By:
Try (Fold `r_select` 0)
THEN
Subst (t ~ f.typ) 0
Generated subgoal:
1 | t = f.typ |
About: