| ⊦ id ≠ me ∧ rely(me, hO1, h1, hO2, h2) ∧ (!(me, hO2, hP) * hP0)(h1) → ((!(id, hO2, hP1) * true)(h2) ↔ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2)) |
¬((!(id, hO2, hP1) * true)(h2) ↔ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2)), id ≠ me, (!(me, hO2, hP) * hP0)(h1), rely(me, hO1, h1, hO2, h2) ⊦
| ¬((!(id, hO2, hP1) * true)(h2) ↔ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2)), id ≠ me, (!(me, hO2, hP) * hP0)(h1), rely(me, hO1, h1, hO2, h2) ⊦ |
id ≠ me, (!(me, hO2, hP) * hP0)(h1), (!(id, hO2, hP1) * true)(h2), rely(me, hO1, h1, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦
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 ⊦ (hP0 * hP)(h) → (true * hP)(h); (s)
| id ≠ me, (!(me, hO2, hP) * hP0)(h1), (!(id, hO2, hP1) * true)(h2), rely(me, hO1, h1, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
id ≠ me, (!(id, hO2, hP1) * true)(h2), rely(me, hO1, h1, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∃ h0, h2. h0 ⊥ h2 ∧ h1 = h0 ∪ h2 ∧ !(me, hO2, hP)(h0) ∧ hP0(h2) ⊦
Used terms: h1, hP0, !(me, hO2, hP)
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| id ≠ me, (!(id, hO2, hP1) * true)(h2), rely(me, hO1, h1, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∃ h0, h2. h0 ⊥ h2 ∧ h1 = h0 ∪ h2 ∧ !(me, hO2, hP)(h0) ∧ hP0(h2) ⊦ |
id ≠ me, !(me, hO2, hP)(h0), (!(id, hO2, hP1) * true)(h2), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦
| id ≠ me, !(me, hO2, hP)(h0), (!(id, hO2, hP1) * true)(h2), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦ |
id ≠ me, (!(id, hO2, hP1) * true)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊆ h2, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦
id ≠ me, (!(id, hO2, hP1) * true)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ¬ h0 ⊆ h2 ⊦
Used formulas: h0 ⊆ h2
| id ≠ me, (!(id, hO2, hP1) * true)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊆ h2, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦ |
⊦ h0 ⊆ h1 ↔ (∃ h. h0 ∪ h = h1 ∧ h ⊥ h0)
id ≠ me, !(me, hO2, hP)(h0), (!(id, hO2, hP1) * true)(h2), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∃ h. h0 ∪ h = h2 ∧ h ⊥ h0 ⊦
Used terms: h2, h0
| ⊦ h0 ⊆ h1 ↔ (∃ h. h0 ∪ h = h1 ∧ h ⊥ h0) |
| id ≠ me, !(me, hO2, hP)(h0), (!(id, hO2, hP1) * true)(h2), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∃ h. h0 ∪ h = h2 ∧ h ⊥ h0 ⊦ |
id ≠ me, (!(id, hO2, hP1) * true)(h0 ∪ h1), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1) ⊦
| id ≠ me, (!(id, hO2, hP1) * true)(h0 ∪ h1), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1) ⊦ |
⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → (hP0 * hP1)(h0 ∪ h1)
id ≠ me, !(me, hO2, hP)(h0), (!(id, hO2, hP1) * true)(h0 ∪ h1), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1) ⊦ !(me, hO2, hP)(h0) ∧ (!(id, hO2, hP1) * true)(h1) ∧ h0 ⊥ h1
Used terms: h1, h0, !(id, hO2, hP1) * true, !(me, hO2, hP)
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → (hP0 * hP1)(h0 ∪ h1) |
| id ≠ me, !(me, hO2, hP)(h0), (!(id, hO2, hP1) * true)(h0 ∪ h1), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1) ⊦ !(me, hO2, hP)(h0) ∧ (!(id, hO2, hP1) * true)(h1) ∧ h0 ⊥ h1 |
id ≠ me, (!(id, hO2, hP1) * true)(h0 ∪ h1), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1), ¬ (!(id, hO2, hP1) * true)(h1) ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss)
| id ≠ me, (!(id, hO2, hP1) * true)(h0 ∪ h1), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1), ¬ (!(id, hO2, hP1) * true)(h1) ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1), ¬ (!(id, hO2, hP1) * true)(h1), ∃ h2, h3. h2 ⊥ h3 ∧ h0 ∪ h1 = h2 ∪ h3 ∧ !(id, hO2, hP1)(h2) ∧ true(h3) ⊦
Used terms: h0 ∪ h1, true, !(id, hO2, hP1)
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h0 ∪ h1), ¬ (!(id, hO2, hP1) * true)(h1), ∃ h2, h3. h2 ⊥ h3 ∧ h0 ∪ h1 = h2 ∪ h3 ∧ !(id, hO2, hP1)(h2) ∧ true(h3) ⊦ |
h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1) ⊦
Used simplifier rules: ⊦ true(h); (s)
| h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1) ⊦ |
h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, h2 ⊆ h1, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1) ⊦
h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ h2 ⊆ h1 ⊦
Used formulas: h2 ⊆ h1
| h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, h2 ⊆ h1, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1) ⊦ |
⊦ h0 ⊆ h1 ↔ (∃ h. h0 ∪ h = h1 ∧ h ⊥ h0)
h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∃ h. h2 ∪ h = h1 ∧ h ⊥ h2 ⊦
Used terms: h1, h2
| ⊦ h0 ⊆ h1 ↔ (∃ h. h0 ∪ h = h1 ∧ h ⊥ h0) |
| h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∃ h. h2 ∪ h = h1 ∧ h ⊥ h2 ⊦ |
h0 ∪ h2 ∪ h4 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h0 ⊥ h2, h0 ⊥ h4, h2 ⊥ h3, h4 ⊥ h2, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h2 ∪ h4) ⊦
Used simplifier rules: h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s) ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss)
| h0 ∪ h2 ∪ h4 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h0 ⊥ h2, h0 ⊥ h4, h2 ⊥ h3, h4 ⊥ h2, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h2 ∪ h4) ⊦ |
⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → (hP0 * hP1)(h0 ∪ h1)
Used simplifier rules: ⊦ true(h); (s) ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) Used terms: h4, h2, true, !(id, hO2, hP1)
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → (hP0 * hP1)(h0 ∪ h1) |
| h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ h2 ⊆ h1 ⊦ |
⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∃ r. ¬((r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))) ⊦
Used terms: h1, h2
| ⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∃ r. ¬((r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))) ⊦ |
h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
| h0 ∪ h1 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∀ r. (r ∈ h0 ∪ h1 ↔ r ∈ h2 ∪ h3) ∧ (r ∈ h0 ∪ h1 → (h0 ∪ h1)(r) = (h2 ∪ h3)(r)) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used terms: h2 ∪ h3, h0 ∪ h1
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∀ r. (r ∈ h0 ∪ h1 ↔ r ∈ h2 ∪ h3) ∧ (r ∈ h0 ∪ h1 → (h0 ∪ h1)(r) = (h2 ∪ h3)(r)) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∀ r0. (r0 ∈ h0 ∪ h1 ↔ r0 ∈ h2 ∨ r0 ∈ h3) ∧ (r0 ∈ h0 ∪ h1 → (h0 ∪ h1)(r0) = (h2 ∪ h3)(r0)) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ∀ r0. (r0 ∈ h0 ∪ h1 ↔ r0 ∈ h2 ∨ r0 ∈ h3) ∧ (r0 ∈ h0 ∪ h1 → (h0 ∪ h1)(r0) = (h2 ∪ h3)(r0)) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h0 ∪ h1 → (h0 ∪ h1)(r) = (h2 ∪ h3)(r) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used terms: r
| r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h0 ∪ h1 → (h0 ∪ h1)(r) = (h2 ∪ h3)(r) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), r ∈ h2 ∨ r ∈ h3 → (h0 ∪ h1)(r) = (r ∈ h2 ⊃ h2(r);h3(r)) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used simplifier rules: r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)); (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), r ∈ h2 ∨ r ∈ h3 → (h0 ∪ h1)(r) = (r ∈ h2 ⊃ h2(r);h3(r)) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
(h0 ∪ h1)(r) = (r ∈ h2 ⊃ h2(r);h3(r)), r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
| (h0 ∪ h1)(r) = (r ∈ h2 ⊃ h2(r);h3(r)), r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r))
(h0 ∪ h1)(r) = (r ∈ h2 ⊃ h2(r);h3(r)), r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)), r ∈ h0 ∪ h1 ∧ h0 ⊥ h1
(r ∈ h0 ⊃ h0(r);h1(r)) = (r ∈ h2 ⊃ h2(r);h3(r)), r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0 ∪ h1, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used terms: r, h1, h0
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)) |
| (h0 ∪ h1)(r) = (r ∈ h2 ⊃ h2(r);h3(r)), r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)), r ∈ h0 ∪ h1 ∧ h0 ⊥ h1 |
(h0 ∪ h1)(r) = h2(r), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h2, r ∈ h0 ∪ h1, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ r ∈ h0, ¬ r ∈ h1 ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| (h0 ∪ h1)(r) = h2(r), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h2, r ∈ h0 ∪ h1, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ r ∈ h0, ¬ r ∈ 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) precise(hP0) ⊦ hP0(h0) ∧ h0 ⊥ h1 → ((hP0 * hP1)(h0 ∪ h1) ↔ hP1(h1)); (s) sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) Used terms: h1, h0, r
| ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1) |
| (r ∈ h0 ⊃ h0(r);h1(r)) = (r ∈ h2 ⊃ h2(r);h3(r)), r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0 ∪ h1, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
(r ∈ h0 ⊃ h0(r);h1(r)) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3, r ∈ h0 ∨ r ∈ h1 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| (r ∈ h0 ⊃ h0(r);h1(r)) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3, r ∈ h0 ∨ r ∈ h1 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h1, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h0 ∨ r ∈ h1, r ∈ h2 ∨ r ∈ h3 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
| h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h1, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h0 ∨ r ∈ h1, r ∈ h2 ∨ r ∈ h3 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
| h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
⊦ rely(me, of1, h1, of2, h2) ↔ (∀ r. (of1(r) = me ↔ of2(r) = me) ∧ (of1(r) = me → (r ∈ h1 ↔ r ∈ h2) ∧ (r ∈ h1 → h1(r) = h2(r))))
h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h1, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3, ∀ r. (hO1(r) = me ↔ hO2(r) = me) ∧ (hO1(r) = me → (r ∈ h0 ∪ h ↔ r ∈ h2 ∪ h3) ∧ (r ∈ h0 ∪ h → (h0 ∪ h)(r) = (h2 ∪ h3)(r))) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used terms: h2 ∪ h3, hO1, h0 ∪ h, me, hO2
| ⊦ rely(me, of1, h1, of2, h2) ↔ (∀ r. (of1(r) = me ↔ of2(r) = me) ∧ (of1(r) = me → (r ∈ h1 ↔ r ∈ h2) ∧ (r ∈ h1 → h1(r) = h2(r)))) |
| h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), h0 ⊥ h1, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3, ∀ r. (hO1(r) = me ↔ hO2(r) = me) ∧ (hO1(r) = me → (r ∈ h0 ∪ h ↔ r ∈ h2 ∪ h3) ∧ (r ∈ h0 ∪ h → (h0 ∪ h)(r) = (h2 ∪ h3)(r))) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3, ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2 ∨ r0 ∈ h3) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = (h2 ∪ h3)(r0))) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r))
Used simplifier rules: r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)); (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| h0(r) = (r ∈ h2 ⊃ h2(r);h3(r)), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, h0 ⊥ h1, h1 ⊥ h0, h2 ⊥ h3, hP0(h), r ∈ h0, ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2 ∪ h3), ¬ (!(id, hO2, hP1) * true)(h1), r ∈ h2 ∨ r ∈ h3, ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2 ∨ r0 ∈ h3) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = (h2 ∪ h3)(r0))) ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2(r) = h1(r)) |
Used simplifier rules: owned-r: ⊦ !(me, hO, hP)(h) ∧ hO(r) ≠ me → ¬ r ∈ h; ⊦ 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) Used terms: r
| id ≠ me, (!(id, hO2, hP1) * true)(h2), !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ¬ h0 ⊆ h2 ⊦ |
id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ¬ h0 ⊆ h2 ⊦
| id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ¬ h0 ⊆ h2 ⊦ |
⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∃ r. ¬((r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r))) ⊦
Used terms: h2, h0
| ⊦ h0 ⊆ h1 ↔ (∀ r. (r ∈ h0 → r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∃ r. ¬((r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r))) ⊦ |
id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r))
| id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r)) |
⊦ rely(me, of1, h1, of2, h2) ↔ (∀ r. (of1(r) = me ↔ of2(r) = me) ∧ (of1(r) = me → (r ∈ h1 ↔ r ∈ h2) ∧ (r ∈ h1 → h1(r) = h2(r))))
id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∀ r. (hO1(r) = me ↔ hO2(r) = me) ∧ (hO1(r) = me → (r ∈ h0 ∪ h ↔ r ∈ h2) ∧ (r ∈ h0 ∪ h → (h0 ∪ h)(r) = h2(r))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r))
Used terms: h2, hO1, h0 ∪ h, me, hO2
| ⊦ rely(me, of1, h1, of2, h2) ↔ (∀ r. (of1(r) = me ↔ of2(r) = me) ∧ (of1(r) = me → (r ∈ h1 ↔ r ∈ h2) ∧ (r ∈ h1 → h1(r) = h2(r)))) |
| id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∀ r. (hO1(r) = me ↔ hO2(r) = me) ∧ (hO1(r) = me → (r ∈ h0 ∪ h ↔ r ∈ h2) ∧ (r ∈ h0 ∪ h → (h0 ∪ h)(r) = h2(r))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r)) |
id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = h2(r0))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r))
Used simplifier rules: r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)); (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = h2(r0))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r)) |
hO1(r) = me ↔ hO2(r) = me, id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), hO1(r) = me → (r ∈ h0 ∨ r ∈ h ↔ r ∈ h2) ∧ (r ∈ h0 ∨ r ∈ h → (r ∈ h0 ⊃ h0(r);h(r)) = h2(r)), ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = h2(r0))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r))
Used terms: r
| hO1(r) = me ↔ hO2(r) = me, id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), hO1(r) = me → (r ∈ h0 ∨ r ∈ h ↔ r ∈ h2) ∧ (r ∈ h0 ∨ r ∈ h → (r ∈ h0 ⊃ h0(r);h(r)) = h2(r)), ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = h2(r0))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r)) |
hO1(r) = me ↔ hO2(r) = me, id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), hO2(r) = me → (r ∈ h0 ∨ r ∈ h ↔ r ∈ h2) ∧ (r ∈ h0 ∨ r ∈ h → (r ∈ h0 ⊃ h0(r);h(r)) = h2(r)), ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = h2(r0))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r))
| hO1(r) = me ↔ hO2(r) = me, id ≠ me, !(me, hO2, hP)(h0), h0 ⊥ h, hP0(h), ¬ (!(me, hO2, hP) * !(id, hO2, hP1) * true)(h2), hO2(r) = me → (r ∈ h0 ∨ r ∈ h ↔ r ∈ h2) ∧ (r ∈ h0 ∨ r ∈ h → (r ∈ h0 ⊃ h0(r);h(r)) = h2(r)), ∀ r0. (hO1(r0) = me ↔ hO2(r0) = me) ∧ (hO1(r0) = me → (r0 ∈ h0 ∨ r0 ∈ h ↔ r0 ∈ h2) ∧ (r0 ∈ h0 ∨ r0 ∈ h → (r0 ∈ h0 ⊃ h0(r0);h(r0)) = h2(r0))) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0(r) = h2(r)) |
Used simplifier rules: owned-r: ⊦ !(me, hO, hP)(h) ∧ hO(r) ≠ me → ¬ r ∈ h; owned-r: ⊦ !(me, hO, hP)(h) ∧ hO(r) ≠ me → ¬ r ∈ h;
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.