| ¬ r0 ∈ h, r0 ≠ null, r1 ∈ h ⊦ r0 ≠ r1 → (h ++ r0)[r0, o0][r1, o1] = (h[r1, o1] ++ r0)[r0, o0] |
(h ++ r0)[r0, o0][r1, o1] ≠ (h[r1, o1] ++ r0)[r0, o0], r0 ≠ r1, r0 ≠ null, r1 ∈ h, ¬ r0 ∈ h ⊦
| (h ++ r0)[r0, o0][r1, o1] ≠ (h[r1, o1] ++ r0)[r0, o0], r0 ≠ r1, r0 ≠ null, r1 ∈ h, ¬ r0 ∈ h ⊦ |
(h ++ r0)[r0, o0][r1, o1] ≠ (h[r1, o1] ++ r0)[r0, o0], r0 ≠ r1, r0 ≠ null, r1 ∈ h, ¬ r0 ∈ h ⊦
| (h ++ r0)[r0, o0][r1, o1] ≠ (h[r1, o1] ++ r0)[r0, o0], r0 ≠ r1, r0 ≠ null, r1 ∈ h, ¬ r0 ∈ h ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
r0 ≠ r1, r0 ≠ null, r1 ∈ h, ¬ r0 ∈ h, ∃ r. ¬ ( (r ∈ (h ++ r0)[r0, o0][r1, o1] ↔ r ∈ (h[r1, o1] ++ r0)[r0, o0]) ∧ (r ∈ (h ++ r0)[r0, o0][r1, o1] → (h ++ r0)[r0, o0][r1, o1][r] = (h[r1, o1] ++ r0)[r0, o0][r])) ⊦
Used terms: (h[r1, o1] ++ r0)[r0, o0], (h ++ r0)[r0, o0][r1, o1]
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| r0 ≠ r1, r0 ≠ null, r1 ∈ h, ¬ r0 ∈ h, ∃ r. ¬ ( (r ∈ (h ++ r0)[r0, o0][r1, o1] ↔ r ∈ (h[r1, o1] ++ r0)[r0, o0]) ∧ (r ∈ (h ++ r0)[r0, o0][r1, o1] → (h ++ r0)[r0, o0][r1, o1][r] = (h[r1, o1] ++ r0)[r0, o0][r])) ⊦ |
(r = r1 ⊃ o1;(h ++ r0)[r]) ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦
Used simplifier rules: at-write: ⊦ h[r0, o][r] = (r = r0 ∧ r0 ∈ h ⊃ o;h[r]); in-write: ⊦ r ∈ h[r0, o] ↔ r ∈ h; in-alloc: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h;
| (r = r1 ⊃ o1;(h ++ r0)[r]) ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦ |
(r = r1 ⊃ o1;(h ++ r0)[r]) ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, ¬ r0 ∈ h ⊦
Used formulas: r = r0
| (r = r1 ⊃ o1;(h ++ r0)[r]) ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, ¬ r0 ∈ h ⊦ |
(r = r1 ⊃ o1;(h ++ r0)[r]) ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦
| (r = r1 ⊃ o1;(h ++ r0)[r]) ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦ |
r = r1, o1 ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, ¬ r0 ∈ h ⊦
(h ++ r0)[r] ≠ (h[r1, o1] ++ r0)[r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, ¬ r0 ∈ h ⊦
| r = r1, o1 ≠ (h[r1, o1] ++ r0)[r], r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, ¬ r0 ∈ h ⊦ |
o1 ≠ (h[r1, o1] ++ r0)[r1], r0 ≠ null, r0 ≠ r1, r1 ∈ h, ¬ r0 ∈ h ⊦
| o1 ≠ (h[r1, o1] ++ r0)[r1], r0 ≠ null, r0 ≠ r1, r1 ∈ h, ¬ r0 ∈ h ⊦ |
o1 ≠ (h[r1, o1] ++ r0)[r1], r0 ≠ null, r0 ≠ r1, r1 ∈ h, ¬ r0 ∈ h ⊦
Used formulas: r1 = r0
| o1 ≠ (h[r1, o1] ++ r0)[r1], r0 ≠ null, r0 ≠ r1, r1 ∈ h, ¬ r0 ∈ h ⊦ |
o1 ≠ (h[r1, o1] ++ r0)[r1], r0 ≠ null, r0 ≠ r1, r1 ∈ h, ¬ r0 ∈ h ⊦
| o1 ≠ (h[r1, o1] ++ r0)[r1], r0 ≠ null, r0 ≠ r1, r1 ∈ h, ¬ r0 ∈ h ⊦ |
r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r]
Used simplifier rules: in-write: ⊦ r ∈ h[r0, o] ↔ r ∈ h; at-write: ⊦ h[r0, o][r] = (r = r0 ∧ r0 ∈ h ⊃ o;h[r]); Used terms: r1, r0, h[r1, o1]
| r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r] |
| (h ++ r0)[r] ≠ (h[r1, o1] ++ r0)[r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, ¬ r0 ∈ h ⊦ |
(h ++ r0)[r] ≠ (h[r1, o1] ++ r0)[r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦
| (h ++ r0)[r] ≠ (h[r1, o1] ++ r0)[r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦ |
r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r]
(h ++ r0)[r] ≠ h[r1, o1][r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, r ∈ h[r1, o1], ¬ r0 ∈ h[r1, o1], ¬ r0 ∈ h ⊦
Used simplifier rules: in-write: ⊦ r ∈ h[r0, o] ↔ r ∈ h; Used terms: r, r0, h[r1, o1]
| r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r] |
| (h ++ r0)[r] ≠ h[r1, o1][r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r ∈ h, r1 ∈ h, r ∈ h[r1, o1], ¬ r0 ∈ h[r1, o1], ¬ r0 ∈ h ⊦ |
(h ++ r0)[r] ≠ h[r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦
Used simplifier rules: at-write: ⊦ h[r0, o][r] = (r = r0 ∧ r0 ∈ h ⊃ o;h[r]); in-write: ⊦ r ∈ h[r0, o] ↔ r ∈ h;
| (h ++ r0)[r] ≠ h[r], r ≠ r1, r ≠ r0, r0 ≠ null, r0 ≠ r1, r1 ∈ h, r ∈ h, ¬ r0 ∈ h ⊦ |
r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[r]
Used terms: r, r0, h
| r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ r ≠ r0 → (h ++ r0)[r] = h[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.