WORST_CASE(Omega(n^1),O(n^1)) proof of input_GRLmV7haAo.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 112 ms] (2) CpxRelTRS (3) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (4) CdtProblem (5) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CdtProblem (11) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxTRS (13) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxWeightedTrs (15) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxTypedWeightedTrs (17) CompletionProof [UPPER BOUND(ID), 0 ms] (18) CpxTypedWeightedCompleteTrs (19) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxTypedWeightedCompleteTrs (21) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (22) CpxRNTS (23) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRNTS (25) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 295 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 76 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 213 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 135 ms] (38) CpxRNTS (39) FinalProof [FINISHED, 0 ms] (40) BOUNDS(1, n^1) (41) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 3 ms] (42) CdtProblem (43) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (44) CpxRelTRS (45) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CpxRelTRS (47) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (48) typed CpxTrs (49) OrderProof [LOWER BOUND(ID), 19 ms] (50) typed CpxTrs (51) RewriteLemmaProof [LOWER BOUND(ID), 307 ms] (52) BEST (53) proven lower bound (54) LowerBoundPropagationProof [FINISHED, 0 ms] (55) BOUNDS(n^1, INF) (56) typed CpxTrs (57) RewriteLemmaProof [LOWER BOUND(ID), 82 ms] (58) typed CpxTrs (59) RewriteLemmaProof [LOWER BOUND(ID), 393 ms] (60) typed CpxTrs (61) RewriteLemmaProof [LOWER BOUND(ID), 32 ms] (62) BOUNDS(1, INF) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a(C(x1, x2), y) -> C(a(x1, y), a(x2, C(x1, x2))) a(Z, y) -> Z eqZList(C(x1, x2), C(y1, y2)) -> and(eqZList(x1, y1), eqZList(x2, y2)) eqZList(C(x1, x2), Z) -> False eqZList(Z, C(y1, y2)) -> False eqZList(Z, Z) -> True second(C(x1, x2)) -> x2 first(C(x1, x2)) -> x1 The (relative) TRS S consists of the following rules: and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a(C(x1, x2), y) -> C(a(x1, y), a(x2, C(x1, x2))) a(Z, y) -> Z eqZList(C(x1, x2), C(y1, y2)) -> and(eqZList(x1, y1), eqZList(x2, y2)) eqZList(C(x1, x2), Z) -> False eqZList(Z, C(y1, y2)) -> False eqZList(Z, Z) -> True second(C(x1, x2)) -> x2 first(C(x1, x2)) -> x1 The (relative) TRS S consists of the following rules: and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Tuples: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 K tuples:none Defined Rule Symbols: a_2, eqZList_2, second_1, first_1, and_2 Defined Pair Symbols: AND_2, A_2, EQZLIST_2, SECOND_1, FIRST_1 Compound Symbols: c, c1, c2, c3, c4_1, c5_1, c6, c7_2, c8_2, c9, c10, c11, c12, c13 ---------------------------------------- (5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 10 trailing nodes: EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 AND(True, False) -> c1 SECOND(C(z0, z1)) -> c12 A(Z, z0) -> c6 FIRST(C(z0, z1)) -> c13 EQZLIST(C(z0, z1), Z) -> c9 AND(False, False) -> c AND(True, True) -> c3 AND(False, True) -> c2 ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) K tuples:none Defined Rule Symbols: a_2, eqZList_2, second_1, first_1, and_2 Defined Pair Symbols: A_2, EQZLIST_2 Compound Symbols: c4_1, c5_1, c7_2, c8_2 ---------------------------------------- (7) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) K tuples:none Defined Rule Symbols: a_2, eqZList_2, second_1, first_1, and_2 Defined Pair Symbols: A_2, EQZLIST_2 Compound Symbols: c4_1, c5_1, c7_1, c8_1 ---------------------------------------- (9) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) K tuples:none Defined Rule Symbols:none Defined Pair Symbols: A_2, EQZLIST_2 Compound Symbols: c4_1, c5_1, c7_1, c8_1 ---------------------------------------- (11) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (12) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (13) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (14) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) [1] A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (15) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (16) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) [1] A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) [1] The TRS has the following type information: A :: C -> C -> c4:c5 C :: C -> C -> C c4 :: c4:c5 -> c4:c5 c5 :: c4:c5 -> c4:c5 EQZLIST :: C -> C -> c7:c8 c7 :: c7:c8 -> c7:c8 c8 :: c7:c8 -> c7:c8 Rewrite Strategy: INNERMOST ---------------------------------------- (17) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: A_2 EQZLIST_2 (c) The following functions are completely defined: none Due to the following rules being added: none And the following fresh constants: const, const1, const2 ---------------------------------------- (18) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) [1] A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) [1] The TRS has the following type information: A :: C -> C -> c4:c5 C :: C -> C -> C c4 :: c4:c5 -> c4:c5 c5 :: c4:c5 -> c4:c5 EQZLIST :: C -> C -> c7:c8 c7 :: c7:c8 -> c7:c8 c8 :: c7:c8 -> c7:c8 const :: c4:c5 const1 :: C const2 :: c7:c8 Rewrite Strategy: INNERMOST ---------------------------------------- (19) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (20) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) [1] A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c7(EQZLIST(z0, z2)) [1] EQZLIST(C(z0, z1), C(z2, z3)) -> c8(EQZLIST(z1, z3)) [1] The TRS has the following type information: A :: C -> C -> c4:c5 C :: C -> C -> C c4 :: c4:c5 -> c4:c5 c5 :: c4:c5 -> c4:c5 EQZLIST :: C -> C -> c7:c8 c7 :: c7:c8 -> c7:c8 c8 :: c7:c8 -> c7:c8 const :: c4:c5 const1 :: C const2 :: c7:c8 Rewrite Strategy: INNERMOST ---------------------------------------- (21) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: const => 0 const1 => 0 const2 => 0 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z2) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ---------------------------------------- (23) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 ---------------------------------------- (25) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { EQZLIST } { A } ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {EQZLIST}, {A} ---------------------------------------- (27) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {EQZLIST}, {A} ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: EQZLIST after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {EQZLIST}, {A} Previous analysis results are: EQZLIST: runtime: ?, size: O(1) [0] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: EQZLIST after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 }-> 1 + EQZLIST(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {A} Previous analysis results are: EQZLIST: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (33) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 + z2 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 + z3 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {A} Previous analysis results are: EQZLIST: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: A after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 + z2 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 + z3 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: {A} Previous analysis results are: EQZLIST: runtime: O(n^1) [z'], size: O(1) [0] A: runtime: ?, size: O(1) [0] ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: A after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: A(z, z') -{ 1 }-> 1 + A(z0, z') :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 A(z, z') -{ 1 }-> 1 + A(z1, 1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 EQZLIST(z, z') -{ 1 + z2 }-> 1 + s :|: s >= 0, s <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 EQZLIST(z, z') -{ 1 + z3 }-> 1 + s' :|: s' >= 0, s' <= 0, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 Function symbols to be analyzed: Previous analysis results are: EQZLIST: runtime: O(n^1) [z'], size: O(1) [0] A: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (39) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (40) BOUNDS(1, n^1) ---------------------------------------- (41) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (42) Obligation: Complexity Dependency Tuples Problem Rules: and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Tuples: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 K tuples:none Defined Rule Symbols: a_2, eqZList_2, second_1, first_1, and_2 Defined Pair Symbols: AND_2, A_2, EQZLIST_2, SECOND_1, FIRST_1 Compound Symbols: c, c1, c2, c3, c4_1, c5_1, c6, c7_2, c8_2, c9, c10, c11, c12, c13 ---------------------------------------- (43) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (44) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 The (relative) TRS S consists of the following rules: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Rewrite Strategy: INNERMOST ---------------------------------------- (45) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (46) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 The (relative) TRS S consists of the following rules: AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Rewrite Strategy: INNERMOST ---------------------------------------- (47) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (48) Obligation: Innermost TRS: Rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Types: A :: C:Z -> C:Z -> c4:c5:c6 C :: C:Z -> C:Z -> C:Z c4 :: c4:c5:c6 -> c4:c5:c6 c5 :: c4:c5:c6 -> c4:c5:c6 Z :: C:Z c6 :: c4:c5:c6 EQZLIST :: C:Z -> C:Z -> c7:c8:c9:c10:c11 c7 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 AND :: False:True -> False:True -> c:c1:c2:c3 eqZList :: C:Z -> C:Z -> False:True c8 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 c9 :: c7:c8:c9:c10:c11 c10 :: c7:c8:c9:c10:c11 c11 :: c7:c8:c9:c10:c11 SECOND :: C:Z -> c12 c12 :: c12 FIRST :: C:Z -> c13 c13 :: c13 False :: False:True c :: c:c1:c2:c3 True :: False:True c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 and :: False:True -> False:True -> False:True a :: C:Z -> C:Z -> C:Z second :: C:Z -> C:Z first :: C:Z -> C:Z hole_c4:c5:c61_14 :: c4:c5:c6 hole_C:Z2_14 :: C:Z hole_c7:c8:c9:c10:c113_14 :: c7:c8:c9:c10:c11 hole_c:c1:c2:c34_14 :: c:c1:c2:c3 hole_False:True5_14 :: False:True hole_c126_14 :: c12 hole_c137_14 :: c13 gen_c4:c5:c68_14 :: Nat -> c4:c5:c6 gen_C:Z9_14 :: Nat -> C:Z gen_c7:c8:c9:c10:c1110_14 :: Nat -> c7:c8:c9:c10:c11 ---------------------------------------- (49) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: A, EQZLIST, eqZList, a They will be analysed ascendingly in the following order: eqZList < EQZLIST ---------------------------------------- (50) Obligation: Innermost TRS: Rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Types: A :: C:Z -> C:Z -> c4:c5:c6 C :: C:Z -> C:Z -> C:Z c4 :: c4:c5:c6 -> c4:c5:c6 c5 :: c4:c5:c6 -> c4:c5:c6 Z :: C:Z c6 :: c4:c5:c6 EQZLIST :: C:Z -> C:Z -> c7:c8:c9:c10:c11 c7 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 AND :: False:True -> False:True -> c:c1:c2:c3 eqZList :: C:Z -> C:Z -> False:True c8 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 c9 :: c7:c8:c9:c10:c11 c10 :: c7:c8:c9:c10:c11 c11 :: c7:c8:c9:c10:c11 SECOND :: C:Z -> c12 c12 :: c12 FIRST :: C:Z -> c13 c13 :: c13 False :: False:True c :: c:c1:c2:c3 True :: False:True c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 and :: False:True -> False:True -> False:True a :: C:Z -> C:Z -> C:Z second :: C:Z -> C:Z first :: C:Z -> C:Z hole_c4:c5:c61_14 :: c4:c5:c6 hole_C:Z2_14 :: C:Z hole_c7:c8:c9:c10:c113_14 :: c7:c8:c9:c10:c11 hole_c:c1:c2:c34_14 :: c:c1:c2:c3 hole_False:True5_14 :: False:True hole_c126_14 :: c12 hole_c137_14 :: c13 gen_c4:c5:c68_14 :: Nat -> c4:c5:c6 gen_C:Z9_14 :: Nat -> C:Z gen_c7:c8:c9:c10:c1110_14 :: Nat -> c7:c8:c9:c10:c11 Generator Equations: gen_c4:c5:c68_14(0) <=> c6 gen_c4:c5:c68_14(+(x, 1)) <=> c4(gen_c4:c5:c68_14(x)) gen_C:Z9_14(0) <=> Z gen_C:Z9_14(+(x, 1)) <=> C(gen_C:Z9_14(x), Z) gen_c7:c8:c9:c10:c1110_14(0) <=> c9 gen_c7:c8:c9:c10:c1110_14(+(x, 1)) <=> c7(c, gen_c7:c8:c9:c10:c1110_14(x)) The following defined symbols remain to be analysed: A, EQZLIST, eqZList, a They will be analysed ascendingly in the following order: eqZList < EQZLIST ---------------------------------------- (51) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: A(gen_C:Z9_14(n12_14), gen_C:Z9_14(b)) -> gen_c4:c5:c68_14(n12_14), rt in Omega(1 + n12_14) Induction Base: A(gen_C:Z9_14(0), gen_C:Z9_14(b)) ->_R^Omega(1) c6 Induction Step: A(gen_C:Z9_14(+(n12_14, 1)), gen_C:Z9_14(b)) ->_R^Omega(1) c4(A(gen_C:Z9_14(n12_14), gen_C:Z9_14(b))) ->_IH c4(gen_c4:c5:c68_14(c13_14)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (52) Complex Obligation (BEST) ---------------------------------------- (53) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Types: A :: C:Z -> C:Z -> c4:c5:c6 C :: C:Z -> C:Z -> C:Z c4 :: c4:c5:c6 -> c4:c5:c6 c5 :: c4:c5:c6 -> c4:c5:c6 Z :: C:Z c6 :: c4:c5:c6 EQZLIST :: C:Z -> C:Z -> c7:c8:c9:c10:c11 c7 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 AND :: False:True -> False:True -> c:c1:c2:c3 eqZList :: C:Z -> C:Z -> False:True c8 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 c9 :: c7:c8:c9:c10:c11 c10 :: c7:c8:c9:c10:c11 c11 :: c7:c8:c9:c10:c11 SECOND :: C:Z -> c12 c12 :: c12 FIRST :: C:Z -> c13 c13 :: c13 False :: False:True c :: c:c1:c2:c3 True :: False:True c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 and :: False:True -> False:True -> False:True a :: C:Z -> C:Z -> C:Z second :: C:Z -> C:Z first :: C:Z -> C:Z hole_c4:c5:c61_14 :: c4:c5:c6 hole_C:Z2_14 :: C:Z hole_c7:c8:c9:c10:c113_14 :: c7:c8:c9:c10:c11 hole_c:c1:c2:c34_14 :: c:c1:c2:c3 hole_False:True5_14 :: False:True hole_c126_14 :: c12 hole_c137_14 :: c13 gen_c4:c5:c68_14 :: Nat -> c4:c5:c6 gen_C:Z9_14 :: Nat -> C:Z gen_c7:c8:c9:c10:c1110_14 :: Nat -> c7:c8:c9:c10:c11 Generator Equations: gen_c4:c5:c68_14(0) <=> c6 gen_c4:c5:c68_14(+(x, 1)) <=> c4(gen_c4:c5:c68_14(x)) gen_C:Z9_14(0) <=> Z gen_C:Z9_14(+(x, 1)) <=> C(gen_C:Z9_14(x), Z) gen_c7:c8:c9:c10:c1110_14(0) <=> c9 gen_c7:c8:c9:c10:c1110_14(+(x, 1)) <=> c7(c, gen_c7:c8:c9:c10:c1110_14(x)) The following defined symbols remain to be analysed: A, EQZLIST, eqZList, a They will be analysed ascendingly in the following order: eqZList < EQZLIST ---------------------------------------- (54) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (55) BOUNDS(n^1, INF) ---------------------------------------- (56) Obligation: Innermost TRS: Rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Types: A :: C:Z -> C:Z -> c4:c5:c6 C :: C:Z -> C:Z -> C:Z c4 :: c4:c5:c6 -> c4:c5:c6 c5 :: c4:c5:c6 -> c4:c5:c6 Z :: C:Z c6 :: c4:c5:c6 EQZLIST :: C:Z -> C:Z -> c7:c8:c9:c10:c11 c7 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 AND :: False:True -> False:True -> c:c1:c2:c3 eqZList :: C:Z -> C:Z -> False:True c8 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 c9 :: c7:c8:c9:c10:c11 c10 :: c7:c8:c9:c10:c11 c11 :: c7:c8:c9:c10:c11 SECOND :: C:Z -> c12 c12 :: c12 FIRST :: C:Z -> c13 c13 :: c13 False :: False:True c :: c:c1:c2:c3 True :: False:True c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 and :: False:True -> False:True -> False:True a :: C:Z -> C:Z -> C:Z second :: C:Z -> C:Z first :: C:Z -> C:Z hole_c4:c5:c61_14 :: c4:c5:c6 hole_C:Z2_14 :: C:Z hole_c7:c8:c9:c10:c113_14 :: c7:c8:c9:c10:c11 hole_c:c1:c2:c34_14 :: c:c1:c2:c3 hole_False:True5_14 :: False:True hole_c126_14 :: c12 hole_c137_14 :: c13 gen_c4:c5:c68_14 :: Nat -> c4:c5:c6 gen_C:Z9_14 :: Nat -> C:Z gen_c7:c8:c9:c10:c1110_14 :: Nat -> c7:c8:c9:c10:c11 Lemmas: A(gen_C:Z9_14(n12_14), gen_C:Z9_14(b)) -> gen_c4:c5:c68_14(n12_14), rt in Omega(1 + n12_14) Generator Equations: gen_c4:c5:c68_14(0) <=> c6 gen_c4:c5:c68_14(+(x, 1)) <=> c4(gen_c4:c5:c68_14(x)) gen_C:Z9_14(0) <=> Z gen_C:Z9_14(+(x, 1)) <=> C(gen_C:Z9_14(x), Z) gen_c7:c8:c9:c10:c1110_14(0) <=> c9 gen_c7:c8:c9:c10:c1110_14(+(x, 1)) <=> c7(c, gen_c7:c8:c9:c10:c1110_14(x)) The following defined symbols remain to be analysed: eqZList, EQZLIST, a They will be analysed ascendingly in the following order: eqZList < EQZLIST ---------------------------------------- (57) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: eqZList(gen_C:Z9_14(+(1, n675_14)), gen_C:Z9_14(n675_14)) -> False, rt in Omega(0) Induction Base: eqZList(gen_C:Z9_14(+(1, 0)), gen_C:Z9_14(0)) ->_R^Omega(0) False Induction Step: eqZList(gen_C:Z9_14(+(1, +(n675_14, 1))), gen_C:Z9_14(+(n675_14, 1))) ->_R^Omega(0) and(eqZList(gen_C:Z9_14(+(1, n675_14)), gen_C:Z9_14(n675_14)), eqZList(Z, Z)) ->_IH and(False, eqZList(Z, Z)) ->_R^Omega(0) and(False, True) ->_R^Omega(0) False We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (58) Obligation: Innermost TRS: Rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Types: A :: C:Z -> C:Z -> c4:c5:c6 C :: C:Z -> C:Z -> C:Z c4 :: c4:c5:c6 -> c4:c5:c6 c5 :: c4:c5:c6 -> c4:c5:c6 Z :: C:Z c6 :: c4:c5:c6 EQZLIST :: C:Z -> C:Z -> c7:c8:c9:c10:c11 c7 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 AND :: False:True -> False:True -> c:c1:c2:c3 eqZList :: C:Z -> C:Z -> False:True c8 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 c9 :: c7:c8:c9:c10:c11 c10 :: c7:c8:c9:c10:c11 c11 :: c7:c8:c9:c10:c11 SECOND :: C:Z -> c12 c12 :: c12 FIRST :: C:Z -> c13 c13 :: c13 False :: False:True c :: c:c1:c2:c3 True :: False:True c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 and :: False:True -> False:True -> False:True a :: C:Z -> C:Z -> C:Z second :: C:Z -> C:Z first :: C:Z -> C:Z hole_c4:c5:c61_14 :: c4:c5:c6 hole_C:Z2_14 :: C:Z hole_c7:c8:c9:c10:c113_14 :: c7:c8:c9:c10:c11 hole_c:c1:c2:c34_14 :: c:c1:c2:c3 hole_False:True5_14 :: False:True hole_c126_14 :: c12 hole_c137_14 :: c13 gen_c4:c5:c68_14 :: Nat -> c4:c5:c6 gen_C:Z9_14 :: Nat -> C:Z gen_c7:c8:c9:c10:c1110_14 :: Nat -> c7:c8:c9:c10:c11 Lemmas: A(gen_C:Z9_14(n12_14), gen_C:Z9_14(b)) -> gen_c4:c5:c68_14(n12_14), rt in Omega(1 + n12_14) eqZList(gen_C:Z9_14(+(1, n675_14)), gen_C:Z9_14(n675_14)) -> False, rt in Omega(0) Generator Equations: gen_c4:c5:c68_14(0) <=> c6 gen_c4:c5:c68_14(+(x, 1)) <=> c4(gen_c4:c5:c68_14(x)) gen_C:Z9_14(0) <=> Z gen_C:Z9_14(+(x, 1)) <=> C(gen_C:Z9_14(x), Z) gen_c7:c8:c9:c10:c1110_14(0) <=> c9 gen_c7:c8:c9:c10:c1110_14(+(x, 1)) <=> c7(c, gen_c7:c8:c9:c10:c1110_14(x)) The following defined symbols remain to be analysed: EQZLIST, a ---------------------------------------- (59) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: EQZLIST(gen_C:Z9_14(+(2, n2887_14)), gen_C:Z9_14(+(1, n2887_14))) -> *11_14, rt in Omega(n2887_14) Induction Base: EQZLIST(gen_C:Z9_14(+(2, 0)), gen_C:Z9_14(+(1, 0))) Induction Step: EQZLIST(gen_C:Z9_14(+(2, +(n2887_14, 1))), gen_C:Z9_14(+(1, +(n2887_14, 1)))) ->_R^Omega(1) c7(AND(eqZList(gen_C:Z9_14(+(2, n2887_14)), gen_C:Z9_14(+(1, n2887_14))), eqZList(Z, Z)), EQZLIST(gen_C:Z9_14(+(2, n2887_14)), gen_C:Z9_14(+(1, n2887_14)))) ->_L^Omega(0) c7(AND(False, eqZList(Z, Z)), EQZLIST(gen_C:Z9_14(+(2, n2887_14)), gen_C:Z9_14(+(1, n2887_14)))) ->_R^Omega(0) c7(AND(False, True), EQZLIST(gen_C:Z9_14(+(2, n2887_14)), gen_C:Z9_14(+(1, n2887_14)))) ->_R^Omega(0) c7(c2, EQZLIST(gen_C:Z9_14(+(2, n2887_14)), gen_C:Z9_14(+(1, n2887_14)))) ->_IH c7(c2, *11_14) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (60) Obligation: Innermost TRS: Rules: A(C(z0, z1), z2) -> c4(A(z0, z2)) A(C(z0, z1), z2) -> c5(A(z1, C(z0, z1))) A(Z, z0) -> c6 EQZLIST(C(z0, z1), C(z2, z3)) -> c7(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2)) EQZLIST(C(z0, z1), C(z2, z3)) -> c8(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c10 EQZLIST(Z, Z) -> c11 SECOND(C(z0, z1)) -> c12 FIRST(C(z0, z1)) -> c13 AND(False, False) -> c AND(True, False) -> c1 AND(False, True) -> c2 AND(True, True) -> c3 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True a(C(z0, z1), z2) -> C(a(z0, z2), a(z1, C(z0, z1))) a(Z, z0) -> Z eqZList(C(z0, z1), C(z2, z3)) -> and(eqZList(z0, z2), eqZList(z1, z3)) eqZList(C(z0, z1), Z) -> False eqZList(Z, C(z0, z1)) -> False eqZList(Z, Z) -> True second(C(z0, z1)) -> z1 first(C(z0, z1)) -> z0 Types: A :: C:Z -> C:Z -> c4:c5:c6 C :: C:Z -> C:Z -> C:Z c4 :: c4:c5:c6 -> c4:c5:c6 c5 :: c4:c5:c6 -> c4:c5:c6 Z :: C:Z c6 :: c4:c5:c6 EQZLIST :: C:Z -> C:Z -> c7:c8:c9:c10:c11 c7 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 AND :: False:True -> False:True -> c:c1:c2:c3 eqZList :: C:Z -> C:Z -> False:True c8 :: c:c1:c2:c3 -> c7:c8:c9:c10:c11 -> c7:c8:c9:c10:c11 c9 :: c7:c8:c9:c10:c11 c10 :: c7:c8:c9:c10:c11 c11 :: c7:c8:c9:c10:c11 SECOND :: C:Z -> c12 c12 :: c12 FIRST :: C:Z -> c13 c13 :: c13 False :: False:True c :: c:c1:c2:c3 True :: False:True c1 :: c:c1:c2:c3 c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 and :: False:True -> False:True -> False:True a :: C:Z -> C:Z -> C:Z second :: C:Z -> C:Z first :: C:Z -> C:Z hole_c4:c5:c61_14 :: c4:c5:c6 hole_C:Z2_14 :: C:Z hole_c7:c8:c9:c10:c113_14 :: c7:c8:c9:c10:c11 hole_c:c1:c2:c34_14 :: c:c1:c2:c3 hole_False:True5_14 :: False:True hole_c126_14 :: c12 hole_c137_14 :: c13 gen_c4:c5:c68_14 :: Nat -> c4:c5:c6 gen_C:Z9_14 :: Nat -> C:Z gen_c7:c8:c9:c10:c1110_14 :: Nat -> c7:c8:c9:c10:c11 Lemmas: A(gen_C:Z9_14(n12_14), gen_C:Z9_14(b)) -> gen_c4:c5:c68_14(n12_14), rt in Omega(1 + n12_14) eqZList(gen_C:Z9_14(+(1, n675_14)), gen_C:Z9_14(n675_14)) -> False, rt in Omega(0) EQZLIST(gen_C:Z9_14(+(2, n2887_14)), gen_C:Z9_14(+(1, n2887_14))) -> *11_14, rt in Omega(n2887_14) Generator Equations: gen_c4:c5:c68_14(0) <=> c6 gen_c4:c5:c68_14(+(x, 1)) <=> c4(gen_c4:c5:c68_14(x)) gen_C:Z9_14(0) <=> Z gen_C:Z9_14(+(x, 1)) <=> C(gen_C:Z9_14(x), Z) gen_c7:c8:c9:c10:c1110_14(0) <=> c9 gen_c7:c8:c9:c10:c1110_14(+(x, 1)) <=> c7(c, gen_c7:c8:c9:c10:c1110_14(x)) The following defined symbols remain to be analysed: a ---------------------------------------- (61) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a(gen_C:Z9_14(n5491_14), gen_C:Z9_14(b)) -> gen_C:Z9_14(n5491_14), rt in Omega(0) Induction Base: a(gen_C:Z9_14(0), gen_C:Z9_14(b)) ->_R^Omega(0) Z Induction Step: a(gen_C:Z9_14(+(n5491_14, 1)), gen_C:Z9_14(b)) ->_R^Omega(0) C(a(gen_C:Z9_14(n5491_14), gen_C:Z9_14(b)), a(Z, C(gen_C:Z9_14(n5491_14), Z))) ->_IH C(gen_C:Z9_14(c5492_14), a(Z, C(gen_C:Z9_14(n5491_14), Z))) ->_R^Omega(0) C(gen_C:Z9_14(n5491_14), Z) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (62) BOUNDS(1, INF)