| ⊦ t ≠ t0 → rely(t0, p, p(l := p(l) + W(v, t) ')) |
t ≠ t0, ¬ rely(t0, p, p(l := p(l) + W(v, t) ')) ⊦
| t ≠ t0, ¬ rely(t0, p, p(l := p(l) + W(v, t) ')) ⊦ |
t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) = fowl1 + fowl2 ∧ fowl2 | t0 = []
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);
| t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) = fowl1 + fowl2 ∧ fowl2 | t0 = [] |
l = l0, t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) = fowl1 + fowl2 ∧ fowl2 | t0 = []
l ≠ l0, t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) = fowl1 + fowl2 ∧ fowl2 | t0 = []
Used formulas: l = l0
| l = l0, t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) = fowl1 + fowl2 ∧ fowl2 | t0 = [] |
t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p(l0) + W(v, t) ' = fowl1 + fowl2 ∧ fowl2 | t0 = []
| t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p(l0) + W(v, t) ' = fowl1 + fowl2 ∧ fowl2 | t0 = [] |
t ≠ t0 ⊦ (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4) ∧ p(l0) + W(v, t) ' = p(l0) + W(v, t) ' ∧ W(v, t) ' | t0 = []
Used terms: p(l0), W(v, t) '
| t ≠ t0 ⊦ (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4) ∧ p(l0) + W(v, t) ' = p(l0) + W(v, t) ' ∧ W(v, t) ' | t0 = [] |
t ≠ t0 ⊦ ∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4
Used simplifier rules: ⊦ W(v, tid).tid = tid; (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s)
| t ≠ t0 ⊦ ∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4 |
Used simplifier rules: ⊦ [] |FO = []; (s) ⊦ [] ⊆ x; (s) ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: [], [], p(l0), []
| l ≠ l0, t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) = fowl1 + fowl2 ∧ fowl2 | t0 = [] |
l ≠ l0, t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p(l0) = fowl1 + fowl2 ∧ fowl2 | t0 = []
| l ≠ l0, t ≠ t0 ⊦ ∃ fowl1, fowl2. (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ fowl1 = fowl5 + fowl4) ∧ p(l0) = fowl1 + fowl2 ∧ fowl2 | t0 = [] |
l ≠ l0, t ≠ t0 ⊦ (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4) ∧ p(l0) = p(l0) + [] ∧ [] | t0 = []
Used terms: p(l0), []
| l ≠ l0, t ≠ t0 ⊦ (∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4) ∧ p(l0) = p(l0) + [] ∧ [] | t0 = [] |
l ≠ l0, t ≠ t0 ⊦ ∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4
Used simplifier rules: ⊦ [] | t = []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s)
| l ≠ l0, t ≠ t0 ⊦ ∃ fowl2, fowl3, fowl4, fowl5. p(l0) = fowl2 + fowl3 + fowl4 ∧ fowl5 ⊆ fowl3 |FO ∧ p(l0) = fowl5 + fowl4 |
Used simplifier rules: ⊦ [] |FO = []; (s) ⊦ [] ⊆ x; (s) ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: [], [], p(l0), []
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.