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