MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: if_mod(false(),false(),x,y,z) -> x if_mod(false(),true(),x,y,z) -> mod(z,y) if_mod(true(),b,x,y,z) -> divByZeroError() isZero(0()) -> true() isZero(s(x)) -> false() le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,x) -> 0() minus(x,0()) -> x minus(0(),x) -> 0() minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(isZero(y),le(y,x),x,y,minus(x,y)) - Signature: {if_mod/5,isZero/1,le/2,minus/2,mod/2} / {0/0,divByZeroError/0,false/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {if_mod,isZero,le,minus,mod} and constructors {0 ,divByZeroError,false,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs if_mod#(false(),false(),x,y,z) -> c_1() if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) if_mod#(true(),b,x,y,z) -> c_3() isZero#(0()) -> c_4() isZero#(s(x)) -> c_5() le#(0(),y) -> c_6() le#(s(x),0()) -> c_7() le#(s(x),s(y)) -> c_8(le#(x,y)) minus#(x,x) -> c_9() minus#(x,0()) -> c_10() minus#(0(),x) -> c_11() minus#(s(x),s(y)) -> c_12(minus#(x,y)) mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: if_mod#(false(),false(),x,y,z) -> c_1() if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) if_mod#(true(),b,x,y,z) -> c_3() isZero#(0()) -> c_4() isZero#(s(x)) -> c_5() le#(0(),y) -> c_6() le#(s(x),0()) -> c_7() le#(s(x),s(y)) -> c_8(le#(x,y)) minus#(x,x) -> c_9() minus#(x,0()) -> c_10() minus#(0(),x) -> c_11() minus#(s(x),s(y)) -> c_12(minus#(x,y)) mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) - Weak TRS: if_mod(false(),false(),x,y,z) -> x if_mod(false(),true(),x,y,z) -> mod(z,y) if_mod(true(),b,x,y,z) -> divByZeroError() isZero(0()) -> true() isZero(s(x)) -> false() le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,x) -> 0() minus(x,0()) -> x minus(0(),x) -> 0() minus(s(x),s(y)) -> minus(x,y) mod(x,y) -> if_mod(isZero(y),le(y,x),x,y,minus(x,y)) - Signature: {if_mod/5,isZero/1,le/2,minus/2,mod/2,if_mod#/5,isZero#/1,le#/2,minus#/2,mod#/2} / {0/0,divByZeroError/0 ,false/0,s/1,true/0,c_1/0,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/0,c_8/1,c_9/0,c_10/0,c_11/0,c_12/1,c_13/4} - Obligation: innermost runtime complexity wrt. defined symbols {if_mod#,isZero#,le#,minus#,mod#} and constructors {0 ,divByZeroError,false,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: isZero(0()) -> true() isZero(s(x)) -> false() le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,x) -> 0() minus(x,0()) -> x minus(0(),x) -> 0() minus(s(x),s(y)) -> minus(x,y) if_mod#(false(),false(),x,y,z) -> c_1() if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) if_mod#(true(),b,x,y,z) -> c_3() isZero#(0()) -> c_4() isZero#(s(x)) -> c_5() le#(0(),y) -> c_6() le#(s(x),0()) -> c_7() le#(s(x),s(y)) -> c_8(le#(x,y)) minus#(x,x) -> c_9() minus#(x,0()) -> c_10() minus#(0(),x) -> c_11() minus#(s(x),s(y)) -> c_12(minus#(x,y)) mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: if_mod#(false(),false(),x,y,z) -> c_1() if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) if_mod#(true(),b,x,y,z) -> c_3() isZero#(0()) -> c_4() isZero#(s(x)) -> c_5() le#(0(),y) -> c_6() le#(s(x),0()) -> c_7() le#(s(x),s(y)) -> c_8(le#(x,y)) minus#(x,x) -> c_9() minus#(x,0()) -> c_10() minus#(0(),x) -> c_11() minus#(s(x),s(y)) -> c_12(minus#(x,y)) mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) - Weak TRS: isZero(0()) -> true() isZero(s(x)) -> false() le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,x) -> 0() minus(x,0()) -> x minus(0(),x) -> 0() minus(s(x),s(y)) -> minus(x,y) - Signature: {if_mod/5,isZero/1,le/2,minus/2,mod/2,if_mod#/5,isZero#/1,le#/2,minus#/2,mod#/2} / {0/0,divByZeroError/0 ,false/0,s/1,true/0,c_1/0,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/0,c_8/1,c_9/0,c_10/0,c_11/0,c_12/1,c_13/4} - Obligation: innermost runtime complexity wrt. defined symbols {if_mod#,isZero#,le#,minus#,mod#} and constructors {0 ,divByZeroError,false,s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,3,4,5,6,7,9,10,11} by application of Pre({1,3,4,5,6,7,9,10,11}) = {8,12,13}. Here rules are labelled as follows: 1: if_mod#(false(),false(),x,y,z) -> c_1() 2: if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) 3: if_mod#(true(),b,x,y,z) -> c_3() 4: isZero#(0()) -> c_4() 5: isZero#(s(x)) -> c_5() 6: le#(0(),y) -> c_6() 7: le#(s(x),0()) -> c_7() 8: le#(s(x),s(y)) -> c_8(le#(x,y)) 9: minus#(x,x) -> c_9() 10: minus#(x,0()) -> c_10() 11: minus#(0(),x) -> c_11() 12: minus#(s(x),s(y)) -> c_12(minus#(x,y)) 13: mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) le#(s(x),s(y)) -> c_8(le#(x,y)) minus#(s(x),s(y)) -> c_12(minus#(x,y)) mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) - Weak DPs: if_mod#(false(),false(),x,y,z) -> c_1() if_mod#(true(),b,x,y,z) -> c_3() isZero#(0()) -> c_4() isZero#(s(x)) -> c_5() le#(0(),y) -> c_6() le#(s(x),0()) -> c_7() minus#(x,x) -> c_9() minus#(x,0()) -> c_10() minus#(0(),x) -> c_11() - Weak TRS: isZero(0()) -> true() isZero(s(x)) -> false() le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,x) -> 0() minus(x,0()) -> x minus(0(),x) -> 0() minus(s(x),s(y)) -> minus(x,y) - Signature: {if_mod/5,isZero/1,le/2,minus/2,mod/2,if_mod#/5,isZero#/1,le#/2,minus#/2,mod#/2} / {0/0,divByZeroError/0 ,false/0,s/1,true/0,c_1/0,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/0,c_8/1,c_9/0,c_10/0,c_11/0,c_12/1,c_13/4} - Obligation: innermost runtime complexity wrt. defined symbols {if_mod#,isZero#,le#,minus#,mod#} and constructors {0 ,divByZeroError,false,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) -->_1 mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)):4 2:S:le#(s(x),s(y)) -> c_8(le#(x,y)) -->_1 le#(s(x),0()) -> c_7():10 -->_1 le#(0(),y) -> c_6():9 -->_1 le#(s(x),s(y)) -> c_8(le#(x,y)):2 3:S:minus#(s(x),s(y)) -> c_12(minus#(x,y)) -->_1 minus#(0(),x) -> c_11():13 -->_1 minus#(x,0()) -> c_10():12 -->_1 minus#(x,x) -> c_9():11 -->_1 minus#(s(x),s(y)) -> c_12(minus#(x,y)):3 4:S:mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) -->_4 minus#(0(),x) -> c_11():13 -->_4 minus#(x,0()) -> c_10():12 -->_4 minus#(x,x) -> c_9():11 -->_3 le#(s(x),0()) -> c_7():10 -->_3 le#(0(),y) -> c_6():9 -->_2 isZero#(s(x)) -> c_5():8 -->_2 isZero#(0()) -> c_4():7 -->_1 if_mod#(true(),b,x,y,z) -> c_3():6 -->_1 if_mod#(false(),false(),x,y,z) -> c_1():5 -->_4 minus#(s(x),s(y)) -> c_12(minus#(x,y)):3 -->_3 le#(s(x),s(y)) -> c_8(le#(x,y)):2 -->_1 if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)):1 5:W:if_mod#(false(),false(),x,y,z) -> c_1() 6:W:if_mod#(true(),b,x,y,z) -> c_3() 7:W:isZero#(0()) -> c_4() 8:W:isZero#(s(x)) -> c_5() 9:W:le#(0(),y) -> c_6() 10:W:le#(s(x),0()) -> c_7() 11:W:minus#(x,x) -> c_9() 12:W:minus#(x,0()) -> c_10() 13:W:minus#(0(),x) -> c_11() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 5: if_mod#(false(),false(),x,y,z) -> c_1() 6: if_mod#(true(),b,x,y,z) -> c_3() 7: isZero#(0()) -> c_4() 8: isZero#(s(x)) -> c_5() 9: le#(0(),y) -> c_6() 10: le#(s(x),0()) -> c_7() 11: minus#(x,x) -> c_9() 12: minus#(x,0()) -> c_10() 13: minus#(0(),x) -> c_11() * Step 5: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) le#(s(x),s(y)) -> c_8(le#(x,y)) minus#(s(x),s(y)) -> c_12(minus#(x,y)) mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) - Weak TRS: isZero(0()) -> true() isZero(s(x)) -> false() le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,x) -> 0() minus(x,0()) -> x minus(0(),x) -> 0() minus(s(x),s(y)) -> minus(x,y) - Signature: {if_mod/5,isZero/1,le/2,minus/2,mod/2,if_mod#/5,isZero#/1,le#/2,minus#/2,mod#/2} / {0/0,divByZeroError/0 ,false/0,s/1,true/0,c_1/0,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/0,c_8/1,c_9/0,c_10/0,c_11/0,c_12/1,c_13/4} - Obligation: innermost runtime complexity wrt. defined symbols {if_mod#,isZero#,le#,minus#,mod#} and constructors {0 ,divByZeroError,false,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) -->_1 mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)):4 2:S:le#(s(x),s(y)) -> c_8(le#(x,y)) -->_1 le#(s(x),s(y)) -> c_8(le#(x,y)):2 3:S:minus#(s(x),s(y)) -> c_12(minus#(x,y)) -->_1 minus#(s(x),s(y)) -> c_12(minus#(x,y)):3 4:S:mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),isZero#(y),le#(y,x),minus#(x,y)) -->_4 minus#(s(x),s(y)) -> c_12(minus#(x,y)):3 -->_3 le#(s(x),s(y)) -> c_8(le#(x,y)):2 -->_1 if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),le#(y,x),minus#(x,y)) * Step 6: Failure MAYBE + Considered Problem: - Strict DPs: if_mod#(false(),true(),x,y,z) -> c_2(mod#(z,y)) le#(s(x),s(y)) -> c_8(le#(x,y)) minus#(s(x),s(y)) -> c_12(minus#(x,y)) mod#(x,y) -> c_13(if_mod#(isZero(y),le(y,x),x,y,minus(x,y)),le#(y,x),minus#(x,y)) - Weak TRS: isZero(0()) -> true() isZero(s(x)) -> false() le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) minus(x,x) -> 0() minus(x,0()) -> x minus(0(),x) -> 0() minus(s(x),s(y)) -> minus(x,y) - Signature: {if_mod/5,isZero/1,le/2,minus/2,mod/2,if_mod#/5,isZero#/1,le#/2,minus#/2,mod#/2} / {0/0,divByZeroError/0 ,false/0,s/1,true/0,c_1/0,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/0,c_8/1,c_9/0,c_10/0,c_11/0,c_12/1,c_13/3} - Obligation: innermost runtime complexity wrt. defined symbols {if_mod#,isZero#,le#,minus#,mod#} and constructors {0 ,divByZeroError,false,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE