R
↳Dependency Pair Analysis
F(s(x)) -> F(x)
G(x, c(y)) -> G(x, y)
G(x, c(y)) -> G(x, if(f(x), c(g(s(x), y)), c(y)))
G(x, c(y)) -> IF(f(x), c(g(s(x), y)), c(y))
G(x, c(y)) -> F(x)
G(x, c(y)) -> G(s(x), y)
R
↳DPs
→DP Problem 1
↳Argument Filtering and Ordering
→DP Problem 2
↳Nar
F(s(x)) -> F(x)
f(0) -> true
f(1) -> false
f(s(x)) -> f(x)
if(true, s(x), s(y)) -> s(x)
if(false, s(x), s(y)) -> s(y)
g(x, c(y)) -> c(g(x, y))
g(x, c(y)) -> g(x, if(f(x), c(g(s(x), y)), c(y)))
innermost
F(s(x)) -> F(x)
F(x1) -> F(x1)
s(x1) -> s(x1)
R
↳DPs
→DP Problem 1
↳AFS
→DP Problem 3
↳Dependency Graph
→DP Problem 2
↳Nar
f(0) -> true
f(1) -> false
f(s(x)) -> f(x)
if(true, s(x), s(y)) -> s(x)
if(false, s(x), s(y)) -> s(y)
g(x, c(y)) -> c(g(x, y))
g(x, c(y)) -> g(x, if(f(x), c(g(s(x), y)), c(y)))
innermost
R
↳DPs
→DP Problem 1
↳AFS
→DP Problem 2
↳Narrowing Transformation
G(x, c(y)) -> G(s(x), y)
G(x, c(y)) -> G(x, if(f(x), c(g(s(x), y)), c(y)))
G(x, c(y)) -> G(x, y)
f(0) -> true
f(1) -> false
f(s(x)) -> f(x)
if(true, s(x), s(y)) -> s(x)
if(false, s(x), s(y)) -> s(y)
g(x, c(y)) -> c(g(x, y))
g(x, c(y)) -> g(x, if(f(x), c(g(s(x), y)), c(y)))
innermost
five new Dependency Pairs are created:
G(x, c(y)) -> G(x, if(f(x), c(g(s(x), y)), c(y)))
G(0, c(y)) -> G(0, if(true, c(g(s(0), y)), c(y)))
G(1, c(y)) -> G(1, if(false, c(g(s(1), y)), c(y)))
G(s(x''), c(y)) -> G(s(x''), if(f(x''), c(g(s(s(x'')), y)), c(y)))
G(x'', c(c(y''))) -> G(x'', if(f(x''), c(c(g(s(x''), y''))), c(c(y''))))
G(x'', c(c(y''))) -> G(x'', if(f(x''), c(g(s(x''), if(f(s(x'')), c(g(s(s(x'')), y'')), c(y'')))), c(c(y''))))
R
↳DPs
→DP Problem 1
↳AFS
→DP Problem 2
↳Nar
→DP Problem 4
↳Remaining Obligation(s)
G(s(x''), c(y)) -> G(s(x''), if(f(x''), c(g(s(s(x'')), y)), c(y)))
G(x'', c(c(y''))) -> G(x'', if(f(x''), c(g(s(x''), if(f(s(x'')), c(g(s(s(x'')), y'')), c(y'')))), c(c(y''))))
G(1, c(y)) -> G(1, if(false, c(g(s(1), y)), c(y)))
G(x'', c(c(y''))) -> G(x'', if(f(x''), c(c(g(s(x''), y''))), c(c(y''))))
G(0, c(y)) -> G(0, if(true, c(g(s(0), y)), c(y)))
G(x, c(y)) -> G(x, y)
G(x, c(y)) -> G(s(x), y)
f(0) -> true
f(1) -> false
f(s(x)) -> f(x)
if(true, s(x), s(y)) -> s(x)
if(false, s(x), s(y)) -> s(y)
g(x, c(y)) -> c(g(x, y))
g(x, c(y)) -> g(x, if(f(x), c(g(s(x), y)), c(y)))
innermost