| ⊦ bel0 |SF l = bel1 |SF l → bel0.FOWs(t, l) = bel1.FOWs(t, l) |
bel0 |SF l = bel1 |SF l, bel0.FOWs(t, l) ≠ bel1.FOWs(t, l) ⊦
| bel0 |SF l = bel1 |SF l, bel0.FOWs(t, l) ≠ bel1.FOWs(t, l) ⊦ |
bel0.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), bel0.FOWs(t, l) ≠ bel1.FOWs(t, l) ⊦
Used simplifier rules: B-restrict-SF-l: ⊦ bel |SF l = bel.filter(λ be. be = SF ∨ be.l = l);
| bel0.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), bel0.FOWs(t, l) ≠ bel1.FOWs(t, l) ⊦ |
[].filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), [].FOWs(t, l) ≠ bel1.FOWs(t, l) ⊦
(be + bel).filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), (be + bel).FOWs(t, l) ≠ bel1.FOWs(t, l), ∀ l, bel1, t. ¬(bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l) ∧ bel.FOWs(t, l) ≠ bel1.FOWs(t, l)) ⊦
Used simplifier rules: List('a) freely generated by [], +;;
| [].filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), [].FOWs(t, l) ≠ bel1.FOWs(t, l) ⊦ |
[] = bel1.filter(λ be. be = SF ∨ be.l = l), [] ≠ bel1.FOWs(t, l) ⊦
Used simplifier rules: FOWs-base: ⊦ [].FOWs(t, l) = []; ⊦ [].filter(p) = []; (s)
| [] = bel1.filter(λ be. be = SF ∨ be.l = l), [] ≠ bel1.FOWs(t, l) ⊦ |
[] = (be + bel).filter(λ be. be = SF ∨ be.l = l), [] ≠ (be + bel).FOWs(t, l), ∀ l, t. ¬([] = bel.filter(λ be. be = SF ∨ be.l = l) ∧ [] ≠ bel.FOWs(t, l)) ⊦
Used simplifier rules: FOWs-base: ⊦ [].FOWs(t, l) = []; List('a) freely generated by [], +;; ⊦ [].filter(p) = []; (s)
| [] = (be + bel).filter(λ be. be = SF ∨ be.l = l), [] ≠ (be + bel).FOWs(t, l), ∀ l, t. ¬([] = bel.filter(λ be. be = SF ∨ be.l = l) ∧ [] ≠ bel.FOWs(t, l)) ⊦ |
bel.filter(λ be. be = SF ∨ be.l = l) = [], be.l ≠ l, be ≠ SF, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ be '.FOWs(t, l) = [] ∧ bel.FOWs(t, l) = []
Used simplifier rules: FOWs-append: ⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a + x = a ' + x; (s) ⊦ a ' ≠ []; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| bel.filter(λ be. be = SF ∨ be.l = l) = [], be.l ≠ l, be ≠ SF, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ be '.FOWs(t, l) = [] ∧ bel.FOWs(t, l) = [] |
bel.filter(λ be. be = SF ∨ be.l = l) = [], be = W(l1, v), be.l ≠ l, be ≠ SF, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ be '.FOWs(t, l) = [] ∧ bel.FOWs(t, l) = []
bel.filter(λ be. be = SF ∨ be.l = l) = [], be = FO(l1), be.l ≠ l, be ≠ SF, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ be '.FOWs(t, l) = [] ∧ bel.FOWs(t, l) = []
Used simplifier rules: Bevent freely generated by SF, W, FO;;
| bel.filter(λ be. be = SF ∨ be.l = l) = [], be = W(l1, v), be.l ≠ l, be ≠ SF, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ be '.FOWs(t, l) = [] ∧ bel.FOWs(t, l) = [] |
bel.filter(λ be. be = SF ∨ be.l = l) = [], bel.FOWs(t, l) ≠ [], l1 ≠ l, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦
Used simplifier rules: FOWs-one-W: ⊦ W(l0, v) '.FOWs(t, l) = (l = l0 ⊃ W(v, t) ';[]); ⊦ W(l, v) ≠ SF; (s) ⊦ W(l, v).l = l; (s)
| bel.filter(λ be. be = SF ∨ be.l = l) = [], bel.FOWs(t, l) ≠ [], l1 ≠ l, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ |
Used terms: l, t
| bel.filter(λ be. be = SF ∨ be.l = l) = [], be = FO(l1), be.l ≠ l, be ≠ SF, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ be '.FOWs(t, l) = [] ∧ bel.FOWs(t, l) = [] |
bel.filter(λ be. be = SF ∨ be.l = l) = [], bel.FOWs(t, l) ≠ [], l1 ≠ l, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦
Used simplifier rules: FOWs-one-FO: ⊦ FO(l0) '.FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]); ⊦ FO(l) ≠ SF; (s) ⊦ FO(l).l = l; (s)
| bel.filter(λ be. be = SF ∨ be.l = l) = [], bel.FOWs(t, l) ≠ [], l1 ≠ l, ∀ l0, t0. [] ≠ bel.filter(λ be. be = SF ∨ be.l = l0) ∨ [] = bel.FOWs(t0, l0) ⊦ |
Used terms: l, t
| (be + bel).filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), (be + bel).FOWs(t, l) ≠ bel1.FOWs(t, l), ∀ l, bel1, t. ¬(bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l) ∧ bel.FOWs(t, l) ≠ bel1.FOWs(t, l)) ⊦ |
(be = SF ∨ be.l = l ⊃ be ';[]) + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦
Used simplifier rules: FOWs-append: ⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| (be = SF ∨ be.l = l ⊃ be ';[]) + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l ⊦
[] + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be ∈ bel1, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be ∈ bel1, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = (be0 + bel0).filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ (be0 + bel0).FOWs(t, l), be ∈ be0 + bel0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), ∀ be, bel, l, t. ¬ ( be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l) ∧ be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel0.FOWs(t, l) ∧ be ∈ bel0 ∧ (∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∧ (be = SF ∨ be.l = l)), be = SF ∨ be.l = l ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ [].filter(p) = []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = (be0 + bel0).filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ (be0 + bel0).FOWs(t, l), be ∈ be0 + bel0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), ∀ be, bel, l, t. ¬ ( be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l) ∧ be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel0.FOWs(t, l) ∧ be ∈ bel0 ∧ (∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∧ (be = SF ∨ be.l = l)), be = SF ∨ be.l = l ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = (be0 = SF ∨ be0.l = l ⊃ be0 ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, be = SF ∨ be.l = l, be = be0 ∨ be ∈ bel0 ⊦
Used simplifier rules: FOWs-append: ⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a + x = a ' + x; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = (be0 = SF ∨ be0.l = l ⊃ be0 ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, be = SF ∨ be.l = l, be = be0 ∨ be ∈ bel0 ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = be0 ' + bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = be0 ∨ be ∈ bel0, be = SF ∨ be.l = l, be0 = SF ∨ be0.l = l ⊦
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = [] + bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = be0 ∨ be ∈ bel0, be = SF ∨ be.l = l ⊦
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = be0 ' + bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = be0 ∨ be ∈ bel0, be = SF ∨ be.l = l, be0 = SF ∨ be0.l = l ⊦ |
bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), bel.FOWs(t, l) ≠ bel0.FOWs(t, l), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be0 = SF ∨ be0.l = l ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # x = # z → (x + y = z + y0 ↔ x = z ∧ y = y0); (ws) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws)
| bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), bel.FOWs(t, l) ≠ bel0.FOWs(t, l), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be0 = SF ∨ be0.l = l ⊦ |
Used terms: l, bel0, t
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = [] + bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = be0 ∨ be ∈ bel0, be = SF ∨ be.l = l ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, be ∈ bel0, ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ [] + x = x; (s)
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, be ∈ bel0, ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, be ∈ bel0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, be = SF ∨ be.l = l, be ' + bel.filter(λ be. be = SF ∨ be.l = l) ≠ bel0.filter(λ be. be = SF ∨ be.l = l) ∨ be '.FOWs(t, l) + bel.FOWs(t, l) = bel0.FOWs(t, l) ∨ ¬ be ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be ≠ SF ∧ be.l ≠ l ⊦
Used terms: be, bel, l, t
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, be ∈ bel0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, be = SF ∨ be.l = l, be ' + bel.filter(λ be. be = SF ∨ be.l = l) ≠ bel0.filter(λ be. be = SF ∨ be.l = l) ∨ be '.FOWs(t, l) + bel.FOWs(t, l) = bel0.FOWs(t, l) ∨ ¬ be ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be ≠ SF ∧ be.l ≠ l ⊦ |
be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, be ∈ bel0, ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l, be '.FOWs(t, l) + bel.FOWs(t, l) = bel0.FOWs(t, l) ∨ be ≠ SF ∧ be.l ≠ l ⊦
| be ' + bel.filter(λ be. be = SF ∨ be.l = l) = bel0.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ be0 '.FOWs(t, l) + bel0.FOWs(t, l), be0.l ≠ l, be0 ≠ SF, be ∈ bel0, ∀ be1, bel1, l0, t0. be1 ' + bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ be1 '.FOWs(t0, l0) + bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0) ∨ ¬ be1 ∈ bel0 ∨ ¬(∀ l0, bel0, t0. bel1.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel1.FOWs(t0, l0) = bel0.FOWs(t0, l0)) ∨ be1 ≠ SF ∧ be1.l ≠ l0, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), be = SF ∨ be.l = l, be '.FOWs(t, l) + bel.FOWs(t, l) = bel0.FOWs(t, l) ∨ be ≠ SF ∧ be.l ≠ l ⊦ |
Used simplifier rules: FOWs-one-W: ⊦ W(l0, v) '.FOWs(t, l) = (l = l0 ⊃ W(v, t) ';[]); FOWs-one-FO: ⊦ FO(l0) '.FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]); Bevent freely generated by SF, W, FO;; ⊦ FO(l).l = l; (s) ⊦ FO(l) ≠ SF; (s) ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(l, v).l = l; (s) ⊦ W(l, v) ≠ SF; (s)
| [] + bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦ |
bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s)
| bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦ |
bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), bel.filter(λ be. be = SF ∨ be.l = l) ≠ bel1.filter(λ be. be = SF ∨ be.l = l) ∨ bel.FOWs(t, l) = bel1.FOWs(t, l) ⊦
Used terms: l, bel1, t
| bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) + bel.FOWs(t, l) ≠ bel1.FOWs(t, l), be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0), bel.filter(λ be. be = SF ∨ be.l = l) ≠ bel1.filter(λ be. be = SF ∨ be.l = l) ∨ bel.FOWs(t, l) = bel1.FOWs(t, l) ⊦ |
bel.FOWs(t, l) = bel1.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) ≠ [], be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x = y + x ↔ y = []; (s)
| bel.FOWs(t, l) = bel1.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l) = bel1.filter(λ be. be = SF ∨ be.l = l), be '.FOWs(t, l) ≠ [], be.l ≠ l, be ≠ SF, ∀ l0, bel0, t0. bel.filter(λ be. be = SF ∨ be.l = l0) ≠ bel0.filter(λ be. be = SF ∨ be.l = l0) ∨ bel.FOWs(t0, l0) = bel0.FOWs(t0, l0) ⊦ |
Used simplifier rules: FOWs-one-W: ⊦ W(l0, v) '.FOWs(t, l) = (l = l0 ⊃ W(v, t) ';[]); FOWs-one-FO: ⊦ FO(l0) '.FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]); Bevent freely generated by SF, W, FO;; ⊦ a ' ≠ []; (s) ⊦ FO(l).l = l; (s) ⊦ W(l, v).l = l; (s)
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.