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