| ⊦ rely(t, p0, p1) ∧ noPending(t, p0) → noPending(t, p1) |
noPending(t, p0), rely(t, p0, p1), ¬ noPending(t, p1) ⊦
| noPending(t, p0), rely(t, p0, p1), ¬ noPending(t, p1) ⊦ |
noPending(t, p0), ¬ noPending(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);
| noPending(t, p0), ¬ noPending(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 = [] ⊦ |
⊦ noPending(t, p) ↔ (∀ l. p(l) | t = [])
¬ noPending(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) | t = [] ⊦
Used terms: t, p0
| ⊦ noPending(t, p) ↔ (∀ l. p(l) | t = []) |
| ¬ noPending(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) | t = [] ⊦ |
⊦ noPending(t, p) ↔ (∀ l. p(l) | t = [])
∀ l. p0(l) | 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) | t ≠ [] ⊦
Used terms: t, p1
| ⊦ noPending(t, p) ↔ (∀ l. p(l) | t = []) |
| ∀ l. p0(l) | 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) | t ≠ [] ⊦ |
p1(l) | 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) | t = [] ⊦
| p1(l) | 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) | t = [] ⊦ |
p0(l) | t = [], p1(l) | 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) | t = [], p1(l) | 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) | t = [], p1(l) | 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) | t = [], p1(l) | 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) | t = [], p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO ⊦
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p0(l) | t = [], p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) | t ⊦
Used terms: p0(l) | t
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) | t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl2 | t = [], p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ 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, fowl2 | t = [], p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ t ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ 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, p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ t, ∀ a. ¬ a ∈ fowl2 | t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ 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, p1(l) | t ≠ [], fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ t, ∀ a. ¬ a ∈ fowl2 ∨ a.tid ≠ t ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ fowl2 ∨ a.tid ≠ t, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ t, ∃ a. a ∈ p1(l) | t ⊦
Used terms: p1(l) | t
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ fowl2 ∨ a.tid ≠ t, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ t, ∃ a. a ∈ p1(l) | t ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ fowl2 ∨ a.tid ≠ fow.tid, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ fow.tid ⊦
Used simplifier rules: ⊦ fow ∈ fowl | t ↔ fow ∈ fowl ∧ fow.tid = t; (s)
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ fowl2 ∨ a.tid ≠ fow.tid, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ fow.tid ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ fow.tid, ¬ fow ∈ fowl2 ∨ fow.tid ≠ fow.tid ⊦
Used terms: fow
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ fow.tid, ¬ fow ∈ fowl2 ∨ fow.tid ≠ fow.tid ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ fow.tid ⊦
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ∀ a. ¬ a ∈ p0(l) ∨ a.tid ≠ fow.tid ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ p0(l) ∨ fow.tid ≠ fow.tid ⊦
Used terms: fow
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ p0(l) ∨ fow.tid ≠ fow.tid ⊦ |
p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ p0(l) ⊦
| p0(l) = fowl + fowl3 + fowl4, p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ p0(l) ⊦ |
p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ fowl + fowl3 + fowl4 ⊦
| p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ fowl + fowl3 + fowl4 ⊦ |
p1(l) = (fowl5 + fowl4) + fowl2, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ fowl, ¬ fow ∈ fowl3, ¬ fow ∈ 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, fow ∈ p1(l), fowl5 ⊆ fowl3 |FO, ¬ fow ∈ fowl2, ¬ fow ∈ fowl, ¬ fow ∈ fowl3, ¬ fow ∈ 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.