/export/starexec/sandbox/solver/bin/starexec_run_default /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: app(nil(),L) -> L 2: app(cons(N,L),Y) -> cons(N,app(L,Y)) 3: reverse(nil()) -> nil() 4: reverse(cons(N,L)) -> app(reverse(L),cons(N,nil())) 5: shuffle(nil()) -> nil() 6: shuffle(cons(N,L)) -> cons(N,shuffle(reverse(L))) 7: uhalf(0()) -> 0() 8: uhalf(s(0())) -> s(0()) 9: uhalf(s(s(N))) -> s(uhalf(N)) 10: tail(cons(N,L)) -> L 11: head(cons(N,L)) -> N 12: _(X1,X2) -> X1 13: _(X1,X2) -> X2 Number of strict rules: 13 Direct POLO(bPol) ... removes: 8 3 5 10 7 12 11 9 13 6 s w: 2 * x1 + 1 reverse w: x1 + 5905 _ w: 2 * x1 + 2 * x2 + 1 shuffle w: 2 * x1 + 8099 tail w: x1 + 281 0 w: 1 nil w: 0 head w: 2 * x1 cons w: x1 + x2 + 16352 uhalf w: 2 * x1 + 1 app w: x1 + x2 Number of strict rules: 3 Direct POLO(bPol) ... removes: 4 1 s w: 2 * x1 + 1 reverse w: 2 * x1 + 2236 _ w: 2 * x1 + 2 * x2 + 1 shuffle w: 2 * x1 + 8099 tail w: x1 + 281 0 w: 1 nil w: 0 head w: 2 * x1 cons w: x1 + x2 + 16352 uhalf w: 2 * x1 + 1 app w: x1 + x2 + 2447 Number of strict rules: 1 Direct POLO(bPol) ... removes: 2 s w: 2 * x1 + 1 reverse w: 2 * x1 _ w: 2 * x1 + 2 * x2 + 1 shuffle w: 2 * x1 + 2279 tail w: x1 + 281 0 w: 1 nil w: 0 head w: 2 * x1 cons w: x1 + x2 + 2483 uhalf w: 2 * x1 + 1 app w: 2 * x1 + 2 * x2 + 9168 Number of strict rules: 0 ... Input TRS: 1: app(nil(),L) -> L 2: app(cons(N,L),Y) -> cons(N,app(L,Y)) 3: reverse(nil()) -> nil() 4: reverse(cons(N,L)) -> app(reverse(L),cons(N,nil())) 5: shuffle(nil()) -> nil() 6: shuffle(cons(N,L)) -> cons(N,shuffle(reverse(L))) 7: uhalf(0()) -> 0() 8: uhalf(s(0())) -> s(0()) 9: uhalf(s(s(N))) -> s(uhalf(N)) 10: tail(cons(N,L)) -> L 11: head(cons(N,L)) -> N 12: _(X1,X2) -> X1 13: _(X1,X2) -> X2 Number of strict rules: 13 Direct POLO(bPol) ... removes: 8 3 5 10 7 12 11 9 13 6 s w: 2 * x1 + 1 reverse w: x1 + 5905 _ w: 2 * x1 + 2 * x2 + 1 shuffle w: 2 * x1 + 8099 tail w: x1 + 281 0 w: 1 nil w: 0 head w: 2 * x1 cons w: x1 + x2 + 16352 uhalf w: 2 * x1 + 1 app w: x1 + x2 Number of strict rules: 3 Direct POLO(bPol) ... removes: 4 1 s w: 2 * x1 + 1 reverse w: 2 * x1 + 2236 _ w: 2 * x1 + 2 * x2 + 1 shuffle w: 2 * x1 + 8099 tail w: x1 + 281 0 w: 1 nil w: 0 head w: 2 * x1 cons w: x1 + x2 + 16352 uhalf w: 2 * x1 + 1 app w: x1 + x2 + 2447 Number of strict rules: 1 Direct POLO(bPol) ... removes: 2 s w: 2 * x1 + 1 reverse w: 2 * x1 _ w: 2 * x1 + 2 * x2 + 1 shuffle w: 2 * x1 + 2279 tail w: x1 + 281 0 w: 1 nil w: 0 head w: 2 * x1 cons w: x1 + x2 + 2483 uhalf w: 2 * x1 + 1 app w: 2 * x1 + 2 * x2 + 9168 Number of strict rules: 0 >>YES ******** Signature ******** hrepeat : (nat,(list -> list),list) -> list 0 : nat s : nat -> nat uhalf : nat -> nat hshuffle : list -> list head : list -> nat shuffle : list -> list tail : list -> list ******** Computation rules ******** (10) hrepeat(0,F,L) => L (11) hrepeat(s(N),F,L) => hrepeat(uhalf(N),F,F[L]) (14) hshuffle(L) => hrepeat(head(L),z.shuffle(z),tail(L)) ******** General Schema criterion ******** Found constructors: nil, cons, 0, s Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (1) nil@L => L (meta L)[is acc in nil,L] [is positive in nil] [is acc in L] >>True Checking (2) cons(N,L)@Y => cons(N,L@Y) (fun app>cons) (meta N)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in N] (fun app=app) subterm comparison of args w. LR LR (meta L)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in L] (meta Y)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in Y] >>True Checking (3) reverse(nil) => nil (fun reverse>nil) >>True Checking (4) reverse(cons(N,L)) => reverse(L)@cons(N,nil) (fun reverse>app) (fun reverse=reverse) subterm comparison of args w. LR LR (meta L)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in L] (fun reverse>cons) (meta N)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in N] (fun reverse>nil) >>True Checking (5) shuffle(nil) => nil (fun shuffle>nil) >>True Checking (6) shuffle(cons(N,L)) => cons(N,shuffle(reverse(L))) (fun shuffle>cons) (meta N)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in N] (fun shuffle=shuffle) subterm comparison of args w. LR LR >>False Try again using status RL Checking (1) nil@L => L (meta L)[is acc in nil,L] [is positive in nil] [is acc in L] >>True Checking (2) cons(N,L)@Y => cons(N,L@Y) (fun app>cons) (meta N)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in N] (fun app=app) subterm comparison of args w. RL RL (meta L)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in L] (meta Y)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in Y] >>True Checking (3) reverse(nil) => nil (fun reverse>nil) >>True Checking (4) reverse(cons(N,L)) => reverse(L)@cons(N,nil) (fun reverse>app) (fun reverse=reverse) subterm comparison of args w. RL RL (meta L)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in L] (fun reverse>cons) (meta N)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in N] (fun reverse>nil) >>True Checking (5) shuffle(nil) => nil (fun shuffle>nil) >>True Checking (6) shuffle(cons(N,L)) => cons(N,shuffle(reverse(L))) (fun shuffle>cons) (meta N)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in N] (fun shuffle=shuffle) subterm comparison of args w. RL RL >>False Try again using status Mul Checking (1) nil@L => L (meta L)[is acc in nil,L] [is positive in nil] [is acc in L] >>True Checking (2) cons(N,L)@Y => cons(N,L@Y) (fun app>cons) (meta N)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in N] (fun app=app) subterm comparison of args w. Mul Mul (meta L)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in L] (meta Y)[is acc in cons(N,L),Y] [is positive in cons(N,L)] [is acc in Y] >>True Checking (3) reverse(nil) => nil (fun reverse>nil) >>True Checking (4) reverse(cons(N,L)) => reverse(L)@cons(N,nil) (fun reverse>app) (fun reverse=reverse) subterm comparison of args w. Mul Mul (meta L)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in L] (fun reverse>cons) (meta N)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in N] (fun reverse>nil) >>True Checking (5) shuffle(nil) => nil (fun shuffle>nil) >>True Checking (6) shuffle(cons(N,L)) => cons(N,shuffle(reverse(L))) (fun shuffle>cons) (meta N)[is acc in cons(N,L)] [is positive in cons(N,L)] [is acc in N] (fun shuffle=shuffle) subterm comparison of args w. Mul Mul >>False Found constructors: 0, s, uhalf, head, shuffle, tail Checking type order >>OK Checking positivity of constructors >>OK Checking function dependency >>OK Checking (10) hrepeat(0,F,L) => L (meta L)[is acc in 0,F,L] [is positive in 0] [is acc in L] >>True Checking (11) hrepeat(s(N),F,L) => hrepeat(uhalf(N),F,F[L]) (fun hrepeat=hrepeat) subterm comparison of args w. LR LR >>False Try again using status RL Checking (10) hrepeat(0,F,L) => L (meta L)[is acc in 0,F,L] [is positive in 0] [is acc in L] >>True Checking (11) hrepeat(s(N),F,L) => hrepeat(uhalf(N),F,F[L]) (fun hrepeat=hrepeat) subterm comparison of args w. RL RL >>False Try again using status Mul Checking (10) hrepeat(0,F,L) => L (meta L)[is acc in 0,F,L] [is positive in 0] [is acc in L] >>True Checking (11) hrepeat(s(N),F,L) => hrepeat(uhalf(N),F,F[L]) (fun hrepeat=hrepeat) subterm comparison of args w. Mul Mul >>False #No idea.. ******** Signature ******** nil : list app : (list,list) -> list cons : (nat,list) -> list shuffle : list -> list hshuffle : list -> list reverse : list -> list hrepeat : (nat,(list -> list),list) -> list 0 : nat s : nat -> nat uhalf : nat -> nat tail : list -> list head : list -> nat ******** Computation Rules ******** (1) nil@L => L (2) cons(N,L)@Y => cons(N,L@Y) (3) reverse(nil) => nil (4) reverse(cons(N,L)) => reverse(L)@cons(N,nil) (5) shuffle(nil) => nil (6) shuffle(cons(N,L)) => cons(N,shuffle(reverse(L))) (7) uhalf(0) => 0 (8) uhalf(s(0)) => s(0) (9) uhalf(s(s(N))) => s(uhalf(N)) (10) hrepeat(0,F,L) => L (11) hrepeat(s(N),F,L) => hrepeat(uhalf(N),F,F[L]) (12) tail(cons(N,L)) => L (13) head(cons(N,L)) => N (14) hshuffle(L) => hrepeat(head(L),z.shuffle(z),tail(L)) MAYBE