/export/starexec/sandbox/solver/bin/starexec_run_hrs /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/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: succ2(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 succ2 w: x1 + 2 * x2 + 1 Number of strict rules: 0 ... Input TRS: 1: succ2(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 succ2 w: x1 + 2 * x2 + 1 Number of strict rules: 0 >>YES ******** Signature ******** plus3 : (nat,nat,nat) -> nat plus : (nat,nat) -> nat rec : (nat,nat,((nat,nat) -> nat)) -> nat 0 : nat yap : ((nat -> nat),nat) -> nat xap : (((nat,nat) -> nat),nat,nat) -> nat s : nat -> nat succ2 : (nat,nat) -> nat mult : (nat,nat) -> nat ******** Computation rules ******** (5) plus3(V1,W1,P1) => V1 + (W1 + P1) (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,succ2) (6) mult(X2,Y2) => rec(X2,0,plus3(Y2)) (7) xap(G2,V2) => G2[V2] (8) yap(I2,P2) => I2[P2] ******** 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, succ2 Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (5) plus3(V1,W1,P1) => V1 + (W1 + P1) (fun plus3>plus) (meta V1)[is acc in V1,W1,P1] [is acc in V1] (fun plus3>plus) (meta W1)[is acc in V1,W1,P1] [is acc in W1] (meta P1)[is acc in V1,W1,P1] [is acc in P1] >>True 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 (5) plus3(V1,W1,P1) => V1 + (W1 + P1) (fun plus3>plus) (meta V1)[is acc in V1,W1,P1] [is acc in V1] (fun plus3>plus) (meta W1)[is acc in V1,W1,P1] [is acc in W1] (meta P1)[is acc in V1,W1,P1] [is acc in P1] >>True 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 (5) plus3(V1,W1,P1) => V1 + (W1 + P1) (fun plus3>plus) (meta V1)[is acc in V1,W1,P1] [is acc in V1] (fun plus3>plus) (meta W1)[is acc in V1,W1,P1] [is acc in W1] (meta P1)[is acc in V1,W1,P1] [is acc in P1] >>True 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 mult : (nat,nat) -> nat plus : (nat,nat) -> nat plus3 : (nat,nat,nat) -> nat rec : (nat,nat,((nat,nat) -> nat)) -> nat s : nat -> nat succ2 : (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) succ2(P,X1) => s(X1) (4) Y1 + U1 => rec(Y1,U1,succ2) (5) plus3(V1,W1,P1) => V1 + (W1 + P1) (6) mult(X2,Y2) => rec(X2,0,plus3(Y2)) (7) xap(G2,V2) => G2[V2] (8) yap(I2,P2) => I2[P2] MAYBE