MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: ack_in(0(),n) -> ack_out(s(n)) ack_in(s(m),0()) -> u11(ack_in(m,s(0()))) ack_in(s(m),s(n)) -> u21(ack_in(s(m),n),m) u11(ack_out(n)) -> ack_out(n) u21(ack_out(n),m) -> u22(ack_in(m,n)) u22(ack_out(n)) -> ack_out(n) - Signature: {ack_in/2,u11/1,u21/2,u22/1} / {0/0,ack_out/1,s/1} - Obligation: innermost runtime complexity wrt. defined symbols {ack_in,u11,u21,u22} and constructors {0,ack_out,s} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs ack_in#(0(),n) -> c_1() ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))) ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) u11#(ack_out(n)) -> c_4() u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)) u22#(ack_out(n)) -> c_6() Weak DPs and mark the set of starting terms. * Step 2: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: ack_in#(0(),n) -> c_1() ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))) ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) u11#(ack_out(n)) -> c_4() u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)) u22#(ack_out(n)) -> c_6() - Weak TRS: ack_in(0(),n) -> ack_out(s(n)) ack_in(s(m),0()) -> u11(ack_in(m,s(0()))) ack_in(s(m),s(n)) -> u21(ack_in(s(m),n),m) u11(ack_out(n)) -> ack_out(n) u21(ack_out(n),m) -> u22(ack_in(m,n)) u22(ack_out(n)) -> ack_out(n) - Signature: {ack_in/2,u11/1,u21/2,u22/1,ack_in#/2,u11#/1,u21#/2,u22#/1} / {0/0,ack_out/1,s/1,c_1/0,c_2/2,c_3/2,c_4/0 ,c_5/2,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {ack_in#,u11#,u21#,u22#} and constructors {0,ack_out,s} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,4,6} by application of Pre({1,4,6}) = {2,5}. Here rules are labelled as follows: 1: ack_in#(0(),n) -> c_1() 2: ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))) 3: ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) 4: u11#(ack_out(n)) -> c_4() 5: u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)) 6: u22#(ack_out(n)) -> c_6() * Step 3: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))) ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)) - Weak DPs: ack_in#(0(),n) -> c_1() u11#(ack_out(n)) -> c_4() u22#(ack_out(n)) -> c_6() - Weak TRS: ack_in(0(),n) -> ack_out(s(n)) ack_in(s(m),0()) -> u11(ack_in(m,s(0()))) ack_in(s(m),s(n)) -> u21(ack_in(s(m),n),m) u11(ack_out(n)) -> ack_out(n) u21(ack_out(n),m) -> u22(ack_in(m,n)) u22(ack_out(n)) -> ack_out(n) - Signature: {ack_in/2,u11/1,u21/2,u22/1,ack_in#/2,u11#/1,u21#/2,u22#/1} / {0/0,ack_out/1,s/1,c_1/0,c_2/2,c_3/2,c_4/0 ,c_5/2,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {ack_in#,u11#,u21#,u22#} and constructors {0,ack_out,s} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))) -->_2 ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)):2 -->_1 u11#(ack_out(n)) -> c_4():5 -->_2 ack_in#(0(),n) -> c_1():4 2:S:ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) -->_1 u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)):3 -->_2 ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)):2 -->_2 ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))):1 3:S:u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)) -->_1 u22#(ack_out(n)) -> c_6():6 -->_2 ack_in#(0(),n) -> c_1():4 -->_2 ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)):2 -->_2 ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))):1 4:W:ack_in#(0(),n) -> c_1() 5:W:u11#(ack_out(n)) -> c_4() 6:W:u22#(ack_out(n)) -> c_6() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 5: u11#(ack_out(n)) -> c_4() 4: ack_in#(0(),n) -> c_1() 6: u22#(ack_out(n)) -> c_6() * Step 4: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))) ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)) - Weak TRS: ack_in(0(),n) -> ack_out(s(n)) ack_in(s(m),0()) -> u11(ack_in(m,s(0()))) ack_in(s(m),s(n)) -> u21(ack_in(s(m),n),m) u11(ack_out(n)) -> ack_out(n) u21(ack_out(n),m) -> u22(ack_in(m,n)) u22(ack_out(n)) -> ack_out(n) - Signature: {ack_in/2,u11/1,u21/2,u22/1,ack_in#/2,u11#/1,u21#/2,u22#/1} / {0/0,ack_out/1,s/1,c_1/0,c_2/2,c_3/2,c_4/0 ,c_5/2,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {ack_in#,u11#,u21#,u22#} and constructors {0,ack_out,s} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))) -->_2 ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)):2 2:S:ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) -->_1 u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)):3 -->_2 ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)):2 -->_2 ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))):1 3:S:u21#(ack_out(n),m) -> c_5(u22#(ack_in(m,n)),ack_in#(m,n)) -->_2 ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)):2 -->_2 ack_in#(s(m),0()) -> c_2(u11#(ack_in(m,s(0()))),ack_in#(m,s(0()))):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: ack_in#(s(m),0()) -> c_2(ack_in#(m,s(0()))) u21#(ack_out(n),m) -> c_5(ack_in#(m,n)) * Step 5: WeightGap MAYBE + Considered Problem: - Strict DPs: ack_in#(s(m),0()) -> c_2(ack_in#(m,s(0()))) ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) u21#(ack_out(n),m) -> c_5(ack_in#(m,n)) - Weak TRS: ack_in(0(),n) -> ack_out(s(n)) ack_in(s(m),0()) -> u11(ack_in(m,s(0()))) ack_in(s(m),s(n)) -> u21(ack_in(s(m),n),m) u11(ack_out(n)) -> ack_out(n) u21(ack_out(n),m) -> u22(ack_in(m,n)) u22(ack_out(n)) -> ack_out(n) - Signature: {ack_in/2,u11/1,u21/2,u22/1,ack_in#/2,u11#/1,u21#/2,u22#/1} / {0/0,ack_out/1,s/1,c_1/0,c_2/1,c_3/2,c_4/0 ,c_5/1,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {ack_in#,u11#,u21#,u22#} and constructors {0,ack_out,s} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 0, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: 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(u11) = {1}, uargs(u21) = {1}, uargs(u22) = {1}, uargs(u21#) = {1}, uargs(c_2) = {1}, uargs(c_3) = {1,2}, uargs(c_5) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(0) = [0] p(ack_in) = [3] p(ack_out) = [3] p(s) = [0] p(u11) = [1] x1 + [0] p(u21) = [1] x1 + [0] p(u22) = [1] x1 + [0] p(ack_in#) = [0] p(u11#) = [0] p(u21#) = [1] x1 + [0] p(u22#) = [0] p(c_1) = [0] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [1] x2 + [0] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [0] Following rules are strictly oriented: u21#(ack_out(n),m) = [3] > [0] = c_5(ack_in#(m,n)) Following rules are (at-least) weakly oriented: ack_in#(s(m),0()) = [0] >= [0] = c_2(ack_in#(m,s(0()))) ack_in#(s(m),s(n)) = [0] >= [3] = c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) ack_in(0(),n) = [3] >= [3] = ack_out(s(n)) ack_in(s(m),0()) = [3] >= [3] = u11(ack_in(m,s(0()))) ack_in(s(m),s(n)) = [3] >= [3] = u21(ack_in(s(m),n),m) u11(ack_out(n)) = [3] >= [3] = ack_out(n) u21(ack_out(n),m) = [3] >= [3] = u22(ack_in(m,n)) u22(ack_out(n)) = [3] >= [3] = ack_out(n) Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 6: Failure MAYBE + Considered Problem: - Strict DPs: ack_in#(s(m),0()) -> c_2(ack_in#(m,s(0()))) ack_in#(s(m),s(n)) -> c_3(u21#(ack_in(s(m),n),m),ack_in#(s(m),n)) - Weak DPs: u21#(ack_out(n),m) -> c_5(ack_in#(m,n)) - Weak TRS: ack_in(0(),n) -> ack_out(s(n)) ack_in(s(m),0()) -> u11(ack_in(m,s(0()))) ack_in(s(m),s(n)) -> u21(ack_in(s(m),n),m) u11(ack_out(n)) -> ack_out(n) u21(ack_out(n),m) -> u22(ack_in(m,n)) u22(ack_out(n)) -> ack_out(n) - Signature: {ack_in/2,u11/1,u21/2,u22/1,ack_in#/2,u11#/1,u21#/2,u22#/1} / {0/0,ack_out/1,s/1,c_1/0,c_2/1,c_3/2,c_4/0 ,c_5/1,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {ack_in#,u11#,u21#,u22#} and constructors {0,ack_out,s} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE