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);