* Step 1: Sum WORST_CASE(Omega(n^1),O(n^2))
+ Considered Problem:
- Strict TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append,f_1,f_2,f_3,lt,qsort,split} and constructors {0
,add,false,nil,pair,s,true}
+ Applied Processor:
Sum {left = someStrategy, right = someStrategy}
+ Details:
()
** Step 1.a:1: DecreasingLoops WORST_CASE(Omega(n^1),?)
+ Considered Problem:
- Strict TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append,f_1,f_2,f_3,lt,qsort,split} and constructors {0
,add,false,nil,pair,s,true}
+ Applied Processor:
DecreasingLoops {bound = AnyLoop, narrow = 10}
+ Details:
The system has following decreasing Loops:
append(y,z){y -> add(x,y)} =
append(add(x,y),z) ->^+ add(x,append(y,z))
= C[append(y,z) = append(y,z){}]
** Step 1.b:1: DependencyPairs WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append,f_1,f_2,f_3,lt,qsort,split} and constructors {0
,add,false,nil,pair,s,true}
+ Applied Processor:
DependencyPairs {dpKind_ = DT}
+ Details:
We add the following dependency tuples:
Strict DPs
append#(add(N,X),Y) -> c_1(append#(X,Y))
append#(nil(),Y) -> c_2()
f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M))
f_2#(false(),N,M,Y,X,Z) -> c_4()
f_2#(true(),N,M,Y,X,Z) -> c_5()
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(0(),s(X)) -> c_7()
lt#(s(X),0()) -> c_8()
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
qsort#(nil()) -> c_11()
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
split#(N,nil()) -> c_13()
Weak DPs
and mark the set of starting terms.
** Step 1.b:2: PredecessorEstimation WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
append#(nil(),Y) -> c_2()
f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M))
f_2#(false(),N,M,Y,X,Z) -> c_4()
f_2#(true(),N,M,Y,X,Z) -> c_5()
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(0(),s(X)) -> c_7()
lt#(s(X),0()) -> c_8()
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
qsort#(nil()) -> c_11()
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
split#(N,nil()) -> c_13()
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
PredecessorEstimation {onSelection = all simple predecessor estimation selector}
+ Details:
We estimate the number of application of
{2,4,5,7,8,11,13}
by application of
Pre({2,4,5,7,8,11,13}) = {1,3,6,9,10,12}.
Here rules are labelled as follows:
1: append#(add(N,X),Y) -> c_1(append#(X,Y))
2: append#(nil(),Y) -> c_2()
3: f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M))
4: f_2#(false(),N,M,Y,X,Z) -> c_4()
5: f_2#(true(),N,M,Y,X,Z) -> c_5()
6: f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
7: lt#(0(),s(X)) -> c_7()
8: lt#(s(X),0()) -> c_8()
9: lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
10: qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
11: qsort#(nil()) -> c_11()
12: split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
13: split#(N,nil()) -> c_13()
** Step 1.b:3: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak DPs:
append#(nil(),Y) -> c_2()
f_2#(false(),N,M,Y,X,Z) -> c_4()
f_2#(true(),N,M,Y,X,Z) -> c_5()
lt#(0(),s(X)) -> c_7()
lt#(s(X),0()) -> c_8()
qsort#(nil()) -> c_11()
split#(N,nil()) -> c_13()
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:append#(add(N,X),Y) -> c_1(append#(X,Y))
-->_1 append#(nil(),Y) -> c_2():7
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
2:S:f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M))
-->_2 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):4
-->_2 lt#(s(X),0()) -> c_8():11
-->_2 lt#(0(),s(X)) -> c_7():10
-->_1 f_2#(true(),N,M,Y,X,Z) -> c_5():9
-->_1 f_2#(false(),N,M,Y,X,Z) -> c_4():8
3:S:f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
-->_3 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
-->_3 qsort#(nil()) -> c_11():12
-->_2 qsort#(nil()) -> c_11():12
-->_1 append#(nil(),Y) -> c_2():7
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
4:S:lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
-->_1 lt#(s(X),0()) -> c_8():11
-->_1 lt#(0(),s(X)) -> c_7():10
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):4
5:S:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):6
-->_2 split#(N,nil()) -> c_13():13
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z)):3
6:S:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,nil()) -> c_13():13
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):6
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M)):2
7:W:append#(nil(),Y) -> c_2()
8:W:f_2#(false(),N,M,Y,X,Z) -> c_4()
9:W:f_2#(true(),N,M,Y,X,Z) -> c_5()
10:W:lt#(0(),s(X)) -> c_7()
11:W:lt#(s(X),0()) -> c_8()
12:W:qsort#(nil()) -> c_11()
13:W:split#(N,nil()) -> c_13()
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
12: qsort#(nil()) -> c_11()
13: split#(N,nil()) -> c_13()
8: f_2#(false(),N,M,Y,X,Z) -> c_4()
9: f_2#(true(),N,M,Y,X,Z) -> c_5()
10: lt#(0(),s(X)) -> c_7()
11: lt#(s(X),0()) -> c_8()
7: append#(nil(),Y) -> c_2()
** Step 1.b:4: SimplifyRHS WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/2,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:append#(add(N,X),Y) -> c_1(append#(X,Y))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
2:S:f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M))
-->_2 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):4
3:S:f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
-->_3 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
4:S:lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):4
5:S:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):6
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z)):3
6:S:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):6
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(f_2#(lt(N,M),N,M,Y,X,Z),lt#(N,M)):2
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
** Step 1.b:5: Decompose WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
+ Details:
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
Problem (R)
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
- Weak DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
Problem (S)
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
*** Step 1.b:5.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
- Weak DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:append#(add(N,X),Y) -> c_1(append#(X,Y))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
2:W:f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):4
3:W:f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
-->_3 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
4:W:lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):4
5:W:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z)):3
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):6
6:W:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M)):2
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):6
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
6: split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
2: f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
4: lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
*** Step 1.b:5.a:2: SimplifyRHS WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:append#(add(N,X),Y) -> c_1(append#(X,Y))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
3:W:f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
-->_3 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):5
5:W:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z)):3
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X))
*** Step 1.b:5.a:3: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/1,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: append#(add(N,X),Y) -> c_1(append#(X,Y))
The strictly oriented rules are moved into the weak component.
**** Step 1.b:5.a:3.a:1: NaturalPI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/1,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a polynomial interpretation of kind constructor-based(mixed(2)):
The following argument positions are considered usable:
uargs(c_1) = {1},
uargs(c_6) = {1,2,3},
uargs(c_10) = {1}
Following symbols are considered usable:
{append,f_1,f_2,f_3,qsort,split,append#,f_1#,f_2#,f_3#,lt#,qsort#,split#}
TcT has computed the following interpretation:
p(0) = 0
p(add) = 1 + x2
p(append) = x1 + x2
p(f_1) = 1 + x1
p(f_2) = 1 + x5 + x6
p(f_3) = 1 + 2*x1
p(false) = 0
p(lt) = 0
p(nil) = 0
p(pair) = x1 + x2
p(qsort) = 2*x1
p(s) = 0
p(split) = x2
p(true) = 1
p(append#) = x1
p(f_1#) = 1 + 2*x1*x2 + 2*x2*x4 + 2*x4 + x4^2
p(f_2#) = 2*x1 + 2*x1*x2 + x1*x3 + x1*x5 + 2*x1*x6 + 2*x2 + x2^2 + x3*x4 + 2*x3*x5 + 2*x3*x6 + x3^2 + x4 + x4*x5 + x4*x6 + 2*x4^2 + x5 + x6^2
p(f_3#) = 1 + 3*x1 + x1^2
p(lt#) = 0
p(qsort#) = x1 + x1^2
p(split#) = 2*x2^2
p(c_1) = x1
p(c_2) = 0
p(c_3) = 0
p(c_4) = 1
p(c_5) = 0
p(c_6) = 1 + x1 + x2 + x3
p(c_7) = 0
p(c_8) = 1
p(c_9) = 0
p(c_10) = x1
p(c_11) = 0
p(c_12) = x2
p(c_13) = 0
Following rules are strictly oriented:
append#(add(N,X),Y) = 1 + X
> X
= c_1(append#(X,Y))
Following rules are (at-least) weakly oriented:
f_3#(pair(Y,Z),N,X) = 1 + 3*Y + 2*Y*Z + Y^2 + 3*Z + Z^2
>= 1 + 3*Y + Y^2 + Z + Z^2
= c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
qsort#(add(N,X)) = 2 + 3*X + X^2
>= 1 + 3*X + X^2
= c_10(f_3#(split(N,X),N,X))
append(add(N,X),Y) = 1 + X + Y
>= 1 + X + Y
= add(N,append(X,Y))
append(nil(),Y) = Y
>= Y
= Y
f_1(pair(X,Z),N,M,Y) = 1 + X + Z
>= 1 + X + Z
= f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) = 1 + X + Z
>= 1 + X + Z
= pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) = 1 + X + Z
>= 1 + X + Z
= pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) = 1 + 2*Y + 2*Z
>= 1 + 2*Y + 2*Z
= append(qsort(Y),add(X,qsort(Z)))
qsort(add(N,X)) = 2 + 2*X
>= 1 + 2*X
= f_3(split(N,X),N,X)
qsort(nil()) = 0
>= 0
= nil()
split(N,add(M,Y)) = 1 + Y
>= 1 + Y
= f_1(split(N,Y),N,M,Y)
split(N,nil()) = 0
>= 0
= pair(nil(),nil())
**** Step 1.b:5.a:3.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/1,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
**** Step 1.b:5.a:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/1,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:append#(add(N,X),Y) -> c_1(append#(X,Y))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
2:W:f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
-->_3 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X)):3
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X)):3
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):1
3:W:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X))
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z)):2
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
2: f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
3: qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X))
1: append#(add(N,X),Y) -> c_1(append#(X,Y))
**** Step 1.b:5.a:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/1,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
*** Step 1.b:5.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak DPs:
append#(add(N,X),Y) -> c_1(append#(X,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):3
2:S:f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):6
-->_3 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
3:S:lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):3
4:S:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z)):2
5:S:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M)):1
6:W:append#(add(N,X),Y) -> c_1(append#(X,Y))
-->_1 append#(add(N,X),Y) -> c_1(append#(X,Y)):6
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
6: append#(add(N,X),Y) -> c_1(append#(X,Y))
*** Step 1.b:5.b:2: SimplifyRHS WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):3
2:S:f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z))
-->_3 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
3:S:lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):3
4:S:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(append#(qsort(Y),add(X,qsort(Z))),qsort#(Y),qsort#(Z)):2
5:S:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M)):1
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
*** Step 1.b:5.b:3: UsableRules WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
append(add(N,X),Y) -> add(N,append(X,Y))
append(nil(),Y) -> Y
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z)))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
qsort(add(N,X)) -> f_3(split(N,X),N,X)
qsort(nil()) -> nil()
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
*** Step 1.b:5.b:4: Decompose WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
+ Details:
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
Problem (R)
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
Problem (S)
- Strict DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
**** Step 1.b:5.b:4.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
3: lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
The strictly oriented rules are moved into the weak component.
***** Step 1.b:5.b:4.a:1.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
The following argument positions are considered usable:
uargs(c_3) = {1},
uargs(c_6) = {1,2},
uargs(c_9) = {1},
uargs(c_10) = {1,2},
uargs(c_12) = {1,2}
Following symbols are considered usable:
{f_1,f_2,split,append#,f_1#,f_2#,f_3#,lt#,qsort#,split#}
TcT has computed the following interpretation:
p(0) = [0]
[0]
[1]
p(add) = [0 1 0] [0 0 0] [1]
[0 0 0] x1 + [0 1 1] x2 + [0]
[0 0 1] [0 0 1] [0]
p(append) = [0]
[0]
[0]
p(f_1) = [0 0 1] [0 0 1] [0]
[1 1 0] x1 + [0 0 0] x3 + [0]
[1 0 0] [0 0 1] [0]
p(f_2) = [0 0 1] [0 0 1] [0 0 1] [0]
[0 0 0] x3 + [0 1 1] x5 + [0 1 1] x6 + [0]
[0 0 1] [0 0 1] [0 0 1] [0]
p(f_3) = [0]
[0]
[0]
p(false) = [0]
[0]
[0]
p(lt) = [0 0 0] [0 0 0] [0]
[0 0 1] x1 + [0 0 1] x2 + [1]
[0 0 0] [0 0 0] [0]
p(nil) = [0]
[0]
[0]
p(pair) = [0 0 1] [0 0 1] [0]
[0 1 0] x1 + [0 1 0] x2 + [0]
[0 0 1] [0 0 1] [0]
p(qsort) = [0]
[0]
[0]
p(s) = [0 1 1] [0]
[0 0 1] x1 + [0]
[0 0 1] [1]
p(split) = [0 0 1] [0]
[0 1 0] x2 + [0]
[0 0 1] [0]
p(true) = [0]
[0]
[0]
p(append#) = [0]
[0]
[0]
p(f_1#) = [0 0 1] [0 0 0] [0]
[0 0 0] x3 + [0 0 0] x4 + [1]
[0 0 0] [0 1 0] [0]
p(f_2#) = [0]
[0]
[0]
p(f_3#) = [0 1 0] [0 0 0] [0 0 0] [0]
[0 0 0] x1 + [0 0 1] x2 + [1 0 0] x3 + [1]
[1 0 1] [0 0 0] [0 0 1] [1]
p(lt#) = [0 0 0] [0 0 1] [0]
[1 1 1] x1 + [0 0 1] x2 + [0]
[0 1 1] [0 1 1] [1]
p(qsort#) = [0 1 0] [0]
[1 0 1] x1 + [1]
[0 0 1] [1]
p(split#) = [0 0 0] [0 0 1] [0]
[0 1 0] x1 + [0 0 0] x2 + [0]
[1 0 1] [1 1 1] [1]
p(c_1) = [0]
[0]
[0]
p(c_2) = [0]
[0]
[0]
p(c_3) = [1 0 0] [0]
[0 0 0] x1 + [0]
[0 0 0] [0]
p(c_4) = [0]
[0]
[0]
p(c_5) = [0]
[0]
[0]
p(c_6) = [1 0 0] [1 0 0] [0]
[0 0 0] x1 + [0 0 0] x2 + [1]
[0 0 0] [0 0 0] [0]
p(c_7) = [0]
[0]
[0]
p(c_8) = [0]
[0]
[0]
p(c_9) = [1 0 0] [0]
[1 0 0] x1 + [0]
[1 0 0] [0]
p(c_10) = [1 0 0] [1 0 0] [0]
[0 0 0] x1 + [0 1 0] x2 + [0]
[0 0 0] [1 0 0] [0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [1 0 0] [1 0 0] [0]
[0 0 0] x1 + [0 1 0] x2 + [0]
[0 1 1] [0 0 0] [1]
p(c_13) = [0]
[0]
[0]
Following rules are strictly oriented:
lt#(s(X),s(Y)) = [0 0 0] [0 0 1] [1]
[0 1 3] X + [0 0 1] Y + [2]
[0 0 2] [0 0 2] [3]
> [0 0 1] [0]
[0 0 1] Y + [0]
[0 0 1] [0]
= c_9(lt#(X,Y))
Following rules are (at-least) weakly oriented:
f_1#(pair(X,Z),N,M,Y) = [0 0 1] [0 0 0] [0]
[0 0 0] M + [0 0 0] Y + [1]
[0 0 0] [0 1 0] [0]
>= [0 0 1] [0]
[0 0 0] M + [0]
[0 0 0] [0]
= c_3(lt#(N,M))
f_3#(pair(Y,Z),N,X) = [0 0 0] [0 0 0] [0 1 0] [0 1 0] [0]
[0 0 1] N + [1 0 0] X + [0 0 0] Y + [0 0 0] Z + [1]
[0 0 0] [0 0 1] [0 0 2] [0 0 2] [1]
>= [0 1 0] [0 1 0] [0]
[0 0 0] Y + [0 0 0] Z + [1]
[0 0 0] [0 0 0] [0]
= c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) = [0 0 0] [0 1 1] [0]
[0 1 1] N + [0 0 1] X + [2]
[0 0 1] [0 0 1] [1]
>= [0 0 0] [0 1 1] [0]
[0 1 0] N + [0 0 0] X + [0]
[0 0 0] [0 0 1] [0]
= c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) = [0 0 1] [0 0 0] [0 0 1] [0]
[0 0 0] M + [0 1 0] N + [0 0 0] Y + [0]
[0 1 1] [1 0 1] [0 1 2] [2]
>= [0 0 1] [0 0 0] [0 0 1] [0]
[0 0 0] M + [0 1 0] N + [0 0 0] Y + [0]
[0 0 0] [0 0 0] [0 1 0] [2]
= c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
f_1(pair(X,Z),N,M,Y) = [0 0 1] [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 1] X + [0 1 1] Z + [0]
[0 0 1] [0 0 1] [0 0 1] [0]
>= [0 0 1] [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 1] X + [0 1 1] Z + [0]
[0 0 1] [0 0 1] [0 0 1] [0]
= f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) = [0 0 1] [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 1] X + [0 1 1] Z + [0]
[0 0 1] [0 0 1] [0 0 1] [0]
>= [0 0 1] [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 1] X + [0 1 0] Z + [0]
[0 0 1] [0 0 1] [0 0 1] [0]
= pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) = [0 0 1] [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 1] X + [0 1 1] Z + [0]
[0 0 1] [0 0 1] [0 0 1] [0]
>= [0 0 1] [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 0] X + [0 1 1] Z + [0]
[0 0 1] [0 0 1] [0 0 1] [0]
= pair(X,add(M,Z))
split(N,add(M,Y)) = [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 1] Y + [0]
[0 0 1] [0 0 1] [0]
>= [0 0 1] [0 0 1] [0]
[0 0 0] M + [0 1 1] Y + [0]
[0 0 1] [0 0 1] [0]
= f_1(split(N,Y),N,M,Y)
split(N,nil()) = [0]
[0]
[0]
>= [0]
[0]
[0]
= pair(nil(),nil())
***** Step 1.b:5.b:4.a:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
***** Step 1.b:5.b:4.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):3
2:W:f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
-->_1 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
3:W:lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):3
4:W:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z)):2
5:W:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
3: lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
***** Step 1.b:5.b:4.a:1.b:2: SimplifyRHS WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
2:W:f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
-->_1 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):4
4:W:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z)):2
5:W:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):5
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M)):1
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
f_1#(pair(X,Z),N,M,Y) -> c_3()
***** Step 1.b:5.b:4.a:1.b:3: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3()
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/0,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: f_1#(pair(X,Z),N,M,Y) -> c_3()
The strictly oriented rules are moved into the weak component.
****** Step 1.b:5.b:4.a:1.b:3.a:1: NaturalPI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3()
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/0,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a polynomial interpretation of kind constructor-based(mixed(2)):
The following argument positions are considered usable:
uargs(c_6) = {1,2},
uargs(c_10) = {1,2},
uargs(c_12) = {1,2}
Following symbols are considered usable:
{f_1,f_2,split,append#,f_1#,f_2#,f_3#,lt#,qsort#,split#}
TcT has computed the following interpretation:
p(0) = 0
p(add) = 1 + x2
p(append) = 2*x1 + 2*x2
p(f_1) = 1 + x1
p(f_2) = 1 + x5 + x6
p(f_3) = x1^2 + 2*x2 + 2*x2*x3 + x3
p(false) = 0
p(lt) = 0
p(nil) = 0
p(pair) = x1 + x2
p(qsort) = 0
p(s) = 0
p(split) = x2
p(true) = 0
p(append#) = 1 + x2
p(f_1#) = 1
p(f_2#) = 2*x1*x3 + x1^2 + x3*x4 + x3*x5 + 2*x4*x6 + x4^2 + 2*x6 + x6^2
p(f_3#) = 2 + 2*x1^2
p(lt#) = 1 + x2 + 2*x2^2
p(qsort#) = 2*x1^2
p(split#) = x2
p(c_1) = 0
p(c_2) = 0
p(c_3) = 0
p(c_4) = 0
p(c_5) = 0
p(c_6) = 1 + x1 + x2
p(c_7) = 0
p(c_8) = 0
p(c_9) = 0
p(c_10) = x1 + x2
p(c_11) = 1
p(c_12) = x1 + x2
p(c_13) = 0
Following rules are strictly oriented:
f_1#(pair(X,Z),N,M,Y) = 1
> 0
= c_3()
Following rules are (at-least) weakly oriented:
f_3#(pair(Y,Z),N,X) = 2 + 4*Y*Z + 2*Y^2 + 2*Z^2
>= 1 + 2*Y^2 + 2*Z^2
= c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) = 2 + 4*X + 2*X^2
>= 2 + X + 2*X^2
= c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) = 1 + Y
>= 1 + Y
= c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
f_1(pair(X,Z),N,M,Y) = 1 + X + Z
>= 1 + X + Z
= f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) = 1 + X + Z
>= 1 + X + Z
= pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) = 1 + X + Z
>= 1 + X + Z
= pair(X,add(M,Z))
split(N,add(M,Y)) = 1 + Y
>= 1 + Y
= f_1(split(N,Y),N,M,Y)
split(N,nil()) = 0
>= 0
= pair(nil(),nil())
****** Step 1.b:5.b:4.a:1.b:3.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3()
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/0,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
****** Step 1.b:5.b:4.a:1.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3()
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/0,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:f_1#(pair(X,Z),N,M,Y) -> c_3()
2:W:f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):3
-->_1 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):3
3:W:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):4
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z)):2
4:W:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):4
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3():1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
2: f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
3: qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
4: split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
1: f_1#(pair(X,Z),N,M,Y) -> c_3()
****** Step 1.b:5.b:4.a:1.b:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/0,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
**** Step 1.b:5.b:4.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak DPs:
f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):2
-->_1 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):2
2:S:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):3
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z)):1
3:S:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_1 f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M)):4
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):3
4:W:f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):5
5:W:lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
-->_1 lt#(s(X),s(Y)) -> c_9(lt#(X,Y)):5
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
4: f_1#(pair(X,Z),N,M,Y) -> c_3(lt#(N,M))
5: lt#(s(X),s(Y)) -> c_9(lt#(X,Y))
**** Step 1.b:5.b:4.b:2: SimplifyRHS WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/2,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
SimplifyRHS
+ Details:
Consider the dependency graph
1:S:f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):2
-->_1 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):2
2:S:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):3
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z)):1
3:S:split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y))
-->_2 split#(N,add(M,Y)) -> c_12(f_1#(split(N,Y),N,M,Y),split#(N,Y)):3
Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified:
split#(N,add(M,Y)) -> c_12(split#(N,Y))
**** Step 1.b:5.b:4.b:3: PredecessorEstimationCP WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/1,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
3: split#(N,add(M,Y)) -> c_12(split#(N,Y))
Consider the set of all dependency pairs
1: f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
2: qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
3: split#(N,add(M,Y)) -> c_12(split#(N,Y))
Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2))
SPACE(?,?)on application of the dependency pairs
{1,3}
These cover all (indirect) predecessors of dependency pairs
{1,2,3}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
***** Step 1.b:5.b:4.b:3.a:1: NaturalMI WORST_CASE(?,O(n^2))
+ Considered Problem:
- Strict DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/1,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima):
The following argument positions are considered usable:
uargs(c_6) = {1,2},
uargs(c_10) = {1,2},
uargs(c_12) = {1}
Following symbols are considered usable:
{f_1,f_2,split,append#,f_1#,f_2#,f_3#,lt#,qsort#,split#}
TcT has computed the following interpretation:
p(0) = [0]
[0]
[0]
p(add) = [1 0 1] [1 0 1] [0]
[0 0 1] x1 + [0 0 0] x2 + [0]
[0 0 0] [0 0 1] [1]
p(append) = [0]
[0]
[0]
p(f_1) = [1 0 1] [0 0 0] [1 0 1] [0]
[0 0 1] x1 + [1 0 0] x2 + [0 0 0] x3 + [1]
[0 0 1] [0 0 0] [0 0 0] [1]
p(f_2) = [0 0 0] [1 0 1] [1 0 1] [1 0 1] [0]
[1 0 0] x2 + [0 0 0] x3 + [0 0 1] x5 + [0 0 1] x6 + [1]
[0 0 0] [0 0 0] [0 0 1] [0 0 1] [1]
p(f_3) = [0]
[0]
[0]
p(false) = [0]
[0]
[0]
p(lt) = [0]
[0]
[0]
p(nil) = [0]
[0]
[0]
p(pair) = [1 0 0] [1 0 0] [0]
[0 0 1] x1 + [0 0 1] x2 + [0]
[0 0 1] [0 0 1] [0]
p(qsort) = [0]
[0]
[0]
p(s) = [0]
[0]
[0]
p(split) = [0 0 0] [1 0 0] [0]
[1 0 0] x1 + [0 0 1] x2 + [0]
[0 0 0] [0 0 1] [0]
p(true) = [0]
[0]
[0]
p(append#) = [0]
[0]
[0]
p(f_1#) = [0]
[0]
[0]
p(f_2#) = [0]
[0]
[0]
p(f_3#) = [1 1 0] [0 0 1] [0 0 0] [1]
[0 0 1] x1 + [0 0 1] x2 + [0 0 1] x3 + [0]
[1 1 1] [0 0 0] [1 0 0] [0]
p(lt#) = [0]
[0]
[0]
p(qsort#) = [1 0 1] [0]
[0 0 1] x1 + [0]
[1 1 1] [1]
p(split#) = [0 0 0] [0 0 1] [0]
[0 0 1] x1 + [0 0 0] x2 + [1]
[1 0 0] [0 0 0] [1]
p(c_1) = [0]
[0]
[0]
p(c_2) = [0]
[0]
[0]
p(c_3) = [0]
[0]
[0]
p(c_4) = [0]
[0]
[0]
p(c_5) = [0]
[0]
[0]
p(c_6) = [1 0 0] [1 0 0] [0]
[0 1 0] x1 + [0 0 0] x2 + [0]
[0 0 0] [1 0 0] [0]
p(c_7) = [0]
[0]
[0]
p(c_8) = [0]
[0]
[0]
p(c_9) = [0]
[0]
[0]
p(c_10) = [1 0 0] [1 0 0] [0]
[0 0 0] x1 + [1 0 0] x2 + [1]
[0 1 0] [0 1 1] [0]
p(c_11) = [0]
[0]
[0]
p(c_12) = [1 0 0] [0]
[0 1 0] x1 + [0]
[0 0 0] [0]
p(c_13) = [0]
[0]
[0]
Following rules are strictly oriented:
f_3#(pair(Y,Z),N,X) = [0 0 1] [0 0 0] [1 0 1] [1 0 1] [1]
[0 0 1] N + [0 0 1] X + [0 0 1] Y + [0 0 1] Z + [0]
[0 0 0] [1 0 0] [1 0 2] [1 0 2] [0]
> [1 0 1] [1 0 1] [0]
[0 0 1] Y + [0 0 0] Z + [0]
[0 0 0] [1 0 1] [0]
= c_6(qsort#(Y),qsort#(Z))
split#(N,add(M,Y)) = [0 0 0] [0 0 1] [1]
[0 0 1] N + [0 0 0] Y + [1]
[1 0 0] [0 0 0] [1]
> [0 0 0] [0 0 1] [0]
[0 0 1] N + [0 0 0] Y + [1]
[0 0 0] [0 0 0] [0]
= c_12(split#(N,Y))
Following rules are (at-least) weakly oriented:
qsort#(add(N,X)) = [1 0 1] [1 0 2] [1]
[0 0 0] N + [0 0 1] X + [1]
[1 0 2] [1 0 2] [2]
>= [1 0 1] [1 0 2] [1]
[0 0 0] N + [0 0 1] X + [1]
[1 0 2] [0 0 2] [2]
= c_10(f_3#(split(N,X),N,X),split#(N,X))
f_1(pair(X,Z),N,M,Y) = [1 0 1] [0 0 0] [1 0 1] [1 0 1] [0]
[0 0 0] M + [1 0 0] N + [0 0 1] X + [0 0 1] Z + [1]
[0 0 0] [0 0 0] [0 0 1] [0 0 1] [1]
>= [1 0 1] [0 0 0] [1 0 1] [1 0 1] [0]
[0 0 0] M + [1 0 0] N + [0 0 1] X + [0 0 1] Z + [1]
[0 0 0] [0 0 0] [0 0 1] [0 0 1] [1]
= f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) = [1 0 1] [0 0 0] [1 0 1] [1 0 1] [0]
[0 0 0] M + [1 0 0] N + [0 0 1] X + [0 0 1] Z + [1]
[0 0 0] [0 0 0] [0 0 1] [0 0 1] [1]
>= [1 0 1] [1 0 1] [1 0 0] [0]
[0 0 0] M + [0 0 1] X + [0 0 1] Z + [1]
[0 0 0] [0 0 1] [0 0 1] [1]
= pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) = [1 0 1] [0 0 0] [1 0 1] [1 0 1] [0]
[0 0 0] M + [1 0 0] N + [0 0 1] X + [0 0 1] Z + [1]
[0 0 0] [0 0 0] [0 0 1] [0 0 1] [1]
>= [1 0 1] [1 0 0] [1 0 1] [0]
[0 0 0] M + [0 0 1] X + [0 0 1] Z + [1]
[0 0 0] [0 0 1] [0 0 1] [1]
= pair(X,add(M,Z))
split(N,add(M,Y)) = [1 0 1] [0 0 0] [1 0 1] [0]
[0 0 0] M + [1 0 0] N + [0 0 1] Y + [1]
[0 0 0] [0 0 0] [0 0 1] [1]
>= [1 0 1] [0 0 0] [1 0 1] [0]
[0 0 0] M + [1 0 0] N + [0 0 1] Y + [1]
[0 0 0] [0 0 0] [0 0 1] [1]
= f_1(split(N,Y),N,M,Y)
split(N,nil()) = [0 0 0] [0]
[1 0 0] N + [0]
[0 0 0] [0]
>= [0]
[0]
[0]
= pair(nil(),nil())
***** Step 1.b:5.b:4.b:3.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
split#(N,add(M,Y)) -> c_12(split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/1,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
***** Step 1.b:5.b:4.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
split#(N,add(M,Y)) -> c_12(split#(N,Y))
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/1,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
-->_2 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):2
-->_1 qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X)):2
2:W:qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
-->_2 split#(N,add(M,Y)) -> c_12(split#(N,Y)):3
-->_1 f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z)):1
3:W:split#(N,add(M,Y)) -> c_12(split#(N,Y))
-->_1 split#(N,add(M,Y)) -> c_12(split#(N,Y)):3
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
1: f_3#(pair(Y,Z),N,X) -> c_6(qsort#(Y),qsort#(Z))
2: qsort#(add(N,X)) -> c_10(f_3#(split(N,X),N,X),split#(N,X))
3: split#(N,add(M,Y)) -> c_12(split#(N,Y))
***** Step 1.b:5.b:4.b:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z)
f_2(false(),N,M,Y,X,Z) -> pair(add(M,X),Z)
f_2(true(),N,M,Y,X,Z) -> pair(X,add(M,Z))
lt(0(),s(X)) -> true()
lt(s(X),0()) -> false()
lt(s(X),s(Y)) -> lt(X,Y)
split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y)
split(N,nil()) -> pair(nil(),nil())
- Signature:
{append/2,f_1/4,f_2/6,f_3/3,lt/2,qsort/1,split/2,append#/2,f_1#/4,f_2#/6,f_3#/3,lt#/2,qsort#/1
,split#/2} / {0/0,add/2,false/0,nil/0,pair/2,s/1,true/0,c_1/1,c_2/0,c_3/1,c_4/0,c_5/0,c_6/2,c_7/0,c_8/0
,c_9/1,c_10/2,c_11/0,c_12/1,c_13/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {append#,f_1#,f_2#,f_3#,lt#,qsort#
,split#} and constructors {0,add,false,nil,pair,s,true}
+ Applied Processor:
EmptyProcessor
+ Details:
The problem is already closed. The intended complexity is O(1).
WORST_CASE(Omega(n^1),O(n^2))