| ⊦ reorder(l, fowl0, fowl1, rfo) ∧ fowl0 | t = [] → reorder(l, fowl0 + W(v, t) ', fowl1 + W(v, t) ', rfo) |
fowl0 | t = [], reorder(l, fowl0, fowl1, rfo), ¬ reorder(l, fowl0 + W(v, t) ', fowl1 + W(v, t) ', rfo) ⊦
| fowl0 | t = [], reorder(l, fowl0, fowl1, rfo), ¬ reorder(l, fowl0 + W(v, t) ', fowl1 + W(v, t) ', rfo) ⊦ |
[] | t = [], reorder(l, [], fowl1, rfo), ¬ reorder(l, [] + W(v, t) ', fowl1 + W(v, t) ', rfo) ⊦
fow + fowl | t = [], reorder(l, fow + fowl, fowl1, rfo), ¬ reorder(l, (fow + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t, l, fowl1, rfo, v. ¬(fowl | t = [] ∧ reorder(l, fowl, fowl1, rfo) ∧ ¬ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo)) ⊦
Used simplifier rules: List('a) freely generated by [], +;;
| [] | t = [], reorder(l, [], fowl1, rfo), ¬ reorder(l, [] + W(v, t) ', fowl1 + W(v, t) ', rfo) ⊦ |
¬ reorder(l, W(v, t) ', W(v, t) ', rfo), ∀ t. propFOs(t, l, rfo(t)) = [] ⊦
Used simplifier rules: reorder-base: ⊦ reorder(l, [], fowl0, rfo) ↔ fowl0 = [] ∧ (∀ t. propFOs(t, l, rfo(t)) = []); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ [] | t = []; (s)
| ¬ reorder(l, W(v, t) ', W(v, t) ', rfo), ∀ t. propFOs(t, l, rfo(t)) = [] ⊦ |
⊦ reorder(l, W(v, t) ' + fowl0, fowl1, rfo) ↔ fowl1 ≠ [] ∧ fowl1.head = W(v, t) ∧ reorder(l, fowl0, fowl1.tail, rfo)
Used simplifier rules: reorder-base: ⊦ reorder(l, [], fowl0, rfo) ↔ fowl0 = [] ∧ (∀ t. propFOs(t, l, rfo(t)) = []); ⊦ a ' ≠ []; (s) ⊦ a '.head = a; (s) ⊦ W(v, tid) = W(v0, tid0) ↔ v = v0 ∧ tid = tid0; (ws) ⊦ a '.tail = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: v, l, [], rfo, t, W(v, t) '
| ⊦ reorder(l, W(v, t) ' + fowl0, fowl1, rfo) ↔ fowl1 ≠ [] ∧ fowl1.head = W(v, t) ∧ reorder(l, fowl0, fowl1.tail, rfo) |
| fow + fowl | t = [], reorder(l, fow + fowl, fowl1, rfo), ¬ reorder(l, (fow + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t, l, fowl1, rfo, v. ¬(fowl | t = [] ∧ reorder(l, fowl, fowl1, rfo) ∧ ¬ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo)) ⊦ |
fowl | t = [], t ≠ fow.tid, reorder(l, fow ' + fowl, fowl1, rfo), ¬ reorder(l, (fow ' + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s) ⊦ fowl + fowl0 | t = (fowl | t) + (fowl0 | t); (s)
| fowl | t = [], t ≠ fow.tid, reorder(l, fow ' + fowl, fowl1, rfo), ¬ reorder(l, (fow ' + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ |
fow = FO(t1), fowl | t = [], t ≠ fow.tid, reorder(l, fow ' + fowl, fowl1, rfo), ¬ reorder(l, (fow ' + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦
fow = W(v1, t1), fowl | t = [], t ≠ fow.tid, reorder(l, fow ' + fowl, fowl1, rfo), ¬ reorder(l, (fow ' + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦
Used simplifier rules: FOW freely generated by FO, W;;
| fow = FO(t1), fowl | t = [], t ≠ fow.tid, reorder(l, fow ' + fowl, fowl1, rfo), ¬ reorder(l, (fow ' + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ |
fowl | t = [], t ≠ t1, ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0), fowl1 = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl, fowl2 + fowl3, rfo) ∨ fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl, fowl1, rfo(t1 := rfo(t1) -1l FO(l))) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo), fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l)))
Used simplifier rules: reorder-rec-FO: ⊦ reorder(l, FO(t) ' + fowl, fowl0, rfo) ↔ (∃ fowl1, fowl2. fowl0 = fowl1 + FO(t) ' + fowl2 ∧ fowl1 | t = [] ∧ reorder(l, fowl, fowl1 + fowl2, rfo)) ∨ fowl0 | t = [] ∧ FO(l) ∈ rfo(t) ∧ reorder(l, fowl, fowl0, rfo(t := rfo(t) -1l FO(l))); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ W(v, tid).tid = tid; (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s) ⊦ fowl + fowl0 | t = (fowl | t) + (fowl0 | t); (s) ⊦ FO(tid).tid = tid; (s)
| fowl | t = [], t ≠ t1, ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0), fowl1 = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl, fowl2 + fowl3, rfo) ∨ fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl, fowl1, rfo(t1 := rfo(t1) -1l FO(l))) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo), fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l))) |
fowl1 = fowl2 + FO(t1) ' + fowl3, fowl | t = [], fowl2 | t1 = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo), fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l)))
fowl | t = [], fowl1 | t1 = [], t ≠ t1, reorder(l, fowl, fowl1, rfo(t1 := rfo(t1) -1l FO(l))), FO(l) ∈ rfo(t1), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo), fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l)))
| fowl1 = fowl2 + FO(t1) ' + fowl3, fowl | t = [], fowl2 | t1 = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo), fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l))) |
fowl2 | t1 = [], fowl | t = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl0, fowl4. (fowl2 + FO(t1) ' + fowl3) + W(v, t) ' = fowl0 + FO(t1) ' + fowl4 ∧ fowl0 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl0 + fowl4, rfo)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ FO(tid).tid = tid; (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s) ⊦ fowl + fowl0 | t = (fowl | t) + (fowl0 | t); (s)
| fowl2 | t1 = [], fowl | t = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl0, fowl4. (fowl2 + FO(t1) ' + fowl3) + W(v, t) ' = fowl0 + FO(t1) ' + fowl4 ∧ fowl0 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl0 + fowl4, rfo) |
fowl | t = [], fowl2 | t1 = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0), fowl | t ≠ [] ∨ ¬ reorder(l, fowl, fowl2 + fowl3, rfo) ∨ reorder(l, fowl + W(v, t) ', (fowl2 + fowl3) + W(v, t) ', rfo) ⊦ ∃ fowl0, fowl4. (fowl2 + FO(t1) ' + fowl3) + W(v, t) ' = fowl0 + FO(t1) ' + fowl4 ∧ fowl0 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl0 + fowl4, rfo)
Used terms: t, l, fowl2 + fowl3, rfo, v
| fowl | t = [], fowl2 | t1 = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0), fowl | t ≠ [] ∨ ¬ reorder(l, fowl, fowl2 + fowl3, rfo) ∨ reorder(l, fowl + W(v, t) ', (fowl2 + fowl3) + W(v, t) ', rfo) ⊦ ∃ fowl0, fowl4. (fowl2 + FO(t1) ' + fowl3) + W(v, t) ' = fowl0 + FO(t1) ' + fowl4 ∧ fowl0 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl0 + fowl4, rfo) |
fowl2 | t1 = [], fowl | t = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), reorder(l, fowl + W(v, t) ', (fowl2 + fowl3) + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl0, fowl4. (fowl2 + FO(t1) ' + fowl3) + W(v, t) ' = fowl0 + FO(t1) ' + fowl4 ∧ fowl0 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl0 + fowl4, rfo)
| fowl2 | t1 = [], fowl | t = [], t ≠ t1, reorder(l, fowl, fowl2 + fowl3, rfo), reorder(l, fowl + W(v, t) ', (fowl2 + fowl3) + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl0, fowl4. (fowl2 + FO(t1) ' + fowl3) + W(v, t) ' = fowl0 + FO(t1) ' + fowl4 ∧ fowl0 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl0 + fowl4, rfo) |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl2, fowl3 + W(v, t) '
| fowl | t = [], fowl1 | t1 = [], t ≠ t1, reorder(l, fowl, fowl1, rfo(t1 := rfo(t1) -1l FO(l))), FO(l) ∈ rfo(t1), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo), fowl1 | t1 = [] ∧ FO(l) ∈ rfo(t1) ∧ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l))) |
fowl1 | t1 = [], fowl | t = [], t ≠ t1, reorder(l, fowl, fowl1, rfo(t1 := rfo(t1) -1l FO(l))), FO(l) ∈ rfo(t1), ¬ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l))), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo)
| fowl1 | t1 = [], fowl | t = [], t ≠ t1, reorder(l, fowl, fowl1, rfo(t1 := rfo(t1) -1l FO(l))), FO(l) ∈ rfo(t1), ¬ reorder(l, fowl + W(v, t) ', fowl1 + W(v, t) ', rfo(t1 := rfo(t1) -1l FO(l))), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ ∃ fowl2, fowl3. fowl1 + W(v, t) ' = fowl2 + FO(t1) ' + fowl3 ∧ fowl2 | t1 = [] ∧ reorder(l, fowl + W(v, t) ', fowl2 + fowl3, rfo) |
Used terms: t, l, fowl1, rfo(t1 := rfo(t1) -1l FO(l)), v
| fow = W(v1, t1), fowl | t = [], t ≠ fow.tid, reorder(l, fow ' + fowl, fowl1, rfo), ¬ reorder(l, (fow ' + fowl) + W(v, t) ', fowl1 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ |
fowl1.head = W(v1, t1), fowl | t = [], fowl1 ≠ [], t ≠ t1, reorder(l, fowl, fowl1.tail, rfo), ¬ reorder(l, fowl + W(v, t) ', fowl1.tail + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦
Used simplifier rules: reorder-rec-W: ⊦ reorder(l, W(v, t) ' + fowl0, fowl1, rfo) ↔ fowl1 ≠ [] ∧ fowl1.head = W(v, t) ∧ reorder(l, fowl0, fowl1.tail, rfo); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x ≠ [] → (x + y).tail = x.tail + y; (s) ⊦ x ≠ [] → (x + y).head = x.head; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ W(v, tid).tid = tid; (s)
| fowl1.head = W(v1, t1), fowl | t = [], fowl1 ≠ [], t ≠ t1, reorder(l, fowl, fowl1.tail, rfo), ¬ reorder(l, fowl + W(v, t) ', fowl1.tail + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ |
fow = W(v1, t1), fowl1 = fow + fowl2, fowl | t = [], fowl1 ≠ [], t ≠ t1, reorder(l, fowl, fowl2, rfo), ¬ reorder(l, fowl + W(v, t) ', fowl2 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: fowl1, fow, fowl2
| fow = W(v1, t1), fowl1 = fow + fowl2, fowl | t = [], fowl1 ≠ [], t ≠ t1, reorder(l, fowl, fowl2, rfo), ¬ reorder(l, fowl + W(v, t) ', fowl2 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ |
fowl | t = [], t ≠ t1, reorder(l, fowl, fowl2, rfo), ¬ reorder(l, fowl + W(v, t) ', fowl2 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a + x = a ' + x; (s)
| fowl | t = [], t ≠ t1, reorder(l, fowl, fowl2, rfo), ¬ reorder(l, fowl + W(v, t) ', fowl2 + W(v, t) ', rfo), ∀ t0, l0, fowl0, rfo0, v0. fowl | t0 ≠ [] ∨ ¬ reorder(l0, fowl, fowl0, rfo0) ∨ reorder(l0, fowl + W(v0, t0) ', fowl0 + W(v0, t0) ', rfo0) ⊦ |
Used terms: t, l, fowl2, rfo, v
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.