| gndx + mkgnode(nd, n, boolvar, true) ' = gnd ' + gndx0, gnd.start, # gndx + 1 < # ndx, ∀ n0. (n0 ≠ 0 ∧ ¬ # gndx < n0 → ¬ (gnd ' + gndx0)[n0].start) ∧ (¬ # gndx < n0 → ¬ (gnd ' + gndx0)[n0].end), ∀ n0. ¬ # gndx < n0 → (gnd ' + gndx0)[n0].nd = ndx[n0], mkgnode(nd, n, boolvar, true) = gnd ∨ mkgnode(nd, n, boolvar, true) ∈ gndx0, gnd ∈ gndx ∨ gnd = mkgnode(nd, n, boolvar, true) ⊦ ndx = [] |
gndx + mkgnode(nd, n, boolvar, true) ' = gnd ' + gndx0, boolvar0, gnd = mkgnode(nd0, m, boolvar0, boolvar1), # gndx + 1 < # ndx, ∀ n0. ¬ # gndx < n0 → (gnd ' + gndx0)[n0].nd = ndx[n0], ∀ n0. (n0 ≠ 0 ∧ ¬ # gndx < n0 → ¬ (gnd ' + gndx0)[n0].start) ∧ (¬ # gndx < n0 → ¬ (gnd ' + gndx0)[n0].end), gnd ∈ gndx ∨ gnd = mkgnode(nd, n, boolvar, true), mkgnode(nd, n, boolvar, true) = gnd ∨ mkgnode(nd, n, boolvar, true) ∈ gndx0 ⊦ ndx = []
Used simplifier rules: ⊦ ((nd = gnd.nd ∧ m = gnd.sqnum) ∧ (boolvar ↔ gnd.start)) ∧ (boolvar0 ↔ gnd.end) ↔ gnd = mkgnode(nd, m, boolvar, boolvar0); (elim) Used terms: gnd, nd0, m, boolvar0, boolvar1