| ⊦ a[_∃ rhP] = _∃(λ r. a[rhP(r)]) |
a[_∃ rhP] ≠ _∃(λ r. a[rhP(r)]) ⊦
| a[_∃ rhP] ≠ _∃(λ r. a[rhP(r)]) ⊦ |
¬(a[_∃ rhP](heap-aux) ↔ (_∃(λ r. a[rhP(r)]))(heap-aux)) ⊦
| ¬(a[_∃ rhP](heap-aux) ↔ (_∃(λ r. a[rhP(r)]))(heap-aux)) ⊦ |
⊦ a[_∃ rhP](heap-aux) ↔ (∃ r. a[rhP(r)](heap-aux))
Used simplifier rules: ⊦ (_∃ rR)(ha) ↔ (∃ r. rR(r)(ha)); (s)
| ⊦ a[_∃ rhP](heap-aux) ↔ (∃ r. a[rhP(r)](heap-aux)) |
a[_∃ rhP](heap-aux) ⊦ ∃ r. a[rhP(r)](heap-aux)
¬ a[_∃ rhP](heap-aux), ∃ r. a[rhP(r)](heap-aux) ⊦
| a[_∃ rhP](heap-aux) ⊦ ∃ r. a[rhP(r)](heap-aux) |
⊦ ∃ rs, f, g. ha = mk(rs, f, g)
a[_∃ rhP](heap-aux), ∃ rs, f, g. heap-aux = mk(rs, f, g) ⊦ ∃ r. a[rhP(r)](heap-aux)
Used terms: heap-aux
| ⊦ ∃ rs, f, g. ha = mk(rs, f, g) |
| a[_∃ rhP](heap-aux), ∃ rs, f, g. heap-aux = mk(rs, f, g) ⊦ ∃ r. a[rhP(r)](heap-aux) |
a[_∃ rhP](mk(rs, f, g)) ⊦ ∃ r. a[rhP(r)](mk(rs, f, g))
| a[_∃ rhP](mk(rs, f, g)) ⊦ ∃ r. a[rhP(r)](mk(rs, f, g)) |
⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a)
(_∃ rhP)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a ⊦ ∃ r. a[rhP(r)](mk(rs, f, g))
Used terms: a, _∃ rhP, rs, g, f
| ⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a) |
| (_∃ rhP)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a ⊦ ∃ r. a[rhP(r)](mk(rs, f, g)) |
rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a ⊦ ∃ r. a[rhP(r)](mk(rs, f, g))
Used simplifier rules: ⊦ (_∃ rP)(h) ↔ (∃ r. rP(r)(h)); (s)
| rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a ⊦ ∃ r. a[rhP(r)](mk(rs, f, g)) |
rhP(r)(mk(rs, f)), ¬ a[rhP(r)](mk(rs, f, g)), ∀ r. r ∈ rs → g(r) = a ⊦
Used terms: r
| rhP(r)(mk(rs, f)), ¬ a[rhP(r)](mk(rs, f, g)), ∀ r. r ∈ rs → g(r) = a ⊦ |
⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a)
rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a, ¬ rhP(r)(mk(rs, f)) ∨ (∃ r. ¬(r ∈ rs → g(r) = a)) ⊦
Used terms: a, rhP(r), rs, g, f
| ⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a) |
| rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a, ¬ rhP(r)(mk(rs, f)) ∨ (∃ r. ¬(r ∈ rs → g(r) = a)) ⊦ |
# rs ≠ 0, g(r0) ≠ a, rs ≠ ∅, rhP(r)(mk(rs, f)), r0 ∈ rs, ∀ r. r ∈ rs → g(r) = a ⊦
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic[refset] ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic[refset]
| # rs ≠ 0, g(r0) ≠ a, rs ≠ ∅, rhP(r)(mk(rs, f)), r0 ∈ rs, ∀ r. r ∈ rs → g(r) = a ⊦ |
Used terms: r0
| ¬ a[_∃ rhP](heap-aux), ∃ r. a[rhP(r)](heap-aux) ⊦ |
a[rhP(r)](heap-aux), ¬ a[_∃ rhP](heap-aux) ⊦
| a[rhP(r)](heap-aux), ¬ a[_∃ rhP](heap-aux) ⊦ |
⊦ ∃ rs, f, g. ha = mk(rs, f, g)
a[rhP(r)](heap-aux), ¬ a[_∃ rhP](heap-aux), ∃ rs, f, g. heap-aux = mk(rs, f, g) ⊦
Used terms: heap-aux
| ⊦ ∃ rs, f, g. ha = mk(rs, f, g) |
| a[rhP(r)](heap-aux), ¬ a[_∃ rhP](heap-aux), ∃ rs, f, g. heap-aux = mk(rs, f, g) ⊦ |
a[rhP(r)](mk(rs, f, g)), ¬ a[_∃ rhP](mk(rs, f, g)) ⊦
| a[rhP(r)](mk(rs, f, g)), ¬ a[_∃ rhP](mk(rs, f, g)) ⊦ |
⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a)
a[rhP(r)](mk(rs, f, g)), ¬ (_∃ rhP)(mk(rs, f)) ∨ (∃ r. ¬(r ∈ rs → g(r) = a)) ⊦
Used terms: a, _∃ rhP, rs, g, f
| ⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a) |
| a[rhP(r)](mk(rs, f, g)), ¬ (_∃ rhP)(mk(rs, f)) ∨ (∃ r. ¬(r ∈ rs → g(r) = a)) ⊦ |
a[rhP(r)](mk(rs, f, g)), ¬(∃ r. rhP(r)(mk(rs, f))) ∨ ¬(r0 ∈ rs → g(r0) = a) ⊦
Used simplifier rules: ⊦ (_∃ rP)(h) ↔ (∃ r. rP(r)(h)); (s)
| a[rhP(r)](mk(rs, f, g)), ¬(∃ r. rhP(r)(mk(rs, f))) ∨ ¬(r0 ∈ rs → g(r0) = a) ⊦ |
⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a)
rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a, ¬(∃ r. rhP(r)(mk(rs, f))) ∨ ¬(r0 ∈ rs → g(r0) = a) ⊦
Used terms: a, rhP(r), rs, g, f
| ⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a) |
| rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a, ¬(∃ r. rhP(r)(mk(rs, f))) ∨ ¬(r0 ∈ rs → g(r0) = a) ⊦ |
rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a, ¬(∃ r. rhP(r)(mk(rs, f))) ∨ ¬(r0 ∈ rs → g(r0) = a) ⊦
| rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a, ¬(∃ r. rhP(r)(mk(rs, f))) ∨ ¬(r0 ∈ rs → g(r0) = a) ⊦ |
rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a ⊦ ∃ r. rhP(r)(mk(rs, f))
g(r0) ≠ a, rhP(r)(mk(rs, f)), r0 ∈ rs, ∀ r. r ∈ rs → g(r) = a ⊦
| rhP(r)(mk(rs, f)), ∀ r. r ∈ rs → g(r) = a ⊦ ∃ r. rhP(r)(mk(rs, f)) |
Used terms: r
| g(r0) ≠ a, rhP(r)(mk(rs, f)), r0 ∈ rs, ∀ r. r ∈ rs → g(r) = a ⊦ |
g(r0) ≠ a, rhP(r)(mk(rs, f)), r0 ∈ rs, ∀ r. r ∈ rs → g(r) = a ⊦
| g(r0) ≠ a, rhP(r)(mk(rs, f)), r0 ∈ rs, ∀ r. r ∈ rs → g(r) = a ⊦ |
Used terms: r0
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.