| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)) |
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∪ h1 ⊦
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∪ h1 ⊦ |
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1 ⊦
Used simplifier rules: in-uni: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1);
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1 ⊦ |
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: # h1
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦ |
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦ |
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h1 ≠ ∅, h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦
Used simplifier rules: uni-emp: ⊦ h0 ∪ ∅ = h0; disj-emp-r: ⊦ h ⊥ ∅; ⊦ ¬ r ∈ ∅; (s) Used formulas: h1 = ∅
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h1 ≠ ∅, h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∃ r. ¬((r ∈ h1 ↔ r ∈ ∅) ∧ (r ∈ h1 → h1(r) = ∅(r))), ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦
Used terms: ∅, h1
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r ∈ h0 ∨ r ∈ h1, ∃ r. ¬((r ∈ h1 ↔ r ∈ ∅) ∧ (r ∈ h1 → h1(r) = ∅(r))), ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦ |
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r0 ∈ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦
Used simplifier rules: ⊦ ¬ r ∈ ∅; (s)
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), h0 ⊥ h1, r0 ∈ h1, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦ |
⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0))
(h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), r0 ≠ null, h0 ⊥ h1, ∃ h0, o. h1 = (h0 ++ r0)(r0 := o) ∧ ¬ r0 ∈ h0, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦
Used simplifier rules: ⊦ ¬ null ∈ h; (s) Used terms: h1, r0
| ⊦ r ≠ null → (r ∈ h ↔ (∃ h0, o. h = (h0 ++ r)(r := o) ∧ ¬ r ∈ h0)) |
| (h0 ∪ h1)(r) ≠ (r ∈ h0 ⊃ h0(r);h1(r)), r0 ≠ null, h0 ⊥ h1, ∃ h0, o. h1 = (h0 ++ r0)(r0 := o) ∧ ¬ r0 ∈ h0, r ∈ h0 ∨ r ∈ h1, ∀ h, h0, r. # h < # h1 → (h0 ∪ h)(r) ≠ (r ∈ h0 ⊃ h0(r);h(r)) ∧ h0 ⊥ h ∧ (r ∈ h0 ∨ r ∈ h) → false ⊦ |
((h0 ∪ h) ++ r0)(r) ≠ (r ∈ h0 ⊃ h0(r);(h ++ r0)(r)), r ≠ r0, r0 ≠ null, h0 ⊥ h, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦
Used simplifier rules: disj-alloc: r0 ≠ null, ¬ r0 ∈ h0, ¬ r0 ∈ h1 ⊦ h0 ⊥ h1 → h0 ⊥ h1 ++ r0; uni-write: r ≠ null, r ∈ h1, h0 ⊥ h1 ⊦ h0 ∪ h1(r := o) = (h0 ∪ h1)(r := o); uni-alloc: r ≠ null, ¬ r ∈ h1, ¬ r ∈ h0, h0 ⊥ h1 ⊦ h0 ∪ (h1 ++ r) = (h0 ∪ h1) ++ r; in-uni: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); disj-write: r ≠ null, ¬ r ∈ h1 ⊦ h0 ⊥ (h1 ++ r)(r := o) ↔ h0 ⊥ h1 ∧ ¬ r ∈ h0; r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s) ⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r)); (s)
| ((h0 ∪ h) ++ r0)(r) ≠ (r ∈ h0 ⊃ h0(r);(h ++ r0)(r)), r ≠ r0, r0 ≠ null, h0 ⊥ h, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦ |
((h0 ∪ h) ++ r0)(r) ≠ (r ∈ h0 ⊃ h0(r);(h ++ r0)(r)), r ≠ r0, r0 ≠ null, h0 ⊥ h, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦
Used formulas: r = r0
| ((h0 ∪ h) ++ r0)(r) ≠ (r ∈ h0 ⊃ h0(r);(h ++ r0)(r)), r ≠ r0, r0 ≠ null, h0 ⊥ h, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦ |
((h0 ∪ h) ++ r0)(r) ≠ h0(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦
((h0 ∪ h) ++ r0)(r) ≠ (h ++ r0)(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, ¬ r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦
| ((h0 ∪ h) ++ r0)(r) ≠ h0(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦ |
(h0 ∪ h)(r) ≠ h0(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦
Used simplifier rules: in-uni: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); disj-l: ⊦ r ∈ h0 ∧ h0 ⊥ h1 → ¬ r ∈ h1; r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ (h ++ r0)(r) = h(r); (s)
| (h0 ∪ h)(r) ≠ h0(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦ |
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) r ∈ h ⊦ # h(r := o) = # h; (s) ¬ r ∈ h, r ≠ null ⊦ #(h ++ r) = # h + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: h, h0, r
| ((h0 ∪ h) ++ r0)(r) ≠ (h ++ r0)(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, ¬ r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, r ∈ h ∨ r ∈ h0, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦ |
(h0 ∪ h)(r) ≠ h(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, r ∈ h, ¬ r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦
Used simplifier rules: in-uni: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); r ∈ h, r0 ≠ null, ¬ r0 ∈ h ⊦ (h ++ r0)(r) = h(r); (s)
| (h0 ∪ h)(r) ≠ h(r), r ≠ r0, r0 ≠ null, h0 ⊥ h, r ∈ h, ¬ r ∈ h0, ¬ r0 ∈ h0, ¬ r0 ∈ h, ∀ h0, h2, r. # h0 < # (h ++ r0)(r0 := o) → (h2 ∪ h0)(r) ≠ (r ∈ h2 ⊃ h2(r);h0(r)) ∧ h2 ⊥ h0 ∧ (r ∈ h2 ∨ r ∈ h0) → false ⊦ |
Used simplifier rules: disj-r: ⊦ r ∈ h1 ∧ h0 ⊥ h1 → ¬ r ∈ h0; r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) r ∈ h ⊦ # h(r := o) = # h; (s) ¬ r ∈ h, r ≠ null ⊦ #(h ++ r) = # h + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: h, h0, 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.