/export/starexec/sandbox2/solver/bin/starexec_run_hrs /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE We split firstr-order part and higher-order part, and do modular checking by a general modularity. ******** FO SN check ******** Check SN using NaTT (Nagoya Termination Tool) Input TRS: 1: plusc(X1,0()) -> X1 2: plusc(Y1,s(U1)) -> s(plusc(Y1,U1)) 3: _(X1,X2) -> X1 4: _(X1,X2) -> X2 Number of strict rules: 4 Direct POLO(bPol) ... removes: 4 1 3 2 s w: x1 + 8856 _ w: 2 * x1 + x2 + 1 0 w: 1 plusc w: 2 * x1 + 2 * x2 + 1237 Number of strict rules: 0 ... Input TRS: 1: plusc(X1,0()) -> X1 2: plusc(Y1,s(U1)) -> s(plusc(Y1,U1)) 3: _(X1,X2) -> X1 4: _(X1,X2) -> X2 Number of strict rules: 4 Direct POLO(bPol) ... removes: 4 1 3 2 s w: x1 + 8856 _ w: 2 * x1 + x2 + 1 0 w: 1 plusc w: 2 * x1 + 2 * x2 + 1237 Number of strict rules: 0 >>YES ******** Signature ******** foldl : (((nat,nat) -> nat),nat,list) -> nat yap : ((nat -> nat),nat) -> nat xap : (((nat,nat) -> nat),nat,nat) -> nat nil : list cons : (nat,list) -> list sum : list -> nat plusc : (nat,nat) -> nat 0 : nat ******** Computation rules ******** (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (5) sum(V1) => foldl(%F.%G.yap(xap(plusc,%F),%G),0,V1) (6) xap(I1,P1) => I1[P1] (7) yap(F2,Y2) => F2[Y2] ******** General Schema criterion ******** Found constructors: 0, cons, nil, s Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (meta Y)[is acc in %X.%Y.yap(xap(F,%X),%Y),Y,nil] [is positive in yap(xap(F,%X),%Y)] [is acc in Y] >>True Checking (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (fun foldl=foldl) subterm comparison of args w. LR LR >>False Try again using status RL Checking (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (meta Y)[is acc in %X.%Y.yap(xap(F,%X),%Y),Y,nil] [is positive in yap(xap(F,%X),%Y)] [is acc in Y] >>True Checking (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (fun foldl=foldl) subterm comparison of args w. RL RL (fun foldl>yap) (fun foldl>xap) (meta G)[is acc in %Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)] [is positive in yap(xap(G,%Z),%U)] [is positive in cons(W,P)] >>False Try again using status Mul Checking (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (meta Y)[is acc in %X.%Y.yap(xap(F,%X),%Y),Y,nil] [is positive in yap(xap(F,%X),%Y)] [is acc in Y] >>True Checking (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (fun foldl=foldl) subterm comparison of args w. Mul Mul >>False Found constructors: nil, cons, plusc, 0 Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (meta Y)[is acc in %X.%Y.yap(xap(F,%X),%Y),Y,nil] [is positive in yap(xap(F,%X),%Y)] [is acc in Y] >>True Checking (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (fun foldl=foldl) subterm comparison of args w. LR LR >>False Try again using status RL Checking (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (meta Y)[is acc in %X.%Y.yap(xap(F,%X),%Y),Y,nil] [is positive in yap(xap(F,%X),%Y)] [is acc in Y] >>True Checking (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (fun foldl=foldl) subterm comparison of args w. RL RL (fun foldl>yap) (fun foldl>xap) (meta G)[is acc in %Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)] [is positive in yap(xap(G,%Z),%U)] [is positive in cons(W,P)] >>False Try again using status Mul Checking (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (meta Y)[is acc in %X.%Y.yap(xap(F,%X),%Y),Y,nil] [is positive in yap(xap(F,%X),%Y)] [is acc in Y] >>True Checking (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (fun foldl=foldl) subterm comparison of args w. Mul Mul >>False #No idea.. ******** Signature ******** 0 : nat cons : (nat,list) -> list foldl : (((nat,nat) -> nat),nat,list) -> nat nil : list plusc : (nat,nat) -> nat s : nat -> nat sum : list -> nat xap : (((nat,nat) -> nat),nat,nat) -> nat yap : ((nat -> nat),nat) -> nat ******** Computation Rules ******** (1) foldl(%X.%Y.yap(xap(F,%X),%Y),Y,nil) => Y (2) foldl(%Z.%U.yap(xap(G,%Z),%U),V,cons(W,P)) => foldl(%V.%W.yap(xap(G,%V),%W),yap(xap(G,V),W),P) (3) plusc(X1,0) => X1 (4) plusc(Y1,s(U1)) => s(plusc(Y1,U1)) (5) sum(V1) => foldl(%F.%G.yap(xap(plusc,%F),%G),0,V1) (6) xap(I1,P1) => I1[P1] (7) yap(F2,Y2) => F2[Y2] MAYBE