| ⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0)) |
r ≠ null ⊦ r ∈ h ↔ (∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0)
| r ≠ null ⊦ r ∈ h ↔ (∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0) |
r ≠ null ⊦ r ∈ h ↔ (∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0)
| r ≠ null ⊦ r ∈ h ↔ (∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0) |
r ≠ null, r ∈ h ⊦ ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0
r ≠ null, ¬ r ∈ h, ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0 ⊦
| r ≠ null, r ∈ h ⊦ ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0 |
r ≠ null, r ∈ h ⊦ ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0
| r ≠ null, r ∈ h ⊦ ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0 |
⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0))
r ≠ null, ∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0 ⊦ ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0
Used terms: h, r
| ⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0)) |
| r ≠ null, ∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0 ⊦ ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0 |
r ≠ null, ¬ r ∈ h0 ⊦ ∃ h1, o0. (h0 ++ r)(r := o) = h1 ∪ (∅ ++ r)(r := o0) ∧ ¬ r ∈ h1
| r ≠ null, ¬ r ∈ h0 ⊦ ∃ h1, o0. (h0 ++ r)(r := o) = h1 ∪ (∅ ++ r)(r := o0) ∧ ¬ r ∈ h1 |
r ≠ null, ¬ r ∈ h0 ⊦ (h0 ++ r)(r := o) = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0
Used terms: h0, o
| r ≠ null, ¬ r ∈ h0 ⊦ (h0 ++ r)(r := o) = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0 |
(h0 ++ r)(r := o) ≠ h0 ∪ (∅ ++ r)(r := o), r ≠ null, ¬ r ∈ h0 ⊦
| (h0 ++ r)(r := o) ≠ h0 ∪ (∅ ++ r)(r := o), r ≠ null, ¬ r ∈ h0 ⊦ |
r ≠ null, r ∈ h1, h0 ⊥ h1 ⊦ h0 ∪ h1(r := o) = (h0 ∪ h1)(r := o)
(h0 ++ r)(r := o) ≠ h0 ∪ (∅ ++ r)(r := o), r ≠ null, ¬ r ∈ h0 ⊦ r ≠ null ∧ r ∈ ∅ ++ r ∧ h0 ⊥ ∅ ++ r
Used simplifier rules: in-emp: ⊦ ¬ r ∈ ∅; disj-r: ⊦ r ∈ h1 ∧ h0 ⊥ h1 → (r ∈ h0 ↔ false); disj-emp-r: ⊦ h ⊥ ∅; uni-alloc: r ≠ null, ¬ r ∈ h1, ¬ r ∈ h0, h0 ⊥ h1 ⊦ h0 ∪ (h1 ++ r) = (h0 ∪ h1) ++ r; uni-emp: ⊦ h0 ∪ ∅ = h0; Used terms: o, r, ∅ ++ r, h0
| r ≠ null, r ∈ h1, h0 ⊥ h1 ⊦ h0 ∪ h1(r := o) = (h0 ∪ h1)(r := o) |
| (h0 ++ r)(r := o) ≠ h0 ∪ (∅ ++ r)(r := o), r ≠ null, ¬ r ∈ h0 ⊦ r ≠ null ∧ r ∈ ∅ ++ r ∧ h0 ⊥ ∅ ++ r |
(h0 ++ r)(r := o) ≠ h0 ∪ (∅ ++ r)(r := o), r ≠ null, ¬ h0 ⊥ ∅ ++ r, ¬ r ∈ h0 ⊦
Used simplifier rules: in-emp: ⊦ ¬ r ∈ ∅; in-alloc: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h;
| (h0 ++ r)(r := o) ≠ h0 ∪ (∅ ++ r)(r := o), r ≠ null, ¬ h0 ⊥ ∅ ++ r, ¬ r ∈ h0 ⊦ |
⊦ h0 ⊥ h1 ↔ (∀ r. ¬ r ∈ h0 ∨ ¬ r ∈ h1)
Used simplifier rules: in-alloc: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; in-emp: ⊦ ¬ r ∈ ∅; Used terms: ∅ ++ r, h0
| ⊦ h0 ⊥ h1 ↔ (∀ r. ¬ r ∈ h0 ∨ ¬ r ∈ h1) |
| r ≠ null, ¬ r ∈ h, ∃ h0, o. h = h0 ∪ (∅ ++ r)(r := o) ∧ ¬ r ∈ h0 ⊦ |
r ≠ null, ¬ r ∈ h0 ∪ (∅ ++ r)(r := o), ¬ r ∈ h0 ⊦
| r ≠ null, ¬ r ∈ h0 ∪ (∅ ++ r)(r := o), ¬ r ∈ h0 ⊦ |
⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1)
Used simplifier rules: in-emp: ⊦ ¬ r ∈ ∅; disj-write: r ≠ null, ¬ r ∈ h1 ⊦ h0 ⊥ (h1 ++ r)(r := o) ↔ h0 ⊥ h1 ∧ ¬ r ∈ h0; disj-emp-r: ⊦ h ⊥ ∅; disj-write: r ≠ null, ¬ r ∈ h1 ⊦ h0 ⊥ (h1 ++ r)(r := o) ↔ h0 ⊥ h1 ∧ ¬ r ∈ h0; disj-emp-r: ⊦ h ⊥ ∅; in-write: ⊦ r ∈ h(r0 := o) ↔ r ∈ h; in-emp: ⊦ ¬ r ∈ ∅; in-alloc: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; Used terms: (∅ ++ r)(r := o), h0, r
| ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1) |
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.