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