ListComp02:
type R = {
A: Int,
B: String
}
type S = {
B: String,
C: Int
}
extern mul(i : Int, j : Int) : Int = "{i} * {j}"
state Rs : Bag<R>
state Ss : Bag<S>
query q()
sum [ mul(r.A, s.C) | r <- Rs, s <- Ss ]
op insert_r(r: R)
Rs.add(r);
op insert_s(s: S)
Ss.add(s);
public void insert_r(R r) {
_var49.add(r);
}
assert(old_this._var50 == this._var50); assert(ExpressionEvaluator.evaluateSetMembership(r,"this . _var49",this));
public void insert_s(S s) {
_var50.add(s);
}
assert(old_this._var49 == this._var49); assert(ExpressionEvaluator.evaluateSetMembership(s,"this . _var50",this));
public Integer q() {
Integer _sum159130 = 0;
for (R _r159132 : _var49) {
for (S _s159133 : _var50) {
_sum159130 = (_sum159130 + (((_r159132).A) *
((_s159133).C)));
}
}
return _sum159130;
}
assert(old_this._var50 == this._var50); assert(old_this._var49 == this._var49);