WORST_CASE(?,O(n^1)) proof of input_6dgiKFKuj5.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). (0) CpxTRS (1) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (2) CdtProblem (3) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (4) CdtProblem (5) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 49 ms] (8) CdtProblem (9) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (10) CdtProblem (11) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (12) BOUNDS(1, 1) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: perfectp(0) -> false perfectp(s(x)) -> f(x, s(0), s(x), s(x)) f(0, y, 0, u) -> true f(0, y, s(z), u) -> false f(s(x), 0, z, u) -> f(x, u, minus(z, s(x)), u) f(s(x), s(y), z, u) -> if(le(x, y), f(s(x), minus(y, x), z, u), f(x, u, z, u)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) Tuples: PERFECTP(0) -> c PERFECTP(s(z0)) -> c1(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c2 F(0, z0, s(z1), z2) -> c3 F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c5(F(s(z0), minus(z1, z0), z2, z3)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) S tuples: PERFECTP(0) -> c PERFECTP(s(z0)) -> c1(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c2 F(0, z0, s(z1), z2) -> c3 F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c5(F(s(z0), minus(z1, z0), z2, z3)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: perfectp_1, f_4 Defined Pair Symbols: PERFECTP_1, F_4 Compound Symbols: c, c1_1, c2, c3, c4_1, c5_1, c6_1 ---------------------------------------- (3) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: PERFECTP(s(z0)) -> c1(F(z0, s(0), s(z0), s(z0))) Removed 4 trailing nodes: F(0, z0, 0, z1) -> c2 F(0, z0, s(z1), z2) -> c3 PERFECTP(0) -> c F(s(z0), s(z1), z2, z3) -> c5(F(s(z0), minus(z1, z0), z2, z3)) ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) Tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) S tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: perfectp_1, f_4 Defined Pair Symbols: F_4 Compound Symbols: c4_1, c6_1 ---------------------------------------- (5) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) S tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols:none Defined Pair Symbols: F_4 Compound Symbols: c4_1, c6_1 ---------------------------------------- (7) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) We considered the (Usable) Rules:none And the Tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(F(x_1, x_2, x_3, x_4)) = x_1 + x_3 POL(c4(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(minus(x_1, x_2)) = [1] POL(s(x_1)) = [1] + x_1 ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) S tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) K tuples: F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) Defined Rule Symbols:none Defined Pair Symbols: F_4 Compound Symbols: c4_1, c6_1 ---------------------------------------- (9) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) We considered the (Usable) Rules:none And the Tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(F(x_1, x_2, x_3, x_4)) = x_1 + x_3 POL(c4(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(minus(x_1, x_2)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) S tuples:none K tuples: F(s(z0), s(z1), z2, z3) -> c6(F(z0, z3, z2, z3)) F(s(z0), 0, z1, z2) -> c4(F(z0, z2, minus(z1, s(z0)), z2)) Defined Rule Symbols:none Defined Pair Symbols: F_4 Compound Symbols: c4_1, c6_1 ---------------------------------------- (11) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (12) BOUNDS(1, 1)