R
↳Dependency Pair Analysis
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(f, y), app(app(app(fold, f), x), z))
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(f, y)
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(app(fold, f), x), z)
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(times, app(s, x)), y) -> APP(app(plus, app(app(times, x), y)), y)
APP(app(times, app(s, x)), y) -> APP(plus, app(app(times, x), y))
APP(app(times, app(s, x)), y) -> APP(app(times, x), y)
APP(app(times, app(s, x)), y) -> APP(times, x)
SUM -> APP(app(fold, add), 0)
SUM -> APP(fold, add)
PROD -> APP(app(fold, mul), app(s, 0))
PROD -> APP(fold, mul)
PROD -> APP(s, 0)
R
↳DPs
→DP Problem 1
↳Usable Rules (Innermost)
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
APP(app(plus, app(s, x)), y) -> APP(app(plus, x), y)
app(app(app(fold, f), x), nil) -> x
app(app(app(fold, f), x), app(app(cons, y), z)) -> app(app(f, y), app(app(app(fold, f), x), z))
app(app(plus, 0), y) -> y
app(app(plus, app(s, x)), y) -> app(s, app(app(plus, x), y))
app(app(times, 0), y) -> 0
app(app(times, app(s, x)), y) -> app(app(plus, app(app(times, x), y)), y)
sum -> app(app(fold, add), 0)
prod -> app(app(fold, mul), app(s, 0))
innermost
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 4
↳A-Transformation
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
APP(app(plus, app(s, x)), y) -> APP(app(plus, x), y)
none
innermost
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 4
↳ATrans
...
→DP Problem 5
↳Size-Change Principle
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
PLUS(s(x), y) -> PLUS(x, y)
none
innermost
|
|
trivial
s(x1) -> s(x1)
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳Usable Rules (Innermost)
→DP Problem 3
↳UsableRules
APP(app(times, app(s, x)), y) -> APP(app(times, x), y)
app(app(app(fold, f), x), nil) -> x
app(app(app(fold, f), x), app(app(cons, y), z)) -> app(app(f, y), app(app(app(fold, f), x), z))
app(app(plus, 0), y) -> y
app(app(plus, app(s, x)), y) -> app(s, app(app(plus, x), y))
app(app(times, 0), y) -> 0
app(app(times, app(s, x)), y) -> app(app(plus, app(app(times, x), y)), y)
sum -> app(app(fold, add), 0)
prod -> app(app(fold, mul), app(s, 0))
innermost
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 6
↳A-Transformation
→DP Problem 3
↳UsableRules
APP(app(times, app(s, x)), y) -> APP(app(times, x), y)
none
innermost
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 6
↳ATrans
...
→DP Problem 7
↳Size-Change Principle
→DP Problem 3
↳UsableRules
TIMES(s(x), y) -> TIMES(x, y)
none
innermost
|
|
trivial
s(x1) -> s(x1)
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 3
↳Usable Rules (Innermost)
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(app(fold, f), x), z)
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(f, y)
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(f, y), app(app(app(fold, f), x), z))
app(app(app(fold, f), x), nil) -> x
app(app(app(fold, f), x), app(app(cons, y), z)) -> app(app(f, y), app(app(app(fold, f), x), z))
app(app(plus, 0), y) -> y
app(app(plus, app(s, x)), y) -> app(s, app(app(plus, x), y))
app(app(times, 0), y) -> 0
app(app(times, app(s, x)), y) -> app(app(plus, app(app(times, x), y)), y)
sum -> app(app(fold, add), 0)
prod -> app(app(fold, mul), app(s, 0))
innermost
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
→DP Problem 8
↳Narrowing Transformation
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(app(fold, f), x), z)
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(f, y)
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(f, y), app(app(app(fold, f), x), z))
app(app(app(fold, f), x), nil) -> x
app(app(app(fold, f), x), app(app(cons, y), z)) -> app(app(f, y), app(app(app(fold, f), x), z))
app(app(plus, app(s, x)), y) -> app(s, app(app(plus, x), y))
app(app(times, 0), y) -> 0
app(app(times, app(s, x)), y) -> app(app(plus, app(app(times, x), y)), y)
app(app(plus, 0), y) -> y
innermost
eight new Dependency Pairs are created:
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(f, y), app(app(app(fold, f), x), z))
APP(app(app(fold, app(app(fold, f''), x'')), x), app(app(cons, nil), z)) -> APP(x'', app(app(app(fold, app(app(fold, f''), x'')), x), z))
APP(app(app(fold, app(app(fold, f''), x'')), x), app(app(cons, app(app(cons, y''), z'')), z)) -> APP(app(app(f'', y''), app(app(app(fold, f''), x''), z'')), app(app(app(fold, app(app(fold, f''), x'')), x), z))
APP(app(app(fold, app(plus, app(s, x''))), x), app(app(cons, y''), z)) -> APP(app(s, app(app(plus, x''), y'')), app(app(app(fold, app(plus, app(s, x''))), x), z))
APP(app(app(fold, app(times, 0)), x), app(app(cons, y''), z)) -> APP(0, app(app(app(fold, app(times, 0)), x), z))
APP(app(app(fold, app(times, app(s, x''))), x), app(app(cons, y''), z)) -> APP(app(app(plus, app(app(times, x''), y'')), y''), app(app(app(fold, app(times, app(s, x''))), x), z))
APP(app(app(fold, app(plus, 0)), x), app(app(cons, y''), z)) -> APP(y'', app(app(app(fold, app(plus, 0)), x), z))
APP(app(app(fold, f''), x''), app(app(cons, y), nil)) -> APP(app(f'', y), x'')
APP(app(app(fold, f''), x''), app(app(cons, y), app(app(cons, y''), z''))) -> APP(app(f'', y), app(app(f'', y''), app(app(app(fold, f''), x''), z'')))
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳UsableRules
→DP Problem 3
↳UsableRules
→DP Problem 8
↳Nar
...
→DP Problem 9
↳Remaining Obligation(s)
APP(app(app(fold, f''), x''), app(app(cons, y), app(app(cons, y''), z''))) -> APP(app(f'', y), app(app(f'', y''), app(app(app(fold, f''), x''), z'')))
APP(app(app(fold, f''), x''), app(app(cons, y), nil)) -> APP(app(f'', y), x'')
APP(app(app(fold, app(plus, 0)), x), app(app(cons, y''), z)) -> APP(y'', app(app(app(fold, app(plus, 0)), x), z))
APP(app(app(fold, app(times, app(s, x''))), x), app(app(cons, y''), z)) -> APP(app(app(plus, app(app(times, x''), y'')), y''), app(app(app(fold, app(times, app(s, x''))), x), z))
APP(app(app(fold, app(app(fold, f''), x'')), x), app(app(cons, app(app(cons, y''), z'')), z)) -> APP(app(app(f'', y''), app(app(app(fold, f''), x''), z'')), app(app(app(fold, app(app(fold, f''), x'')), x), z))
APP(app(app(fold, app(app(fold, f''), x'')), x), app(app(cons, nil), z)) -> APP(x'', app(app(app(fold, app(app(fold, f''), x'')), x), z))
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(f, y)
APP(app(app(fold, f), x), app(app(cons, y), z)) -> APP(app(app(fold, f), x), z)
app(app(app(fold, f), x), nil) -> x
app(app(app(fold, f), x), app(app(cons, y), z)) -> app(app(f, y), app(app(app(fold, f), x), z))
app(app(plus, app(s, x)), y) -> app(s, app(app(plus, x), y))
app(app(times, 0), y) -> 0
app(app(times, app(s, x)), y) -> app(app(plus, app(app(times, x), y)), y)
app(app(plus, 0), y) -> y
innermost