- : unit = () h : heuristic = - : unit = () APPLY CRITERIA (Marked dependency pairs) TRS termination of: [1] lt(0,s(X)) -> true [2] lt(s(X),0) -> false [3] lt(s(X),s(Y)) -> lt(X,Y) [4] append(nil,Y) -> Y [5] append(add(N,X),Y) -> add(N,append(X,Y)) [6] split(N,nil) -> pair(nil,nil) [7] split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y) [8] f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z) [9] f_2(true,N,M,Y,X,Z) -> pair(X,add(M,Z)) [10] f_2(false,N,M,Y,X,Z) -> pair(add(M,X),Z) [11] qsort(nil) -> nil [12] qsort(add(N,X)) -> f_3(split(N,X),N,X) [13] f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z))) Sub problem: guided: DP termination of: END GUIDED APPLY CRITERIA (Graph splitting) Found 4 components: { --> --> --> --> } { --> } { --> } { --> } APPLY CRITERIA (Choosing graph) Trying to solve the following constraints: { lt(0,s(X)) >= true ; lt(s(X),0) >= false ; lt(s(X),s(Y)) >= lt(X,Y) ; append(nil,Y) >= Y ; append(add(N,X),Y) >= add(N,append(X,Y)) ; split(N,nil) >= pair(nil,nil) ; split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) ; f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) ; f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) ; f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) ; qsort(nil) >= nil ; qsort(add(N,X)) >= f_3(split(N,X),N,X) ; f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) ; Marked_f_3(pair(Y,Z),N,X) >= Marked_qsort(Y) ; Marked_f_3(pair(Y,Z),N,X) >= Marked_qsort(Z) ; Marked_qsort(add(N,X)) >= Marked_f_3(split(N,X),N,X) ; } + Disjunctions:{ { Marked_f_3(pair(Y,Z),N,X) > Marked_qsort(Y) ; } { Marked_f_3(pair(Y,Z),N,X) > Marked_qsort(Z) ; } { Marked_qsort(add(N,X)) > Marked_f_3(split(N,X),N,X) ; } } === TIMER virtual : 10.000000 === Entering poly_solver Starting Sat solver initialization Calling Sat solver... === STOPING TIMER virtual === === TIMER real : 10.000000 === === STOPING TIMER real === Sat solver returned Sat solver result read === STOPING TIMER real === === STOPING TIMER virtual === constraint: lt(0,s(X)) >= true constraint: lt(s(X),0) >= false constraint: lt(s(X),s(Y)) >= lt(X,Y) constraint: append(nil,Y) >= Y constraint: append(add(N,X),Y) >= add(N,append(X,Y)) constraint: split(N,nil) >= pair(nil,nil) constraint: split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) constraint: f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) constraint: f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) constraint: f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) constraint: qsort(nil) >= nil constraint: qsort(add(N,X)) >= f_3(split(N,X),N,X) constraint: f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) constraint: Marked_f_3(pair(Y,Z),N,X) >= Marked_qsort(Y) constraint: Marked_f_3(pair(Y,Z),N,X) >= Marked_qsort(Z) constraint: Marked_qsort(add(N,X)) >= Marked_f_3(split(N,X),N,X) APPLY CRITERIA (Choosing graph) Trying to solve the following constraints: { lt(0,s(X)) >= true ; lt(s(X),0) >= false ; lt(s(X),s(Y)) >= lt(X,Y) ; append(nil,Y) >= Y ; append(add(N,X),Y) >= add(N,append(X,Y)) ; split(N,nil) >= pair(nil,nil) ; split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) ; f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) ; f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) ; f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) ; qsort(nil) >= nil ; qsort(add(N,X)) >= f_3(split(N,X),N,X) ; f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) ; Marked_append(add(N,X),Y) >= Marked_append(X,Y) ; } + Disjunctions:{ { Marked_append(add(N,X),Y) > Marked_append(X,Y) ; } } === TIMER virtual : 10.000000 === Entering poly_solver Starting Sat solver initialization Calling Sat solver... === STOPING TIMER virtual === === TIMER real : 10.000000 === === STOPING TIMER real === Sat solver returned Sat solver result read === STOPING TIMER real === === STOPING TIMER virtual === constraint: lt(0,s(X)) >= true constraint: lt(s(X),0) >= false constraint: lt(s(X),s(Y)) >= lt(X,Y) constraint: append(nil,Y) >= Y constraint: append(add(N,X),Y) >= add(N,append(X,Y)) constraint: split(N,nil) >= pair(nil,nil) constraint: split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) constraint: f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) constraint: f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) constraint: f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) constraint: qsort(nil) >= nil constraint: qsort(add(N,X)) >= f_3(split(N,X),N,X) constraint: f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) constraint: Marked_append(add(N,X),Y) >= Marked_append(X,Y) APPLY CRITERIA (Choosing graph) Trying to solve the following constraints: { lt(0,s(X)) >= true ; lt(s(X),0) >= false ; lt(s(X),s(Y)) >= lt(X,Y) ; append(nil,Y) >= Y ; append(add(N,X),Y) >= add(N,append(X,Y)) ; split(N,nil) >= pair(nil,nil) ; split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) ; f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) ; f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) ; f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) ; qsort(nil) >= nil ; qsort(add(N,X)) >= f_3(split(N,X),N,X) ; f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) ; Marked_split(N,add(M,Y)) >= Marked_split(N,Y) ; } + Disjunctions:{ { Marked_split(N,add(M,Y)) > Marked_split(N,Y) ; } } === TIMER virtual : 10.000000 === Entering poly_solver Starting Sat solver initialization Calling Sat solver... === STOPING TIMER virtual === === TIMER real : 10.000000 === === STOPING TIMER real === Sat solver returned Sat solver result read === STOPING TIMER real === === STOPING TIMER virtual === constraint: lt(0,s(X)) >= true constraint: lt(s(X),0) >= false constraint: lt(s(X),s(Y)) >= lt(X,Y) constraint: append(nil,Y) >= Y constraint: append(add(N,X),Y) >= add(N,append(X,Y)) constraint: split(N,nil) >= pair(nil,nil) constraint: split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) constraint: f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) constraint: f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) constraint: f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) constraint: qsort(nil) >= nil constraint: qsort(add(N,X)) >= f_3(split(N,X),N,X) constraint: f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) constraint: Marked_split(N,add(M,Y)) >= Marked_split(N,Y) APPLY CRITERIA (Choosing graph) Trying to solve the following constraints: { lt(0,s(X)) >= true ; lt(s(X),0) >= false ; lt(s(X),s(Y)) >= lt(X,Y) ; append(nil,Y) >= Y ; append(add(N,X),Y) >= add(N,append(X,Y)) ; split(N,nil) >= pair(nil,nil) ; split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) ; f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) ; f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) ; f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) ; qsort(nil) >= nil ; qsort(add(N,X)) >= f_3(split(N,X),N,X) ; f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) ; Marked_lt(s(X),s(Y)) >= Marked_lt(X,Y) ; } + Disjunctions:{ { Marked_lt(s(X),s(Y)) > Marked_lt(X,Y) ; } } === TIMER virtual : 10.000000 === Entering poly_solver Starting Sat solver initialization Calling Sat solver... === STOPING TIMER virtual === === TIMER real : 10.000000 === === STOPING TIMER real === Sat solver returned Sat solver result read === STOPING TIMER real === === STOPING TIMER virtual === constraint: lt(0,s(X)) >= true constraint: lt(s(X),0) >= false constraint: lt(s(X),s(Y)) >= lt(X,Y) constraint: append(nil,Y) >= Y constraint: append(add(N,X),Y) >= add(N,append(X,Y)) constraint: split(N,nil) >= pair(nil,nil) constraint: split(N,add(M,Y)) >= f_1(split(N,Y),N,M,Y) constraint: f_1(pair(X,Z),N,M,Y) >= f_2(lt(N,M),N,M,Y,X,Z) constraint: f_2(true,N,M,Y,X,Z) >= pair(X,add(M,Z)) constraint: f_2(false,N,M,Y,X,Z) >= pair(add(M,X),Z) constraint: qsort(nil) >= nil constraint: qsort(add(N,X)) >= f_3(split(N,X),N,X) constraint: f_3(pair(Y,Z),N,X) >= append(qsort(Y),add(X,qsort(Z))) constraint: Marked_lt(s(X),s(Y)) >= Marked_lt(X,Y) APPLY CRITERIA (Graph splitting) Found 0 components: APPLY CRITERIA (Graph splitting) Found 0 components: APPLY CRITERIA (Graph splitting) Found 0 components: APPLY CRITERIA (Graph splitting) Found 0 components: SOLVED { TRS termination of: [1] lt(0,s(X)) -> true [2] lt(s(X),0) -> false [3] lt(s(X),s(Y)) -> lt(X,Y) [4] append(nil,Y) -> Y [5] append(add(N,X),Y) -> add(N,append(X,Y)) [6] split(N,nil) -> pair(nil,nil) [7] split(N,add(M,Y)) -> f_1(split(N,Y),N,M,Y) [8] f_1(pair(X,Z),N,M,Y) -> f_2(lt(N,M),N,M,Y,X,Z) [9] f_2(true,N,M,Y,X,Z) -> pair(X,add(M,Z)) [10] f_2(false,N,M,Y,X,Z) -> pair(add(M,X),Z) [11] qsort(nil) -> nil [12] qsort(add(N,X)) -> f_3(split(N,X),N,X) [13] f_3(pair(Y,Z),N,X) -> append(qsort(Y),add(X,qsort(Z))) , CRITERION: MDP [ { DP termination of: , CRITERION: SG [ { DP termination of: , CRITERION: CG using polynomial interpretation = [ true ] () = 1; [ Marked_qsort ] (X0) = 2*X0; [ pair ] (X0,X1) = 1*X1 + 1*X0; [ false ] () = 1; [ qsort ] (X0) = 2*X0; [ 0 ] () = 0; [ f_1 ] (X0,X1,X2,X3) = 1*X0 + 2; [ nil ] () = 0; [ Marked_f_3 ] (X0,X1,X2) = 2*X0; [ lt ] (X0,X1) = 1; [ split ] (X0,X1) = 1*X1; [ append ] (X0,X1) = 1*X1 + 1*X0; [ f_3 ] (X0,X1,X2) = 2*X0 + 2; [ s ] (X0) = 3*X0; [ f_2 ] (X0,X1,X2,X3,X4,X5) = 1*X5 + 1*X4 + 2*X0; [ add ] (X0,X1) = 1*X1 + 2; removing [ { DP termination of: , CRITERION: SG [ ]} ]} { DP termination of: , CRITERION: ORD [ Solution found: polynomial interpretation = [ true ] () = 0; [ pair ] (X0,X1) = 1*X0 + 1*X1 + 0; [ false ] () = 0; [ qsort ] (X0) = 1*X0 + 0; [ 0 ] () = 0; [ f_1 ] (X0,X1,X2,X3) = 2 + 1*X0 + 0; [ nil ] () = 0; [ lt ] (X0,X1) = 0; [ split ] (X0,X1) = 1*X1 + 0; [ append ] (X0,X1) = 1*X0 + 1*X1 + 0; [ f_3 ] (X0,X1,X2) = 2 + 1*X0 + 0; [ s ] (X0) = 3*X0 + 0; [ f_2 ] (X0,X1,X2,X3,X4,X5) = 2 + 1*X4 + 1*X5 + 0; [ add ] (X0,X1) = 2 + 1*X1 + 0; [ Marked_append ] (X0,X1) = 3*X0 + 0; ]} { DP termination of: , CRITERION: ORD [ Solution found: polynomial interpretation = [ true ] () = 0; [ pair ] (X0,X1) = 1*X0 + 1*X1 + 0; [ false ] () = 0; [ qsort ] (X0) = 2*X0 + 0; [ 0 ] () = 0; [ f_1 ] (X0,X1,X2,X3) = 2 + 1*X0 + 0; [ nil ] () = 0; [ lt ] (X0,X1) = 0; [ Marked_split ] (X0,X1) = 3*X1 + 0; [ split ] (X0,X1) = 1 + 1*X1 + 0; [ append ] (X0,X1) = 1*X0 + 1*X1 + 0; [ f_3 ] (X0,X1,X2) = 2 + 2*X0 + 0; [ s ] (X0) = 3*X0 + 0; [ f_2 ] (X0,X1,X2,X3,X4,X5) = 2 + 1*X4 + 1*X5 + 0; [ add ] (X0,X1) = 2 + 1*X1 + 0; ]} { DP termination of: , CRITERION: ORD [ Solution found: polynomial interpretation = [ true ] () = 0; [ pair ] (X0,X1) = 0; [ false ] () = 0; [ Marked_lt ] (X0,X1) = 1*X1 + 0; [ qsort ] (X0) = 0; [ 0 ] () = 0; [ f_1 ] (X0,X1,X2,X3) = 0; [ nil ] () = 0; [ lt ] (X0,X1) = 0; [ split ] (X0,X1) = 0; [ append ] (X0,X1) = 2*X1 + 0; [ f_3 ] (X0,X1,X2) = 0; [ s ] (X0) = 1 + 3*X0 + 0; [ f_2 ] (X0,X1,X2,X3,X4,X5) = 0; [ add ] (X0,X1) = 0; ]} ]} ]} Cime worked for 0.276149 seconds (real time) Cime Exit Status: 0