| # lax = # gndx1 + # gndx, gndx1.last = mkgnode(nd, m0, boolvar, false), gstore2[n] = groupblock(gndx1 + gndx, lax, m), lax = ladr + lax0, prefixn(# gndx1, lax) = [], valid-group-nodes(gndx1) = valid-group-nodes(gndx1 + gndx), inv(groupblock(gndx1 + gndx, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2 ⊦ gndx1 = [], n ∈ ginval |
# lax0 + 1 = # gndx1 + # gndx, gndx1.last = mkgnode(nd, m0, boolvar, false), gstore2[n] = groupblock(gndx1 + gndx, ladr ' + lax0, m), prefixn(# gndx1, ladr ' + lax0) = [], valid-group-nodes(gndx1) = valid-group-nodes(gndx1 + gndx), inv(gstore2 \ ginval), inv(groupblock(gndx1 + gndx, ladr ' + lax0, m)), n ∈ gstore2 ⊦ gndx1 = [], n ∈ ginval
Used simplifier rules: fwd-inv-gblock-rem: ⊦ inv(gstore \ ginval) ∧ n ∈ gstore ∧ ¬ n ∈ ginval ∧ gstore[n] = gblock → inv(gblock); (forward) from specification apersistence-base%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ m +1 = m + 1; (s)% ⊦ #(ladr ' + lax) = (# lax)+1; (s)% ⊦ ladr + lax = ladr ' + lax; (s)