| ⊦ ((!(me, hO, _∃ ohP * hP0) * hP))(h) ↔ (∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h)) |
((!(me, hO, _∃ ohP * hP0) * hP))(h) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h)
¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h), ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h) ⊦
| ((!(me, hO, _∃ ohP * hP0) * hP))(h) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h) |
⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ !(me, hO, _∃ ohP * hP0)(h0) ∧ hP(h1) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h)
Used terms: h, hP, !(me, hO, _∃ ohP * hP0)
| ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ !(me, hO, _∃ ohP * hP0)(h0) ∧ hP(h1) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h) |
!(me, hO, _∃ ohP * hP0)(h0), hP(h1), h0 ⊥ h1 ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1)
| !(me, hO, _∃ ohP * hP0)(h0), hP(h1), h0 ⊥ h1 ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1) |
⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id)
((_∃ ohP * hP0))(h0), hP(h1), h0 ⊥ h1, ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1)
Used terms: h0, _∃ ohP * hP0, hO, me
| ⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id) |
| ((_∃ ohP * hP0))(h0), hP(h1), h0 ⊥ h1, ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1) |
((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1)
Used simplifier rules: sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep ⊦ ((_∃ oP * hP))(h) ↔ (∃ o. ((oP(o) * hP))(h)); (s)
| ((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1) |
⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
hP(h1), h0 ⊥ h1, ∀ r. r ∈ h0 → hO(r) = me, ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ ohP(o)(h1) ∧ hP0(h2) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1)
Used terms: h0, hP0, ohP(o)
| ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| hP(h1), h0 ⊥ h1, ∀ r. r ∈ h0 → hO(r) = me, ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ ohP(o)(h1) ∧ hP0(h2) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h0 ∪ h1) |
hP(h1), hP0(h2), ohP(o)(h), h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1)
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ h1 ⊥ h2 → (h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2); (ws)
| hP(h1), hP0(h2), ohP(o)(h), h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1) |
hP(h1), hP0(h2), ohP(o)(h), h1 ⊥ h2, h1 ⊥ h, h ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1)
Used terms: o
| hP(h1), hP0(h2), ohP(o)(h), h1 ⊥ h2, h1 ⊥ h, h ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1) |
⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1)
hP(h1), hP0(h2), ohP(o)(h), h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), !(me, hO, ohP(o) * hP0)(h ∪ h2) ∧ hP(h1) ∧ h ∪ h2 ⊥ h1
Used terms: h1, h ∪ h2, hP, !(me, hO, ohP(o) * hP0)
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1) |
| hP(h1), hP0(h2), ohP(o)(h), h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), !(me, hO, ohP(o) * hP0)(h ∪ h2) ∧ hP(h1) ∧ h ∪ h2 ⊥ h1 |
hP(h1), hP0(h2), ohP(o)(h), h1 ⊥ h2, h1 ⊥ h, h ⊥ h2, ¬ !(me, hO, ohP(o) * hP0)(h ∪ h2), ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1)
Used simplifier rules: ⊦ h1 ⊥ h2 → (h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2); (ws)
| hP(h1), hP0(h2), ohP(o)(h), h1 ⊥ h2, h1 ⊥ h, h ⊥ h2, ¬ !(me, hO, ohP(o) * hP0)(h ∪ h2), ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1) |
⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id)
hP(h1), hP0(h2), ohP(o)(h), h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me, ¬ ((ohP(o) * hP0))(h ∪ h2) ∨ (∃ r. ¬(r ∈ h ∪ h2 → hO(r) = me)) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1)
Used terms: h ∪ h2, ohP(o) * hP0, hO, me
| ⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id) |
| hP(h1), hP0(h2), ohP(o)(h), h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me, ¬ ((ohP(o) * hP0))(h ∪ h2) ∨ (∃ r. ¬(r ∈ h ∪ h2 → hO(r) = me)) ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1) |
hO(r) ≠ me, hP(h1), hP0(h2), ohP(o)(h), h1 ⊥ h2, h1 ⊥ h, h ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me, r ∈ h ∨ r ∈ h2 ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1)
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1); (ss)
| hO(r) ≠ me, hP(h1), hP0(h2), ohP(o)(h), h1 ⊥ h2, h1 ⊥ h, h ⊥ h2, ¬ ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me, r ∈ h ∨ r ∈ h2 ⊦ ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))((h ∪ h2) ∪ h1) |
Used terms: r
| ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h), ∃ o. ((!(me, hO, ohP(o) * hP0) * hP))(h) ⊦ |
((!(me, hO, ohP(o) * hP0) * hP))(h), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h) ⊦
| ((!(me, hO, ohP(o) * hP0) * hP))(h), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h) ⊦ |
⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ !(me, hO, ohP(o) * hP0)(h0) ∧ hP(h1) ⊦
Used terms: h, hP, !(me, hO, ohP(o) * hP0)
| ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ !(me, hO, ohP(o) * hP0)(h0) ∧ hP(h1) ⊦ |
!(me, hO, ohP(o) * hP0)(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1) ⊦
| !(me, hO, ohP(o) * hP0)(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1) ⊦ |
⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1)
!(me, hO, ohP(o) * hP0)(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1) ⊦ !(me, hO, _∃ ohP * hP0)(h0) ∧ hP(h1) ∧ h0 ⊥ h1
Used terms: h1, h0, hP, !(me, hO, _∃ ohP * hP0)
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1) |
| !(me, hO, ohP(o) * hP0)(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1) ⊦ !(me, hO, _∃ ohP * hP0)(h0) ∧ hP(h1) ∧ h0 ⊥ h1 |
!(me, hO, ohP(o) * hP0)(h0), hP(h1), h0 ⊥ h1, ¬ !(me, hO, _∃ ohP * hP0)(h0), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1) ⊦
| !(me, hO, ohP(o) * hP0)(h0), hP(h1), h0 ⊥ h1, ¬ !(me, hO, _∃ ohP * hP0)(h0), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1) ⊦ |
⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id)
((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ !(me, hO, _∃ ohP * hP0)(h0), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦
Used terms: h0, ohP(o) * hP0, hO, me
| ⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id) |
| ((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ !(me, hO, _∃ ohP * hP0)(h0), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ |
((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ !(me, hO, _∃ ohP * hP0)(h0), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦
| ((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ !(me, hO, _∃ ohP * hP0)(h0), ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ |
⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id)
((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me, ¬ ((_∃ ohP * hP0))(h0) ∨ (∃ r. ¬(r ∈ h0 → hO(r) = me)) ⊦
Used terms: h0, _∃ ohP * hP0, hO, me
| ⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id) |
| ((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me, ¬ ((_∃ ohP * hP0))(h0) ∨ (∃ r. ¬(r ∈ h0 → hO(r) = me)) ⊦ |
((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me, ¬(∃ o. ((ohP(o) * hP0))(h0)) ∨ ¬(r ∈ h0 → hO(r) = me) ⊦
Used simplifier rules: sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep ⊦ ((_∃ oP * hP))(h) ↔ (∃ o. ((oP(o) * hP))(h)); (s)
| ((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me, ¬(∃ o. ((ohP(o) * hP0))(h0)) ∨ ¬(r ∈ h0 → hO(r) = me) ⊦ |
((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. ((ohP(o) * hP0))(h0)
hO(r) ≠ me, ((ohP(o) * hP0))(h0), hP(h1), r ∈ h0, h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦
| ((ohP(o) * hP0))(h0), hP(h1), h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. ((ohP(o) * hP0))(h0) |
Used terms: o
| hO(r) ≠ me, ((ohP(o) * hP0))(h0), hP(h1), r ∈ h0, h0 ⊥ h1, ¬ ((!(me, hO, _∃ ohP * hP0) * hP))(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ |
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.