| ¬ r ∈ h, r ≠ null ⊦ hP(h) ↔ ((r =>_ * hP))(h ++ r) |
¬(hP(h) ↔ ((r =>_ * hP))(h ++ r)), r ≠ null, ¬ r ∈ h ⊦
| ¬(hP(h) ↔ ((r =>_ * hP))(h ++ r)), r ≠ null, ¬ r ∈ h ⊦ |
r ≠ null, ¬ r ∈ h ⊦ hP(h) ↔ (∃ o. ((r => o * hP))(h ++ r))
Used simplifier rules: mapex: ⊦ r =>_ = _∃(λ o. r => o); ex3-shift: ⊦ ((_∃ oP * hP))(h) ↔ (∃ o. ((oP(o) * hP))(h)); sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep
| r ≠ null, ¬ r ∈ h ⊦ hP(h) ↔ (∃ o. ((r => o * hP))(h ++ r)) |
r ≠ null, hP(h), ¬ r ∈ h ⊦ ∃ o. ((r => o * hP))(h ++ r)
r ≠ null, ¬ hP(h), ¬ r ∈ h, ∃ o. ((r => o * hP))(h ++ r) ⊦
| r ≠ null, hP(h), ¬ r ∈ h ⊦ ∃ o. ((r => o * hP))(h ++ r) |
r ≠ null, hP(h), ¬ ((r => (h ++ r)[r] * hP))(h ++ r), ¬ r ∈ h ⊦
Used terms: (h ++ r)[r]
| r ≠ null, hP(h), ¬ ((r => (h ++ r)[r] * hP))(h ++ r), ¬ r ∈ h ⊦ |
⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
r ≠ null, hP(h), ¬ r ∈ h, ∀ h0, h1. ¬(h0 ⊥ h1 ∧ h ++ r = h0 ∪ h1 ∧ ((r => (h ++ r)[r]))(h0) ∧ hP(h1)) ⊦
Used terms: h ++ r, hP, r => (h ++ r)[r]
| ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| r ≠ null, hP(h), ¬ r ∈ h, ∀ h0, h1. ¬(h0 ⊥ h1 ∧ h ++ r = h0 ∪ h1 ∧ ((r => (h ++ r)[r]))(h0) ∧ hP(h1)) ⊦ |
r ≠ null, hP(h), ¬ r ∈ h, ∀ h1. r ∈ h1 ∨ h ++ r ≠ (∅ ++ r)[r, (h ++ r)[r]] ∪ h1 ∨ ¬ hP(h1) ⊦
Used simplifier rules: maplet: ⊦ ((r => o))(h) ↔ h = (∅ ++ r)[r, o] ∧ r ≠ null; r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s)
| r ≠ null, hP(h), ¬ r ∈ h, ∀ h1. r ∈ h1 ∨ h ++ r ≠ (∅ ++ r)[r, (h ++ r)[r]] ∪ h1 ∨ ¬ hP(h1) ⊦ |
r ≠ null, hP(h), ¬ r ∈ h, r ∈ h ∨ h ++ r ≠ (∅ ++ r)[r, (h ++ r)[r]] ∪ h ∨ ¬ hP(h) ⊦
Used terms: h
| r ≠ null, hP(h), ¬ r ∈ h, r ∈ h ∨ h ++ r ≠ (∅ ++ r)[r, (h ++ r)[r]] ∪ h ∨ ¬ hP(h) ⊦ |
h ++ r ≠ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, r ≠ null, hP(h), ¬ r ∈ h ⊦
| h ++ r ≠ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, r ≠ null, hP(h), ¬ r ∈ h ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
r ≠ null, hP(h), ¬ r ∈ h, ∃ r0. ¬((r0 ∈ h ++ r ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 ∈ h ++ r → (h ++ r)[r0] = ((∅ ++ r)[r, (h ++ r)[r]] ∪ h)[r0])) ⊦
Used terms: (∅ ++ r)[r, (h ++ r)[r]] ∪ h, h ++ r
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| r ≠ null, hP(h), ¬ r ∈ h, ∃ r0. ¬((r0 ∈ h ++ r ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 ∈ h ++ r → (h ++ r)[r0] = ((∅ ++ r)[r, (h ++ r)[r]] ∪ h)[r0])) ⊦ |
r ≠ null, hP(h), ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, (h ++ r)[r]] ∪ h)[r0])
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s)
| r ≠ null, hP(h), ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, (h ++ r)[r]] ∪ h)[r0]) |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)[r] = (r ∈ h0 ⊃ h0[r];h1[r])
r ≠ null, hP(h), ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, (h ++ r)[r]] ∪ h)[r0]), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h ∧ (∅ ++ r)[r, (h ++ r)[r]] ⊥ h
r ≠ null, hP(h), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, (∅ ++ r)[r, (h ++ r)[r]] ⊥ h, ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = (r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ⊃ (∅ ++ r)[r, (h ++ r)[r]][r0];h[r0]))
Used terms: r0, h, (∅ ++ r)[r, (h ++ r)[r]]
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)[r] = (r ∈ h0 ⊃ h0[r];h1[r]) |
| r ≠ null, hP(h), ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, (h ++ r)[r]] ∪ h)[r0]), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h ∧ (∅ ++ r)[r, (h ++ r)[r]] ⊥ h |
r ≠ null, r0 ≠ r, hP(h), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, ¬ r ∈ h, ¬ r0 ∈ h ⊦
Used simplifier rules: r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| r ≠ null, r0 ≠ r, hP(h), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, ¬ r ∈ h, ¬ r0 ∈ h ⊦ |
⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1)
Used simplifier rules: r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) Used terms: h, (∅ ++ r)[r, (h ++ r)[r]], r0
| ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1) |
| r ≠ null, hP(h), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, (∅ ++ r)[r, (h ++ r)[r]] ⊥ h, ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h) ∧ (r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = (r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ⊃ (∅ ++ r)[r, (h ++ r)[r]][r0];h[r0])) |
r ≠ null, hP(h), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h) ∧ (h ++ r)[r0] = (r0 = r ⊃ (h ++ r)[r];h[r0])
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) ⊦ h[r0, o][r] = (r = r0 ∧ r0 ∈ h ⊃ o;h[r]); (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s) r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s)
| r ≠ null, hP(h), r0 ∈ (∅ ++ r)[r, (h ++ r)[r]] ∪ h, ¬ r ∈ h ⊦ (r0 = r ∨ r0 ∈ h) ∧ (h ++ r)[r0] = (r0 = r ⊃ (h ++ r)[r];h[r0]) |
⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1)
Used simplifier rules: r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r]; (s) Used terms: h, (∅ ++ r)[r, (h ++ r)[r]], r0
| ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1) |
| r ≠ null, ¬ hP(h), ¬ r ∈ h, ∃ o. ((r => o * hP))(h ++ r) ⊦ |
r ≠ null, ((r => o * hP))(h ++ r), ¬ hP(h), ¬ r ∈ h ⊦
| r ≠ null, ((r => o * hP))(h ++ r), ¬ hP(h), ¬ r ∈ h ⊦ |
⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
r ≠ null, ¬ hP(h), ¬ r ∈ h, ∃ h0, h1. h0 ⊥ h1 ∧ h ++ r = h0 ∪ h1 ∧ ((r => o))(h0) ∧ hP(h1) ⊦
Used terms: h ++ r, hP, r => o
| ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| r ≠ null, ¬ hP(h), ¬ r ∈ h, ∃ h0, h1. h0 ⊥ h1 ∧ h ++ r = h0 ∪ h1 ∧ ((r => o))(h0) ∧ hP(h1) ⊦ |
h ++ r = (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦
Used simplifier rules: maplet: ⊦ ((r => o))(h) ↔ h = (∅ ++ r)[r, o] ∧ r ≠ null; r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s)
| h ++ r = (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦ |
h ++ r = (∅ ++ r)[r, o] ∪ h1, h ≠ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦
Used formulas: h = h1
| h ++ r = (∅ ++ r)[r, o] ∪ h1, h ≠ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
h ++ r = (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ∃ r. ¬((r ∈ h1 ↔ r ∈ h) ∧ (r ∈ h1 → h1[r] = h[r])) ⊦
Used terms: h, h1
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| h ++ r = (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ∃ r. ¬((r ∈ h1 ↔ r ∈ h) ∧ (r ∈ h1 → h1[r] = h[r])) ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ∀ r0. (r0 ∈ h ++ r ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1) ∧ (r0 ∈ h ++ r → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0]), ∃ r. ¬((r ∈ h1 ↔ r ∈ h) ∧ (r ∈ h1 → h1[r] = h[r])) ⊦
Used terms: (∅ ++ r)[r, o] ∪ h1, h ++ r
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ∀ r0. (r0 ∈ h ++ r ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1) ∧ (r0 ∈ h ++ r → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0]), ∃ r. ¬((r ∈ h1 ↔ r ∈ h) ∧ (r ∈ h1 → h1[r] = h[r])) ⊦ |
r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ∀ r1. (r1 = r ∨ r1 ∈ h ↔ r1 ∈ (∅ ++ r)[r, o] ∪ h1) ∧ (r1 = r ∨ r1 ∈ h → (h ++ r)[r1] = ((∅ ++ r)[r, o] ∪ h1)[r1]) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0])
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s)
| r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ∀ r1. (r1 = r ∨ r1 ∈ h ↔ r1 ∈ (∅ ++ r)[r, o] ∪ h1) ∧ (r1 = r ∨ r1 ∈ h → (h ++ r)[r1] = ((∅ ++ r)[r, o] ∪ h1)[r1]) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]) |
r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0] ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0])
Used terms: r0
| r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0] ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]) |
r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0] ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0])
| r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0] ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]) |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)[r] = (r ∈ h0 ⊃ h0[r];h1[r])
r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0] ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]), r0 ∈ (∅ ++ r)[r, o] ∪ h1 ∧ (∅ ++ r)[r, o] ⊥ h1
r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, (∅ ++ r)[r, o] ⊥ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = (r0 ∈ (∅ ++ r)[r, o] ⊃ (∅ ++ r)[r, o][r0];h1[r0]) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0])
Used terms: r0, h1, (∅ ++ r)[r, o]
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)[r] = (r ∈ h0 ⊃ h0[r];h1[r]) |
| r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0] ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]), r0 ∈ (∅ ++ r)[r, o] ∪ h1 ∧ (∅ ++ r)[r, o] ⊥ h1 |
h[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0], r ≠ null, r0 ≠ r, hP(h1), r0 ∈ h, r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ¬ r0 ∈ h1 ⊦
Used simplifier rules: r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r]; (s) r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| h[r0] = ((∅ ++ r)[r, o] ∪ h1)[r0], r ≠ null, r0 ≠ r, hP(h1), r0 ∈ h, r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, ¬ r0 ∈ h1 ⊦ |
⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1)
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)[r] = (r ∈ h0 ⊃ h0[r];h1[r]); (s) r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s) r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) Used terms: h1, (∅ ++ r)[r, o], r0
| ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1) |
| r0 = r ∨ r0 ∈ h ↔ r0 ∈ (∅ ++ r)[r, o] ∪ h1, r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, (∅ ++ r)[r, o] ⊥ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = (r0 ∈ (∅ ++ r)[r, o] ⊃ (∅ ++ r)[r, o][r0];h1[r0]) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]) |
r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 ≠ r → (r0 ∈ h ↔ r0 ∈ h1), r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = (r0 = r ⊃ o;h1[r0]) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0])
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) ⊦ h[r0, o][r] = (r = r0 ∧ r0 ∈ h ⊃ o;h[r]); (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s) r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ h ↔ ¬ r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 ≠ r → (r0 ∈ h ↔ r0 ∈ h1), r0 = r ∨ r0 ∈ h → (h ++ r)[r0] = (r0 = r ⊃ o;h1[r0]) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]) |
(h ++ r)[r0] = (r0 = r ⊃ o;h1[r0]), r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 ≠ r → (r0 ∈ h ↔ r0 ∈ h1) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0])
| (h ++ r)[r0] = (r0 = r ⊃ o;h1[r0]), r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1, r0 ≠ r → (r0 ∈ h ↔ r0 ∈ h1) ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]) |
r0 ∈ h ↔ r0 ∈ h1, (h ++ r)[r0] = (r0 = r ⊃ o;h1[r0]), r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0])
Used simplifier rules: ⊦ r ∈ h → r ≠ null; (s)
| r0 ∈ h ↔ r0 ∈ h1, (h ++ r)[r0] = (r0 = r ⊃ o;h1[r0]), r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦ (r0 ∈ h1 ↔ r0 ∈ h) ∧ (r0 ∈ h1 → h1[r0] = h[r0]) |
(h ++ r)[r0] = h1[r0], h1[r0] ≠ h[r0], r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, r0 ∈ h1, r0 ∈ h, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦
| (h ++ r)[r0] = h1[r0], h1[r0] ≠ h[r0], r ≠ null, hP(h1), r0 ∈ (∅ ++ r)[r, o] ∪ h1, r0 ∈ h1, r0 ∈ h, ¬ hP(h), ¬ r ∈ h, ¬ r ∈ h1 ⊦ |
r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r]
Used terms: r0, r, h
| r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[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.