/export/starexec/sandbox/solver/bin/starexec_run_default /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES ******** General Schema criterion ******** Found constructors: nil, cons, 0, s, ascendingsort, descendingsort Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) max(0,N) => N (meta N)[is acc in 0,N] [is positive in 0] [is acc in N] >>True Checking (2) max(N,0) => N (meta N)[is acc in N,0] [is acc in N] >>True Checking (3) max(s(N),s(M)) => s(max(N,M)) (fun max>s) (fun max=max) subterm comparison of args w. LR LR (meta N)[is acc in s(N),s(M)] [is positive in s(N)] [is acc in N] (meta M)[is acc in s(N),s(M)] [is positive in s(N)] [is positive in s(M)] [is acc in M] >>True Checking (4) min(0,N) => 0 (fun min>0) >>True Checking (5) min(N,0) => 0 (fun min>0) >>True Checking (6) min(s(N),s(M)) => s(min(N,M)) (fun min>s) (fun min=min) subterm comparison of args w. LR LR (meta N)[is acc in s(N),s(M)] [is positive in s(N)] [is acc in N] (meta M)[is acc in s(N),s(M)] [is positive in s(N)] [is positive in s(M)] [is acc in M] >>True Checking (7) insert(N,nil,X,Y) => cons(N,nil) (fun insert>cons) (meta N)[is acc in N,nil,X,Y] [is acc in N] (fun insert>nil) >>True Checking (8) insert(N,cons(M,L),X,Y) => cons(X[N,M],insert(Y[N,M],L,X,Y)) (fun insert>cons) (meta X)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in X] (meta N)[is acc in N,cons(M,L),X,Y] [is acc in N] (meta M)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in M] (fun insert=insert) subterm comparison of args w. LR LR >>False Try again using status RL Checking (1) max(0,N) => N (meta N)[is acc in 0,N] [is positive in 0] [is acc in N] >>True Checking (2) max(N,0) => N (meta N)[is acc in N,0] [is acc in N] >>True Checking (3) max(s(N),s(M)) => s(max(N,M)) (fun max>s) (fun max=max) subterm comparison of args w. RL RL (meta N)[is acc in s(N),s(M)] [is positive in s(N)] [is acc in N] (meta M)[is acc in s(N),s(M)] [is positive in s(N)] [is positive in s(M)] [is acc in M] >>True Checking (4) min(0,N) => 0 (fun min>0) >>True Checking (5) min(N,0) => 0 (fun min>0) >>True Checking (6) min(s(N),s(M)) => s(min(N,M)) (fun min>s) (fun min=min) subterm comparison of args w. RL RL (meta N)[is acc in s(N),s(M)] [is positive in s(N)] [is acc in N] (meta M)[is acc in s(N),s(M)] [is positive in s(N)] [is positive in s(M)] [is acc in M] >>True Checking (7) insert(N,nil,X,Y) => cons(N,nil) (fun insert>cons) (meta N)[is acc in N,nil,X,Y] [is acc in N] (fun insert>nil) >>True Checking (8) insert(N,cons(M,L),X,Y) => cons(X[N,M],insert(Y[N,M],L,X,Y)) (fun insert>cons) (meta X)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in X] (meta N)[is acc in N,cons(M,L),X,Y] [is acc in N] (meta M)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in M] (fun insert=insert) subterm comparison of args w. RL RL (meta Y)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in Y] (meta N)[is acc in N,cons(M,L),X,Y] [is acc in N] (meta M)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in M] (meta L)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in L] (meta X)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in X] (meta Y)[is acc in N,cons(M,L),X,Y] [is positive in cons(M,L)] [is acc in Y] >>True Checking (9) sort(nil,X,Y) => nil (fun sort>nil) >>True Checking (10) sort(cons(N,L),X,Y) => insert(N,sort(L,X,Y),X,Y) (fun sort>insert) (meta N)[is acc in cons(N,L),X,Y] [is positive in cons(N,L)] [is acc in N] (fun sort=sort) subterm comparison of args w. RL RL (meta L)[is acc in cons(N,L),X,Y] [is positive in cons(N,L)] [is acc in L] (meta X)[is acc in cons(N,L),X,Y] [is positive in cons(N,L)] [is acc in X] (meta Y)[is acc in cons(N,L),X,Y] [is positive in cons(N,L)] [is acc in Y] (meta X)[is acc in cons(N,L),X,Y] [is positive in cons(N,L)] [is acc in X] (meta Y)[is acc in cons(N,L),X,Y] [is positive in cons(N,L)] [is acc in Y] >>True Checking (11) ascending_sort(L) => sort(L,x.y.min(x,y),x.y.max(x,y)) (fun ascending_sort>sort) (meta L)[is acc in L] [is acc in L] (fun ascending_sort>min) (fun ascending_sort>max) >>True Checking (12) descending_sort(L) => sort(L,x.y.max(x,y),x.y.min(x,y)) (fun descending_sort>sort) (meta L)[is acc in L] [is acc in L] (fun descending_sort>max) (fun descending_sort>min) >>True #SN! ******** Signature ******** nil : list cons : (nat,list) -> list 0 : nat s : nat -> nat max : (nat,nat) -> nat min : (nat,nat) -> nat insert : (nat,list,((nat,nat) -> nat),((nat,nat) -> nat)) -> list sort : (list,((nat,nat) -> nat),((nat,nat) -> nat)) -> list ascendingsort : list -> list descendingsort : list -> list ******** Computation Rules ******** (1) max(0,N) => N (2) max(N,0) => N (3) max(s(N),s(M)) => s(max(N,M)) (4) min(0,N) => 0 (5) min(N,0) => 0 (6) min(s(N),s(M)) => s(min(N,M)) (7) insert(N,nil,X,Y) => cons(N,nil) (8) insert(N,cons(M,L),X,Y) => cons(X[N,M],insert(Y[N,M],L,X,Y)) (9) sort(nil,X,Y) => nil (10) sort(cons(N,L),X,Y) => insert(N,sort(L,X,Y),X,Y) (11) ascending_sort(L) => sort(L,x.y.min(x,y),x.y.max(x,y)) (12) descending_sort(L) => sort(L,x.y.max(x,y),x.y.min(x,y)) YES