/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) QDP (5) QDPOrderProof [EQUIVALENT, 106 ms] (6) QDP (7) DependencyGraphProof [EQUIVALENT, 0 ms] (8) AND (9) QDP (10) UsableRulesProof [EQUIVALENT, 0 ms] (11) QDP (12) QDPSizeChangeProof [EQUIVALENT, 0 ms] (13) YES (14) QDP (15) QDPOrderProof [EQUIVALENT, 5 ms] (16) QDP (17) DependencyGraphProof [EQUIVALENT, 0 ms] (18) TRUE ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U21(tt) -> tt U31(tt, N) -> activate(N) U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(N, 0) -> U31(isNat(N), N) plus(N, s(M)) -> U41(isNat(M), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) activate(n__s(X)) -> s(activate(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, V2) -> U12^1(isNat(activate(V2))) U11^1(tt, V2) -> ISNAT(activate(V2)) U11^1(tt, V2) -> ACTIVATE(V2) U31^1(tt, N) -> ACTIVATE(N) U41^1(tt, M, N) -> U42^1(isNat(activate(N)), activate(M), activate(N)) U41^1(tt, M, N) -> ISNAT(activate(N)) U41^1(tt, M, N) -> ACTIVATE(N) U41^1(tt, M, N) -> ACTIVATE(M) U42^1(tt, M, N) -> S(plus(activate(N), activate(M))) U42^1(tt, M, N) -> PLUS(activate(N), activate(M)) U42^1(tt, M, N) -> ACTIVATE(N) U42^1(tt, M, N) -> ACTIVATE(M) ISNAT(n__plus(V1, V2)) -> U11^1(isNat(activate(V1)), activate(V2)) ISNAT(n__plus(V1, V2)) -> ISNAT(activate(V1)) ISNAT(n__plus(V1, V2)) -> ACTIVATE(V1) ISNAT(n__plus(V1, V2)) -> ACTIVATE(V2) ISNAT(n__s(V1)) -> U21^1(isNat(activate(V1))) ISNAT(n__s(V1)) -> ISNAT(activate(V1)) ISNAT(n__s(V1)) -> ACTIVATE(V1) PLUS(N, 0) -> U31^1(isNat(N), N) PLUS(N, 0) -> ISNAT(N) PLUS(N, s(M)) -> U41^1(isNat(M), M, N) PLUS(N, s(M)) -> ISNAT(M) ACTIVATE(n__0) -> 0^1 ACTIVATE(n__plus(X1, X2)) -> PLUS(activate(X1), activate(X2)) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__s(X)) -> S(activate(X)) ACTIVATE(n__s(X)) -> ACTIVATE(X) The TRS R consists of the following rules: U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U21(tt) -> tt U31(tt, N) -> activate(N) U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(N, 0) -> U31(isNat(N), N) plus(N, s(M)) -> U41(isNat(M), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) activate(n__s(X)) -> s(activate(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 5 less nodes. ---------------------------------------- (4) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(tt, V2) -> ISNAT(activate(V2)) ISNAT(n__plus(V1, V2)) -> U11^1(isNat(activate(V1)), activate(V2)) U11^1(tt, V2) -> ACTIVATE(V2) ACTIVATE(n__plus(X1, X2)) -> PLUS(activate(X1), activate(X2)) PLUS(N, 0) -> U31^1(isNat(N), N) U31^1(tt, N) -> ACTIVATE(N) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__s(X)) -> ACTIVATE(X) PLUS(N, 0) -> ISNAT(N) ISNAT(n__plus(V1, V2)) -> ISNAT(activate(V1)) ISNAT(n__plus(V1, V2)) -> ACTIVATE(V1) ISNAT(n__plus(V1, V2)) -> ACTIVATE(V2) ISNAT(n__s(V1)) -> ISNAT(activate(V1)) ISNAT(n__s(V1)) -> ACTIVATE(V1) PLUS(N, s(M)) -> U41^1(isNat(M), M, N) U41^1(tt, M, N) -> U42^1(isNat(activate(N)), activate(M), activate(N)) U42^1(tt, M, N) -> PLUS(activate(N), activate(M)) PLUS(N, s(M)) -> ISNAT(M) U42^1(tt, M, N) -> ACTIVATE(N) U42^1(tt, M, N) -> ACTIVATE(M) U41^1(tt, M, N) -> ISNAT(activate(N)) U41^1(tt, M, N) -> ACTIVATE(N) U41^1(tt, M, N) -> ACTIVATE(M) The TRS R consists of the following rules: U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U21(tt) -> tt U31(tt, N) -> activate(N) U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(N, 0) -> U31(isNat(N), N) plus(N, s(M)) -> U41(isNat(M), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) activate(n__s(X)) -> s(activate(X)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (5) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. U11^1(tt, V2) -> ACTIVATE(V2) PLUS(N, 0) -> U31^1(isNat(N), N) ACTIVATE(n__s(X)) -> ACTIVATE(X) PLUS(N, 0) -> ISNAT(N) ISNAT(n__plus(V1, V2)) -> ACTIVATE(V1) ISNAT(n__plus(V1, V2)) -> ACTIVATE(V2) ISNAT(n__s(V1)) -> ISNAT(activate(V1)) ISNAT(n__s(V1)) -> ACTIVATE(V1) U41^1(tt, M, N) -> U42^1(isNat(activate(N)), activate(M), activate(N)) U42^1(tt, M, N) -> PLUS(activate(N), activate(M)) PLUS(N, s(M)) -> ISNAT(M) U42^1(tt, M, N) -> ACTIVATE(N) U42^1(tt, M, N) -> ACTIVATE(M) U41^1(tt, M, N) -> ISNAT(activate(N)) U41^1(tt, M, N) -> ACTIVATE(N) U41^1(tt, M, N) -> ACTIVATE(M) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ISNAT_1(x_1) ) = 2x_1 + 1 POL( PLUS_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( U11^1_2(x_1, x_2) ) = 2x_2 + 1 POL( U31^1_2(x_1, x_2) ) = x_2 POL( U41^1_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U42^1_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 1 POL( activate_1(x_1) ) = x_1 POL( n__0 ) = 2 POL( 0 ) = 2 POL( n__plus_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( plus_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U31_2(x_1, x_2) ) = 2x_2 POL( isNat_1(x_1) ) = max{0, -2} POL( tt ) = 0 POL( n__s_1(x_1) ) = x_1 + 2 POL( s_1(x_1) ) = x_1 + 2 POL( U11_2(x_1, x_2) ) = max{0, -2} POL( U12_1(x_1) ) = max{0, -2} POL( U21_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U42_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( ACTIVATE_1(x_1) ) = x_1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) plus(N, 0) -> U31(isNat(N), N) U31(tt, N) -> activate(N) activate(n__s(X)) -> s(activate(X)) activate(X) -> X isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) plus(N, s(M)) -> U41(isNat(M), M, N) U21(tt) -> tt U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) 0 -> n__0 ---------------------------------------- (6) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(tt, V2) -> ISNAT(activate(V2)) ISNAT(n__plus(V1, V2)) -> U11^1(isNat(activate(V1)), activate(V2)) ACTIVATE(n__plus(X1, X2)) -> PLUS(activate(X1), activate(X2)) U31^1(tt, N) -> ACTIVATE(N) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X2) ISNAT(n__plus(V1, V2)) -> ISNAT(activate(V1)) PLUS(N, s(M)) -> U41^1(isNat(M), M, N) The TRS R consists of the following rules: U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U21(tt) -> tt U31(tt, N) -> activate(N) U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(N, 0) -> U31(isNat(N), N) plus(N, s(M)) -> U41(isNat(M), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) activate(n__s(X)) -> s(activate(X)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (7) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs with 3 less nodes. ---------------------------------------- (8) Complex Obligation (AND) ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X1) The TRS R consists of the following rules: U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U21(tt) -> tt U31(tt, N) -> activate(N) U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(N, 0) -> U31(isNat(N), N) plus(N, s(M)) -> U41(isNat(M), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) activate(n__s(X)) -> s(activate(X)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (10) 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. ---------------------------------------- (11) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X1) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (12) 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: *ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X2) The graph contains the following edges 1 > 1 *ACTIVATE(n__plus(X1, X2)) -> ACTIVATE(X1) The graph contains the following edges 1 > 1 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT(n__plus(V1, V2)) -> U11^1(isNat(activate(V1)), activate(V2)) U11^1(tt, V2) -> ISNAT(activate(V2)) ISNAT(n__plus(V1, V2)) -> ISNAT(activate(V1)) The TRS R consists of the following rules: U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U21(tt) -> tt U31(tt, N) -> activate(N) U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(N, 0) -> U31(isNat(N), N) plus(N, s(M)) -> U41(isNat(M), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) activate(n__s(X)) -> s(activate(X)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (15) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ISNAT(n__plus(V1, V2)) -> U11^1(isNat(activate(V1)), activate(V2)) ISNAT(n__plus(V1, V2)) -> ISNAT(activate(V1)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ISNAT_1(x_1) ) = max{0, 2x_1 - 1} POL( U11^1_2(x_1, x_2) ) = 2x_2 POL( activate_1(x_1) ) = x_1 POL( n__0 ) = 0 POL( 0 ) = 0 POL( n__plus_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( plus_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( U31_2(x_1, x_2) ) = x_2 + 2 POL( isNat_1(x_1) ) = 2x_1 + 1 POL( tt ) = 2 POL( n__s_1(x_1) ) = 1 POL( s_1(x_1) ) = 1 POL( U11_2(x_1, x_2) ) = 2x_2 + 2 POL( U12_1(x_1) ) = 2 POL( U21_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) plus(N, 0) -> U31(isNat(N), N) U31(tt, N) -> activate(N) activate(n__s(X)) -> s(activate(X)) activate(X) -> X isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) plus(N, s(M)) -> U41(isNat(M), M, N) U21(tt) -> tt U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) 0 -> n__0 ---------------------------------------- (16) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(tt, V2) -> ISNAT(activate(V2)) The TRS R consists of the following rules: U11(tt, V2) -> U12(isNat(activate(V2))) U12(tt) -> tt U21(tt) -> tt U31(tt, N) -> activate(N) U41(tt, M, N) -> U42(isNat(activate(N)), activate(M), activate(N)) U42(tt, M, N) -> s(plus(activate(N), activate(M))) isNat(n__0) -> tt isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) isNat(n__s(V1)) -> U21(isNat(activate(V1))) plus(N, 0) -> U31(isNat(N), N) plus(N, s(M)) -> U41(isNat(M), M, N) 0 -> n__0 plus(X1, X2) -> n__plus(X1, X2) s(X) -> n__s(X) activate(n__0) -> 0 activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) activate(n__s(X)) -> s(activate(X)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (17) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. ---------------------------------------- (18) TRUE