| ⊦ rely(t, pq, bq, pq0, bq0) ∧ bq(t) ⊒w bq0(t) ∧ noPending(t, bq, pq) → noPending(t, bq0, pq0) |
noPending(t, bq, pq), rely(t, pq, bq, pq0, bq0), bq(t) ⊒w bq0(t), ¬ noPending(t, bq0, pq0) ⊦
| noPending(t, bq, pq), rely(t, pq, bq, pq0, bq0), bq(t) ⊒w bq0(t), ¬ noPending(t, bq0, pq0) ⊦ |
bq(t) = [], ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ pq0(l) | t = [] ∧ bq0(t) = []
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); rely-def: ⊦ rely(t, pq, bq, pq0, bq0) ↔ (∀ l. rely(t, l, pq(l), bq(t), pq0(l), bq0(t))); rely-local-def: ⊦ rely(t, l, fowl, bel, fowl0, bel0) ↔ (fowl | t) + bel.FOWs(t, l) ⊒ (fowl0 | t) + bel0.FOWs(t, l); noPending: ⊦ noPending(t, bq, p) ↔ (∀ l. p(l) | t = [] ∧ bq(t) = []); FOWs-base: ⊦ [].FOWs(t, l) = []; ⊦ [] ⊒ x ↔ x = []; (s) ⊦ [].filter(p) = []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s)
| bq(t) = [], ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ pq0(l) | t = [] ∧ bq0(t) = [] |
bq(t) = [], pq(l) | t = [], ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l. pq(l) | t = [] ⊦ pq0(l) | t = [] ∧ bq0(t) = []
Used terms: l
| bq(t) = [], pq(l) | t = [], ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l. pq(l) | t = [] ⊦ pq0(l) | t = [] ∧ bq0(t) = [] |
bq(t) = [], pq(l) | t = [], pq(l) | t ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ pq0(l) | t = [] ∧ bq0(t) = []
Used terms: l
| bq(t) = [], pq(l) | t = [], pq(l) | t ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ pq0(l) | t = [] ∧ bq0(t) = [] |
bq0(t).FOWs(t, l) = [], bq(t) = [], pq(l) | t = [], pq0(l) | t = [], bq0(t) ≠ [], ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ [] ⊒ x ↔ x = []; (s)
| bq0(t).FOWs(t, l) = [], bq(t) = [], pq(l) | t = [], pq0(l) | t = [], bq0(t) ≠ [], ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ |
⊦ x = [] ↔ ¬(∃ a, y. x = a ' + y)
bq0(t).FOWs(t, l) = [], bq(t) = [], pq0(l) | t = [], pq(l) | t = [], ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l. pq(l) | t = [], ∃ a, y. bq0(t) = a ' + y ⊦
Used terms: bq0(t)
| ⊦ x = [] ↔ ¬(∃ a, y. x = a ' + y) |
| bq0(t).FOWs(t, l) = [], bq(t) = [], pq0(l) | t = [], pq(l) | t = [], ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l. pq(l) | t = [], ∃ a, y. bq0(t) = a ' + y ⊦ |
bq0(t).FOWs(t, l) = [], bq(t) = [], bq0(t) = be ' + bel, pq(l) | t = [], pq0(l) | t = [], be ∈ bq0(t), ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| bq0(t).FOWs(t, l) = [], bq(t) = [], bq0(t) = be ' + bel, pq(l) | t = [], pq0(l) | t = [], be ∈ bq0(t), ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq0(t).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ |
(be ' + bel).FOWs(t, l) = [], bq(t) = [], bq0(t) = be ' + bel, pq0(l) | t = [], pq(l) | t = [], be ∈ be ' + bel, ∀ l0. (be ' + bel).filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (be ' + bel).FOWs(t, l0), ∀ l. pq(l) | t = [] ⊦
| (be ' + bel).FOWs(t, l) = [], bq(t) = [], bq0(t) = be ' + bel, pq0(l) | t = [], pq(l) | t = [], be ∈ be ' + bel, ∀ l0. (be ' + bel).filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (be ' + bel).FOWs(t, l0), ∀ l. pq(l) | t = [] ⊦ |
(be ' + bel).FOWs(t, l) = [], be = W(l1, v), bq(t) = [], bq0(t) = be ' + bel, pq(l) | t = [], pq0(l) | t = [], be ∈ be ' + bel, ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (be ' + bel).FOWs(t, l0), ∀ l0. (be ' + bel).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦
(be ' + bel).FOWs(t, l) = [], be = FO(l1), bq(t) = [], bq0(t) = be ' + bel, pq(l) | t = [], pq0(l) | t = [], be ∈ be ' + bel, ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (be ' + bel).FOWs(t, l0), ∀ l0. (be ' + bel).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦
Used simplifier rules: FOWs-SF: ⊦ (SF ' + bel).FOWs(t, l) = bel.FOWs(t, l); Bevent freely generated by SF, W, FO;; ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| (be ' + bel).FOWs(t, l) = [], be = W(l1, v), bq(t) = [], bq0(t) = be ' + bel, pq(l) | t = [], pq0(l) | t = [], be ∈ be ' + bel, ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (be ' + bel).FOWs(t, l0), ∀ l0. (be ' + bel).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ |
bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = W(l1, v) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, W(l1, v) ∈ bq0(t), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l0) ⊦
Used simplifier rules: FOWs-W: ⊦ (W(l0, v) ' + bel).FOWs(t, l) = (l = l0 ⊃ W(v, t) ';[]) + bel.FOWs(t, l); a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ W(l, v).l = l; (s) ⊦ W(l, v) ≠ SF; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = W(l1, v) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, W(l1, v) ∈ bq0(t), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l0) ⊦ |
bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = W(l1, v) ' + bel, pq(l) | t = [], pq0(l) | t = [], l ≠ l1, W(l1, v) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + (l1 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l1), ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l0), ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l. pq(l) | t = [] ⊦
Used terms: l1
| bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = W(l1, v) ' + bel, pq(l) | t = [], pq0(l) | t = [], l ≠ l1, W(l1, v) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + (l1 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l1), ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l0), ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l. pq(l) | t = [] ⊦ |
bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = W(l1, v) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, W(l1, v) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + W(v, t) ' + bel.FOWs(t, l1), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list
| bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = W(l1, v) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, W(l1, v) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + W(v, t) ' + bel.FOWs(t, l1), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ W(v, t) ';[]) + bel.FOWs(t, l0) ⊦ |
Used simplifier rules: ⊦ [] ⊒ x ↔ x = []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: l1
| (be ' + bel).FOWs(t, l) = [], be = FO(l1), bq(t) = [], bq0(t) = be ' + bel, pq(l) | t = [], pq0(l) | t = [], be ∈ be ' + bel, ∀ l. pq(l) | t = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (be ' + bel).FOWs(t, l0), ∀ l0. (be ' + bel).filter(λ be. be = SF ∨ be.l = l0) = [] ⊦ |
bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = FO(l1) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, FO(l1) ∈ bq0(t), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l0) ⊦
Used simplifier rules: FOWs-FO: ⊦ (FO(l0) ' + bel).FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]) + bel.FOWs(t, l); a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ FO(l).l = l; (s) ⊦ FO(l) ≠ SF; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = FO(l1) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, FO(l1) ∈ bq0(t), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l0) ⊦ |
bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = FO(l1) ' + bel, pq(l) | t = [], pq0(l) | t = [], l ≠ l1, FO(l1) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + (l1 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l1), ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l0), ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l. pq(l) | t = [] ⊦
Used terms: l1
| bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = FO(l1) ' + bel, pq(l) | t = [], pq0(l) | t = [], l ≠ l1, FO(l1) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + (l1 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l1), ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l0), ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l. pq(l) | t = [] ⊦ |
bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = FO(l1) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, FO(l1) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + FO(t) ' + bel.FOWs(t, l1), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list
| bel.FOWs(t, l) = [], bq(t) = [], bq0(t) = FO(l1) ' + bel, pq0(l) | t = [], pq(l) | t = [], l ≠ l1, FO(l1) ∈ bq0(t), pq(l1) | t ⊒ (pq0(l1) | t) + FO(t) ' + bel.FOWs(t, l1), ∀ l. pq(l) | t = [], ∀ l0. l1 ≠ l0 ∧ bel.filter(λ be. be = SF ∨ be.l = l0) = [], ∀ l0. pq(l0) | t ⊒ (pq0(l0) | t) + (l0 = l1 ⊃ FO(t) ';[]) + bel.FOWs(t, l0) ⊦ |
Used simplifier rules: ⊦ [] ⊒ x ↔ x = []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: l1
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.