| ¬ null ∈ h, hP(∅), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h) ⊦ hP(h) |
hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r) ⊦
| hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r) ⊦ |
hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: # h
| hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
h ≠ ∅, hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used simplifier rules: ⊦ ¬ a ∈ ∅; (s) Used formulas: h = ∅
| h ≠ ∅, hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1(a) = st2(a))
hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∃ r. ¬((r ∈ h ↔ r ∈ ∅) ∧ h(r) = ∅(r)), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used terms: h, ∅
| ⊦ st1 = st2 ↔ (∀ a. (a ∈ st1 ↔ a ∈ st2) ∧ st1(a) = st2(a)) |
| hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∃ r. ¬((r ∈ h ↔ r ∈ ∅) ∧ h(r) = ∅(r)), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ ¬ r ∈ h ∧ h(r) = ∅(r)
Used simplifier rules: ⊦ ¬ a ∈ ∅; (s)
| hP(∅), ¬ hP(h), ¬ null ∈ h, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ ¬ r ∈ h ∧ h(r) = ∅(r) |
⊦ ¬ a ∈ st → st(a) = ∅(a)
hP(∅), r ∈ h, ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ ¬ r ∈ h ∧ h(r) = ∅(r)
Used terms: h, r
| ⊦ ¬ a ∈ st → st(a) = ∅(a) |
| hP(∅), r ∈ h, ¬ hP(h), ¬ null ∈ h, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ ¬ r ∈ h ∧ h(r) = ∅(r) |
hP(∅), r ∈ h, ¬ hP(h), ¬ null ∈ h, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
| hP(∅), r ∈ h, ¬ hP(h), ¬ null ∈ h, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
⊦ a ∈ st ↔ (∃ d, st0. st = st0(a := d) ∧ ¬ a ∈ st0)
hP(∅), ¬ hP(h), ¬ null ∈ h, ∃ a0, st0. h = st0(r := a0) ∧ ¬ r ∈ st0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used terms: r, h
| ⊦ a ∈ st ↔ (∃ d, st0. st = st0(a := d) ∧ ¬ a ∈ st0) |
| hP(∅), ¬ hP(h), ¬ null ∈ h, ∃ a0, st0. h = st0(r := a0) ∧ ¬ r ∈ st0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h0, hP. # h0 < # h → hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used simplifier rules: ⊦ a ∈ st(b := d) ↔ a = b ∨ a ∈ st; (s)
| null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ¬ null ∈ h0 +h r → hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used terms: h0 +h r, r, a0
| null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ¬ null ∈ h0 +h r → hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used simplifier rules: ¬ r ∈ h, r ≠ null ⊦ r0 ∈ h +h r ↔ r0 ∈ h ∨ r0 = r; (s)
| null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ¬ null ∈ h0 → hP(h0) → hP(h0 +h r), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
Used terms: h0, r
| null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ¬ null ∈ h0 → hP(h0) → hP(h0 +h r), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), hP(h0) → hP(h0 +h r), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
| null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), hP(h0) → hP(h0 +h r), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), hP(h0) → hP(h0 +h r), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r))
Used simplifier rules: ⊦ ¬ a ∈ st → # st(a := d) = # st + 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: h0, hP
| null ≠ r, hP(∅), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), hP(h0) → hP(h0 +h r), hP(h0 +h r) → hP((h0 +h r)[r := a0]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ hP(∅) ∧ ¬ hP(h0) ∧ ¬ null ∈ h0 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) |
null ≠ r, hP(∅), hP(h0), hP(h0 +h r), hP((h0 +h r)[r := a0]h), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦
| null ≠ r, hP(∅), hP(h0), hP(h0 +h r), hP((h0 +h r)[r := a0]h), ¬ hP(h0(r := a0)), ¬ null ∈ h0, ¬ r ∈ h0, ∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r), ∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h), ∀ h1, hP. # h1 < # h0(r := a0) → hP(∅) ∧ ¬ hP(h1) ∧ ¬ null ∈ h1 ∧ (∀ h, r, o. ¬ null ∈ h → hP(h) → hP(h[r := o]h)) ∧ (∀ h, r. ¬ null ∈ h → hP(h) → hP(h +h r)) → false ⊦ |
⊦ r ∈ h → h[r := a]h = h(r := a)
Used simplifier rules: ¬ r ∈ h, r ≠ null ⊦ r0 ∈ h +h r ↔ r0 ∈ h ∨ r0 = r; (s) r ≠ null, ¬ r ∈ h ⊦ (h +h r)(r := a) = h(r := a); (s) ⊦ ¬ r ∈ h → h[r := a]h = h; (s) Used terms: h0 +h r, r, a0
| ⊦ r ∈ h → h[r := a]h = h(r := a) |
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.