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