| # lax = (# gndx0 + 1) + # gndx, gstore2[n] = groupblock((gndx0 + mkgnode(nd, m1, boolvar, false) ') + gndx, lax, m), valid-group-nodes(gndx0) = valid-group-nodes((gndx0 + mkgnode(nd, m1, boolvar, false) ') + gndx), inv(groupblock((gndx0 + mkgnode(nd, m1, boolvar, false) ') + gndx, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2 ⊦ ax0 + prefixn(# gndx0 + 1, lax.to-adr(n)) = [], prefixn(# gndx0 + 1, lax.to-adr(n)).butlast = prefixn(# gndx0, lax).to-adr(n), lax = [], n ∈ ginval |
⊦ n ≠ 0 ∧ n ≤ # ax → prefixn(n, ax).butlast = prefixn(n - 1, ax)
# lax = (# gndx0 + 1) + # gndx, gstore2[n] = groupblock((gndx0 + mkgnode(nd, m1, boolvar, false) ') + gndx, lax, m), valid-group-nodes(gndx0) = valid-group-nodes((gndx0 + mkgnode(nd, m1, boolvar, false) ') + gndx), inv(gstore2 \ ginval), inv(groupblock((gndx0 + mkgnode(nd, m1, boolvar, false) ') + gndx, lax, m)), n ∈ gstore2 ⊦ ax0 + prefixn(# gndx0 + 1, lax.to-adr(n)) = [], prefixn(# gndx0 + 1, lax.to-adr(n)).butlast = prefixn(# gndx0, lax).to-adr(n), lax = [], n ∈ ginval, # gndx0 + 1 ≠ 0 ∧ # gndx0 + 1 ≤ # lax.to-adr(n)
Used simplifier rules: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)% ⊦ n + 0 = n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ prefixn(n, lax.to-adr(m)) = prefixn(n, lax).to-adr(m); (s)% ⊦ lax0.to-adr(n) = lax1.to-adr(n) ↔ lax0 = lax1; (s) Used terms: lax.to-adr(n), # gndx0 + 1