/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: succ(P,X1) -> s(X1) 2: _(X1,X2) -> X1 3: _(X1,X2) -> X2 Number of strict rules: 3 Direct POLO(bPol) ... removes: 1 3 2 s w: 2 * x1 _ w: 2 * x1 + 2 * x2 + 1 succ w: x1 + 2 * x2 + 1 Number of strict rules: 0 ... Input TRS: 1: succ(P,X1) -> s(X1) 2: _(X1,X2) -> X1 3: _(X1,X2) -> X2 Number of strict rules: 3 Direct POLO(bPol) ... removes: 1 3 2 s w: 2 * x1 _ w: 2 * x1 + 2 * x2 + 1 succ w: x1 + 2 * x2 + 1 Number of strict rules: 0 >>YES ******** Signature ******** rec : (nat,nat,((nat,nat) -> nat)) -> nat 0 : nat yap : ((nat -> nat),nat) -> nat xap : (((nat,nat) -> nat),nat,nat) -> nat s : nat -> nat plus : (nat,nat) -> nat succ : (nat,nat) -> nat ******** Computation rules ******** (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (4) Y1 + U1 => rec(Y1,U1,succ) (5) xap(H1,W1) => H1[W1] (6) yap(J1,X2) => J1[X2] ******** General Schema criterion ******** Found constructors: 0, s Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (meta X)[is acc in 0,X,%X.%Y.yap(xap(Z,%X),%Y)] [is positive in 0] [is acc in X] >>True Checking (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (fun rec>yap) (fun rec>xap) (meta I)[is acc in s(U),V,%Z.%U.yap(xap(I,%Z),%U)] [is positive in s(U)] [is positive in yap(xap(I,%Z),%U)] >>False Try again using status RL Checking (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (meta X)[is acc in 0,X,%X.%Y.yap(xap(Z,%X),%Y)] [is positive in 0] [is acc in X] >>True Checking (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (fun rec>yap) (fun rec>xap) (meta I)[is acc in s(U),V,%Z.%U.yap(xap(I,%Z),%U)] [is positive in s(U)] [is positive in yap(xap(I,%Z),%U)] >>False Try again using status Mul Checking (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (meta X)[is acc in 0,X,%X.%Y.yap(xap(Z,%X),%Y)] [is positive in 0] [is acc in X] >>True Checking (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (fun rec>yap) (fun rec>xap) (meta I)[is acc in s(U),V,%Z.%U.yap(xap(I,%Z),%U)] [is positive in s(U)] [is positive in yap(xap(I,%Z),%U)] >>False Found constructors: 0, s, succ Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (meta X)[is acc in 0,X,%X.%Y.yap(xap(Z,%X),%Y)] [is positive in 0] [is acc in X] >>True Checking (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (fun rec>yap) (fun rec>xap) (meta I)[is acc in s(U),V,%Z.%U.yap(xap(I,%Z),%U)] [is positive in s(U)] [is positive in yap(xap(I,%Z),%U)] >>False Try again using status RL Checking (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (meta X)[is acc in 0,X,%X.%Y.yap(xap(Z,%X),%Y)] [is positive in 0] [is acc in X] >>True Checking (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (fun rec>yap) (fun rec>xap) (meta I)[is acc in s(U),V,%Z.%U.yap(xap(I,%Z),%U)] [is positive in s(U)] [is positive in yap(xap(I,%Z),%U)] >>False Try again using status Mul Checking (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (meta X)[is acc in 0,X,%X.%Y.yap(xap(Z,%X),%Y)] [is positive in 0] [is acc in X] >>True Checking (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (fun rec>yap) (fun rec>xap) (meta I)[is acc in s(U),V,%Z.%U.yap(xap(I,%Z),%U)] [is positive in s(U)] [is positive in yap(xap(I,%Z),%U)] >>False #No idea.. ******** Signature ******** 0 : nat plus : (nat,nat) -> nat rec : (nat,nat,((nat,nat) -> nat)) -> nat s : nat -> nat succ : (nat,nat) -> nat xap : (((nat,nat) -> nat),nat,nat) -> nat yap : ((nat -> nat),nat) -> nat ******** Computation Rules ******** (1) rec(0,X,%X.%Y.yap(xap(Z,%X),%Y)) => X (2) rec(s(U),V,%Z.%U.yap(xap(I,%Z),%U)) => yap(xap(I,U),rec(U,V,%V.%W.yap(xap(I,%V),%W))) (3) succ(P,X1) => s(X1) (4) Y1 + U1 => rec(Y1,U1,succ) (5) xap(H1,W1) => H1[W1] (6) yap(J1,X2) => J1[X2] MAYBE