R
↳Dependency Pair Analysis
MERGE(.(x, y), .(u, v)) -> IF(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
MERGE(.(x, y), .(u, v)) -> MERGE(y, .(u, v))
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
++'(.(x, y), z) -> ++'(y, z)
R
↳DPs
→DP Problem 1
↳Forward Instantiation Transformation
→DP Problem 2
↳FwdInst
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
MERGE(.(x, y), .(u, v)) -> MERGE(y, .(u, v))
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
one new Dependency Pair is created:
MERGE(.(x, y), .(u, v)) -> MERGE(y, .(u, v))
MERGE(.(x, .(x'', y'')), .(u'', v'')) -> MERGE(.(x'', y''), .(u'', v''))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 3
↳Forward Instantiation Transformation
→DP Problem 2
↳FwdInst
MERGE(.(x, .(x'', y'')), .(u'', v'')) -> MERGE(.(x'', y''), .(u'', v''))
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
two new Dependency Pairs are created:
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
MERGE(.(x'', y''), .(u, .(u'', v''))) -> MERGE(.(x'', y''), .(u'', v''))
MERGE(.(x'', .(x'''', y'''')), .(u, .(u'''', v''''))) -> MERGE(.(x'', .(x'''', y'''')), .(u'''', v''''))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 3
↳FwdInst
...
→DP Problem 4
↳Forward Instantiation Transformation
→DP Problem 2
↳FwdInst
MERGE(.(x'', .(x'''', y'''')), .(u, .(u'''', v''''))) -> MERGE(.(x'', .(x'''', y'''')), .(u'''', v''''))
MERGE(.(x'', y''), .(u, .(u'', v''))) -> MERGE(.(x'', y''), .(u'', v''))
MERGE(.(x, .(x'', y'')), .(u'', v'')) -> MERGE(.(x'', y''), .(u'', v''))
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
three new Dependency Pairs are created:
MERGE(.(x, .(x'', y'')), .(u'', v'')) -> MERGE(.(x'', y''), .(u'', v''))
MERGE(.(x, .(x'''', .(x''''', y''''))), .(u'''', v'''')) -> MERGE(.(x'''', .(x''''', y'''')), .(u'''', v''''))
MERGE(.(x, .(x'''', y'''')), .(u''0, .(u'''', v''''))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x, .(x'''', .(x'''''', y''''''))), .(u''', .(u'''''', v''''''))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 3
↳FwdInst
...
→DP Problem 5
↳Forward Instantiation Transformation
→DP Problem 2
↳FwdInst
MERGE(.(x, .(x'''', .(x'''''', y''''''))), .(u''', .(u'''''', v''''''))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x, .(x'''', y'''')), .(u''0, .(u'''', v''''))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x, .(x'''', .(x''''', y''''))), .(u'''', v'''')) -> MERGE(.(x'''', .(x''''', y'''')), .(u'''', v''''))
MERGE(.(x'', y''), .(u, .(u'', v''))) -> MERGE(.(x'', y''), .(u'', v''))
MERGE(.(x'', .(x'''', y'''')), .(u, .(u'''', v''''))) -> MERGE(.(x'', .(x'''', y'''')), .(u'''', v''''))
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
five new Dependency Pairs are created:
MERGE(.(x'', y''), .(u, .(u'', v''))) -> MERGE(.(x'', y''), .(u'', v''))
MERGE(.(x'''', y''''), .(u, .(u''0, .(u'''', v'''')))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x'''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u, .(u''', v'''))) -> MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u''', v'''))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u''', .(u'''''''', v'''''''')))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 3
↳FwdInst
...
→DP Problem 6
↳Forward Instantiation Transformation
→DP Problem 2
↳FwdInst
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u''', .(u'''''''', v'''''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u, .(u''', v'''))) -> MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u''', v'''))
MERGE(.(x'''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x'''', y''''), .(u, .(u''0, .(u'''', v'''')))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x, .(x'''', y'''')), .(u''0, .(u'''', v''''))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x, .(x'''', .(x''''', y''''))), .(u'''', v'''')) -> MERGE(.(x'''', .(x''''', y'''')), .(u'''', v''''))
MERGE(.(x'', .(x'''', y'''')), .(u, .(u'''', v''''))) -> MERGE(.(x'', .(x'''', y'''')), .(u'''', v''''))
MERGE(.(x, .(x'''', .(x'''''', y''''''))), .(u''', .(u'''''', v''''''))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
eight new Dependency Pairs are created:
MERGE(.(x'', .(x'''', y'''')), .(u, .(u'''', v''''))) -> MERGE(.(x'', .(x'''', y'''')), .(u'''', v''''))
MERGE(.(x''0, .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''0, .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u, .(u'''''', v''''''))) -> MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u'''''', v''''''))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u'''''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u'''''', .(u'''''''', v'''''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u''0'', .(u'''''', v''''''))))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u''0'', .(u'''''', v''''''))))
MERGE(.(x''', .(x'''''', y''''')), .(u, .(u''''0, .(u'''''', .(u'''''''', v''''''''))))) -> MERGE(.(x''', .(x'''''', y''''')), .(u''''0, .(u'''''', .(u'''''''', v''''''''))))
MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u, .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))) -> MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 3
↳FwdInst
...
→DP Problem 7
↳Polynomial Ordering
→DP Problem 2
↳FwdInst
MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u, .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))) -> MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))
MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', y''''')), .(u, .(u''''0, .(u'''''', .(u'''''''', v''''''''))))) -> MERGE(.(x''', .(x'''''', y''''')), .(u''''0, .(u'''''', .(u'''''''', v''''''''))))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u''0'', .(u'''''', v''''''))))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u''0'', .(u'''''', v''''''))))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u'''''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u'''''', .(u'''''''', v'''''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u, .(u'''''', v''''''))) -> MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u'''''', v''''''))
MERGE(.(x''0, .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''0, .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u, .(u''', v'''))) -> MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u''', v'''))
MERGE(.(x'''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x'''', y''''), .(u, .(u''0, .(u'''', v'''')))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x, .(x'''', .(x'''''', y''''''))), .(u''', .(u'''''', v''''''))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x, .(x'''', y'''')), .(u''0, .(u'''', v''''))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x, .(x'''', .(x''''', y''''))), .(u'''', v'''')) -> MERGE(.(x'''', .(x''''', y'''')), .(u'''', v''''))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u''', .(u'''''''', v'''''''')))
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
MERGE(.(x, .(x'''', .(x'''''', y''''''))), .(u''', .(u'''''', v''''''))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x, .(x'''', y'''')), .(u''0, .(u'''', v''''))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x, .(x'''', .(x''''', y''''))), .(u'''', v'''')) -> MERGE(.(x'''', .(x''''', y'''')), .(u'''', v''''))
POL(.(x1, x2)) = 1 + x2 POL(MERGE(x1, x2)) = 1 + x1
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 3
↳FwdInst
...
→DP Problem 8
↳Polynomial Ordering
→DP Problem 2
↳FwdInst
MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u, .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))) -> MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))
MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', y''''')), .(u, .(u''''0, .(u'''''', .(u'''''''', v''''''''))))) -> MERGE(.(x''', .(x'''''', y''''')), .(u''''0, .(u'''''', .(u'''''''', v''''''''))))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u''0'', .(u'''''', v''''''))))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u''0'', .(u'''''', v''''''))))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u'''''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u'''''', .(u'''''''', v'''''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u, .(u'''''', v''''''))) -> MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u'''''', v''''''))
MERGE(.(x''0, .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''0, .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u, .(u''', v'''))) -> MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u''', v'''))
MERGE(.(x'''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x'''', y''''), .(u, .(u''0, .(u'''', v'''')))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u''', .(u'''''''', v'''''''')))
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u, .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))) -> MERGE(.(x''', .(x'''''', .(x'''''''''', y''''''''''))), .(u''''0, .(u'''''', .(u'''''''''', v''''''''''))))
MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''''''', y''''''''))), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', y''''')), .(u, .(u''''0, .(u'''''', .(u'''''''', v''''''''))))) -> MERGE(.(x''', .(x'''''', y''''')), .(u''''0, .(u'''''', .(u'''''''', v''''''''))))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u''0'', .(u'''''', v''''''))))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u''0'', .(u'''''', v''''''))))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u'''''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u'''''', .(u'''''''', v'''''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u, .(u'''''', v''''''))) -> MERGE(.(x''', .(x''''', .(x'''''''', y''''''))), .(u'''''', v''''''))
MERGE(.(x''0, .(x'''''', y'''''')), .(u, .(u''''0, .(u'''''', v'''''')))) -> MERGE(.(x''0, .(x'''''', y'''''')), .(u''''0, .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u, .(u''', v'''))) -> MERGE(.(x''', .(x'''''''', .(x''''''''', y''''''))), .(u''', v'''))
MERGE(.(x'''', .(x'''''', y'''''')), .(u, .(u''', .(u'''''', v'''''')))) -> MERGE(.(x'''', .(x'''''', y'''''')), .(u''', .(u'''''', v'''''')))
MERGE(.(x'''', y''''), .(u, .(u''0, .(u'''', v'''')))) -> MERGE(.(x'''', y''''), .(u''0, .(u'''', v'''')))
MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u, .(u''', .(u'''''''', v'''''''')))) -> MERGE(.(x''', .(x'''''', .(x'''''''', y''''''''))), .(u''', .(u'''''''', v'''''''')))
POL(.(x1, x2)) = 1 + x2 POL(MERGE(x1, x2)) = 1 + x2
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 3
↳FwdInst
...
→DP Problem 9
↳Dependency Graph
→DP Problem 2
↳FwdInst
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳Forward Instantiation Transformation
++'(.(x, y), z) -> ++'(y, z)
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
one new Dependency Pair is created:
++'(.(x, y), z) -> ++'(y, z)
++'(.(x, .(x'', y'')), z'') -> ++'(.(x'', y''), z'')
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 10
↳Forward Instantiation Transformation
++'(.(x, .(x'', y'')), z'') -> ++'(.(x'', y''), z'')
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
one new Dependency Pair is created:
++'(.(x, .(x'', y'')), z'') -> ++'(.(x'', y''), z'')
++'(.(x, .(x'''', .(x''''', y''''))), z'''') -> ++'(.(x'''', .(x''''', y'''')), z'''')
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 10
↳FwdInst
...
→DP Problem 11
↳Polynomial Ordering
++'(.(x, .(x'''', .(x''''', y''''))), z'''') -> ++'(.(x'''', .(x''''', y'''')), z'''')
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
++'(.(x, .(x'''', .(x''''', y''''))), z'''') -> ++'(.(x'''', .(x''''', y'''')), z'''')
POL(++'(x1, x2)) = 1 + x1 POL(.(x1, x2)) = 1 + x2
R
↳DPs
→DP Problem 1
↳FwdInst
→DP Problem 2
↳FwdInst
→DP Problem 10
↳FwdInst
...
→DP Problem 12
↳Dependency Graph
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost