| ⊦ 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2) ⊦
| id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2) ⊦ |
id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊆ h2, h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2) ⊦
id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2), ¬ h0 ⊆ h2 ⊦
Used formulas: h0 ⊆ h2
| id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊆ h2, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2), ∃ h. h0 ∪ h = h2 ∧ h ⊥ h0 ⊦ |
id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h0 ∪ h1), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h1 ⊥ h0, h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h0 ∪ h1) ⊦
| id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h0 ∪ h1), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h0 ⊥ h, h1 ⊥ h0, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h0 ⊥ h, h1 ⊥ h0, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h0 ∪ h1) ⊦ !(me, hO2, hP)(h0) ∧ ((!(id, hO2, hP1) * true))(h1) ∧ h0 ⊥ h1 |
id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h0 ∪ h1), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h1 ⊥ h0, h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h0 ∪ h1), ¬ ((!(id, hO2, hP1) * true))(h1) ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (s)
| id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h0 ∪ h1), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h0 ⊥ h, h1 ⊥ h0, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h0 ∪ h1), h0 ⊥ h, h1 ⊥ h0, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊆ h1, h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊆ h1, h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h4 ⊥ h2, h0 ⊥ h, h2 ∪ h4 ⊥ h0, h2 ⊥ h3, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ h3), ¬ ((!(id, hO2, hP1) * true))(h2 ∪ h4) ⊦
| h0 ∪ h2 ∪ h4 = h2 ∪ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h4 ⊥ h2, h0 ⊥ h, h2 ∪ h4 ⊥ h0, 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; (s) 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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]) |
r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, (h0 ∪ h1)[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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 ↔ r ∈ h2 ∨ r ∈ h3, (h0 ∪ h1)[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h0 ⊥ h, h1 ⊥ h0, 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])
r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, (h0 ∪ h1)[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, h0 ⊥ h1, ¬ ((!(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]) |
| r ∈ h0 ∪ h1 ↔ r ∈ h2 ∨ r ∈ h3, (h0 ∪ h1)[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h2, r ∈ h0 ∪ h1, h0 ⊥ h, h1 ⊥ h0, 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; (s) ⊦ 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h2, r ∈ h0 ∪ h1, h0 ⊥ h, h1 ⊥ h0, 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) ⊦ h0 ⊥ h1 → h1 ⊥ h0; (s) 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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, h0 ⊥ h1, ¬ ((!(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]), r ∈ h0 ∨ r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h0 ⊥ h, h1 ⊥ h0, 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 simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| (r ∈ h0 ⊃ h0[r];h1[r]) = (r ∈ h2 ⊃ h2[r];h3[r]), r ∈ h0 ∨ r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h0 ⊥ h, h1 ⊥ h0, 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 ∨ r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, h0[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, r ∈ h0, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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 ∨ r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, h1[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ h3), ¬ r ∈ h0 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2[r] = h1[r])
| r ∈ h0 ∨ r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, h0[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, r ∈ h0, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(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[r] = h2[r], id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0, r ∈ h0 ∪ h1, r ∈ h2, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ h3) ⊦
Used simplifier rules: ⊦ r ∈ h1 ∧ h0 ⊥ h1 → (r ∈ h0 ↔ false); (s)
| h0[r] = h2[r], id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0, r ∈ h0 ∪ h1, r ∈ h2, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ h3) ⊦ |
⊦ 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] = h2[r], id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), r ∈ h2, r ∈ h0 ∪ h1, r ∈ h0, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ 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])) ⊦
Used terms: hO2, hO1, me, h0 ∪ h, h2 ∪ h3
| ⊦ 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] = h2[r], id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), r ∈ h2, r ∈ h0 ∪ h1, r ∈ h0, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ 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])) ⊦ |
h0[r] = h2[r], id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), r ∈ h0, r ∈ h0 ∪ h1, r ∈ h2, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ 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])) ⊦
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] = h2[r], id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), r ∈ h0, r ∈ h0 ∪ h1, r ∈ h2, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ 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])) ⊦ |
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
| r ∈ h0 ∨ r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, h1[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(id, hO2, hP1)(h2), !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h2 ⊥ h3, h1 ⊥ h0, h0 ⊥ h, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ h3), ¬ r ∈ h0 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2[r] = h1[r]) |
r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, h1[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ h3), ¬ r ∈ h0 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2[r] = h1[r])
| r ∈ h1 ↔ r ∈ h2 ∨ r ∈ h3, h1[r] = (r ∈ h2 ⊃ h2[r];h3[r]), id ≠ me, !(me, hO2, hP)(h0), !(id, hO2, hP1)(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2 ∪ h3), r ∈ h0 ∪ h1, h0 ⊥ h, h1 ⊥ h0, h2 ⊥ h3, ¬ ((!(id, hO2, hP1) * true))(h1), ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2 ∪ h3), ¬ r ∈ h0 ⊦ (r ∈ h2 → r ∈ h1) ∧ (r ∈ h2 → h2[r] = h1[r]) |
Used simplifier rules: ⊦ r ∈ h0 ∧ h0 ⊥ h1 → (r ∈ h1 ↔ false); (s)
| id ≠ me, !(me, hO2, hP)(h0), ((!(id, hO2, hP1) * true))(h2), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2), ¬ h0 ⊆ h2 ⊦ |
id ≠ me, !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2), ¬ h0 ⊆ h2 ⊦
| id ≠ me, !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(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), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(me, hO2, hP) * !(id, hO2, hP1) * true))(h2) ⊦ (r ∈ h0 → r ∈ h2) ∧ (r ∈ h0 → h0[r] = h2[r])
| id ≠ me, !(me, hO2, hP)(h0), hP0(h), rely(me, hO1, h0 ∪ h, hO2, h2), h0 ⊥ h, ¬ ((!(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), hP0(h), h0 ⊥ 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: hO2, hO1, me, h0 ∪ h, h2
| ⊦ 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), hP0(h), h0 ⊥ 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), hP0(h), h0 ⊥ 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), hP0(h), h0 ⊥ 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), hP0(h), h0 ⊥ 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), hP0(h), h0 ⊥ 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), hP0(h), h0 ⊥ 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), hP0(h), h0 ⊥ 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.