/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination w.r.t. Q of the given QTRS could be proven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 0 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) QDP (5) TransformationProof [EQUIVALENT, 0 ms] (6) QDP (7) TransformationProof [EQUIVALENT, 0 ms] (8) QDP (9) DependencyGraphProof [EQUIVALENT, 0 ms] (10) QDP (11) TransformationProof [EQUIVALENT, 0 ms] (12) QDP (13) TransformationProof [EQUIVALENT, 0 ms] (14) QDP (15) DependencyGraphProof [EQUIVALENT, 0 ms] (16) QDP (17) QDPSizeChangeProof [EQUIVALENT, 0 ms] (18) YES ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. ---------------------------------------- (1) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (2) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(tt, N, X, XS) -> U12^1(splitAt(activate(N), activate(XS)), activate(X)) U11^1(tt, N, X, XS) -> SPLITAT(activate(N), activate(XS)) U11^1(tt, N, X, XS) -> ACTIVATE(N) U11^1(tt, N, X, XS) -> ACTIVATE(XS) U11^1(tt, N, X, XS) -> ACTIVATE(X) U12^1(pair(YS, ZS), X) -> ACTIVATE(X) AFTERNTH(N, XS) -> SND(splitAt(N, XS)) AFTERNTH(N, XS) -> SPLITAT(N, XS) AND(tt, X) -> ACTIVATE(X) SEL(N, XS) -> HEAD(afterNth(N, XS)) SEL(N, XS) -> AFTERNTH(N, XS) SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) SPLITAT(s(N), cons(X, XS)) -> ACTIVATE(XS) TAIL(cons(N, XS)) -> ACTIVATE(XS) TAKE(N, XS) -> FST(splitAt(N, XS)) TAKE(N, XS) -> SPLITAT(N, XS) ACTIVATE(n__natsFrom(X)) -> NATSFROM(X) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (3) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 15 less nodes. ---------------------------------------- (4) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(tt, N, X, XS) -> SPLITAT(activate(N), activate(XS)) SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (5) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule U11^1(tt, N, X, XS) -> SPLITAT(activate(N), activate(XS)) at position [0] we obtained the following new rules [LPAR04]: (U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(natsFrom(x0), activate(y2)),U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(natsFrom(x0), activate(y2))) (U11^1(tt, x0, y1, y2) -> SPLITAT(x0, activate(y2)),U11^1(tt, x0, y1, y2) -> SPLITAT(x0, activate(y2))) ---------------------------------------- (6) Obligation: Q DP problem: The TRS P consists of the following rules: SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(natsFrom(x0), activate(y2)) U11^1(tt, x0, y1, y2) -> SPLITAT(x0, activate(y2)) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (7) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(natsFrom(x0), activate(y2)) at position [0] we obtained the following new rules [LPAR04]: (U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(cons(x0, n__natsFrom(s(x0))), activate(y2)),U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(cons(x0, n__natsFrom(s(x0))), activate(y2))) (U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(n__natsFrom(x0), activate(y2)),U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(n__natsFrom(x0), activate(y2))) ---------------------------------------- (8) Obligation: Q DP problem: The TRS P consists of the following rules: SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) U11^1(tt, x0, y1, y2) -> SPLITAT(x0, activate(y2)) U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(cons(x0, n__natsFrom(s(x0))), activate(y2)) U11^1(tt, n__natsFrom(x0), y1, y2) -> SPLITAT(n__natsFrom(x0), activate(y2)) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (9) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(tt, x0, y1, y2) -> SPLITAT(x0, activate(y2)) SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule U11^1(tt, x0, y1, y2) -> SPLITAT(x0, activate(y2)) at position [1] we obtained the following new rules [LPAR04]: (U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, natsFrom(x0)),U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, natsFrom(x0))) (U11^1(tt, y0, y1, x0) -> SPLITAT(y0, x0),U11^1(tt, y0, y1, x0) -> SPLITAT(y0, x0)) ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, natsFrom(x0)) U11^1(tt, y0, y1, x0) -> SPLITAT(y0, x0) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, natsFrom(x0)) at position [1] we obtained the following new rules [LPAR04]: (U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, cons(x0, n__natsFrom(s(x0)))),U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, cons(x0, n__natsFrom(s(x0))))) (U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, n__natsFrom(x0)),U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, n__natsFrom(x0))) ---------------------------------------- (14) Obligation: Q DP problem: The TRS P consists of the following rules: SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) U11^1(tt, y0, y1, x0) -> SPLITAT(y0, x0) U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, cons(x0, n__natsFrom(s(x0)))) U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, n__natsFrom(x0)) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (15) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (16) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(tt, y0, y1, x0) -> SPLITAT(y0, x0) SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, cons(x0, n__natsFrom(s(x0)))) The TRS R consists of the following rules: U11(tt, N, X, XS) -> U12(splitAt(activate(N), activate(XS)), activate(X)) U12(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) afterNth(N, XS) -> snd(splitAt(N, XS)) and(tt, X) -> activate(X) fst(pair(X, Y)) -> X head(cons(N, XS)) -> N natsFrom(N) -> cons(N, n__natsFrom(s(N))) sel(N, XS) -> head(afterNth(N, XS)) snd(pair(X, Y)) -> Y splitAt(0, XS) -> pair(nil, XS) splitAt(s(N), cons(X, XS)) -> U11(tt, N, X, activate(XS)) tail(cons(N, XS)) -> activate(XS) take(N, XS) -> fst(splitAt(N, XS)) natsFrom(X) -> n__natsFrom(X) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (17) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *SPLITAT(s(N), cons(X, XS)) -> U11^1(tt, N, X, activate(XS)) The graph contains the following edges 1 > 2, 2 > 3 *U11^1(tt, y0, y1, x0) -> SPLITAT(y0, x0) The graph contains the following edges 2 >= 1, 4 >= 2 *U11^1(tt, y0, y1, n__natsFrom(x0)) -> SPLITAT(y0, cons(x0, n__natsFrom(s(x0)))) The graph contains the following edges 2 >= 1 ---------------------------------------- (18) YES