| ⊦ rely(t, pq, bq, pq0, bq0) ∧ noPendingW(t, bq, pq) → noPendingW(t, bq0, pq0) |
noPendingW(t, bq, pq), rely(t, pq, bq, pq0, bq0), ¬ noPendingW(t, bq0, pq0) ⊦
| noPendingW(t, bq, pq), rely(t, pq, bq, pq0, bq0), ¬ noPendingW(t, bq0, pq0) ⊦ |
∀ l. (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ l. pq(l) |W | t = [] ∧ bq(t) |WL l = [] ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = []
Used simplifier rules: 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); noPendingW: ⊦ noPendingW(t, bq, p) ↔ (∀ l. p(l) |W | t = [] ∧ bq(t) |WL l = []);
| ∀ l. (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ l. pq(l) |W | t = [] ∧ bq(t) |WL l = [] ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = [] |
(pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ l. pq(l) |W | t = [] ∧ bq(t) |WL l = [] ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = []
Used terms: l
| (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ l. pq(l) |W | t = [] ∧ bq(t) |WL l = [] ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = [] |
pq(l) |W | t = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = []
Used terms: l
| pq(l) |W | t = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = [] |
pq(l) |W | t = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = []
| pq(l) |W | t = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = [] |
⊦ fowl |W | t = (fowl | t)|W
(pq(l) | t)|W = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = []
Used terms: pq(l), t
| ⊦ fowl |W | t = (fowl | t)|W |
| (pq(l) | t)|W = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ pq0(l) |W | t = [] ∧ bq0(t) |WL l = [] |
⊦ fowl |W | t = (fowl | t)|W
(pq(l) | t)|W = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = []
Used terms: pq0(l), t
| ⊦ fowl |W | t = (fowl | t)|W |
| (pq(l) | t)|W = [], bq(t) |WL l = [], (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l) ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = [] |
⊦ x ⊒ y ↔ (∃ z. z + y = x)
(pq(l) | t)|W = [], bq(t) |WL l = [], ∃ z. z + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l) ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = []
Used terms: (pq(l) | t) + bq(t).FOWs(t, l), (pq0(l) | t) + bq0(t).FOWs(t, l)
| ⊦ x ⊒ y ↔ (∃ z. z + y = x) |
| (pq(l) | t)|W = [], bq(t) |WL l = [], ∃ z. z + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l) ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = [] |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], bq(t) |WL l = [] ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = []
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], bq(t) |WL l = [] ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = [] |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], (fowl + (pq0(l) | t) + bq0(t).FOWs(t, l))|W = ((pq(l) | t) + bq(t).FOWs(t, l))|W, bq(t) |WL l = [] ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = []
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], bq(t) |WL l = [], (fowl + (pq0(l) | t) + bq0(t).FOWs(t, l))|W ≠ ((pq(l) | t) + bq(t).FOWs(t, l))|W ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = []
Used formulas: (fowl + (pq0(l) | t) + bq0(t).FOWs(t, l))|W = ((pq(l) | t) + bq(t).FOWs(t, l))|W
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], (fowl + (pq0(l) | t) + bq0(t).FOWs(t, l))|W = ((pq(l) | t) + bq(t).FOWs(t, l))|W, bq(t) |WL l = [] ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = [] |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], (bq0(t).FOWs(t, l))|W = [], bq(t) |WL l = [], bq0(t) |WL l ≠ [] ⊦
Used simplifier rules: FOWs-loc-empty: ⊦ bel |WL l = [] → (bel.FOWs(t, l))|W = []; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ x + [] = x; (s) ⊦ (fowl + fowl0)|W = fowl |W + fowl0 |W; (s)
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], (bq0(t).FOWs(t, l))|W = [], bq(t) |WL l = [], bq0(t) |WL l ≠ [] ⊦ |
⊦ fowl |W = fowl.filter(λ fow. fow.W?)
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(λ fow. fow.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], bq0(t) |WL l ≠ [] ⊦
Used terms: bq0(t).FOWs(t, l)
| ⊦ fowl |W = fowl.filter(λ fow. fow.W?) |
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(λ fow. fow.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], bq0(t) |WL l ≠ [] ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], bq0(t) |WL l ≠ [] ⊦
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], bq0(t) |WL l ≠ [] ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], ∃ a. a ∈ bq0(t) |WL l ⊦
Used terms: bq0(t) |WL l
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], ∃ a. a ∈ bq0(t) |WL l ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], be ∈ bq0(t) |WL l ⊦
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], be ∈ bq0(t) |WL l ⊦ |
⊦ bel |WL l = bel.filter(λ be. be.W? ∧ be.l = l)
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], be ∈ bq0(t).filter(λ be. be.W? ∧ be.l = l) ⊦
Used terms: bq0(t), l
| ⊦ bel |WL l = bel.filter(λ be. be.W? ∧ be.l = l) |
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], be ∈ bq0(t).filter(λ be. be.W? ∧ be.l = l) ⊦ |
fowl + (pq0(be.l) | t) + bq0(t).FOWs(t, be.l) = (pq(be.l) | t) + bq(t).FOWs(t, be.l), bq0(t).FOWs(t, be.l).filter(.W?) = [], (pq0(be.l) | t)|W = [], fowl |W = [], (pq(be.l) | t)|W = [], bq(t) |WL be.l = [], be.W?, be ∈ bq0(t) ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| fowl + (pq0(be.l) | t) + bq0(t).FOWs(t, be.l) = (pq(be.l) | t) + bq(t).FOWs(t, be.l), bq0(t).FOWs(t, be.l).filter(.W?) = [], (pq0(be.l) | t)|W = [], fowl |W = [], (pq(be.l) | t)|W = [], bq(t) |WL be.l = [], be.W?, be ∈ bq0(t) ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], be = W(l, v), (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], be.W?, be ∈ bq0(t) ⊦
Used simplifier rules: ⊦ be.W? → (l = be.l ∧ v = be.v ↔ be = W(l, v)); (elim) Used terms: be, l, v
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], be = W(l, v), (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], be.W?, be ∈ bq0(t) ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], W(l, v) ∈ bq0(t) ⊦
Used simplifier rules: ⊦ W(l, v).W?; (s)
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t).FOWs(t, l).filter(.W?) = [], (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], W(l, v) ∈ bq0(t) ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], W(l, v) ∈ bq0(t), ∀ a. ¬ a ∈ bq0(t).FOWs(t, l).filter(.W?) ⊦
Used terms: bq0(t).FOWs(t, l).filter(.W?)
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], fowl |W = [], (pq0(l) | t)|W = [], bq(t) |WL l = [], W(l, v) ∈ bq0(t), ∀ a. ¬ a ∈ bq0(t).FOWs(t, l).filter(.W?) ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], W(l, v) ∈ bq0(t), ∀ a. ¬ a ∈ bq0(t).FOWs(t, l) ∨ ¬ a.W? ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq0(l) | t)|W = [], fowl |W = [], (pq(l) | t)|W = [], bq(t) |WL l = [], W(l, v) ∈ bq0(t), ∀ a. ¬ a ∈ bq0(t).FOWs(t, l) ∨ ¬ a.W? ⊦ |
Used simplifier rules: W-in-FOWs: ⊦ W(v, t0) ∈ bel.FOWs(t, l) ↔ t = t0 ∧ W(l, v) ∈ bel; ⊦ W(v, tid).W?; (s) Used terms: W(v, t)
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), (pq(l) | t)|W = [], bq(t) |WL l = [], (fowl + (pq0(l) | t) + bq0(t).FOWs(t, l))|W ≠ ((pq(l) | t) + bq(t).FOWs(t, l))|W ⊦ (pq0(l) | t)|W = [] ∧ bq0(t) |WL l = [] |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list
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.