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