| ⊦ (h | t) | false = [] ↔ (∀ l. ((h | l) | t) | false = []) |
⊦ h.filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [] ↔ (∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [])
Used simplifier rules: restrict-loc: ⊦ h | l = h.filter(λ vpe. vpe._1.l = l); restrict-thread: ⊦ h | t = h.filter(λ vpe. vpe._1.t = t); restrict-vp: ⊦ h | b = h.filter(λ vpe. vpe._2 ↔ b);
| ⊦ h.filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [] ↔ (∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = []) |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
⊦ ¬(∃ a. a ∈ h.filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2)) ↔ (∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [])
Used terms: h.filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2)
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| ⊦ ¬(∃ a. a ∈ h.filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2)) ↔ (∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = []) |
⊦ ¬(∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2) ↔ (∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [])
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| ⊦ ¬(∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2) ↔ (∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = []) |
⊦ ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [], ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2
∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [], ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2 ⊦
| ⊦ ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [], ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2 |
h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2
| h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2 |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
∃ a. a ∈ h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) ⊦ ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2
Used terms: h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2)
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| ∃ a. a ∈ h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) ⊦ ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2 |
vpe ∈ h ⊦ vpe._2, ∃ vpe0. vpe0 ∈ h ∧ vpe0._1.t = vpe._1.t ∧ ¬ vpe0._2
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| vpe ∈ h ⊦ vpe._2, ∃ vpe0. vpe0 ∈ h ∧ vpe0._1.t = vpe._1.t ∧ ¬ vpe0._2 |
¬ boolvar, vpe = (e, boolvar), vpe ∈ h ⊦ ∃ vpe0. vpe0 ∈ h ∧ vpe0._1.t = e.t ∧ ¬ vpe0._2
Used terms: e, boolvar
| ¬ boolvar, vpe = (e, boolvar), vpe ∈ h ⊦ ∃ vpe0. vpe0 ∈ h ∧ vpe0._1.t = e.t ∧ ¬ vpe0._2 |
(e, false) ∈ h ⊦ ∃ vpe0. vpe0 ∈ h ∧ vpe0._1.t = e.t ∧ ¬ vpe0._2
| (e, false) ∈ h ⊦ ∃ vpe0. vpe0 ∈ h ∧ vpe0._1.t = e.t ∧ ¬ vpe0._2 |
Used terms: (e, false)
| ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe. vpe._1.t = t).filter(λ vpe. ¬ vpe._2) = [], ∃ vpe. vpe ∈ h ∧ vpe._1.t = t ∧ ¬ vpe._2 ⊦ |
vpe ∈ h, ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe0. vpe0._1.t = vpe._1.t).filter(λ vpe. ¬ vpe._2) = [] ⊦ vpe._2
| vpe ∈ h, ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe0. vpe0._1.t = vpe._1.t).filter(λ vpe. ¬ vpe._2) = [] ⊦ vpe._2 |
¬ boolvar, vpe = (e, boolvar), vpe ∈ h, ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) = [] ⊦
Used terms: e, boolvar
| ¬ boolvar, vpe = (e, boolvar), vpe ∈ h, ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) = [] ⊦ |
(e, false) ∈ h, ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) = [] ⊦
| (e, false) ∈ h, ∀ l. h.filter(λ vpe. vpe._1.l = l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) = [] ⊦ |
h.filter(λ vpe. vpe._1.l = e.l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) = [], (e, false) ∈ h ⊦
Used terms: e.l
| h.filter(λ vpe. vpe._1.l = e.l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) = [], (e, false) ∈ h ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
(e, false) ∈ h, ∀ a. ¬ a ∈ h.filter(λ vpe. vpe._1.l = e.l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) ⊦
Used terms: h.filter(λ vpe. vpe._1.l = e.l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2)
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| (e, false) ∈ h, ∀ a. ¬ a ∈ h.filter(λ vpe. vpe._1.l = e.l).filter(λ vpe0. vpe0._1.t = e.t).filter(λ vpe. ¬ vpe._2) ⊦ |
(e, false) ∈ h, ∀ a. ¬ a ∈ h ∨ a._1.l ≠ e.l ∨ a._1.t ≠ e.t ∨ a._2 ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| (e, false) ∈ h, ∀ a. ¬ a ∈ h ∨ a._1.l ≠ e.l ∨ a._1.t ≠ e.t ∨ a._2 ⊦ |
Used terms: (e, false)
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.