- : unit = () - : unit = () h : heuristic = - : unit = () APPLY CRITERIA (Marked dependency pairs) TRS termination of: [1] eq(0,0) -> true [2] eq(0,s(Y)) -> false [3] eq(s(X),0) -> false [4] eq(s(X),s(Y)) -> eq(X,Y) [5] le(0,Y) -> true [6] le(s(X),0) -> false [7] le(s(X),s(Y)) -> le(X,Y) [8] min(cons(0,nil)) -> 0 [9] min(cons(s(N),nil)) -> s(N) [10] min(cons(N,cons(M,L))) -> ifmin(le(N,M),cons(N,cons(M,L))) [11] ifmin(true,cons(N,cons(M,L))) -> min(cons(N,L)) [12] ifmin(false,cons(N,cons(M,L))) -> min(cons(M,L)) [13] replace(N,M,nil) -> nil [14] replace(N,M,cons(K,L)) -> ifrepl(eq(N,K),N,M,cons(K,L)) [15] ifrepl(true,N,M,cons(K,L)) -> cons(M,L) [16] ifrepl(false,N,M,cons(K,L)) -> cons(K,replace(N,M,L)) [17] selsort(nil) -> nil [18] selsort(cons(N,L)) -> ifselsort(eq(N,min(cons(N,L))),cons(N,L)) [19] ifselsort(true,cons(N,L)) -> cons(N,selsort(L)) [20] ifselsort(false,cons(N,L)) -> cons(min(cons(N,L)),selsort(replace(min(cons(N,L)),N,L))) Sub problem: guided: DP termination of: END GUIDED APPLY CRITERIA (Graph splitting) Found 5 components: { --> --> --> --> } { --> --> } { --> } { --> --> --> --> } { --> } APPLY CRITERIA (Subterm criterion) APPLY CRITERIA (Choosing graph) Trying to solve the following constraints: { eq(0,0) >= true ; eq(0,s(Y)) >= false ; eq(s(X),0) >= false ; eq(s(X),s(Y)) >= eq(X,Y) ; le(0,Y) >= true ; le(s(X),0) >= false ; le(s(X),s(Y)) >= le(X,Y) ; min(cons(0,nil)) >= 0 ; min(cons(s(N),nil)) >= s(N) ; min(cons(N,cons(M,L))) >= ifmin(le(N,M),cons(N,cons(M,L))) ; ifmin(true,cons(N,cons(M,L))) >= min(cons(N,L)) ; ifmin(false,cons(N,cons(M,L))) >= min(cons(M,L)) ; replace(N,M,cons(K,L)) >= ifrepl(eq(N,K),N,M,cons(K,L)) ; replace(N,M,nil) >= nil ; ifrepl(true,N,M,cons(K,L)) >= cons(M,L) ; ifrepl(false,N,M,cons(K,L)) >= cons(K,replace(N,M,L)) ; selsort(cons(N,L)) >= ifselsort(eq(N,min(cons(N,L))),cons(N,L)) ; selsort(nil) >= nil ; ifselsort(true,cons(N,L)) >= cons(N,selsort(L)) ; ifselsort(false,cons(N,L)) >= cons(min(cons(N,L)), selsort(replace(min(cons(N,L)),N,L))) ; Marked_ifselsort(true,cons(N,L)) >= Marked_selsort(L) ; Marked_ifselsort(false,cons(N,L)) >= Marked_selsort(replace(min(cons(N,L)), N,L)) ; Marked_selsort(cons(N,L)) >= Marked_ifselsort(eq(N,min(cons(N,L))),cons(N,L)) ; } + Disjunctions:{ { Marked_ifselsort(true,cons(N,L)) > Marked_selsort(L) ; } { Marked_ifselsort(false,cons(N,L)) > Marked_selsort(replace(min(cons(N,L)), N,L)) ; } { Marked_selsort(cons(N,L)) > Marked_ifselsort(eq(N,min(cons(N,L))),cons(N,L)) ; } } === 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: eq(0,0) >= true constraint: eq(0,s(Y)) >= false constraint: eq(s(X),0) >= false constraint: eq(s(X),s(Y)) >= eq(X,Y) constraint: le(0,Y) >= true constraint: le(s(X),0) >= false constraint: le(s(X),s(Y)) >= le(X,Y) constraint: min(cons(0,nil)) >= 0 constraint: min(cons(s(N),nil)) >= s(N) constraint: min(cons(N,cons(M,L))) >= ifmin(le(N,M),cons(N,cons(M,L))) constraint: ifmin(true,cons(N,cons(M,L))) >= min(cons(N,L)) constraint: ifmin(false,cons(N,cons(M,L))) >= min(cons(M,L)) constraint: replace(N,M,cons(K,L)) >= ifrepl(eq(N,K),N,M,cons(K,L)) constraint: replace(N,M,nil) >= nil constraint: ifrepl(true,N,M,cons(K,L)) >= cons(M,L) constraint: ifrepl(false,N,M,cons(K,L)) >= cons(K,replace(N,M,L)) constraint: selsort(cons(N,L)) >= ifselsort(eq(N,min(cons(N,L))),cons(N,L)) constraint: selsort(nil) >= nil constraint: ifselsort(true,cons(N,L)) >= cons(N,selsort(L)) constraint: ifselsort(false,cons(N,L)) >= cons(min(cons(N,L)), selsort(replace(min(cons(N,L)),N,L))) constraint: Marked_ifselsort(true,cons(N,L)) >= Marked_selsort(L) constraint: Marked_ifselsort(false,cons(N,L)) >= Marked_selsort(replace( min( cons(N,L)), N,L)) constraint: Marked_selsort(cons(N,L)) >= Marked_ifselsort(eq(N,min(cons(N,L))), cons(N,L)) APPLY CRITERIA (Subterm criterion) ST: Marked_ifrepl -> 4 Marked_replace -> 3 APPLY CRITERIA (Subterm criterion) ST: Marked_eq -> 1 APPLY CRITERIA (Subterm criterion) APPLY CRITERIA (Choosing graph) Trying to solve the following constraints: { eq(0,0) >= true ; eq(0,s(Y)) >= false ; eq(s(X),0) >= false ; eq(s(X),s(Y)) >= eq(X,Y) ; le(0,Y) >= true ; le(s(X),0) >= false ; le(s(X),s(Y)) >= le(X,Y) ; min(cons(0,nil)) >= 0 ; min(cons(s(N),nil)) >= s(N) ; min(cons(N,cons(M,L))) >= ifmin(le(N,M),cons(N,cons(M,L))) ; ifmin(true,cons(N,cons(M,L))) >= min(cons(N,L)) ; ifmin(false,cons(N,cons(M,L))) >= min(cons(M,L)) ; replace(N,M,cons(K,L)) >= ifrepl(eq(N,K),N,M,cons(K,L)) ; replace(N,M,nil) >= nil ; ifrepl(true,N,M,cons(K,L)) >= cons(M,L) ; ifrepl(false,N,M,cons(K,L)) >= cons(K,replace(N,M,L)) ; selsort(cons(N,L)) >= ifselsort(eq(N,min(cons(N,L))),cons(N,L)) ; selsort(nil) >= nil ; ifselsort(true,cons(N,L)) >= cons(N,selsort(L)) ; ifselsort(false,cons(N,L)) >= cons(min(cons(N,L)), selsort(replace(min(cons(N,L)),N,L))) ; Marked_min(cons(N,cons(M,L))) >= Marked_ifmin(le(N,M),cons(N,cons(M,L))) ; Marked_ifmin(true,cons(N,cons(M,L))) >= Marked_min(cons(N,L)) ; Marked_ifmin(false,cons(N,cons(M,L))) >= Marked_min(cons(M,L)) ; } + Disjunctions:{ { Marked_min(cons(N,cons(M,L))) > Marked_ifmin(le(N,M),cons(N,cons(M,L))) ; } { Marked_ifmin(true,cons(N,cons(M,L))) > Marked_min(cons(N,L)) ; } { Marked_ifmin(false,cons(N,cons(M,L))) > Marked_min(cons(M,L)) ; } } === 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: eq(0,0) >= true constraint: eq(0,s(Y)) >= false constraint: eq(s(X),0) >= false constraint: eq(s(X),s(Y)) >= eq(X,Y) constraint: le(0,Y) >= true constraint: le(s(X),0) >= false constraint: le(s(X),s(Y)) >= le(X,Y) constraint: min(cons(0,nil)) >= 0 constraint: min(cons(s(N),nil)) >= s(N) constraint: min(cons(N,cons(M,L))) >= ifmin(le(N,M),cons(N,cons(M,L))) constraint: ifmin(true,cons(N,cons(M,L))) >= min(cons(N,L)) constraint: ifmin(false,cons(N,cons(M,L))) >= min(cons(M,L)) constraint: replace(N,M,cons(K,L)) >= ifrepl(eq(N,K),N,M,cons(K,L)) constraint: replace(N,M,nil) >= nil constraint: ifrepl(true,N,M,cons(K,L)) >= cons(M,L) constraint: ifrepl(false,N,M,cons(K,L)) >= cons(K,replace(N,M,L)) constraint: selsort(cons(N,L)) >= ifselsort(eq(N,min(cons(N,L))),cons(N,L)) constraint: selsort(nil) >= nil constraint: ifselsort(true,cons(N,L)) >= cons(N,selsort(L)) constraint: ifselsort(false,cons(N,L)) >= cons(min(cons(N,L)), selsort(replace(min(cons(N,L)),N,L))) constraint: Marked_min(cons(N,cons(M,L))) >= Marked_ifmin(le(N,M), cons(N,cons(M,L))) constraint: Marked_ifmin(true,cons(N,cons(M,L))) >= Marked_min(cons(N,L)) constraint: Marked_ifmin(false,cons(N,cons(M,L))) >= Marked_min(cons(M,L)) APPLY CRITERIA (Subterm criterion) ST: Marked_le -> 1 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: APPLY CRITERIA (Graph splitting) Found 0 components: SOLVED { TRS termination of: [1] eq(0,0) -> true [2] eq(0,s(Y)) -> false [3] eq(s(X),0) -> false [4] eq(s(X),s(Y)) -> eq(X,Y) [5] le(0,Y) -> true [6] le(s(X),0) -> false [7] le(s(X),s(Y)) -> le(X,Y) [8] min(cons(0,nil)) -> 0 [9] min(cons(s(N),nil)) -> s(N) [10] min(cons(N,cons(M,L))) -> ifmin(le(N,M),cons(N,cons(M,L))) [11] ifmin(true,cons(N,cons(M,L))) -> min(cons(N,L)) [12] ifmin(false,cons(N,cons(M,L))) -> min(cons(M,L)) [13] replace(N,M,nil) -> nil [14] replace(N,M,cons(K,L)) -> ifrepl(eq(N,K),N,M,cons(K,L)) [15] ifrepl(true,N,M,cons(K,L)) -> cons(M,L) [16] ifrepl(false,N,M,cons(K,L)) -> cons(K,replace(N,M,L)) [17] selsort(nil) -> nil [18] selsort(cons(N,L)) -> ifselsort(eq(N,min(cons(N,L))),cons(N,L)) [19] ifselsort(true,cons(N,L)) -> cons(N,selsort(L)) [20] ifselsort(false,cons(N,L)) -> cons(min(cons(N,L)),selsort(replace(min(cons(N,L)),N,L))) , CRITERION: MDP [ { DP termination of: , CRITERION: SG [ { DP termination of: , CRITERION: CG using polynomial interpretation = [ true ] () = 0; [ Marked_selsort ] (X0) = 1*X0 + 1; [ nil ] () = 0; [ s ] (X0) = 0; [ selsort ] (X0) = 3*X0 + 1; [ 0 ] () = 0; [ replace ] (X0,X1,X2) = 1*X2; [ min ] (X0) = 0; [ Marked_ifselsort ] (X0,X1) = 1*X1 + 1; [ eq ] (X0,X1) = 0; [ ifmin ] (X0,X1) = 0; [ le ] (X0,X1) = 0; [ ifselsort ] (X0,X1) = 3*X1 + 1; [ false ] () = 0; [ ifrepl ] (X0,X1,X2,X3) = 1*X3; [ cons ] (X0,X1) = 1*X1 + 1; removing [ { DP termination of: , CRITERION: SG [ ]} ]} { DP termination of: , CRITERION: ST [ { DP termination of: , CRITERION: SG [ ]} ]} { DP termination of: , CRITERION: ST [ { DP termination of: , CRITERION: SG [ ]} ]} { DP termination of: , CRITERION: CG using polynomial interpretation = [ true ] () = 0; [ nil ] () = 0; [ s ] (X0) = 0; [ Marked_ifmin ] (X0,X1) = 1*X1 + 1; [ selsort ] (X0) = 2*X0; [ 0 ] () = 0; [ replace ] (X0,X1,X2) = 1*X2; [ min ] (X0) = 0; [ eq ] (X0,X1) = 0; [ ifmin ] (X0,X1) = 0; [ le ] (X0,X1) = 0; [ ifselsort ] (X0,X1) = 2*X1; [ false ] () = 0; [ ifrepl ] (X0,X1,X2,X3) = 1*X3; [ cons ] (X0,X1) = 2*X1 + 1; [ Marked_min ] (X0) = 2*X0 + 2; removing [ { DP termination of: , CRITERION: SG [ ]} ]} { DP termination of: , CRITERION: ST [ { DP termination of: , CRITERION: SG [ ]} ]} ]} ]} Cime worked for 0.387439 seconds (real time) Cime Exit Status: 0