/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: xplus(X,0()) -> X 2: xplus(Y,s(U)) -> s(xplus(Y,U)) 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 xplus w: 2 * x1 + 2 * x2 + 1237 Number of strict rules: 0 ... Input TRS: 1: xplus(X,0()) -> X 2: xplus(Y,s(U)) -> s(xplus(Y,U)) 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 xplus w: 2 * x1 + 2 * x2 + 1237 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 xtimes : (nat,nat) -> nat xplus : (nat,nat) -> nat ******** Computation rules ******** (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (5) U1 * V1 => rec(V1,0,%G.%F.(U1 + %F)) (6) xap(I1,P1) => I1[P1] (7) yap(F2,Y2) => F2[Y2] ******** General Schema criterion ******** Found constructors: 0, s Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) X + 0 => X (meta X)[is acc in X,0] [is acc in X] >>True Checking (2) Y + s(U) => s(Y + U) (fun xplus>s) (fun xplus=xplus) subterm comparison of args w. LR LR (meta Y)[is acc in Y,s(U)] [is acc in Y] (meta U)[is acc in Y,s(U)] [is positive in s(U)] [is acc in U] >>True Checking (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (meta V)[is acc in 0,V,%X.%Y.yap(xap(I,%X),%Y)] [is positive in 0] [is acc in V] >>True Checking (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (fun rec>yap) (fun rec>xap) (meta Z1)[is acc in s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)] [is positive in s(P)] [is positive in yap(xap(Z1,%Z),%U)] >>False Try again using status RL Checking (1) X + 0 => X (meta X)[is acc in X,0] [is acc in X] >>True Checking (2) Y + s(U) => s(Y + U) (fun xplus>s) (fun xplus=xplus) subterm comparison of args w. RL RL (meta Y)[is acc in Y,s(U)] [is acc in Y] (meta U)[is acc in Y,s(U)] [is positive in s(U)] [is acc in U] >>True Checking (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (meta V)[is acc in 0,V,%X.%Y.yap(xap(I,%X),%Y)] [is positive in 0] [is acc in V] >>True Checking (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (fun rec>yap) (fun rec>xap) (meta Z1)[is acc in s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)] [is positive in s(P)] [is positive in yap(xap(Z1,%Z),%U)] >>False Try again using status Mul Checking (1) X + 0 => X (meta X)[is acc in X,0] [is acc in X] >>True Checking (2) Y + s(U) => s(Y + U) (fun xplus>s) (fun xplus=xplus) subterm comparison of args w. Mul Mul (meta Y)[is acc in Y,s(U)] [is acc in Y] (meta U)[is acc in Y,s(U)] [is positive in s(U)] [is acc in U] >>True Checking (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (meta V)[is acc in 0,V,%X.%Y.yap(xap(I,%X),%Y)] [is positive in 0] [is acc in V] >>True Checking (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (fun rec>yap) (fun rec>xap) (meta Z1)[is acc in s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)] [is positive in s(P)] [is positive in yap(xap(Z1,%Z),%U)] >>False Found constructors: 0, s, xplus Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (meta V)[is acc in 0,V,%X.%Y.yap(xap(I,%X),%Y)] [is positive in 0] [is acc in V] >>True Checking (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (fun rec>yap) (fun rec>xap) (meta Z1)[is acc in s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)] [is positive in s(P)] [is positive in yap(xap(Z1,%Z),%U)] >>False Try again using status RL Checking (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (meta V)[is acc in 0,V,%X.%Y.yap(xap(I,%X),%Y)] [is positive in 0] [is acc in V] >>True Checking (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (fun rec>yap) (fun rec>xap) (meta Z1)[is acc in s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)] [is positive in s(P)] [is positive in yap(xap(Z1,%Z),%U)] >>False Try again using status Mul Checking (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (meta V)[is acc in 0,V,%X.%Y.yap(xap(I,%X),%Y)] [is positive in 0] [is acc in V] >>True Checking (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (fun rec>yap) (fun rec>xap) (meta Z1)[is acc in s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)] [is positive in s(P)] [is positive in yap(xap(Z1,%Z),%U)] >>False #No idea.. ******** Signature ******** 0 : nat rec : (nat,nat,((nat,nat) -> nat)) -> nat s : nat -> nat xap : (((nat,nat) -> nat),nat,nat) -> nat xplus : (nat,nat) -> nat xtimes : (nat,nat) -> nat yap : ((nat -> nat),nat) -> nat ******** Computation Rules ******** (1) X + 0 => X (2) Y + s(U) => s(Y + U) (3) rec(0,V,%X.%Y.yap(xap(I,%X),%Y)) => V (4) rec(s(P),X1,%Z.%U.yap(xap(Z1,%Z),%U)) => yap(xap(Z1,P),rec(P,X1,%V.%W.yap(xap(Z1,%V),%W))) (5) U1 * V1 => rec(V1,0,%G.%F.(U1 + %F)) (6) xap(I1,P1) => I1[P1] (7) yap(F2,Y2) => F2[Y2] MAYBE