| # gndx0 + 1 = # ndx, boolvar, gnd = mkgnode(nd, m, boolvar, boolvar0), (gnd ' + gndx0).last.end, n < # ndx, n ≤ # gndx0, ∀ n2. n2 < # ndx → (gnd ' + gndx0)[n2].nd = ndx[n2], ∀ n2. (n2 ≠ 0 ∧ n2 < # ndx → ¬ (gnd ' + gndx0)[n2].start) ∧ (n2 + 1 < # ndx → ¬ (gnd ' + gndx0)[n2].end) ⊦ ndx = [], ( prefixn(n, gnd ' + gndx0) = [] ∨ prefixn(n, gnd ' + gndx0).head.start ∧ (n0 ≠ 0 ∧ n0 < n → ¬ prefixn(n, gnd ' + gndx0)[n0].start) ∧ (n0 < n → ¬ prefixn(n, gnd ' + gndx0)[n0].end)) ∧ (n1 < n → prefixn(n, gnd ' + gndx0)[n1].nd = ndx[n1]) |
# gndx0 + 1 = # ndx, (mkgnode(nd, m, true, boolvar0) ' + gndx0).last.end, n < # ndx, n ≤ # gndx0, ∀ n2. (n2 ≠ 0 ∧ n2 < # ndx → ¬ (mkgnode(nd, m, true, boolvar0) ' + gndx0)[n2].start) ∧ (n2 + 1 < # ndx → ¬ (mkgnode(nd, m, true, boolvar0) ' + gndx0)[n2].end), ∀ n2. n2 < # ndx → (mkgnode(nd, m, true, boolvar0) ' + gndx0)[n2].nd = ndx[n2] ⊦ ndx = [], ( prefixn(n, mkgnode(nd, m, true, boolvar0) ' + gndx0) = [] ∨ prefixn(n, mkgnode(nd, m, true, boolvar0) ' + gndx0).head.start ∧ (n0 ≠ 0 ∧ n0 < n → ¬ prefixn(n, mkgnode(nd, m, true, boolvar0) ' + gndx0)[n0].start) ∧ (n0 < n → ¬ prefixn(n, mkgnode(nd, m, true, boolvar0) ' + gndx0)[n0].end)) ∧ (n1 < n → prefixn(n, mkgnode(nd, m, true, boolvar0) ' + gndx0)[n1].nd = ndx[n1])