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