| ⊦ precise(tr(r, t)) |
¬ precise(tr(r, t)) ⊦
| ¬ precise(tr(r, t)) ⊦ |
⊦ precise(hP) ↔ (∀ h, h0, h1. h0 ⊆ h ∧ h1 ⊆ h ∧ hP(h0) ∧ hP(h1) → h0 = h1)
∃ h, h0, h1. ¬(h0 ⊆ h ∧ h1 ⊆ h ∧ tr(r, t)(h0) ∧ tr(r, t)(h1) → h0 = h1) ⊦
Used terms: tr(r, t)
| ⊦ precise(hP) ↔ (∀ h, h0, h1. h0 ⊆ h ∧ h1 ⊆ h ∧ hP(h0) ∧ hP(h1) → h0 = h1) |
| ∃ h, h0, h1. ¬(h0 ⊆ h ∧ h1 ⊆ h ∧ tr(r, t)(h0) ∧ tr(r, t)(h1) → h0 = h1) ⊦ |
h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, tr(r, t)(h0), tr(r, t)(h1) ⊦
| h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, tr(r, t)(h0), tr(r, t)(h1) ⊦ |
h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, tr(r, branch(t0, a, t1))(h1), tr(r, branch(t0, a, t1))(h0), ∀ h0, h1, h, r. ¬(h0 ≠ h1 ∧ h0 ⊆ h ∧ h1 ⊆ h ∧ tr(r, t1)(h0) ∧ tr(r, t1)(h1)), ∀ h0, h1, h, r. ¬(h0 ≠ h1 ∧ h0 ⊆ h ∧ h1 ⊆ h ∧ tr(r, t0)(h0) ∧ tr(r, t0)(h1)) ⊦
Used simplifier rules: tr-base: ⊦ tr(r, leaf) = (emp ∧ ⌜r = null⌝ ); Tree[A] freely generated by leaf, branch; ⊦ (hP0 ∧ hP1)(h) ↔ hP0(h) ∧ hP1(h); (s) ⊦ ⌜bv⌝ (h) ↔ bv; (s) ⊦ ⌜true⌝ = true; (s) ⊦ (true ∧ hP) = hP; (s) and-ass: ⊦ ((hP0 ∧ hP1) ∧ hP2) = (hP0 ∧ hP1 ∧ hP2); from specification heap-sep and-com: ⊦ (hP0 ∧ hP1) = (hP1 ∧ hP0); from specification heap-sep ⊦ emp(h) ↔ h = ∅; (s)
| h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, tr(r, branch(t0, a, t1))(h1), tr(r, branch(t0, a, t1))(h0), ∀ h0, h1, h, r. ¬(h0 ≠ h1 ∧ h0 ⊆ h ∧ h1 ⊆ h ∧ tr(r, t1)(h0) ∧ tr(r, t1)(h1)), ∀ h0, h1, h, r. ¬(h0 ≠ h1 ∧ h0 ⊆ h ∧ h1 ⊆ h ∧ tr(r, t0)(h0) ∧ tr(r, t0)(h1)) ⊦ |
h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, tr(r, branch(t0, a, t1))(h0), tr(r, branch(t0, a, t1))(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
| h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, tr(r, branch(t0, a, t1))(h0), tr(r, branch(t0, a, t1))(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
⊦ tr(r, branch(t0, a, t1)) = _∃(λ r0, r1. r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))
h0 ≠ h1, (_∃(λ r0, r1. r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1)))(h1), (_∃(λ r0, r1. r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1)))(h0), h0 ⊆ h, h1 ⊆ h, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
Used terms: r, t0, a, t1
| ⊦ tr(r, branch(t0, a, t1)) = _∃(λ r0, r1. r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1)) |
| h0 ≠ h1, (_∃(λ r0, r1. r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1)))(h1), (_∃(λ r0, r1. r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1)))(h0), h0 ⊆ h, h1 ⊆ h, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (r => mknode(r2, a, r3) * tr(r2, t0) * tr(r3, t1))(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
Used simplifier rules: ⊦ (_∃ bcP)(h) ↔ (∃ b, c. bcP(b, c)(h)); (s)
| h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (r => mknode(r2, a, r3) * tr(r2, t0) * tr(r3, t1))(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), ∃ h0, h2. h0 ⊥ h2 ∧ h1 = h0 ∪ h2 ∧ (r => mknode(r2, a, r3))(h0) ∧ (tr(r2, t0) * tr(r3, t1))(h2), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
Used simplifier rules: sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep Used terms: h1, r => mknode(r2, a, r3), tr(r2, t0) * tr(r3, t1)
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| h0 ≠ h1, h0 ⊆ h, h1 ⊆ h, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), ∃ h0, h2. h0 ⊥ h2 ∧ h1 = h0 ∪ h2 ∧ (r => mknode(r2, a, r3))(h0) ∧ (tr(r2, t0) * tr(r3, t1))(h2), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
h0 ≠ h2 ∪ h3, h0 ⊆ h, h2 ⊥ h3, h2 ∪ h3 ⊆ h, (r => mknode(r2, a, r3))(h2), (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (tr(r2, t0) * tr(r3, t1))(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
| h0 ≠ h2 ∪ h3, h0 ⊆ h, h2 ⊥ h3, h2 ∪ h3 ⊆ h, (r => mknode(r2, a, r3))(h2), (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (tr(r2, t0) * tr(r3, t1))(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null
h2 = (∅ ++ r)(r := mknode(r2, a, r3)), h0 ≠ h2 ∪ h3, r ≠ null, h0 ⊆ h, h2 ∪ h3 ⊆ h, h2 ⊥ h3, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (tr(r2, t0) * tr(r3, t1))(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
Used terms: r, mknode(r2, a, r3), h2
| ⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null |
| h2 = (∅ ++ r)(r := mknode(r2, a, r3)), h0 ≠ h2 ∪ h3, r ≠ null, h0 ⊆ h, h2 ∪ h3 ⊆ h, h2 ⊥ h3, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (tr(r2, t0) * tr(r3, t1))(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
h0 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
Used simplifier rules: ⊦ r ≠ null ∧ ¬ r ∈ h → (∅ ++ r)(r := o) ∪ h = (h ++ r)(r := o); (s) r ≠ null ⊦ (∅ ++ r)(r := o) ⊥ h ↔ ¬ r ∈ h; (s)
| h0 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1))(h0), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
h0 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ (r => mknode(r0, a, r1))(h1) ∧ (tr(r0, t0) * tr(r1, t1))(h2), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
Used simplifier rules: sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep Used terms: h0, r => mknode(r0, a, r1), tr(r0, t0) * tr(r1, t1)
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| h0 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ (r => mknode(r0, a, r1))(h1) ∧ (tr(r0, t0) * tr(r1, t1))(h2), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
h1 ∪ h2 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h1 ⊥ h2, h1 ∪ h2 ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (r => mknode(r0, a, r1))(h1), (tr(r0, t0) * tr(r1, t1))(h2), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
| h1 ∪ h2 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h1 ⊥ h2, h1 ∪ h2 ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (r => mknode(r0, a, r1))(h1), (tr(r0, t0) * tr(r1, t1))(h2), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null
h1 = (∅ ++ r)(r := mknode(r0, a, r1)), h1 ∪ h2 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h1 ∪ h2 ⊆ h, h1 ⊥ h2, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r2, t0) * tr(r3, t1))(h3), (tr(r0, t0) * tr(r1, t1))(h2), ¬ r ∈ h3, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
Used terms: r, mknode(r0, a, r1), h1
| ⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null |
| h1 = (∅ ++ r)(r := mknode(r0, a, r1)), h1 ∪ h2 ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h1 ∪ h2 ⊆ h, h1 ⊥ h2, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r2, t0) * tr(r3, t1))(h3), (tr(r0, t0) * tr(r1, t1))(h2), ¬ r ∈ h3, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
(h2 ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, (h2 ++ r)(r := mknode(r0, a, r1)) ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r0, t0) * tr(r1, t1))(h2), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ¬ r ∈ h2, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
Used simplifier rules: ⊦ r ≠ null ∧ ¬ r ∈ h → (∅ ++ r)(r := o) ∪ h = (h ++ r)(r := o); (s) r ≠ null ⊦ (∅ ++ r)(r := o) ⊥ h ↔ ¬ r ∈ h; (s)
| (h2 ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, (h2 ++ r)(r := mknode(r0, a, r1)) ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r0, t0) * tr(r1, t1))(h2), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ¬ r ∈ h2, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
(h2 ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, (h2 ++ r)(r := mknode(r0, a, r1)) ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ¬ r ∈ h2, ∃ h0, h1. h0 ⊥ h1 ∧ h2 = h0 ∪ h1 ∧ tr(r1, t1)(h0) ∧ tr(r0, t0)(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
Used terms: h2, tr(r1, t1), tr(r0, t0)
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| (h2 ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, (h2 ++ r)(r := mknode(r0, a, r1)) ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ¬ r ∈ h2, ∃ h0, h1. h0 ⊥ h1 ∧ h2 = h0 ∪ h1 ∧ tr(r1, t1)(h0) ∧ tr(r0, t0)(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r1, t1)(h0), tr(r0, t0)(h1), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ¬ r ∈ h0, ¬ r ∈ h1, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r1, t1)(h0), tr(r0, t0)(h1), (tr(r2, t0) * tr(r3, t1))(h3), ¬ r ∈ h3, ¬ r ∈ h0, ¬ r ∈ h1, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r0, t0)(h1), tr(r1, t1)(h0), ¬ r ∈ h3, ¬ r ∈ h0, ¬ r ∈ h1, ∃ h0, h1. h0 ⊥ h1 ∧ h3 = h0 ∪ h1 ∧ tr(r3, t1)(h0) ∧ tr(r2, t0)(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
Used terms: h3, tr(r3, t1), tr(r2, t0)
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ (h3 ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, (h3 ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r0, t0)(h1), tr(r1, t1)(h0), ¬ r ∈ h3, ¬ r ∈ h0, ¬ r ∈ h1, ∃ h0, h1. h0 ⊥ h1 ∧ h3 = h0 ∪ h1 ∧ tr(r3, t1)(h0) ∧ tr(r2, t0)(h1), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
r0 = r2, r1 = r3, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ r0 = r2 ∧ r1 = r3
Used formulas: r0 = r2 ∧ r1 = r3
| r0 = r2, r1 = r3, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ |
((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦
| ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3) ⊦ |
((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r2, t0)(h1), tr(r3, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ∨ ¬ tr(r2, t0)(h4) ∨ ¬ tr(r2, t0)(h1) ⊦
Used terms: h4, h1, h, r2
| ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r2, t0)(h1), tr(r3, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ∨ ¬ tr(r2, t0)(h4) ∨ ¬ tr(r2, t0)(h1) ⊦ |
((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦
| ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦ |
((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r2, t0)(h1), tr(r3, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h2 ⊆ h ∨ ¬ h0 ⊆ h ∨ ¬ tr(r3, t1)(h2) ∨ ¬ tr(r3, t1)(h0), h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦
Used terms: h2, h0, h, r3
| ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r2, t0)(h1), tr(r3, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h2 ⊆ h ∨ ¬ h0 ⊆ h ∨ ¬ tr(r3, t1)(h2) ∨ ¬ tr(r3, t1)(h0), h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦ |
((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h2 ⊆ h ∨ ¬ h0 ⊆ h, h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦
| ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h2 ⊆ h ∨ ¬ h0 ⊆ h, h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦ |
⊦ r ≠ null ∧ ¬ r ∈ h0 → ((h0 ++ r)(r := d) ⊆ h ↔ h0 ⊆ h ∧ r ∈ h ∧ h(r) = d)
h(r) = mknode(r2, a, r3), ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h0 ⊥ h1, h2 ∪ h4 ⊆ h, h2 ⊥ h4, r ∈ h, tr(r2, t0)(h1), tr(r3, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h2 ∪ h4, ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h2 ⊆ h ∨ ¬ h0 ⊆ h, h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) Used terms: h2 ∪ h4, r, mknode(r2, a, r3), h
| ⊦ r ≠ null ∧ ¬ r ∈ h0 → ((h0 ++ r)(r := d) ⊆ h ↔ h0 ⊆ h ∧ r ∈ h ∧ h(r) = d) |
| h(r) = mknode(r2, a, r3), ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h0 ⊥ h1, h2 ∪ h4 ⊆ h, h2 ⊥ h4, r ∈ h, tr(r2, t0)(h1), tr(r3, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h2 ∪ h4, ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h2 ⊆ h ∨ ¬ h0 ⊆ h, h4 = h1 ∨ ¬ h4 ⊆ h ∨ ¬ h1 ⊆ h ⊦ |
h(r) = mknode(r2, a, r3), ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, h2 ⊆ h, h4 ⊆ h, r ∈ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h0 ⊆ h, h4 = h1 ∨ ¬ h1 ⊆ h ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ h0 ⊥ h1 → (h0 ∪ h1 ⊆ h ↔ h0 ⊆ h ∧ h1 ⊆ h); (ws) ⊦ r ∈ h → r ≠ null; (s)
| h(r) = mknode(r2, a, r3), ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, h2 ⊆ h, h4 ⊆ h, r ∈ h, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r3, t1)(h0), tr(r2, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, h2 = h0 ∨ ¬ h0 ⊆ h, h4 = h1 ∨ ¬ h1 ⊆ h ⊦ |
⊦ r ≠ null ∧ ¬ r ∈ h0 → ((h0 ++ r)(r := d) ⊆ h ↔ h0 ⊆ h ∧ r ∈ h ∧ h(r) = d)
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s) ⊦ h0 ⊥ h1 → (h0 ∪ h1 ⊆ h ↔ h0 ⊆ h ∧ h1 ⊆ h); (ws) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) Used terms: h0 ∪ h1, r, mknode(r2, a, r3), h
| ⊦ r ≠ null ∧ ¬ r ∈ h0 → ((h0 ++ r)(r := d) ⊆ h ↔ h0 ⊆ h ∧ r ∈ h ∧ h(r) = d) |
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) ⊆ h, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3) ⊦ r0 = r2 ∧ r1 = r3 |
⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h2 ⊥ h4, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ r0. (r0 ∈ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) → r0 ∈ h) ∧ (r0 ∈ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) → ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3))(r0) = h(r0)) ⊦ r0 = r2 ∧ r1 = r3
Used terms: ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), h
| ⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h2 ⊥ h4, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ r0. (r0 ∈ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) → r0 ∈ h) ∧ (r0 ∈ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)) → ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3))(r0) = h(r0)) ⊦ r0 = r2 ∧ r1 = r3 |
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r)); (s) ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s)
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ⊆ h, h0 ⊥ h1, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3 |
⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, h2 ⊥ h4, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ r2. (r2 ∈ ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) → r2 ∈ h) ∧ (r2 ∈ ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) → ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1))(r2) = h(r2)), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3
Used terms: ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)), h
| ⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, h2 ⊥ h4, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ r2. (r2 ∈ ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) → r2 ∈ h) ∧ (r2 ∈ ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) → ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1))(r2) = h(r2)), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3 |
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)), ∀ r4. (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → (r4 = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r)); (s) ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s)
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, h2 ⊥ h4, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)), ∀ r4. (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → (r4 = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3 |
((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, h2 ⊥ h4, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), r = r ∨ r ∈ h0 ∨ r ∈ h1 → r ∈ h, r = r ∨ r ∈ h0 ∨ r ∈ h1 → (r = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r)) = h(r), ∀ r4. (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → (r4 = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r4)) = h(r4)), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3
Used terms: r
| ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), r ≠ null, h0 ⊥ h1, h2 ⊥ h4, tr(r3, t1)(h2), tr(r2, t0)(h4), tr(r1, t1)(h0), tr(r0, t0)(h1), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), r = r ∨ r ∈ h0 ∨ r ∈ h1 → r ∈ h, r = r ∨ r ∈ h0 ∨ r ∈ h1 → (r = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r)) = h(r), ∀ r4. (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → (r4 = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r4)) = h(r4)), ∀ r4. (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3 |
mknode(r0, a, r1) = h(r), ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), h0 ⊥ h1, h2 ⊥ h4, r ∈ h, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ r4. (r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)), ∀ r4. (r4 ∈ h0 ∨ r4 ∈ h1 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → (r4 = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| mknode(r0, a, r1) = h(r), ((h0 ∪ h1) ++ r)(r := mknode(r0, a, r1)) ≠ ((h2 ∪ h4) ++ r)(r := mknode(r2, a, r3)), h0 ⊥ h1, h2 ⊥ h4, r ∈ h, tr(r0, t0)(h1), tr(r1, t1)(h0), tr(r2, t0)(h4), tr(r3, t1)(h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ¬ r ∈ h4, ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t1)(h2) ∨ ¬ tr(r0, t1)(h3), ∀ h2, h3, h4, r0. h2 = h3 ∨ ¬ h2 ⊆ h4 ∨ ¬ h3 ⊆ h4 ∨ ¬ tr(r0, t0)(h2) ∨ ¬ tr(r0, t0)(h3), ∀ r4. (r4 ∈ h2 ∨ r4 ∈ h4 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h2 ∨ r4 ∈ h4 → (r4 = r ⊃ mknode(r2, a, r3);((h2 ∪ h4) ++ r)(r4)) = h(r4)), ∀ r4. (r4 ∈ h0 ∨ r4 ∈ h1 → r4 ∈ h) ∧ (r4 = r ∨ r4 ∈ h0 ∨ r4 ∈ h1 → (r4 = r ⊃ mknode(r0, a, r1);((h0 ∪ h1) ++ r)(r4)) = h(r4)) ⊦ r0 = r2 ∧ r1 = r3 |
Used simplifier rules: ⊦ mknode(left, val, left0) = mknode(left1, val0, left2) ↔ left = left1 ∧ val = val0 ∧ left0 = left2; (ws) Used terms: r
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.