| ⊦ (r => o0 ⊗ hP)(h) → (h(r) = o1 ↔ o0 = o1) |
¬(h(r) = o1 ↔ o0 = o1), (r => o0 ⊗ hP)(h) ⊦
| ¬(h(r) = o1 ↔ o0 = o1), (r => o0 ⊗ hP)(h) ⊦ |
⊦ (hP0 ⊗ hP1)(h) ↔ (∃ h0, h1, h2. h0 ⊥ h2 ∧ h0 ⊥ h1 ∧ h1 ⊥ h2 ∧ h = h0 ∪ h1 ∪ h2 ∧ hP0(h0 ∪ h2) ∧ hP1(h1 ∪ h2))
¬(h(r) = o1 ↔ o0 = o1), ∃ h0, h1, h2. h0 ⊥ h2 ∧ h0 ⊥ h1 ∧ h1 ⊥ h2 ∧ h = h0 ∪ h1 ∪ h2 ∧ (r => o0)(h0 ∪ h2) ∧ hP(h1 ∪ h2) ⊦
Used simplifier rules: sharing-ass: ⊦ hP0 ⊗ hP1 ⊗ hP2 = (hP0 ⊗ hP1) ⊗ hP2; from specification map-sep sharing-com: ⊦ hP0 ⊗ hP1 = hP1 ⊗ hP0; from specification map-sep Used terms: h, r => o0, hP
| ⊦ (hP0 ⊗ hP1)(h) ↔ (∃ h0, h1, h2. h0 ⊥ h2 ∧ h0 ⊥ h1 ∧ h1 ⊥ h2 ∧ h = h0 ∪ h1 ∪ h2 ∧ hP0(h0 ∪ h2) ∧ hP1(h1 ∪ h2)) |
| ¬(h(r) = o1 ↔ o0 = o1), ∃ h0, h1, h2. h0 ⊥ h2 ∧ h0 ⊥ h1 ∧ h1 ⊥ h2 ∧ h = h0 ∪ h1 ∪ h2 ∧ (r => o0)(h0 ∪ h2) ∧ hP(h1 ∪ h2) ⊦ |
h0 ∪ h2 = ∅(r := o0), ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2) ⊦
Used simplifier rules: maplet: ⊦ (r => o)(h) ↔ h = ∅(r := o);
| h0 ∪ h2 = ∅(r := o0), ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2) ⊦ |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r))
h0 ∪ h2 = ∅(r := o0), ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h1 ⊥ h2, hP(h1 ∪ h2) ⊦ r ∈ h0 ∪ h1 ∪ h2 ∧ h0 ⊥ h1 ∪ h2
h0 ∪ h2 = ∅(r := o0), ¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h0 ⊥ h1 ∪ h2, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2 ⊦
Used terms: h0, h1 ∪ h2, r
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)) |
| h0 ∪ h2 = ∅(r := o0), ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h1 ⊥ h2, hP(h1 ∪ h2) ⊦ r ∈ h0 ∪ h1 ∪ h2 ∧ h0 ⊥ h1 ∪ h2 |
h0 ∪ h2 = ∅(r := o0), ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2 ⊦
Used simplifier rules: h1 ⊥ h ⊦ h0 ⊥ h1 ∪ h ↔ h0 ⊥ h1 ∧ h0 ⊥ h; (ws) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| h0 ∪ h2 = ∅(r := o0), ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2 ⊦ |
⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1(a) = st2(a))
¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h1 ⊥ h2, hP(h1 ∪ h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ∀ a. (a ∈ h0 ∪ h2 ↔ a ∈ ∅(r := o0)) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦
Used terms: h0 ∪ h2, ∅(r := o0)
| ⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1(a) = st2(a)) |
| ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h1 ⊥ h2, hP(h1 ∪ h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ∀ a. (a ∈ h0 ∪ h2 ↔ a ∈ ∅(r := o0)) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦ |
¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ∀ a. (a ∈ h0 ∨ a ∈ h2 ↔ a = r) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦
Used simplifier rules: ⊦ a ∈ ∅(b := d) ↔ a = b; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| ¬((h0 ∪ h1 ∪ h2)(r) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), ¬ r ∈ h0, ¬ r ∈ h1, ¬ r ∈ h2, ∀ a. (a ∈ h0 ∨ a ∈ h2 ↔ a = r) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦ |
Used terms: r
| h0 ∪ h2 = ∅(r := o0), ¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h0 ⊥ h1 ∪ h2, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2 ⊦ |
h0 ∪ h2 = ∅(r := o0), ¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2 ⊦
Used simplifier rules: h1 ⊥ h ⊦ h0 ⊥ h1 ∪ h ↔ h0 ⊥ h1 ∧ h0 ⊥ h; (ws)
| h0 ∪ h2 = ∅(r := o0), ¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2 ⊦ |
⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1(a) = st2(a))
¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2, ∀ a. (a ∈ h0 ∪ h2 ↔ a ∈ ∅(r := o0)) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦
Used terms: h0 ∪ h2, ∅(r := o0)
| ⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1(a) = st2(a)) |
| ¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h1, h0 ⊥ h2, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2, ∀ a. (a ∈ h0 ∪ h2 ↔ a ∈ ∅(r := o0)) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦ |
¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2, ∀ a. (a ∈ h0 ∨ a ∈ h2 ↔ a = r) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦
Used simplifier rules: ⊦ a ∈ ∅(b := d) ↔ a = b; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s)
| ¬((r ∈ h0 ⊃ h0(r);(h1 ∪ h2)(r)) = o1 ↔ o0 = o1), h0 ⊥ h2, h0 ⊥ h1, h1 ⊥ h2, hP(h1 ∪ h2), r ∈ h0 ∪ h1 ∪ h2, ∀ a. (a ∈ h0 ∨ a ∈ h2 ↔ a = r) ∧ (h0 ∪ h2)(a) = ∅(r := o0)(a) ⊦ |
Used simplifier rules: ⊦ a = b → st(b := d)(a) = d; (s) ⊦ 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 ∈ h1 ∧ h0 ⊥ h1 → (r ∈ h0 ↔ false); (s) 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.