0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPSizeChangeProof (⇔)
↳7 TRUE
↳8 QDP
↳9 QDPSizeChangeProof (⇔)
↳10 TRUE
↳11 QDP
↳12 QDPSizeChangeProof (⇔)
↳13 TRUE
msort(nil) → nil
msort(.(x, y)) → .(min(x, y), msort(del(min(x, y), .(x, y))))
min(x, nil) → x
min(x, .(y, z)) → if(<=(x, y), min(x, z), min(y, z))
del(x, nil) → nil
del(x, .(y, z)) → if(=(x, y), z, .(y, del(x, z)))
MSORT(.(x, y)) → MIN(x, y)
MSORT(.(x, y)) → MSORT(del(min(x, y), .(x, y)))
MSORT(.(x, y)) → DEL(min(x, y), .(x, y))
MIN(x, .(y, z)) → MIN(x, z)
MIN(x, .(y, z)) → MIN(y, z)
DEL(x, .(y, z)) → DEL(x, z)
msort(nil) → nil
msort(.(x, y)) → .(min(x, y), msort(del(min(x, y), .(x, y))))
min(x, nil) → x
min(x, .(y, z)) → if(<=(x, y), min(x, z), min(y, z))
del(x, nil) → nil
del(x, .(y, z)) → if(=(x, y), z, .(y, del(x, z)))
DEL(x, .(y, z)) → DEL(x, z)
msort(nil) → nil
msort(.(x, y)) → .(min(x, y), msort(del(min(x, y), .(x, y))))
min(x, nil) → x
min(x, .(y, z)) → if(<=(x, y), min(x, z), min(y, z))
del(x, nil) → nil
del(x, .(y, z)) → if(=(x, y), z, .(y, del(x, z)))
Order:Homeomorphic Embedding Order
AFS:
.(x1, x2) = .(x2)
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules [AAECC05,FROCOS05].
none
MIN(x, .(y, z)) → MIN(y, z)
MIN(x, .(y, z)) → MIN(x, z)
msort(nil) → nil
msort(.(x, y)) → .(min(x, y), msort(del(min(x, y), .(x, y))))
min(x, nil) → x
min(x, .(y, z)) → if(<=(x, y), min(x, z), min(y, z))
del(x, nil) → nil
del(x, .(y, z)) → if(=(x, y), z, .(y, del(x, z)))
Order:Homeomorphic Embedding Order
AFS:
.(x1, x2) = .(x2)
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules [AAECC05,FROCOS05].
none
MSORT(.(x, y)) → MSORT(del(min(x, y), .(x, y)))
msort(nil) → nil
msort(.(x, y)) → .(min(x, y), msort(del(min(x, y), .(x, y))))
min(x, nil) → x
min(x, .(y, z)) → if(<=(x, y), min(x, z), min(y, z))
del(x, nil) → nil
del(x, .(y, z)) → if(=(x, y), z, .(y, del(x, z)))
Order:Polynomial interpretation [POLO]:
POL(.(x1, x2)) = 1 + x1
POL(<=(x1, x2)) = x1
POL(=(x1, x2)) = 0
POL(del(x1, x2)) = x1
POL(if(x1, x2, x3)) = x1
POL(min(x1, x2)) = x1
POL(nil) = 0
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules [AAECC05,FROCOS05].
min(x, nil) → x
min(x, .(y, z)) → if(<=(x, y), min(x, z), min(y, z))
del(x, .(y, z)) → if(=(x, y), z, .(y, del(x, z)))