| # gndx = # lax, gstore[n] = groupblock(gndx, lax, n0), gstore ↓[@(n, m1, m2)] = mkgnode(nd0, m, boolvar1, boolvar2), @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n ∈ gstore, n0 ≤ m0 ⊦ n ∈ ginval, @(m1, m2) ∈ prefixn((boolvar0 ⊃ # lax + 1;valid-group-nodes(gndx)), lax + ladr ') |
# gndx = # lax, gstore ↓[@(n, m1, m2)] = mkgnode(nd0, m, boolvar1, boolvar2), gstore[n] = groupblock(gndx, lax, n0), ¬ boolvar0, n ∈ gstore, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax), n0 ≤ m0 ⊦ n ∈ ginval, @(m1, m2) ∈ prefixn(valid-group-nodes(gndx), lax + ladr ')
Used simplifier rules: ⊦ #(lax + lax0) = # lax + # lax0; (s)% ⊦ # ladr ' = 0 +1; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%# lax ≤ m ⊦ prefixn(m, lax) = lax; (s)% ⊦ ladr ∈ lax + lax0 ↔ ladr ∈ lax ∨ ladr ∈ lax0; (s)% ⊦ ladr ∈ prefixn(n, lax) → ladr ∈ lax; (ss)