/export/starexec/sandbox2/solver/bin/starexec_run_default /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: if(true(),X,Y) -> X 2: if(false(),X,Y) -> Y 3: _(X1,X2) -> X1 4: _(X1,X2) -> X2 Number of strict rules: 4 Direct POLO(bPol) ... removes: 4 1 3 2 false w: 7720 _ w: x1 + 2 * x2 + 1 true w: 1 if w: 2 * x1 + 2 * x2 + 2 * x3 Number of strict rules: 0 ... Input TRS: 1: if(true(),X,Y) -> X 2: if(false(),X,Y) -> Y 3: _(X1,X2) -> X1 4: _(X1,X2) -> X2 Number of strict rules: 4 Direct POLO(bPol) ... removes: 4 1 3 2 false w: 7720 _ w: x1 + 2 * x2 + 1 true w: 1 if w: 2 * x1 + 2 * x2 + 2 * x3 Number of strict rules: 0 >>YES ******** Signature ******** h : ((nat -> bool),(nat -> nat),nat) -> nat 0 : nat s : nat -> nat if : (bool,nat,nat) -> nat ******** Computation rules ******** (3) h(F,G,0) => 0 (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] ******** General Schema criterion ******** Found constructors: 0, true, false, s Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) if(true,X,Y) => X (meta X)[is acc in true,X,Y] [is positive in true] [is acc in X] >>True Checking (2) if(false,X,Y) => Y (meta Y)[is acc in false,X,Y] [is positive in false] [is acc in Y] >>True Checking (3) h(F,G,0) => 0 (fun h>0) >>True Checking (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] (meta G)[is acc in F,G,s(Y)] [is acc in G] (fun h=h) subterm comparison of args w. LR LR >>False Try again using status RL Checking (1) if(true,X,Y) => X (meta X)[is acc in true,X,Y] [is positive in true] [is acc in X] >>True Checking (2) if(false,X,Y) => Y (meta Y)[is acc in false,X,Y] [is positive in false] [is acc in Y] >>True Checking (3) h(F,G,0) => 0 (fun h>0) >>True Checking (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] (meta G)[is acc in F,G,s(Y)] [is acc in G] (fun h=h) subterm comparison of args w. RL RL >>False Try again using status Mul Checking (1) if(true,X,Y) => X (meta X)[is acc in true,X,Y] [is positive in true] [is acc in X] >>True Checking (2) if(false,X,Y) => Y (meta Y)[is acc in false,X,Y] [is positive in false] [is acc in Y] >>True Checking (3) h(F,G,0) => 0 (fun h>0) >>True Checking (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] (meta G)[is acc in F,G,s(Y)] [is acc in G] (fun h=h) subterm comparison of args w. Mul Mul >>False Found constructors: 0, s, if Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (3) h(F,G,0) => 0 (fun h>0) >>True Checking (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] (meta G)[is acc in F,G,s(Y)] [is acc in G] (fun h=h) subterm comparison of args w. LR LR >>False Try again using status RL Checking (3) h(F,G,0) => 0 (fun h>0) >>True Checking (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] (meta G)[is acc in F,G,s(Y)] [is acc in G] (fun h=h) subterm comparison of args w. RL RL >>False Try again using status Mul Checking (3) h(F,G,0) => 0 (fun h>0) >>True Checking (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] (meta G)[is acc in F,G,s(Y)] [is acc in G] (fun h=h) subterm comparison of args w. Mul Mul >>False #No idea.. ******** Signature ******** 0 : nat h : ((nat -> bool),(nat -> nat),nat) -> nat if : (bool,nat,nat) -> nat true : bool false : bool s : nat -> nat ******** Computation Rules ******** (1) if(true,X,Y) => X (2) if(false,X,Y) => Y (3) h(F,G,0) => 0 (4) h(F,G,s(Y)) => G[h(F,G,if(F[Y],Y,0))] MAYBE