MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: del(x,.(y,z)) -> if(=(x,y),z,.(y,del(x,z))) del(x,nil()) -> nil() min(x,.(y,z)) -> if(<=(x,y),min(x,z),min(y,z)) min(x,nil()) -> x msort(.(x,y)) -> .(min(x,y),msort(del(min(x,y),.(x,y)))) msort(nil()) -> nil() - Signature: {del/2,min/2,msort/1} / {./2,<=/2,=/2,if/3,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {del,min,msort} and constructors {.,<=,=,if,nil} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs del#(x,.(y,z)) -> c_1(del#(x,z)) del#(x,nil()) -> c_2() min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) min#(x,nil()) -> c_4() msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) msort#(nil()) -> c_6() Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: del#(x,.(y,z)) -> c_1(del#(x,z)) del#(x,nil()) -> c_2() min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) min#(x,nil()) -> c_4() msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) msort#(nil()) -> c_6() - Weak TRS: del(x,.(y,z)) -> if(=(x,y),z,.(y,del(x,z))) del(x,nil()) -> nil() min(x,.(y,z)) -> if(<=(x,y),min(x,z),min(y,z)) min(x,nil()) -> x msort(.(x,y)) -> .(min(x,y),msort(del(min(x,y),.(x,y)))) msort(nil()) -> nil() - Signature: {del/2,min/2,msort/1,del#/2,min#/2,msort#/1} / {./2,<=/2,=/2,if/3,nil/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/4,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,min#,msort#} and constructors {.,<=,=,if,nil} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: del(x,.(y,z)) -> if(=(x,y),z,.(y,del(x,z))) del(x,nil()) -> nil() min(x,.(y,z)) -> if(<=(x,y),min(x,z),min(y,z)) min(x,nil()) -> x del#(x,.(y,z)) -> c_1(del#(x,z)) del#(x,nil()) -> c_2() min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) min#(x,nil()) -> c_4() msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) msort#(nil()) -> c_6() * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: del#(x,.(y,z)) -> c_1(del#(x,z)) del#(x,nil()) -> c_2() min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) min#(x,nil()) -> c_4() msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) msort#(nil()) -> c_6() - Weak TRS: del(x,.(y,z)) -> if(=(x,y),z,.(y,del(x,z))) del(x,nil()) -> nil() min(x,.(y,z)) -> if(<=(x,y),min(x,z),min(y,z)) min(x,nil()) -> x - Signature: {del/2,min/2,msort/1,del#/2,min#/2,msort#/1} / {./2,<=/2,=/2,if/3,nil/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/4,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,min#,msort#} and constructors {.,<=,=,if,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2,4,6} by application of Pre({2,4,6}) = {1,3,5}. Here rules are labelled as follows: 1: del#(x,.(y,z)) -> c_1(del#(x,z)) 2: del#(x,nil()) -> c_2() 3: min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) 4: min#(x,nil()) -> c_4() 5: msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) 6: msort#(nil()) -> c_6() * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: del#(x,.(y,z)) -> c_1(del#(x,z)) min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) - Weak DPs: del#(x,nil()) -> c_2() min#(x,nil()) -> c_4() msort#(nil()) -> c_6() - Weak TRS: del(x,.(y,z)) -> if(=(x,y),z,.(y,del(x,z))) del(x,nil()) -> nil() min(x,.(y,z)) -> if(<=(x,y),min(x,z),min(y,z)) min(x,nil()) -> x - Signature: {del/2,min/2,msort/1,del#/2,min#/2,msort#/1} / {./2,<=/2,=/2,if/3,nil/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/4,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,min#,msort#} and constructors {.,<=,=,if,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:del#(x,.(y,z)) -> c_1(del#(x,z)) -->_1 del#(x,nil()) -> c_2():4 -->_1 del#(x,.(y,z)) -> c_1(del#(x,z)):1 2:S:min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) -->_2 min#(x,nil()) -> c_4():5 -->_1 min#(x,nil()) -> c_4():5 -->_2 min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)):2 -->_1 min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)):2 3:S:msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) -->_2 msort#(nil()) -> c_6():6 -->_4 min#(x,nil()) -> c_4():5 -->_1 min#(x,nil()) -> c_4():5 -->_2 msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)):3 -->_4 min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)):2 -->_1 min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)):2 -->_3 del#(x,.(y,z)) -> c_1(del#(x,z)):1 4:W:del#(x,nil()) -> c_2() 5:W:min#(x,nil()) -> c_4() 6:W:msort#(nil()) -> c_6() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 6: msort#(nil()) -> c_6() 5: min#(x,nil()) -> c_4() 4: del#(x,nil()) -> c_2() * Step 5: NaturalMI MAYBE + Considered Problem: - Strict DPs: del#(x,.(y,z)) -> c_1(del#(x,z)) min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) - Weak TRS: del(x,.(y,z)) -> if(=(x,y),z,.(y,del(x,z))) del(x,nil()) -> nil() min(x,.(y,z)) -> if(<=(x,y),min(x,z),min(y,z)) min(x,nil()) -> x - Signature: {del/2,min/2,msort/1,del#/2,min#/2,msort#/1} / {./2,<=/2,=/2,if/3,nil/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/4,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,min#,msort#} and constructors {.,<=,=,if,nil} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_1) = {1}, uargs(c_3) = {1,2}, uargs(c_5) = {1,2,3,4} Following symbols are considered usable: {del,del#,min#,msort#} TcT has computed the following interpretation: p(.) = [4] p(<=) = [0] p(=) = [8] p(del) = [0] p(if) = [0] p(min) = [3] p(msort) = [1] p(nil) = [0] p(del#) = [0] p(min#) = [0] p(msort#) = [1] x1 + [0] p(c_1) = [8] x1 + [0] p(c_2) = [0] p(c_3) = [2] x1 + [2] x2 + [0] p(c_4) = [1] p(c_5) = [2] x1 + [8] x2 + [4] x3 + [8] x4 + [0] p(c_6) = [1] Following rules are strictly oriented: msort#(.(x,y)) = [4] > [0] = c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) Following rules are (at-least) weakly oriented: del#(x,.(y,z)) = [0] >= [0] = c_1(del#(x,z)) min#(x,.(y,z)) = [0] >= [0] = c_3(min#(x,z),min#(y,z)) del(x,.(y,z)) = [0] >= [0] = if(=(x,y),z,.(y,del(x,z))) del(x,nil()) = [0] >= [0] = nil() * Step 6: Failure MAYBE + Considered Problem: - Strict DPs: del#(x,.(y,z)) -> c_1(del#(x,z)) min#(x,.(y,z)) -> c_3(min#(x,z),min#(y,z)) - Weak DPs: msort#(.(x,y)) -> c_5(min#(x,y),msort#(del(min(x,y),.(x,y))),del#(min(x,y),.(x,y)),min#(x,y)) - Weak TRS: del(x,.(y,z)) -> if(=(x,y),z,.(y,del(x,z))) del(x,nil()) -> nil() min(x,.(y,z)) -> if(<=(x,y),min(x,z),min(y,z)) min(x,nil()) -> x - Signature: {del/2,min/2,msort/1,del#/2,min#/2,msort#/1} / {./2,<=/2,=/2,if/3,nil/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/4,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,min#,msort#} and constructors {.,<=,=,if,nil} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE