/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/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) AND (5) QDP (6) UsableRulesProof [EQUIVALENT, 0 ms] (7) QDP (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] (9) YES (10) QDP (11) UsableRulesProof [EQUIVALENT, 0 ms] (12) QDP (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] (14) YES (15) QDP (16) UsableRulesProof [EQUIVALENT, 0 ms] (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) QDP (21) UsableRulesProof [EQUIVALENT, 0 ms] (22) QDP (23) QDPSizeChangeProof [EQUIVALENT, 0 ms] (24) YES (25) QDP (26) UsableRulesProof [EQUIVALENT, 0 ms] (27) QDP (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] (29) YES (30) QDP (31) UsableRulesProof [EQUIVALENT, 0 ms] (32) QDP (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] (34) YES (35) QDP (36) UsableRulesProof [EQUIVALENT, 0 ms] (37) QDP (38) QDPSizeChangeProof [EQUIVALENT, 0 ms] (39) YES (40) QDP (41) UsableRulesProof [EQUIVALENT, 0 ms] (42) QDP (43) QDPSizeChangeProof [EQUIVALENT, 0 ms] (44) YES (45) QDP (46) UsableRulesProof [EQUIVALENT, 0 ms] (47) QDP (48) QDPSizeChangeProof [EQUIVALENT, 0 ms] (49) YES (50) QDP (51) UsableRulesReductionPairsProof [EQUIVALENT, 66 ms] (52) QDP (53) QDPOrderProof [EQUIVALENT, 91 ms] (54) QDP (55) UsableRulesReductionPairsProof [EQUIVALENT, 21 ms] (56) QDP (57) MRRProof [EQUIVALENT, 0 ms] (58) QDP (59) UsableRulesReductionPairsProof [EQUIVALENT, 0 ms] (60) QDP (61) MRRProof [EQUIVALENT, 14 ms] (62) QDP (63) PisEmptyProof [EQUIVALENT, 0 ms] (64) YES ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(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: ACTIVE(eq(s(X), s(Y))) -> EQ(X, Y) ACTIVE(inf(X)) -> CONS(X, inf(s(X))) ACTIVE(inf(X)) -> INF(s(X)) ACTIVE(inf(X)) -> S(X) ACTIVE(take(s(X), cons(Y, L))) -> CONS(Y, take(X, L)) ACTIVE(take(s(X), cons(Y, L))) -> TAKE(X, L) ACTIVE(length(cons(X, L))) -> S(length(L)) ACTIVE(length(cons(X, L))) -> LENGTH(L) ACTIVE(inf(X)) -> INF(active(X)) ACTIVE(inf(X)) -> ACTIVE(X) ACTIVE(take(X1, X2)) -> TAKE(active(X1), X2) ACTIVE(take(X1, X2)) -> ACTIVE(X1) ACTIVE(take(X1, X2)) -> TAKE(X1, active(X2)) ACTIVE(take(X1, X2)) -> ACTIVE(X2) ACTIVE(length(X)) -> LENGTH(active(X)) ACTIVE(length(X)) -> ACTIVE(X) INF(mark(X)) -> INF(X) TAKE(mark(X1), X2) -> TAKE(X1, X2) TAKE(X1, mark(X2)) -> TAKE(X1, X2) LENGTH(mark(X)) -> LENGTH(X) PROPER(eq(X1, X2)) -> EQ(proper(X1), proper(X2)) PROPER(eq(X1, X2)) -> PROPER(X1) PROPER(eq(X1, X2)) -> PROPER(X2) PROPER(s(X)) -> S(proper(X)) PROPER(s(X)) -> PROPER(X) PROPER(inf(X)) -> INF(proper(X)) PROPER(inf(X)) -> PROPER(X) PROPER(cons(any(X1), X2)) -> CONS(any(any(proper(X1))), any(proper(X2))) PROPER(cons(any(X1), X2)) -> ANY(any(proper(X1))) PROPER(cons(any(X1), X2)) -> ANY(proper(X1)) PROPER(cons(any(X1), X2)) -> PROPER(X1) PROPER(cons(any(X1), X2)) -> ANY(proper(X2)) PROPER(cons(any(X1), X2)) -> PROPER(X2) PROPER(take(X1, X2)) -> TAKE(proper(X1), proper(X2)) PROPER(take(X1, X2)) -> PROPER(X1) PROPER(take(X1, X2)) -> PROPER(X2) PROPER(length(X)) -> LENGTH(proper(X)) PROPER(length(X)) -> PROPER(X) EQ(ok(X1), ok(X2)) -> EQ(X1, X2) S(ok(X)) -> S(X) INF(ok(X)) -> INF(X) CONS(ok(X1), ok(X2)) -> CONS(X1, X2) TAKE(ok(X1), ok(X2)) -> TAKE(X1, X2) LENGTH(ok(X)) -> LENGTH(X) TOP(mark(X)) -> TOP(proper(X)) TOP(mark(X)) -> PROPER(X) TOP(ok(X)) -> TOP(active(X)) TOP(ok(X)) -> ACTIVE(X) ANY(X) -> S(X) ANY(proper(X)) -> ANY(any(any(X))) ANY(proper(X)) -> ANY(any(X)) ANY(proper(X)) -> ANY(X) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(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 10 SCCs with 26 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Q DP problem: The TRS P consists of the following rules: CONS(ok(X1), ok(X2)) -> CONS(X1, X2) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (6) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (7) Obligation: Q DP problem: The TRS P consists of the following rules: CONS(ok(X1), ok(X2)) -> CONS(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (8) 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: *CONS(ok(X1), ok(X2)) -> CONS(X1, X2) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (9) YES ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: S(ok(X)) -> S(X) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: S(ok(X)) -> S(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) 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: *S(ok(X)) -> S(X) The graph contains the following edges 1 > 1 ---------------------------------------- (14) YES ---------------------------------------- (15) Obligation: Q DP problem: The TRS P consists of the following rules: ANY(proper(X)) -> ANY(X) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (16) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: ANY(proper(X)) -> ANY(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (18) 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: *ANY(proper(X)) -> ANY(X) The graph contains the following edges 1 > 1 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(ok(X1), ok(X2)) -> EQ(X1, X2) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (21) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: EQ(ok(X1), ok(X2)) -> EQ(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (23) 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: *EQ(ok(X1), ok(X2)) -> EQ(X1, X2) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH(ok(X)) -> LENGTH(X) LENGTH(mark(X)) -> LENGTH(X) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (26) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH(ok(X)) -> LENGTH(X) LENGTH(mark(X)) -> LENGTH(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (28) 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: *LENGTH(ok(X)) -> LENGTH(X) The graph contains the following edges 1 > 1 *LENGTH(mark(X)) -> LENGTH(X) The graph contains the following edges 1 > 1 ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: Q DP problem: The TRS P consists of the following rules: TAKE(X1, mark(X2)) -> TAKE(X1, X2) TAKE(mark(X1), X2) -> TAKE(X1, X2) TAKE(ok(X1), ok(X2)) -> TAKE(X1, X2) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (31) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (32) Obligation: Q DP problem: The TRS P consists of the following rules: TAKE(X1, mark(X2)) -> TAKE(X1, X2) TAKE(mark(X1), X2) -> TAKE(X1, X2) TAKE(ok(X1), ok(X2)) -> TAKE(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (33) 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: *TAKE(X1, mark(X2)) -> TAKE(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *TAKE(mark(X1), X2) -> TAKE(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *TAKE(ok(X1), ok(X2)) -> TAKE(X1, X2) The graph contains the following edges 1 > 1, 2 > 2 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: Q DP problem: The TRS P consists of the following rules: INF(ok(X)) -> INF(X) INF(mark(X)) -> INF(X) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (36) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (37) Obligation: Q DP problem: The TRS P consists of the following rules: INF(ok(X)) -> INF(X) INF(mark(X)) -> INF(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (38) 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: *INF(ok(X)) -> INF(X) The graph contains the following edges 1 > 1 *INF(mark(X)) -> INF(X) The graph contains the following edges 1 > 1 ---------------------------------------- (39) YES ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: PROPER(eq(X1, X2)) -> PROPER(X2) PROPER(eq(X1, X2)) -> PROPER(X1) PROPER(s(X)) -> PROPER(X) PROPER(inf(X)) -> PROPER(X) PROPER(cons(any(X1), X2)) -> PROPER(X1) PROPER(cons(any(X1), X2)) -> PROPER(X2) PROPER(take(X1, X2)) -> PROPER(X1) PROPER(take(X1, X2)) -> PROPER(X2) PROPER(length(X)) -> PROPER(X) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (41) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: PROPER(eq(X1, X2)) -> PROPER(X2) PROPER(eq(X1, X2)) -> PROPER(X1) PROPER(s(X)) -> PROPER(X) PROPER(inf(X)) -> PROPER(X) PROPER(cons(any(X1), X2)) -> PROPER(X1) PROPER(cons(any(X1), X2)) -> PROPER(X2) PROPER(take(X1, X2)) -> PROPER(X1) PROPER(take(X1, X2)) -> PROPER(X2) PROPER(length(X)) -> PROPER(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (43) 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: *PROPER(eq(X1, X2)) -> PROPER(X2) The graph contains the following edges 1 > 1 *PROPER(eq(X1, X2)) -> PROPER(X1) The graph contains the following edges 1 > 1 *PROPER(s(X)) -> PROPER(X) The graph contains the following edges 1 > 1 *PROPER(inf(X)) -> PROPER(X) The graph contains the following edges 1 > 1 *PROPER(cons(any(X1), X2)) -> PROPER(X1) The graph contains the following edges 1 > 1 *PROPER(cons(any(X1), X2)) -> PROPER(X2) The graph contains the following edges 1 > 1 *PROPER(take(X1, X2)) -> PROPER(X1) The graph contains the following edges 1 > 1 *PROPER(take(X1, X2)) -> PROPER(X2) The graph contains the following edges 1 > 1 *PROPER(length(X)) -> PROPER(X) The graph contains the following edges 1 > 1 ---------------------------------------- (44) YES ---------------------------------------- (45) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(take(X1, X2)) -> ACTIVE(X1) ACTIVE(inf(X)) -> ACTIVE(X) ACTIVE(take(X1, X2)) -> ACTIVE(X2) ACTIVE(length(X)) -> ACTIVE(X) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (46) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (47) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(take(X1, X2)) -> ACTIVE(X1) ACTIVE(inf(X)) -> ACTIVE(X) ACTIVE(take(X1, X2)) -> ACTIVE(X2) ACTIVE(length(X)) -> ACTIVE(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (48) 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: *ACTIVE(take(X1, X2)) -> ACTIVE(X1) The graph contains the following edges 1 > 1 *ACTIVE(inf(X)) -> ACTIVE(X) The graph contains the following edges 1 > 1 *ACTIVE(take(X1, X2)) -> ACTIVE(X2) The graph contains the following edges 1 > 1 *ACTIVE(length(X)) -> ACTIVE(X) The graph contains the following edges 1 > 1 ---------------------------------------- (49) YES ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: TOP(ok(X)) -> TOP(active(X)) TOP(mark(X)) -> TOP(proper(X)) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) inf(mark(X)) -> mark(inf(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) length(mark(X)) -> mark(length(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) s(ok(X)) -> ok(s(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (51) UsableRulesReductionPairsProof (EQUIVALENT) By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. No dependency pairs are removed. The following rules are removed from R: top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 0 POL(TOP(x_1)) = x_1 POL(active(x_1)) = 2*x_1 POL(any(x_1)) = x_1 POL(cons(x_1, x_2)) = x_1 + x_2 POL(eq(x_1, x_2)) = 2*x_1 + 2*x_2 POL(false) = 0 POL(inf(x_1)) = 2*x_1 POL(length(x_1)) = 2*x_1 POL(mark(x_1)) = x_1 POL(nil) = 0 POL(ok(x_1)) = 2*x_1 POL(proper(x_1)) = x_1 POL(s(x_1)) = x_1 POL(take(x_1, x_2)) = 2*x_1 + x_2 POL(true) = 0 ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: TOP(ok(X)) -> TOP(active(X)) TOP(mark(X)) -> TOP(proper(X)) The TRS R consists of the following rules: proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) length(mark(X)) -> mark(length(X)) length(ok(X)) -> ok(length(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) s(ok(X)) -> ok(s(X)) inf(mark(X)) -> mark(inf(X)) inf(ok(X)) -> ok(inf(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (53) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. TOP(mark(X)) -> TOP(proper(X)) The remaining pairs can at least be oriented weakly. Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : <<< POL(TOP(x_1)) = [[0]] + [[1, 0]] * x_1 >>> <<< POL(ok(x_1)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 >>> <<< POL(active(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 >>> <<< POL(mark(x_1)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 >>> <<< POL(proper(x_1)) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 >>> <<< POL(eq(x_1, x_2)) = [[1], [0]] + [[0, 1], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 >>> <<< POL(0) = [[0], [0]] >>> <<< POL(true) = [[0], [0]] >>> <<< POL(s(x_1)) = [[0], [1]] + [[0, 0], [0, 1]] * x_1 >>> <<< POL(false) = [[0], [0]] >>> <<< POL(inf(x_1)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 >>> <<< POL(cons(x_1, x_2)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 >>> <<< POL(take(x_1, x_2)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 >>> <<< POL(nil) = [[0], [0]] >>> <<< POL(length(x_1)) = [[1], [0]] + [[1, 0], [0, 0]] * x_1 >>> <<< POL(any(x_1)) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 >>> The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) s(ok(X)) -> ok(s(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) inf(mark(X)) -> mark(inf(X)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) length(mark(X)) -> mark(length(X)) length(ok(X)) -> ok(length(X)) ---------------------------------------- (54) Obligation: Q DP problem: The TRS P consists of the following rules: TOP(ok(X)) -> TOP(active(X)) The TRS R consists of the following rules: proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) length(mark(X)) -> mark(length(X)) length(ok(X)) -> ok(length(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) s(ok(X)) -> ok(s(X)) inf(mark(X)) -> mark(inf(X)) inf(ok(X)) -> ok(inf(X)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (55) UsableRulesReductionPairsProof (EQUIVALENT) By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. No dependency pairs are removed. The following rules are removed from R: proper(eq(X1, X2)) -> eq(proper(X1), proper(X2)) proper(0) -> ok(0) proper(true) -> ok(true) proper(s(X)) -> s(proper(X)) proper(false) -> ok(false) proper(inf(X)) -> inf(proper(X)) proper(cons(any(X1), X2)) -> cons(any(any(proper(X1))), any(proper(X2))) proper(take(X1, X2)) -> take(proper(X1), proper(X2)) proper(nil) -> ok(nil) proper(length(X)) -> length(proper(X)) any(X) -> s(X) any(proper(X)) -> any(any(any(X))) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 0 POL(TOP(x_1)) = x_1 POL(active(x_1)) = 2*x_1 POL(cons(x_1, x_2)) = 2*x_1 + x_2 POL(eq(x_1, x_2)) = x_1 + 2*x_2 POL(false) = 0 POL(inf(x_1)) = 2*x_1 POL(length(x_1)) = x_1 POL(mark(x_1)) = x_1 POL(nil) = 0 POL(ok(x_1)) = 2*x_1 POL(s(x_1)) = x_1 POL(take(x_1, x_2)) = x_1 + 2*x_2 POL(true) = 0 ---------------------------------------- (56) Obligation: Q DP problem: The TRS P consists of the following rules: TOP(ok(X)) -> TOP(active(X)) The TRS R consists of the following rules: active(eq(0, 0)) -> mark(true) active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(nil)) -> mark(0) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) length(mark(X)) -> mark(length(X)) length(ok(X)) -> ok(length(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) inf(mark(X)) -> mark(inf(X)) inf(ok(X)) -> ok(inf(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (57) MRRProof (EQUIVALENT) By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented rules of the TRS R: active(eq(0, 0)) -> mark(true) active(length(nil)) -> mark(0) Used ordering: Polynomial interpretation [POLO]: POL(0) = 1 POL(TOP(x_1)) = 2*x_1 POL(active(x_1)) = 2*x_1 POL(cons(x_1, x_2)) = x_1 + x_2 POL(eq(x_1, x_2)) = 2*x_1 + x_2 POL(false) = 0 POL(inf(x_1)) = x_1 POL(length(x_1)) = 2*x_1 POL(mark(x_1)) = x_1 POL(nil) = 2 POL(ok(x_1)) = 2*x_1 POL(s(x_1)) = x_1 POL(take(x_1, x_2)) = x_1 + 2*x_2 POL(true) = 1 ---------------------------------------- (58) Obligation: Q DP problem: The TRS P consists of the following rules: TOP(ok(X)) -> TOP(active(X)) The TRS R consists of the following rules: active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(0, X)) -> mark(nil) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) length(mark(X)) -> mark(length(X)) length(ok(X)) -> ok(length(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) inf(mark(X)) -> mark(inf(X)) inf(ok(X)) -> ok(inf(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (59) UsableRulesReductionPairsProof (EQUIVALENT) By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. No dependency pairs are removed. The following rules are removed from R: active(take(0, X)) -> mark(nil) Used ordering: POLO with Polynomial interpretation [POLO]: POL(0) = 1 POL(TOP(x_1)) = x_1 POL(active(x_1)) = 2*x_1 POL(cons(x_1, x_2)) = x_1 + x_2 POL(eq(x_1, x_2)) = x_1 + x_2 POL(false) = 0 POL(inf(x_1)) = 2*x_1 POL(length(x_1)) = 2*x_1 POL(mark(x_1)) = x_1 POL(nil) = 2 POL(ok(x_1)) = 2*x_1 POL(s(x_1)) = x_1 POL(take(x_1, x_2)) = 2*x_1 + x_2 ---------------------------------------- (60) Obligation: Q DP problem: The TRS P consists of the following rules: TOP(ok(X)) -> TOP(active(X)) The TRS R consists of the following rules: active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(inf(X)) -> mark(cons(X, inf(s(X)))) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(cons(X, L))) -> mark(s(length(L))) active(inf(X)) -> inf(active(X)) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) length(mark(X)) -> mark(length(X)) length(ok(X)) -> ok(length(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) inf(mark(X)) -> mark(inf(X)) inf(ok(X)) -> ok(inf(X)) s(ok(X)) -> ok(s(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (61) MRRProof (EQUIVALENT) By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented dependency pairs: TOP(ok(X)) -> TOP(active(X)) Strictly oriented rules of the TRS R: active(eq(s(X), s(Y))) -> mark(eq(X, Y)) active(eq(X, Y)) -> mark(false) active(take(s(X), cons(Y, L))) -> mark(cons(Y, take(X, L))) active(length(cons(X, L))) -> mark(s(length(L))) active(take(X1, X2)) -> take(active(X1), X2) active(take(X1, X2)) -> take(X1, active(X2)) active(length(X)) -> length(active(X)) take(ok(X1), ok(X2)) -> ok(take(X1, X2)) inf(ok(X)) -> ok(inf(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) eq(ok(X1), ok(X2)) -> ok(eq(X1, X2)) Used ordering: Polynomial interpretation [POLO]: POL(TOP(x_1)) = x_1 POL(active(x_1)) = 2*x_1 POL(cons(x_1, x_2)) = x_1 + x_2 POL(eq(x_1, x_2)) = 1 + x_1 + 2*x_2 POL(false) = 1 POL(inf(x_1)) = 2*x_1 POL(length(x_1)) = 2 + 2*x_1 POL(mark(x_1)) = x_1 POL(ok(x_1)) = 2 + 2*x_1 POL(s(x_1)) = x_1 POL(take(x_1, x_2)) = 1 + 2*x_1 + 2*x_2 ---------------------------------------- (62) Obligation: Q DP problem: P is empty. The TRS R consists of the following rules: active(inf(X)) -> mark(cons(X, inf(s(X)))) active(inf(X)) -> inf(active(X)) length(mark(X)) -> mark(length(X)) length(ok(X)) -> ok(length(X)) take(mark(X1), X2) -> mark(take(X1, X2)) take(X1, mark(X2)) -> mark(take(X1, X2)) inf(mark(X)) -> mark(inf(X)) s(ok(X)) -> ok(s(X)) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (63) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (64) YES