/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^1)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 126 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) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 31 ms] (12) CdtProblem (13) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 6 ms] (14) CdtProblem (15) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (16) BOUNDS(1, 1) (17) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRelTRS (19) SlicingProof [LOWER BOUND(ID), 0 ms] (20) CpxRelTRS (21) TypeInferenceProof [BOTH BOUNDS(ID, ID), 5 ms] (22) typed CpxTrs (23) OrderProof [LOWER BOUND(ID), 0 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 208 ms] (26) BEST (27) proven lower bound (28) LowerBoundPropagationProof [FINISHED, 0 ms] (29) BOUNDS(n^1, INF) (30) typed CpxTrs (31) RewriteLemmaProof [LOWER BOUND(ID), 91 ms] (32) BOUNDS(1, INF) ---------------------------------------- (0) Obligation: The Runtime Complexity (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: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (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: INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS 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(z1, C(z0, z1))) A(Z, z0) -> c5 EQZLIST(C(z0, z1), C(z2, z3)) -> c6(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c7 EQZLIST(Z, C(z0, z1)) -> c8 EQZLIST(Z, Z) -> c9 SECOND(C(z0, z1)) -> c10 FIRST(C(z0, z1)) -> c11 S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) A(Z, z0) -> c5 EQZLIST(C(z0, z1), C(z2, z3)) -> c6(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2), EQZLIST(z1, z3)) EQZLIST(C(z0, z1), Z) -> c7 EQZLIST(Z, C(z0, z1)) -> c8 EQZLIST(Z, Z) -> c9 SECOND(C(z0, z1)) -> c10 FIRST(C(z0, z1)) -> c11 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_2, c5, c6_3, c7, c8, c9, c10, c11 ---------------------------------------- (5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 10 trailing nodes: EQZLIST(C(z0, z1), Z) -> c7 AND(True, False) -> c1 A(Z, z0) -> c5 AND(True, True) -> c3 SECOND(C(z0, z1)) -> c10 AND(False, True) -> c2 FIRST(C(z0, z1)) -> c11 EQZLIST(Z, Z) -> c9 EQZLIST(Z, C(z0, z1)) -> c8 AND(False, False) -> c ---------------------------------------- (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(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2), EQZLIST(z1, z3)) S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(AND(eqZList(z0, z2), eqZList(z1, z3)), EQZLIST(z0, z2), 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_2, c6_3 ---------------------------------------- (7) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 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(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), 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_2, c6_2 ---------------------------------------- (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(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) K tuples:none Defined Rule Symbols:none Defined Pair Symbols: A_2, EQZLIST_2 Compound Symbols: c4_2, c6_2 ---------------------------------------- (11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) We considered the (Usable) Rules:none And the Tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) The order we found is given by the following interpretation: Polynomial interpretation : POL(A(x_1, x_2)) = [1] + x_1 POL(C(x_1, x_2)) = [1] + x_1 + x_2 POL(EQZLIST(x_1, x_2)) = [1] + x_1 + x_2 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c6(x_1, x_2)) = x_1 + x_2 ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) S tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) K tuples: EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) Defined Rule Symbols:none Defined Pair Symbols: A_2, EQZLIST_2 Compound Symbols: c4_2, c6_2 ---------------------------------------- (13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) We considered the (Usable) Rules:none And the Tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) The order we found is given by the following interpretation: Polynomial interpretation : POL(A(x_1, x_2)) = x_1 POL(C(x_1, x_2)) = [1] + x_1 + x_2 POL(EQZLIST(x_1, x_2)) = [1] + x_2 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c6(x_1, x_2)) = x_1 + x_2 ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) S tuples:none K tuples: EQZLIST(C(z0, z1), C(z2, z3)) -> c6(EQZLIST(z0, z2), EQZLIST(z1, z3)) A(C(z0, z1), z2) -> c4(A(z0, z2), A(z1, C(z0, z1))) Defined Rule Symbols:none Defined Pair Symbols: A_2, EQZLIST_2 Compound Symbols: c4_2, c6_2 ---------------------------------------- (15) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (16) BOUNDS(1, 1) ---------------------------------------- (17) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (18) 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(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: INNERMOST ---------------------------------------- (19) SlicingProof (LOWER BOUND(ID)) Sliced the following arguments: a/1 ---------------------------------------- (20) 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(x1, x2)) -> C(a(x1), a(x2)) a(Z) -> 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: INNERMOST ---------------------------------------- (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (22) Obligation: Innermost TRS: Rules: a(C(x1, x2)) -> C(a(x1), a(x2)) a(Z) -> 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 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Types: a :: C:Z -> C:Z C :: C:Z -> C:Z -> C:Z Z :: C:Z eqZList :: C:Z -> C:Z -> False:True and :: False:True -> False:True -> False:True False :: False:True True :: False:True second :: C:Z -> C:Z first :: C:Z -> C:Z hole_C:Z1_0 :: C:Z hole_False:True2_0 :: False:True gen_C:Z3_0 :: Nat -> C:Z ---------------------------------------- (23) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: a, eqZList ---------------------------------------- (24) Obligation: Innermost TRS: Rules: a(C(x1, x2)) -> C(a(x1), a(x2)) a(Z) -> 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 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Types: a :: C:Z -> C:Z C :: C:Z -> C:Z -> C:Z Z :: C:Z eqZList :: C:Z -> C:Z -> False:True and :: False:True -> False:True -> False:True False :: False:True True :: False:True second :: C:Z -> C:Z first :: C:Z -> C:Z hole_C:Z1_0 :: C:Z hole_False:True2_0 :: False:True gen_C:Z3_0 :: Nat -> C:Z Generator Equations: gen_C:Z3_0(0) <=> Z gen_C:Z3_0(+(x, 1)) <=> C(Z, gen_C:Z3_0(x)) The following defined symbols remain to be analysed: a, eqZList ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a(gen_C:Z3_0(n5_0)) -> gen_C:Z3_0(n5_0), rt in Omega(1 + n5_0) Induction Base: a(gen_C:Z3_0(0)) ->_R^Omega(1) Z Induction Step: a(gen_C:Z3_0(+(n5_0, 1))) ->_R^Omega(1) C(a(Z), a(gen_C:Z3_0(n5_0))) ->_R^Omega(1) C(Z, a(gen_C:Z3_0(n5_0))) ->_IH C(Z, gen_C:Z3_0(c6_0)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (26) Complex Obligation (BEST) ---------------------------------------- (27) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: a(C(x1, x2)) -> C(a(x1), a(x2)) a(Z) -> 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 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Types: a :: C:Z -> C:Z C :: C:Z -> C:Z -> C:Z Z :: C:Z eqZList :: C:Z -> C:Z -> False:True and :: False:True -> False:True -> False:True False :: False:True True :: False:True second :: C:Z -> C:Z first :: C:Z -> C:Z hole_C:Z1_0 :: C:Z hole_False:True2_0 :: False:True gen_C:Z3_0 :: Nat -> C:Z Generator Equations: gen_C:Z3_0(0) <=> Z gen_C:Z3_0(+(x, 1)) <=> C(Z, gen_C:Z3_0(x)) The following defined symbols remain to be analysed: a, eqZList ---------------------------------------- (28) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (29) BOUNDS(n^1, INF) ---------------------------------------- (30) Obligation: Innermost TRS: Rules: a(C(x1, x2)) -> C(a(x1), a(x2)) a(Z) -> 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 and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True Types: a :: C:Z -> C:Z C :: C:Z -> C:Z -> C:Z Z :: C:Z eqZList :: C:Z -> C:Z -> False:True and :: False:True -> False:True -> False:True False :: False:True True :: False:True second :: C:Z -> C:Z first :: C:Z -> C:Z hole_C:Z1_0 :: C:Z hole_False:True2_0 :: False:True gen_C:Z3_0 :: Nat -> C:Z Lemmas: a(gen_C:Z3_0(n5_0)) -> gen_C:Z3_0(n5_0), rt in Omega(1 + n5_0) Generator Equations: gen_C:Z3_0(0) <=> Z gen_C:Z3_0(+(x, 1)) <=> C(Z, gen_C:Z3_0(x)) The following defined symbols remain to be analysed: eqZList ---------------------------------------- (31) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: eqZList(gen_C:Z3_0(+(1, n148_0)), gen_C:Z3_0(n148_0)) -> False, rt in Omega(1 + n148_0) Induction Base: eqZList(gen_C:Z3_0(+(1, 0)), gen_C:Z3_0(0)) ->_R^Omega(1) False Induction Step: eqZList(gen_C:Z3_0(+(1, +(n148_0, 1))), gen_C:Z3_0(+(n148_0, 1))) ->_R^Omega(1) and(eqZList(Z, Z), eqZList(gen_C:Z3_0(+(1, n148_0)), gen_C:Z3_0(n148_0))) ->_R^Omega(1) and(True, eqZList(gen_C:Z3_0(+(1, n148_0)), gen_C:Z3_0(n148_0))) ->_IH and(True, False) ->_R^Omega(0) False We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (32) BOUNDS(1, INF)