| gndx + mkgnode(nd, n, boolvar, true) ' = mkgnode(nd0, m, true, boolvar1) ' + gndx0, # gndx + 1 < # ndx, ¬ # gndx < # gndx0 → ¬ (mkgnode(nd0, m, true, boolvar1) ' + gndx0)[# gndx0].end, gndx0 ≠ [] ∧ ¬ # gndx < # gndx0 → ¬ (mkgnode(nd0, m, true, boolvar1) ' + gndx0)[# gndx0].start, ∀ n0. ¬ # gndx < n0 → (mkgnode(nd0, m, true, boolvar1) ' + gndx0)[n0].nd = ndx[n0], mkgnode(nd, n, boolvar, true) = mkgnode(nd0, m, true, boolvar1) ∨ mkgnode(nd, n, boolvar, true) ∈ gndx0, mkgnode(nd0, m, true, boolvar1) ∈ gndx ∨ mkgnode(nd0, m, true, boolvar1) = mkgnode(nd, n, boolvar, true) ⊦ ndx = [] |
gndx + mkgnode(nd, n, boolvar, true) ' = mkgnode(nd0, m, true, boolvar1) ' + gndx0, (mkgnode(nd0, m, true, boolvar1) ' + gndx0)[# gndx0] = mkgnode(nd1, m0, boolvar0, boolvar2), # gndx + 1 < # ndx, gndx0 ≠ [] ∧ ¬ # gndx < # gndx0 → ¬ boolvar0, ¬ # gndx < # gndx0 → ¬ boolvar2, ∀ n0. ¬ # gndx < n0 → (mkgnode(nd0, m, true, boolvar1) ' + gndx0)[n0].nd = ndx[n0], mkgnode(nd0, m, true, boolvar1) ∈ gndx ∨ mkgnode(nd0, m, true, boolvar1) = mkgnode(nd, n, boolvar, true), mkgnode(nd, n, boolvar, true) = mkgnode(nd0, m, true, boolvar1) ∨ 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: (mkgnode(nd0, m, true, boolvar1) ' + gndx0)[# gndx0], nd1, m0, boolvar0, boolvar2