R
↳Dependency Pair Analysis
APP(g, app(g, x)) -> APP(g, app(h, app(g, x)))
APP(g, app(g, x)) -> APP(h, app(g, x))
APP(h, app(h, x)) -> APP(h, app(app(f, app(h, x)), x))
APP(h, app(h, x)) -> APP(app(f, app(h, x)), x)
APP(h, app(h, x)) -> APP(f, app(h, x))
R
↳DPs
→DP Problem 1
↳Narrowing Transformation
APP(h, app(h, x)) -> APP(app(f, app(h, x)), x)
APP(h, app(h, x)) -> APP(h, app(app(f, app(h, x)), x))
APP(g, app(g, x)) -> APP(h, app(g, x))
APP(g, app(g, x)) -> APP(g, app(h, app(g, x)))
app(g, app(h, app(g, x))) -> app(g, x)
app(g, app(g, x)) -> app(g, app(h, app(g, x)))
app(h, app(h, x)) -> app(h, app(app(f, app(h, x)), x))
two new Dependency Pairs are created:
APP(g, app(g, x)) -> APP(g, app(h, app(g, x)))
APP(g, app(g, app(h, app(g, x'')))) -> APP(g, app(h, app(g, x'')))
APP(g, app(g, app(g, x''))) -> APP(g, app(h, app(g, app(h, app(g, x'')))))
R
↳DPs
→DP Problem 1
↳Nar
→DP Problem 2
↳Narrowing Transformation
APP(g, app(g, app(g, x''))) -> APP(g, app(h, app(g, app(h, app(g, x'')))))
APP(g, app(g, app(h, app(g, x'')))) -> APP(g, app(h, app(g, x'')))
APP(h, app(h, x)) -> APP(h, app(app(f, app(h, x)), x))
APP(g, app(g, x)) -> APP(h, app(g, x))
APP(h, app(h, x)) -> APP(app(f, app(h, x)), x)
app(g, app(h, app(g, x))) -> app(g, x)
app(g, app(g, x)) -> app(g, app(h, app(g, x)))
app(h, app(h, x)) -> app(h, app(app(f, app(h, x)), x))
two new Dependency Pairs are created:
APP(g, app(g, x)) -> APP(h, app(g, x))
APP(g, app(g, app(h, app(g, x'')))) -> APP(h, app(g, x''))
APP(g, app(g, app(g, x''))) -> APP(h, app(g, app(h, app(g, x''))))
R
↳DPs
→DP Problem 1
↳Nar
→DP Problem 2
↳Nar
...
→DP Problem 3
↳Remaining Obligation(s)
APP(g, app(g, app(g, x''))) -> APP(h, app(g, app(h, app(g, x''))))
APP(h, app(h, x)) -> APP(app(f, app(h, x)), x)
APP(h, app(h, x)) -> APP(h, app(app(f, app(h, x)), x))
APP(g, app(g, app(h, app(g, x'')))) -> APP(h, app(g, x''))
APP(g, app(g, app(h, app(g, x'')))) -> APP(g, app(h, app(g, x'')))
APP(g, app(g, app(g, x''))) -> APP(g, app(h, app(g, app(h, app(g, x'')))))
app(g, app(h, app(g, x))) -> app(g, x)
app(g, app(g, x)) -> app(g, app(h, app(g, x)))
app(h, app(h, x)) -> app(h, app(app(f, app(h, x)), x))