| ⊦ bel ⊒w bel0 ∧ bel.forall(λ be. be = SF ∨ be.l = l) → bel0.forall(λ be. be = SF ∨ be.l = l) |
bel.forall(λ be. be = SF ∨ be.l = l), bel ⊒w bel0, ¬ bel0.forall(λ be. be = SF ∨ be.l = l) ⊦
| bel.forall(λ be. be = SF ∨ be.l = l), bel ⊒w bel0, ¬ bel0.forall(λ be. be = SF ∨ be.l = l) ⊦ |
bel.forall(λ be. be = SF ∨ be.l = l), ¬ bel0.forall(λ be. be = SF ∨ be.l = l), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: B-postfix-weak: ⊦ bel0 ⊒w bel1 ↔ (∀ l. bel0 |SF l ⊒ bel1 |SF l); B-restrict-SF-l: ⊦ bel |SF l = bel.filter(λ be. be = SF ∨ be.l = l);
| bel.forall(λ be. be = SF ∨ be.l = l), ¬ bel0.forall(λ be. be = SF ∨ be.l = l), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) ⊦ |
bel.forall(λ be. be = SF ∨ be.l = l), ¬ (be + bel1).forall(λ be. be = SF ∨ be.l = l), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be + bel1).filter(λ be. be = SF ∨ be.l = l0), ∀ bel, l. ¬ ( bel.forall(λ be. be = SF ∨ be.l = l) ∧ ¬ bel1.forall(λ be. be = SF ∨ be.l = l) ∧ (∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0))) ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ [].forall(p); (s)
| bel.forall(λ be. be = SF ∨ be.l = l), ¬ (be + bel1).forall(λ be. be = SF ∨ be.l = l), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be + bel1).filter(λ be. be = SF ∨ be.l = l0), ∀ bel, l. ¬ ( bel.forall(λ be. be = SF ∨ be.l = l) ∧ ¬ bel1.forall(λ be. be = SF ∨ be.l = l) ∧ (∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0))) ⊦ |
bel.forall(λ be. be = SF ∨ be.l = l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ a + x = a ' + x; (s) ⊦ (a ' + x).forall(p) ↔ p(a) ∧ x.forall(p); (s)
| bel.forall(λ be. be = SF ∨ be.l = l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l) |
bel.forall(λ be. be = SF ∨ be.l = l), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ¬ bel.forall(λ be. be = SF ∨ be.l = l) ∨ bel1.forall(λ be. be = SF ∨ be.l = l) ∨ ¬(∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l)
Used terms: bel, l
| bel.forall(λ be. be = SF ∨ be.l = l), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ¬ bel.forall(λ be. be = SF ∨ be.l = l) ∨ bel1.forall(λ be. be = SF ∨ be.l = l) ∨ ¬(∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l) |
bel.forall(λ be. be = SF ∨ be.l = l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), bel1.forall(λ be. be = SF ∨ be.l = l) ∨ ¬ bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l)
| bel.forall(λ be. be = SF ∨ be.l = l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), bel1.forall(λ be. be = SF ∨ be.l = l) ∨ ¬ bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l) |
bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), bel1.forall(λ be. be = SF ∨ be.l = l) ∨ ¬ bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l)
Used terms: l0
| bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l0. bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be = SF ∨ be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), bel1.forall(λ be. be = SF ∨ be.l = l) ∨ ¬ bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0) ⊦ (be = SF ∨ be.l = l) ∧ bel1.forall(λ be. be = SF ∨ be.l = l) |
be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: ⊦ z ⊒ x + y → z ⊒ y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ (be.l = l0 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
be.l = l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ be ' + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦
be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ [] + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦
| be.l = l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ be ' + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ |
be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
| be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ a ∈ x ∧ ¬ a ∈ y → ¬ y ⊒ x
be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ be ∈ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l) ∧ ¬ be ∈ bel.filter(λ be0. be0 = SF ∨ be0.l = be.l)
Used terms: bel.filter(λ be0. be0 = SF ∨ be0.l = be.l), be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), be
| ⊦ a ∈ x ∧ ¬ a ∈ y → ¬ y ⊒ x |
| be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ be ∈ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l) ∧ ¬ be ∈ bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) |
be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ x.forall(p) ↔ (∀ a. a ∈ x → p(a))
be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ a. a ∈ bel → a = SF ∨ a.l = l ⊦
Used terms: bel, λ be. be = SF ∨ be.l = l
| ⊦ x.forall(p) ↔ (∀ a. a ∈ x → p(a)) |
| be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ a. a ∈ bel → a = SF ∨ a.l = l ⊦ |
Used terms: be
| be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ [] + bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ |
be.l ≠ l0, be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s)
| be.l ≠ l0, be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ (be.l = be.l ⊃ be ';[]) + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦
Used terms: be.l
| be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ (be.l = be.l ⊃ be ';[]) + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ |
be.l ≠ l0, be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
| be.l ≠ l0, be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ a ∈ x ∧ ¬ a ∈ y → ¬ y ⊒ x
be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ be ∈ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l) ∧ ¬ be ∈ bel.filter(λ be0. be0 = SF ∨ be0.l = be.l)
Used terms: bel.filter(λ be0. be0 = SF ∨ be0.l = be.l), be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), be
| ⊦ a ∈ x ∧ ¬ a ∈ y → ¬ y ⊒ x |
| be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), bel.forall(λ be. be = SF ∨ be.l = l), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)) ⊦ be ∈ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l) ∧ ¬ be ∈ bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) |
be.l ≠ l0, be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| be.l ≠ l0, be.l ≠ l, be ≠ SF, bel.forall(λ be. be = SF ∨ be.l = l), bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ x.forall(p) ↔ (∀ a. a ∈ x → p(a))
be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ a. a ∈ bel → a = SF ∨ a.l = l ⊦
Used terms: bel, λ be. be = SF ∨ be.l = l
| ⊦ x.forall(p) ↔ (∀ a. a ∈ x → p(a)) |
| be.l ≠ l0, be.l ≠ l, be ≠ SF, bel1.forall(λ be. be = SF ∨ be.l = l), be ∈ bel, bel.filter(λ be0. be0 = SF ∨ be0.l = be.l) ⊒ be ' + bel1.filter(λ be0. be0 = SF ∨ be0.l = be.l), bel.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) ⊒ (be.l = l1 ⊃ be ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, l0. ¬ bel0.forall(λ be. be = SF ∨ be.l = l0) ∨ bel1.forall(λ be. be = SF ∨ be.l = l0) ∨ ¬(∀ l0. bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bel1.filter(λ be. be = SF ∨ be.l = l0)), ∀ a. a ∈ bel → a = SF ∨ a.l = l ⊦ |
Used terms: be
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.