| ⊦ rely(t, p0, p1) ∧ noPendingW(t, p0) → noPendingW(t, p1) |
noPendingW(t, p0), rely(t, p0, p1), ¬ noPendingW(t, p1) ⊦
| noPendingW(t, p0), rely(t, p0, p1), ¬ noPendingW(t, p1) ⊦ |
noPendingW(t, p0), ¬ noPendingW(t, p1), ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [] ⊦
Used simplifier rules: allrely-def: ⊦ rely(t, p, p0) ↔ (∀ l. rely(t, p(l), p0(l))); rely-def: ⊦ rely(t, fowl, fowl0) ↔ (∃ fowl1, fowl2. fowl ⊒W fowl1 ∧ fowl0 = fowl1 + fowl2 ∧ fowl2 | t = []); weak-write-postfix: ⊦ fowl0 ⊒W fowl1 ↔ (∃ fowl2, fowl3, fowl4, fowl5. fowl0 = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4);
| noPendingW(t, p0), ¬ noPendingW(t, p1), ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [] ⊦ |
⊦ noPendingW(t, p) ↔ (∀ l. p(l) |W | t = [])
¬ noPendingW(t, p1), ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [], ∀ l. p0(l) |W | t = [] ⊦
Used terms: t, p0
| ⊦ noPendingW(t, p) ↔ (∀ l. p(l) |W | t = []) |
| ¬ noPendingW(t, p1), ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [], ∀ l. p0(l) |W | t = [] ⊦ |
⊦ noPendingW(t, p) ↔ (∀ l. p(l) |W | t = [])
∀ l. p0(l) |W | t = [], ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [], ∃ l. p1(l) |W | t ≠ [] ⊦
Used terms: t, p1
| ⊦ noPendingW(t, p) ↔ (∀ l. p(l) |W | t = []) |
| ∀ l. p0(l) |W | t = [], ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [], ∃ l. p1(l) |W | t ≠ [] ⊦ |
p1(l) |W | t ≠ [], ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [], ∀ l. p0(l) |W | t = [] ⊦
| p1(l) |W | t ≠ [], ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [], ∀ l. p0(l) |W | t = [] ⊦ |
p0(l) |W | t = [], p1(l) |W | t ≠ [], ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [] ⊦
Used terms: l
| p0(l) |W | t = [], p1(l) |W | t ≠ [], ∀ l. ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [] ⊦ |
p0(l) |W | t = [], p1(l) |W | t ≠ [], ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [] ⊦
Used terms: l
| p0(l) |W | t = [], p1(l) |W | t ≠ [], ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p0(l) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p1(l) = fowl1 + fowl2 ∧ fowl2 | t = [] ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p0(l) |W | t = [], p1(l) |W | t ≠ [], fowl5 ⊆ fowl3 |FO ⊦
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p0(l) |W | t = [], p1(l) |W | t ≠ [], fowl5 ⊆ fowl3 |FO ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p1(l) |W | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) |W | t ⊦
Used terms: p0(l) |W | t
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p1(l) |W | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) |W | t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p1(l) |W | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦
Used simplifier rules: ⊦ fow ∈ fowl |W ↔ fow ∈ fowl ∧ fow.W?; (s) ⊦ fow ∈ fowl | t ↔ fow ∈ fowl ∧ fow.tid = t; (s)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p1(l) |W | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ∃ a. a ∈ p1(l) |W | t ⊦
Used terms: p1(l) |W | t
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ∃ a. a ∈ p1(l) |W | t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | fow.tid = [], fow.W?, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ fow.tid ⊦
Used simplifier rules: ⊦ fow ∈ fowl |W ↔ fow ∈ fowl ∧ fow.W?; (s) ⊦ fow ∈ fowl | t ↔ fow ∈ fowl ∧ fow.tid = t; (s)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | fow.tid = [], fow.W?, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ fow.tid ⊦ |
fow = W(v, t), p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], fow.W?, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦
Used simplifier rules: ⊦ fow.W? → (val = fow.val ∧ tid = fow.tid ↔ fow = W(val, tid)); (elim) Used terms: fow, v, t
| fow = W(v, t), p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], fow.W?, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦
Used simplifier rules: ⊦ W(v, tid).W?; (s)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ∀ a. ¬ a ∈ fowl2 | t ⊦
Used terms: fowl2 | t
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ∀ a. ¬ a ∈ fowl2 | t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ∀ a. ¬ a ∈ fowl2 ∨ a.tid ≠ t ⊦
Used simplifier rules: ⊦ fow ∈ fowl | t ↔ fow ∈ fowl ∧ fow.tid = t; (s)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ∀ a. ¬ a ∈ fowl2 ∨ a.tid ≠ t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ¬ W(v, t) ∈ fowl2 ∨ W(v, t).tid ≠ t ⊦
Used terms: W(v, t)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t, ¬ W(v, t) ∈ fowl2 ∨ W(v, t).tid ≠ t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦
Used simplifier rules: ⊦ W(v, tid).tid = tid; (s)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ∀ a. ¬ a ∈ p0(l) ∨ ¬ a.W? ∨ a.tid ≠ t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ p0(l) ∨ ¬ W(v, t).W? ∨ W(v, t).tid ≠ t ⊦
Used terms: W(v, t)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ p0(l) ∨ ¬ W(v, t).W? ∨ W(v, t).tid ≠ t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ p0(l) ⊦
Used simplifier rules: ⊦ W(v, tid).tid = tid; (s) ⊦ W(v, tid).W?; (s)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ p0(l) ⊦ |
p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ fowl + fowl3 + fowl4 ⊦
| p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ fowl + fowl3 + fowl4 ⊦ |
p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ fowl, ¬ W(v, t) ∈ fowl3, ¬ W(v, t) ∈ fowl4 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s)
| p1(l) = (fowl5 + fowl4) + fowl2, W(v, t) ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ W(v, t) ∈ fowl2, ¬ W(v, t) ∈ fowl, ¬ W(v, t) ∈ fowl3, ¬ W(v, t) ∈ fowl4 ⊦ |
Used simplifier rules: ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list sub-in: ⊦ x ⊆ y ∧ a ∈ x → a ∈ y; (forward) from specification list-set ⊦ fow ∈ fowl |FO ↔ fow ∈ fowl ∧ fow.FO?; (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.