R
↳Dependency Pair Analysis
APPEND(l1, l2) -> IFAPPEND(l1, l2, isempty(l1))
APPEND(l1, l2) -> ISEMPTY(l1)
IFAPPEND(l1, l2, false) -> HD(l1)
IFAPPEND(l1, l2, false) -> APPEND(tl(l1), l2)
IFAPPEND(l1, l2, false) -> TL(l1)
R
↳DPs
→DP Problem 1
↳Usable Rules (Innermost)
IFAPPEND(l1, l2, false) -> APPEND(tl(l1), l2)
APPEND(l1, l2) -> IFAPPEND(l1, l2, isempty(l1))
isempty(nil) -> true
isempty(cons(x, l)) -> false
hd(cons(x, l)) -> x
tl(cons(x, l)) -> l
append(l1, l2) -> ifappend(l1, l2, isempty(l1))
ifappend(l1, l2, true) -> l2
ifappend(l1, l2, false) -> cons(hd(l1), append(tl(l1), l2))
innermost
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳Narrowing Transformation
IFAPPEND(l1, l2, false) -> APPEND(tl(l1), l2)
APPEND(l1, l2) -> IFAPPEND(l1, l2, isempty(l1))
tl(cons(x, l)) -> l
isempty(cons(x, l)) -> false
isempty(nil) -> true
innermost
two new Dependency Pairs are created:
APPEND(l1, l2) -> IFAPPEND(l1, l2, isempty(l1))
APPEND(cons(x', l'), l2) -> IFAPPEND(cons(x', l'), l2, false)
APPEND(nil, l2) -> IFAPPEND(nil, l2, true)
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳Nar
...
→DP Problem 3
↳Narrowing Transformation
APPEND(cons(x', l'), l2) -> IFAPPEND(cons(x', l'), l2, false)
IFAPPEND(l1, l2, false) -> APPEND(tl(l1), l2)
tl(cons(x, l)) -> l
isempty(cons(x, l)) -> false
isempty(nil) -> true
innermost
one new Dependency Pair is created:
IFAPPEND(l1, l2, false) -> APPEND(tl(l1), l2)
IFAPPEND(cons(x', l'), l2, false) -> APPEND(l', l2)
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳Nar
...
→DP Problem 4
↳Usable Rules (Innermost)
IFAPPEND(cons(x', l'), l2, false) -> APPEND(l', l2)
APPEND(cons(x', l'), l2) -> IFAPPEND(cons(x', l'), l2, false)
tl(cons(x, l)) -> l
isempty(cons(x, l)) -> false
isempty(nil) -> true
innermost
R
↳DPs
→DP Problem 1
↳UsableRules
→DP Problem 2
↳Nar
...
→DP Problem 5
↳Size-Change Principle
IFAPPEND(cons(x', l'), l2, false) -> APPEND(l', l2)
APPEND(cons(x', l'), l2) -> IFAPPEND(cons(x', l'), l2, false)
none
innermost
|
|
|
|
trivial
cons(x1, x2) -> cons(x1, x2)