Term Rewriting System R:
[x, y, z, k, l]
app'(app'(minus, x), 0) -> x
app'(app'(minus, app'(s, x)), app'(s, y)) -> app'(app'(minus, x), y)
app'(app'(minus, app'(app'(minus, x), y)), z) -> app'(app'(minus, x), app'(app'(plus, y), z))
app'(app'(quot, 0), app'(s, y)) -> 0
app'(app'(quot, app'(s, x)), app'(s, y)) -> app'(s, app'(app'(quot, app'(app'(minus, x), y)), app'(s, y)))
app'(app'(plus, 0), y) -> y
app'(app'(plus, app'(s, x)), y) -> app'(s, app'(app'(plus, x), y))
app'(app'(app, nil), k) -> k
app'(app'(app, l), nil) -> l
app'(app'(app, app'(app'(cons, x), l)), k) -> app'(app'(cons, x), app'(app'(app, l), k))
app'(sum, app'(app'(cons, x), nil)) -> app'(app'(cons, x), nil)
app'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> app'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
app'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> app'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))

Innermost Termination of R to be shown.



   R
Dependency Pair Analysis



R contains the following Dependency Pairs:

APP'(app'(minus, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(minus, app'(s, x)), app'(s, y)) -> APP'(minus, x)
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(minus, x), app'(app'(plus, y), z))
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(plus, y), z)
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(plus, y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(s, app'(app'(quot, app'(app'(minus, x), y)), app'(s, y)))
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(quot, app'(app'(minus, x), y)), app'(s, y))
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(quot, app'(app'(minus, x), y))
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(minus, x)
APP'(app'(plus, app'(s, x)), y) -> APP'(s, app'(app'(plus, x), y))
APP'(app'(plus, app'(s, x)), y) -> APP'(app'(plus, x), y)
APP'(app'(plus, app'(s, x)), y) -> APP'(plus, x)
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app'(cons, x), app'(app'(app, l), k))
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app'(app, l), k)
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app, l)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(cons, app'(app'(plus, x), y)), l)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(cons, app'(app'(plus, x), y))
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(plus, x), y)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(plus, x)
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k))))
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))

Furthermore, R contains one SCC.


   R
DPs
       →DP Problem 1
Narrowing Transformation


Dependency Pairs:

APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(plus, x), y)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(cons, app'(app'(plus, x), y)), l)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app'(app, l), k)
APP'(app'(plus, app'(s, x)), y) -> APP'(app'(plus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(quot, app'(app'(minus, x), y)), app'(s, y))
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(plus, y), z)
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(minus, x), app'(app'(plus, y), z))
APP'(app'(minus, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)


Rules:


app'(app'(minus, x), 0) -> x
app'(app'(minus, app'(s, x)), app'(s, y)) -> app'(app'(minus, x), y)
app'(app'(minus, app'(app'(minus, x), y)), z) -> app'(app'(minus, x), app'(app'(plus, y), z))
app'(app'(quot, 0), app'(s, y)) -> 0
app'(app'(quot, app'(s, x)), app'(s, y)) -> app'(s, app'(app'(quot, app'(app'(minus, x), y)), app'(s, y)))
app'(app'(plus, 0), y) -> y
app'(app'(plus, app'(s, x)), y) -> app'(s, app'(app'(plus, x), y))
app'(app'(app, nil), k) -> k
app'(app'(app, l), nil) -> l
app'(app'(app, app'(app'(cons, x), l)), k) -> app'(app'(cons, x), app'(app'(app, l), k))
app'(sum, app'(app'(cons, x), nil)) -> app'(app'(cons, x), nil)
app'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> app'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
app'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> app'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(minus, x), app'(app'(plus, y), z))
two new Dependency Pairs are created:

APP'(app'(minus, app'(app'(minus, x), 0)), z') -> APP'(app'(minus, x), z')
APP'(app'(minus, app'(app'(minus, x), app'(s, x''))), z') -> APP'(app'(minus, x), app'(s, app'(app'(plus, x''), z')))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Narrowing Transformation


Dependency Pairs:

APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(plus, x), y)
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app'(app, l), k)
APP'(app'(plus, app'(s, x)), y) -> APP'(app'(plus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(quot, app'(app'(minus, x), y)), app'(s, y))
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(plus, y), z)
APP'(app'(minus, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(cons, app'(app'(plus, x), y)), l)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))


Rules:


app'(app'(minus, x), 0) -> x
app'(app'(minus, app'(s, x)), app'(s, y)) -> app'(app'(minus, x), y)
app'(app'(minus, app'(app'(minus, x), y)), z) -> app'(app'(minus, x), app'(app'(plus, y), z))
app'(app'(quot, 0), app'(s, y)) -> 0
app'(app'(quot, app'(s, x)), app'(s, y)) -> app'(s, app'(app'(quot, app'(app'(minus, x), y)), app'(s, y)))
app'(app'(plus, 0), y) -> y
app'(app'(plus, app'(s, x)), y) -> app'(s, app'(app'(plus, x), y))
app'(app'(app, nil), k) -> k
app'(app'(app, l), nil) -> l
app'(app'(app, app'(app'(cons, x), l)), k) -> app'(app'(cons, x), app'(app'(app, l), k))
app'(sum, app'(app'(cons, x), nil)) -> app'(app'(cons, x), nil)
app'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> app'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
app'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> app'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(quot, app'(app'(minus, x), y)), app'(s, y))
three new Dependency Pairs are created:

APP'(app'(quot, app'(s, x'')), app'(s, 0)) -> APP'(app'(quot, x''), app'(s, 0))
APP'(app'(quot, app'(s, app'(s, x''))), app'(s, app'(s, y''))) -> APP'(app'(quot, app'(app'(minus, x''), y'')), app'(s, app'(s, y'')))
APP'(app'(quot, app'(s, app'(app'(minus, x''), y''))), app'(s, y0)) -> APP'(app'(quot, app'(app'(minus, x''), app'(app'(plus, y''), y0))), app'(s, y0))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 3
Narrowing Transformation


Dependency Pairs:

APP'(app'(quot, app'(s, app'(s, x''))), app'(s, app'(s, y''))) -> APP'(app'(quot, app'(app'(minus, x''), y'')), app'(s, app'(s, y'')))
APP'(app'(quot, app'(s, app'(app'(minus, x''), y''))), app'(s, y0)) -> APP'(app'(quot, app'(app'(minus, x''), app'(app'(plus, y''), y0))), app'(s, y0))
APP'(app'(quot, app'(s, x'')), app'(s, 0)) -> APP'(app'(quot, x''), app'(s, 0))
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(plus, x), y)
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app'(app, l), k)
APP'(app'(plus, app'(s, x)), y) -> APP'(app'(plus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(plus, y), z)
APP'(app'(minus, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(cons, app'(app'(plus, x), y)), l)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))


Rules:


app'(app'(minus, x), 0) -> x
app'(app'(minus, app'(s, x)), app'(s, y)) -> app'(app'(minus, x), y)
app'(app'(minus, app'(app'(minus, x), y)), z) -> app'(app'(minus, x), app'(app'(plus, y), z))
app'(app'(quot, 0), app'(s, y)) -> 0
app'(app'(quot, app'(s, x)), app'(s, y)) -> app'(s, app'(app'(quot, app'(app'(minus, x), y)), app'(s, y)))
app'(app'(plus, 0), y) -> y
app'(app'(plus, app'(s, x)), y) -> app'(s, app'(app'(plus, x), y))
app'(app'(app, nil), k) -> k
app'(app'(app, l), nil) -> l
app'(app'(app, app'(app'(cons, x), l)), k) -> app'(app'(cons, x), app'(app'(app, l), k))
app'(sum, app'(app'(cons, x), nil)) -> app'(app'(cons, x), nil)
app'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> app'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
app'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> app'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(cons, app'(app'(plus, x), y)), l)
two new Dependency Pairs are created:

APP'(sum, app'(app'(cons, 0), app'(app'(cons, y''), l))) -> APP'(app'(cons, y''), l)
APP'(sum, app'(app'(cons, app'(s, x'')), app'(app'(cons, y''), l))) -> APP'(app'(cons, app'(s, app'(app'(plus, x''), y''))), l)

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 4
Narrowing Transformation


Dependency Pairs:

APP'(app'(quot, app'(s, app'(app'(minus, x''), y''))), app'(s, y0)) -> APP'(app'(quot, app'(app'(minus, x''), app'(app'(plus, y''), y0))), app'(s, y0))
APP'(app'(quot, app'(s, x'')), app'(s, 0)) -> APP'(app'(quot, x''), app'(s, 0))
APP'(sum, app'(app'(cons, app'(s, x'')), app'(app'(cons, y''), l))) -> APP'(app'(cons, app'(s, app'(app'(plus, x''), y''))), l)
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(plus, x), y)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app'(app, l), k)
APP'(app'(plus, app'(s, x)), y) -> APP'(app'(plus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(plus, y), z)
APP'(app'(minus, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(quot, app'(s, app'(s, x''))), app'(s, app'(s, y''))) -> APP'(app'(quot, app'(app'(minus, x''), y'')), app'(s, app'(s, y'')))


Rules:


app'(app'(minus, x), 0) -> x
app'(app'(minus, app'(s, x)), app'(s, y)) -> app'(app'(minus, x), y)
app'(app'(minus, app'(app'(minus, x), y)), z) -> app'(app'(minus, x), app'(app'(plus, y), z))
app'(app'(quot, 0), app'(s, y)) -> 0
app'(app'(quot, app'(s, x)), app'(s, y)) -> app'(s, app'(app'(quot, app'(app'(minus, x), y)), app'(s, y)))
app'(app'(plus, 0), y) -> y
app'(app'(plus, app'(s, x)), y) -> app'(s, app'(app'(plus, x), y))
app'(app'(app, nil), k) -> k
app'(app'(app, l), nil) -> l
app'(app'(app, app'(app'(cons, x), l)), k) -> app'(app'(cons, x), app'(app'(app, l), k))
app'(sum, app'(app'(cons, x), nil)) -> app'(app'(cons, x), nil)
app'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> app'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
app'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> app'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))


Strategy:

innermost




On this DP problem, a Narrowing SCC transformation can be performed.
As a result of transforming the rule

APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))
three new Dependency Pairs are created:

APP'(sum, app'(app'(app, nil), app'(app'(cons, x'), app'(app'(cons, y'), k'')))) -> APP'(sum, app'(sum, app'(app'(cons, x'), app'(app'(cons, y'), k''))))
APP'(sum, app'(app'(app, app'(app'(cons, x''), l'')), app'(app'(cons, x0), app'(app'(cons, y'), k'')))) -> APP'(sum, app'(app'(cons, x''), app'(app'(app, l''), app'(sum, app'(app'(cons, x0), app'(app'(cons, y'), k''))))))
APP'(sum, app'(app'(app, l), app'(app'(cons, x''), app'(app'(cons, y''), k')))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, app'(app'(plus, x''), y'')), k'))))

The transformation is resulting in one new DP problem:



   R
DPs
       →DP Problem 1
Nar
           →DP Problem 2
Nar
             ...
               →DP Problem 5
Remaining Obligation(s)




The following remains to be proven:
Dependency Pairs:

APP'(sum, app'(app'(app, l), app'(app'(cons, x''), app'(app'(cons, y''), k')))) -> APP'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, app'(app'(plus, x''), y'')), k'))))
APP'(app'(quot, app'(s, app'(s, x''))), app'(s, app'(s, y''))) -> APP'(app'(quot, app'(app'(minus, x''), y'')), app'(s, app'(s, y'')))
APP'(app'(quot, app'(s, x'')), app'(s, 0)) -> APP'(app'(quot, x''), app'(s, 0))
APP'(sum, app'(app'(cons, app'(s, x'')), app'(app'(cons, y''), l))) -> APP'(app'(cons, app'(s, app'(app'(plus, x''), y''))), l)
APP'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> APP'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(app'(plus, x), y)
APP'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> APP'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
APP'(app'(app, app'(app'(cons, x), l)), k) -> APP'(app'(app, l), k)
APP'(app'(plus, app'(s, x)), y) -> APP'(app'(plus, x), y)
APP'(app'(quot, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(minus, app'(app'(minus, x), y)), z) -> APP'(app'(plus, y), z)
APP'(app'(minus, app'(s, x)), app'(s, y)) -> APP'(app'(minus, x), y)
APP'(app'(quot, app'(s, app'(app'(minus, x''), y''))), app'(s, y0)) -> APP'(app'(quot, app'(app'(minus, x''), app'(app'(plus, y''), y0))), app'(s, y0))


Rules:


app'(app'(minus, x), 0) -> x
app'(app'(minus, app'(s, x)), app'(s, y)) -> app'(app'(minus, x), y)
app'(app'(minus, app'(app'(minus, x), y)), z) -> app'(app'(minus, x), app'(app'(plus, y), z))
app'(app'(quot, 0), app'(s, y)) -> 0
app'(app'(quot, app'(s, x)), app'(s, y)) -> app'(s, app'(app'(quot, app'(app'(minus, x), y)), app'(s, y)))
app'(app'(plus, 0), y) -> y
app'(app'(plus, app'(s, x)), y) -> app'(s, app'(app'(plus, x), y))
app'(app'(app, nil), k) -> k
app'(app'(app, l), nil) -> l
app'(app'(app, app'(app'(cons, x), l)), k) -> app'(app'(cons, x), app'(app'(app, l), k))
app'(sum, app'(app'(cons, x), nil)) -> app'(app'(cons, x), nil)
app'(sum, app'(app'(cons, x), app'(app'(cons, y), l))) -> app'(sum, app'(app'(cons, app'(app'(plus, x), y)), l))
app'(sum, app'(app'(app, l), app'(app'(cons, x), app'(app'(cons, y), k)))) -> app'(sum, app'(app'(app, l), app'(sum, app'(app'(cons, x), app'(app'(cons, y), k)))))


Strategy:

innermost



Innermost Termination of R could not be shown.
Duration:
0:07 minutes