| # 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 |
# 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) < # lax, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n ∈ gstore, @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr '), n0 ≤ m0 ⊦ lax = [], nd0 = nd1, n ∈ ginval
Used simplifier rules: valid-group-nodes-ls: ⊦ n < valid-group-nodes(gndx) → n < # gndx;% ⊦ # lax = 0 ↔ lax = []; (s)% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic