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