| # gndx = # lax, prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), gndx + mkgnode(nd, m3, boolvar, boolvar0) ')[pos(@(m1, m2), lax + ladr ')] = mkgnode(nd1, m4, boolvar3, boolvar4), gstore[n] = groupblock(gndx, lax, n0), prefixn(valid-group-nodes(gndx), gndx)[pos(@(m1, m2), lax)] = mkgnode(nd0, m, boolvar1, boolvar2), @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), n ∈ gstore, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n0 ≤ m0 ⊦ nd0 = nd1, n ∈ ginval |
⊦ m < n ∧ m < # gndx → prefixn(n, gndx)[m] = gndx[m]
# gndx = # lax, gndx[pos(@(m1, m2), lax)] = mkgnode(nd0, m, boolvar1, boolvar2), gstore[n] = groupblock(gndx, lax, n0), prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), gndx + mkgnode(nd, m3, boolvar, boolvar0) ')[pos(@(m1, m2), lax + ladr ')] = mkgnode(nd1, m4, boolvar3, boolvar4), pos(@(m1, m2), lax) < valid-group-nodes(gndx), pos(@(m1, m2), lax) < # gndx, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n ∈ gstore, @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), n0 ≤ m0 ⊦ nd0 = nd1, n ∈ ginval
Used simplifier rules: ⊦ ladr ∈ prefixn(n, lax) → pos(ladr, lax) < n; (ss)% ⊦ m < n ↔ ¬ n ≤ m; (ss)%in-prefixn-pos-smaller0: ⊦ ladr ∈ prefixn(n, lax) ∧ m ≤ pos(ladr, lax) → m ≤ n; (forward) from specification list-prefixn[laddress-list]% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ m ≤ n → (n < m ↔ false); (s)%# gndx ≤ m ⊦ prefixn(m, gndx) = gndx; (s)%# lax ≤ m ⊦ prefixn(m, lax) = lax; (s)% ⊦ ladr ∈ lax → pos(ladr, lax + lax0) = pos(ladr, lax); (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ ladr ∈ lax → ¬ # lax ≤ pos(ladr, lax); (s) Used terms: pos(@(m1, m2), lax), gndx, valid-group-nodes(gndx)