| ⊦ (!(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: !(me, hO, _∃ ohP * 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) |
!(me, hO, _∃ ohP * hP0)(h0), h0 ⊥ h1, hP(h1) ⊦ ∃ o. (!(me, hO, ohP(o) * hP0) * hP)(h0 ∪ h1)
| !(me, hO, _∃ ohP * hP0)(h0), h0 ⊥ h1, hP(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), h0 ⊥ h1, hP(h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. (!(me, hO, ohP(o) * hP0) * hP)(h0 ∪ h1)
Used terms: me, hO, _∃ ohP * hP0, h0
| ⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id) |
| (_∃ ohP * hP0)(h0), h0 ⊥ h1, hP(h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. (!(me, hO, ohP(o) * hP0) * hP)(h0 ∪ h1) |
h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ∀ 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 ⊦ (_∃ bP * hP)(h) ↔ (∃ b. (bP(b) * hP)(h)); (s)
| h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ∀ 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))
h0 ⊥ h1, hP(h1), ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ ohP(o)(h1) ∧ hP0(h2), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ 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)) |
| h0 ⊥ h1, hP(h1), ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ ohP(o)(h1) ∧ hP0(h2), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ o. (!(me, hO, ohP(o) * hP0) * hP)(h0 ∪ h1) |
h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, hP(h1), hP0(h2), ohP(o)(h), ∀ 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; (s)
| h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, hP(h1), hP0(h2), ohP(o)(h), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1) |
h ⊥ h2, h1 ⊥ h2, h1 ⊥ h, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(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
| h ⊥ h2, h1 ⊥ h2, h1 ⊥ h, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(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)
h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ !(me, hO, ohP(o) * hP0)(h ∪ h2) ∧ hP(h1) ∧ h ∪ h2 ⊥ h1, ∃ o. (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1)
Used terms: h1, h ∪ h2, hP, !(me, hO, ohP(o) * hP0)
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → (hP0 * hP1)(h0 ∪ h1) |
| h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ !(me, hO, ohP(o) * hP0)(h ∪ h2) ∧ hP(h1) ∧ h ∪ h2 ⊥ h1, ∃ o. (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1) |
h ⊥ h2, h1 ⊥ h2, h1 ⊥ h, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1), ¬ !(me, hO, ohP(o) * hP0)(h ∪ h2), ∀ 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; (s)
| h ⊥ h2, h1 ⊥ h2, h1 ⊥ h, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1), ¬ !(me, hO, ohP(o) * hP0)(h ∪ h2), ∀ 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)
h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1), ¬ (ohP(o) * hP0)(h ∪ h2) ∨ (∃ r. ¬(r ∈ h ∪ h2 → hO(r) = me)), ∀ r. r ∈ h ∨ r ∈ 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) |
| h ⊥ h2, h1 ⊥ h, h1 ⊥ h2, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1), ¬ (ohP(o) * hP0)(h ∪ h2) ∨ (∃ r. ¬(r ∈ h ∪ h2 → hO(r) = me)), ∀ r. r ∈ h ∨ r ∈ h2 → hO(r) = me ⊦ ∃ o. (!(me, hO, ohP(o) * hP0) * hP)((h ∪ h2) ∪ h1) |
hO(r) ≠ me, h ⊥ h2, h1 ⊥ h2, h1 ⊥ h, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(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, h ⊥ h2, h1 ⊥ h2, h1 ⊥ h, hP(h1), hP0(h2), ohP(o)(h), ¬ (!(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), h0 ⊥ h1, hP(h1), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1) ⊦
| !(me, hO, ohP(o) * hP0)(h0), h0 ⊥ h1, hP(h1), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1) ⊦ |
⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → (hP0 * hP1)(h0 ∪ h1)
!(me, hO, ohP(o) * hP0)(h0), h0 ⊥ h1, hP(h1), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1) ⊦ !(me, hO, _∃ ohP * hP0)(h0) ∧ hP(h1) ∧ h0 ⊥ h1
Used terms: !(me, hO, _∃ ohP * hP0), hP, h0, h1
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → (hP0 * hP1)(h0 ∪ h1) |
| !(me, hO, ohP(o) * hP0)(h0), h0 ⊥ h1, hP(h1), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1) ⊦ !(me, hO, _∃ ohP * hP0)(h0) ∧ hP(h1) ∧ h0 ⊥ h1 |
!(me, hO, ohP(o) * hP0)(h0), h0 ⊥ h1, hP(h1), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ !(me, hO, _∃ ohP * hP0)(h0) ⊦
| !(me, hO, ohP(o) * hP0)(h0), h0 ⊥ h1, hP(h1), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ !(me, hO, _∃ ohP * hP0)(h0) ⊦ |
⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id)
h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ !(me, hO, _∃ ohP * hP0)(h0), ∀ 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) |
| h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ !(me, hO, _∃ ohP * hP0)(h0), ∀ r. r ∈ h0 → hO(r) = me ⊦ |
h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ !(me, hO, _∃ ohP * hP0)(h0), ∀ r. r ∈ h0 → hO(r) = me ⊦
| h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ !(me, hO, _∃ ohP * hP0)(h0), ∀ r. r ∈ h0 → hO(r) = me ⊦ |
⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id)
h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ (_∃ ohP * hP0)(h0) ∨ (∃ r. ¬(r ∈ h0 → hO(r) = me)), ∀ r. r ∈ h0 → hO(r) = me ⊦
Used terms: me, hO, _∃ ohP * hP0, h0
| ⊦ !(id, of, hP)(h) ↔ hP(h) ∧ (∀ r. r ∈ h → of(r) = id) |
| h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬ (_∃ ohP * hP0)(h0) ∨ (∃ r. ¬(r ∈ h0 → hO(r) = me)), ∀ r. r ∈ h0 → hO(r) = me ⊦ |
h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬(∃ b. (ohP(b) * hP0)(h0)) ∨ ¬(r ∈ h0 → hO(r) = me), ∀ r. 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 ⊦ (_∃ bP * hP)(h) ↔ (∃ b. (bP(b) * hP)(h)); (s)
| h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ¬(∃ b. (ohP(b) * hP0)(h0)) ∨ ¬(r ∈ h0 → hO(r) = me), ∀ r. r ∈ h0 → hO(r) = me ⊦ |
h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ b. (ohP(b) * hP0)(h0)
hO(r) ≠ me, h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), r ∈ h0, ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦
| h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), ¬ (!(me, hO, _∃ ohP * hP0) * hP)(h0 ∪ h1), ∀ r. r ∈ h0 → hO(r) = me ⊦ ∃ b. (ohP(b) * hP0)(h0) |
Used terms: o
| hO(r) ≠ me, h0 ⊥ h1, hP(h1), (ohP(o) * hP0)(h0), r ∈ h0, ¬ (!(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.