| ¬ r ∈ rs, r ≠ null ⊦ hP[rs, f] ↔ (r.=>_ * hP)[rs ++ r, f] |
¬(hP[rs, f] ↔ (r.=>_ * hP)[rs ++ r, f]), r ≠ null, ¬ r ∈ rs ⊦
| ¬(hP[rs, f] ↔ (r.=>_ * hP)[rs ++ r, f]), r ≠ null, ¬ r ∈ rs ⊦ |
¬(hP(mk(rs, f)) ↔ (r.=>_ * hP)(mk(rs ++ r, f))), r ≠ null, ¬ r ∈ rs ⊦
Used simplifier rules: apply: ⊦ hP[rs, f] ↔ hP(mk(rs, f));
| ¬(hP(mk(rs, f)) ↔ (r.=>_ * hP)(mk(rs ++ r, f))), r ≠ null, ¬ r ∈ rs ⊦ |
¬ r ∈ h, r ≠ null ⊦ hP(h) ↔ (r.=>_ * hP)(h ++ r)
hP(mk(rs, f)) ↔ (r.=>_ * hP)(mk(rs, f) ++ r), ¬(hP(mk(rs, f)) ↔ (r.=>_ * hP)(mk(rs ++ r, f))), r ≠ null, ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; ⊦ r ∈ h → r ≠ null; (s) ⊦ a ∈ s → s ++ a = s; (s) Used terms: r, mk(rs, f), hP
| ¬ r ∈ h, r ≠ null ⊦ hP(h) ↔ (r.=>_ * hP)(h ++ r) |
| hP(mk(rs, f)) ↔ (r.=>_ * hP)(mk(rs, f) ++ r), ¬(hP(mk(rs, f)) ↔ (r.=>_ * hP)(mk(rs ++ r, f))), r ≠ null, ¬ r ∈ rs ⊦ |
¬((r.=>_ * hP)(mk(rs, f) ++ r) ↔ (r.=>_ * hP)(mk(rs ++ r, f))), r ≠ null, ¬ r ∈ rs ⊦
| ¬((r.=>_ * hP)(mk(rs, f) ++ r) ↔ (r.=>_ * hP)(mk(rs ++ r, f))), r ≠ null, ¬ r ∈ rs ⊦ |
⊦ (r.=>_ * hP)(h) ↔ (r => o1 * hP)(h(r := o1)) ∧ r ∈ h
¬((r.=>_ * hP)(mk(rs, f) ++ r) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r))) ∧ r ∈ mk(rs ++ r, f)), r ≠ null, ¬ r ∈ rs ⊦
Used terms: f(r), mk(rs ++ r, f), hP, r
| ⊦ (r.=>_ * hP)(h) ↔ (r => o1 * hP)(h(r := o1)) ∧ r ∈ h |
| ¬((r.=>_ * hP)(mk(rs, f) ++ r) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r))) ∧ r ∈ mk(rs ++ r, f)), r ≠ null, ¬ r ∈ rs ⊦ |
r ≠ null, ¬((r.=>_ * hP)(mk(rs, f) ++ r) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; ⊦ ¬ a ∈ s → (a ∈ s ++ b ↔ a = b); (s)
| r ≠ null, ¬((r.=>_ * hP)(mk(rs, f) ++ r) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), ¬ r ∈ rs ⊦ |
⊦ (r.=>_ * hP)(h) ↔ (r => o1 * hP)(h(r := o1)) ∧ r ∈ h
r ≠ null, ¬((r => f(r) * hP)((mk(rs, f) ++ r)(r := f(r))) ∧ r ∈ mk(rs, f) ++ r ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), ¬ r ∈ rs ⊦
Used terms: f(r), mk(rs, f) ++ r, hP, r
| ⊦ (r.=>_ * hP)(h) ↔ (r => o1 * hP)(h(r := o1)) ∧ r ∈ h |
| r ≠ null, ¬((r => f(r) * hP)((mk(rs, f) ++ r)(r := f(r))) ∧ r ∈ mk(rs, f) ++ r ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), ¬ r ∈ rs ⊦ |
r ≠ null, ¬((r => f(r) * hP)((mk(rs, f) ++ r)(r := f(r))) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s)
| r ≠ null, ¬((r => f(r) * hP)((mk(rs, f) ++ r)(r := f(r))) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), ¬ r ∈ rs ⊦ |
⊦ (r => o * hP)(h) ↔ hP(h -- r) ∧ r ∈ h ∧ h(r) = o
¬ ( hP((mk(rs, f) ++ r)(r := f(r)) -- r) ∧ r ∈ (mk(rs, f) ++ r)(r := f(r)) ∧ (mk(rs, f) ++ r)(r := f(r))(r) = f(r) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), r ≠ null, ¬ r ∈ rs ⊦
Used terms: (mk(rs, f) ++ r)(r := f(r)), hP, f(r), r
| ⊦ (r => o * hP)(h) ↔ hP(h -- r) ∧ r ∈ h ∧ h(r) = o |
| ¬ ( hP((mk(rs, f) ++ r)(r := f(r)) -- r) ∧ r ∈ (mk(rs, f) ++ r)(r := f(r)) ∧ (mk(rs, f) ++ r)(r := f(r))(r) = f(r) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), r ≠ null, ¬ r ∈ rs ⊦ |
¬(hP(mk(rs, f)) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), r ≠ null, ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r)); (s) ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s) ¬ r ∈ h, r ≠ null ⊦ (h ++ r) -- r = h; (s) r ∈ h ⊦ h(r := o) -- r = h -- r; (s)
| ¬(hP(mk(rs, f)) ↔ (r => f(r) * hP)(mk(rs ++ r, f)(r := f(r)))), r ≠ null, ¬ r ∈ rs ⊦ |
⊦ (r => o * hP)(h) ↔ hP(h -- r) ∧ r ∈ h ∧ h(r) = o
¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f)(r := f(r)) -- r) ∧ r ∈ mk(rs ++ r, f)(r := f(r)) ∧ mk(rs ++ r, f)(r := f(r))(r) = f(r)), r ≠ null, ¬ r ∈ rs ⊦
Used terms: mk(rs ++ r, f)(r := f(r)), hP, f(r), r
| ⊦ (r => o * hP)(h) ↔ hP(h -- r) ∧ r ∈ h ∧ h(r) = o |
| ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f)(r := f(r)) -- r) ∧ r ∈ mk(rs ++ r, f)(r := f(r)) ∧ mk(rs ++ r, f)(r := f(r))(r) = f(r)), r ≠ null, ¬ r ∈ rs ⊦ |
¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), r ≠ null, ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; ⊦ ¬ a ∈ s → (a ∈ s ++ b ↔ a = b); (s) ⊦ h(r0 := o)(r) = (r = r0 ∧ r0 ∈ h ⊃ o;h(r)); (s) ⊦ r ∈ h(r0 := o) ↔ r ∈ h; (s) r ∈ h ⊦ h(r := o) -- r = h -- r; (s)
| ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), r ≠ null, ¬ r ∈ rs ⊦ |
¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), mk(rs ++ r, f) -- r ≠ mk(rs, f), r ≠ null, ¬ r ∈ rs ⊦
Used formulas: mk(rs ++ r, f) -- r = mk(rs, f)
| ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), mk(rs ++ r, f) -- r ≠ mk(rs, f), r ≠ null, ¬ r ∈ rs ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), r ≠ null, ¬ r ∈ rs, ∃ r0. ¬((r0 ∈ mk(rs ++ r, f) -- r ↔ r0 ∈ mk(rs, f)) ∧ (r0 ∈ mk(rs ++ r, f) -- r → (mk(rs ++ r, f) -- r)(r0) = mk(rs, f)(r0))) ⊦
Used terms: mk(rs, f), mk(rs ++ r, f) -- r
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), r ≠ null, ¬ r ∈ rs, ∃ r0. ¬((r0 ∈ mk(rs ++ r, f) -- r ↔ r0 ∈ mk(rs, f)) ∧ (r0 ∈ mk(rs ++ r, f) -- r → (mk(rs ++ r, f) -- r)(r0) = mk(rs, f)(r0))) ⊦ |
# rs ≠ 0, ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), (mk(rs ++ r, f) -- r)(r0) ≠ f(r0), r ≠ null, rs ≠ ∅, r0 ∈ rs, ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; at-mk: ⊦ r ∈ rs → mk(rs, f)(r) = f(r); size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic ⊦ a ≠ b → (a ∈ s ++ b ↔ a ∈ s); (s) ⊦ r ∈ h -- r0 ↔ r ≠ r0 ∧ r ∈ h; (s) ⊦ a ∈ s → a ∈ s ++ b; (s)
| # rs ≠ 0, ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), (mk(rs ++ r, f) -- r)(r0) ≠ f(r0), r ≠ null, rs ≠ ∅, r0 ∈ rs, ¬ r ∈ rs ⊦ |
r ∈ h ⊦ r ≠ r0 → (h -- r0)(r) = h(r)
# rs ≠ 0, ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), mk(rs ++ r, f)(r0) ≠ f(r0), r ≠ null, r0 ≠ r, rs ≠ ∅, r0 ∈ rs, r0 ∈ mk(rs ++ r, f), ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; ⊦ a ≠ b → (a ∈ s ++ b ↔ a ∈ s); (s) Used terms: r0, r, mk(rs ++ r, f)
| r ∈ h ⊦ r ≠ r0 → (h -- r0)(r) = h(r) |
| # rs ≠ 0, ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), mk(rs ++ r, f)(r0) ≠ f(r0), r ≠ null, r0 ≠ r, rs ≠ ∅, r0 ∈ rs, r0 ∈ mk(rs ++ r, f), ¬ r ∈ rs ⊦ |
# rs ≠ 0, ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), mk(rs ++ r, f)(r0) ≠ f(r0), r ≠ null, r0 ≠ r, rs ≠ ∅, r0 ∈ rs, ¬ r ∈ rs ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; ⊦ a ≠ b → (a ∈ s ++ b ↔ a ∈ s); (s)
| # rs ≠ 0, ¬(hP(mk(rs, f)) ↔ hP(mk(rs ++ r, f) -- r)), mk(rs ++ r, f)(r0) ≠ f(r0), r ≠ null, r0 ≠ r, rs ≠ ∅, r0 ∈ rs, ¬ r ∈ rs ⊦ |
Used simplifier rules: at-mk: ⊦ r ∈ rs → mk(rs, f)(r) = f(r); ⊦ a ≠ b → (a ∈ s ++ b ↔ a ∈ s); (s) Used formulas: r0 ∈ rs ++ 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.