WORST_CASE(Omega(n^1),?) proof of /export/starexec/sandbox/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 63.0 s] (2) CpxRelTRS (3) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (4) TRS for Loop Detection (5) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] (6) BEST (7) proven lower bound (8) LowerBoundPropagationProof [FINISHED, 0 ms] (9) BOUNDS(n^1, INF) (10) TRS for Loop Detection ---------------------------------------- (0) 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: @'(Cons(z0, z1), z2) -> c10(@'(z1, z2)) @'(Nil, z0) -> c11 GT0(Cons(z0, z1), Nil) -> c12 GT0(Cons(z0, z1), Cons(z2, z3)) -> c13(GT0(z1, z3)) GT0(Nil, z0) -> c14 GCD(Nil, Nil) -> c15 GCD(Nil, Cons(z0, z1)) -> c16 GCD(Cons(z0, z1), Nil) -> c17 GCD(Cons(z0, z1), Cons(z2, z3)) -> c18(GCD[ITE](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)), EQLIST(Cons(z0, z1), Cons(z2, z3))) LGTH(Cons(z0, z1)) -> c19(@'(Cons(Nil, Nil), lgth(z1)), LGTH(z1)) LGTH(Nil) -> c20 EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c21(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z0, z2)) EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c22(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z1, z3)) EQLIST(Cons(z0, z1), Nil) -> c23 EQLIST(Nil, Cons(z0, z1)) -> c24 EQLIST(Nil, Nil) -> c25 MONUS(z0, z1) -> c26(MONUS[ITE](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1), EQLIST(lgth(z1), Cons(Nil, Nil)), LGTH(z1)) GOAL(z0, z1) -> c27(GCD(z0, z1)) 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 MONUS[ITE](False, Cons(z0, z1), Cons(z2, z3)) -> c4(MONUS(z1, z3)) MONUS[ITE](True, Cons(z0, z1), z2) -> c5 GCD[ITE](False, z0, z1) -> c6(GCD[FALSE][ITE](gt0(z0, z1), z0, z1), GT0(z0, z1)) GCD[ITE](True, z0, z1) -> c7 GCD[FALSE][ITE](False, z0, z1) -> c8(GCD(monus(z1, z0), z0), MONUS(z1, z0)) GCD[FALSE][ITE](True, z0, z1) -> c9(GCD(z1, monus(z0, z1)), MONUS(z0, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True monus[Ite](False, Cons(z0, z1), Cons(z2, z3)) -> monus(z1, z3) monus[Ite](True, Cons(z0, z1), z2) -> z1 gcd[Ite](False, z0, z1) -> gcd[False][Ite](gt0(z0, z1), z0, z1) gcd[Ite](True, z0, z1) -> z0 gcd[False][Ite](False, z0, z1) -> gcd(monus(z1, z0), z0) gcd[False][Ite](True, z0, z1) -> gcd(z1, monus(z0, z1)) @(Cons(z0, z1), z2) -> Cons(z0, @(z1, z2)) @(Nil, z0) -> z0 gt0(Cons(z0, z1), Nil) -> True gt0(Cons(z0, z1), Cons(z2, z3)) -> gt0(z1, z3) gt0(Nil, z0) -> False gcd(Nil, Nil) -> Nil gcd(Nil, Cons(z0, z1)) -> Nil gcd(Cons(z0, z1), Nil) -> Nil gcd(Cons(z0, z1), Cons(z2, z3)) -> gcd[Ite](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)) lgth(Cons(z0, z1)) -> @(Cons(Nil, Nil), lgth(z1)) lgth(Nil) -> Nil eqList(Cons(z0, z1), Cons(z2, z3)) -> and(eqList(z0, z2), eqList(z1, z3)) eqList(Cons(z0, z1), Nil) -> False eqList(Nil, Cons(z0, z1)) -> False eqList(Nil, Nil) -> True monus(z0, z1) -> monus[Ite](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1) goal(z0, z1) -> gcd(z0, z1) 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, INF). The TRS R consists of the following rules: @'(Cons(z0, z1), z2) -> c10(@'(z1, z2)) @'(Nil, z0) -> c11 GT0(Cons(z0, z1), Nil) -> c12 GT0(Cons(z0, z1), Cons(z2, z3)) -> c13(GT0(z1, z3)) GT0(Nil, z0) -> c14 GCD(Nil, Nil) -> c15 GCD(Nil, Cons(z0, z1)) -> c16 GCD(Cons(z0, z1), Nil) -> c17 GCD(Cons(z0, z1), Cons(z2, z3)) -> c18(GCD[ITE](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)), EQLIST(Cons(z0, z1), Cons(z2, z3))) LGTH(Cons(z0, z1)) -> c19(@'(Cons(Nil, Nil), lgth(z1)), LGTH(z1)) LGTH(Nil) -> c20 EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c21(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z0, z2)) EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c22(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z1, z3)) EQLIST(Cons(z0, z1), Nil) -> c23 EQLIST(Nil, Cons(z0, z1)) -> c24 EQLIST(Nil, Nil) -> c25 MONUS(z0, z1) -> c26(MONUS[ITE](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1), EQLIST(lgth(z1), Cons(Nil, Nil)), LGTH(z1)) GOAL(z0, z1) -> c27(GCD(z0, z1)) 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 MONUS[ITE](False, Cons(z0, z1), Cons(z2, z3)) -> c4(MONUS(z1, z3)) MONUS[ITE](True, Cons(z0, z1), z2) -> c5 GCD[ITE](False, z0, z1) -> c6(GCD[FALSE][ITE](gt0(z0, z1), z0, z1), GT0(z0, z1)) GCD[ITE](True, z0, z1) -> c7 GCD[FALSE][ITE](False, z0, z1) -> c8(GCD(monus(z1, z0), z0), MONUS(z1, z0)) GCD[FALSE][ITE](True, z0, z1) -> c9(GCD(z1, monus(z0, z1)), MONUS(z0, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True monus[Ite](False, Cons(z0, z1), Cons(z2, z3)) -> monus(z1, z3) monus[Ite](True, Cons(z0, z1), z2) -> z1 gcd[Ite](False, z0, z1) -> gcd[False][Ite](gt0(z0, z1), z0, z1) gcd[Ite](True, z0, z1) -> z0 gcd[False][Ite](False, z0, z1) -> gcd(monus(z1, z0), z0) gcd[False][Ite](True, z0, z1) -> gcd(z1, monus(z0, z1)) @(Cons(z0, z1), z2) -> Cons(z0, @(z1, z2)) @(Nil, z0) -> z0 gt0(Cons(z0, z1), Nil) -> True gt0(Cons(z0, z1), Cons(z2, z3)) -> gt0(z1, z3) gt0(Nil, z0) -> False gcd(Nil, Nil) -> Nil gcd(Nil, Cons(z0, z1)) -> Nil gcd(Cons(z0, z1), Nil) -> Nil gcd(Cons(z0, z1), Cons(z2, z3)) -> gcd[Ite](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)) lgth(Cons(z0, z1)) -> @(Cons(Nil, Nil), lgth(z1)) lgth(Nil) -> Nil eqList(Cons(z0, z1), Cons(z2, z3)) -> and(eqList(z0, z2), eqList(z1, z3)) eqList(Cons(z0, z1), Nil) -> False eqList(Nil, Cons(z0, z1)) -> False eqList(Nil, Nil) -> True monus(z0, z1) -> monus[Ite](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1) goal(z0, z1) -> gcd(z0, z1) Rewrite Strategy: INNERMOST ---------------------------------------- (3) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (4) Obligation: Analyzing the following TRS for decreasing loops: 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: @'(Cons(z0, z1), z2) -> c10(@'(z1, z2)) @'(Nil, z0) -> c11 GT0(Cons(z0, z1), Nil) -> c12 GT0(Cons(z0, z1), Cons(z2, z3)) -> c13(GT0(z1, z3)) GT0(Nil, z0) -> c14 GCD(Nil, Nil) -> c15 GCD(Nil, Cons(z0, z1)) -> c16 GCD(Cons(z0, z1), Nil) -> c17 GCD(Cons(z0, z1), Cons(z2, z3)) -> c18(GCD[ITE](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)), EQLIST(Cons(z0, z1), Cons(z2, z3))) LGTH(Cons(z0, z1)) -> c19(@'(Cons(Nil, Nil), lgth(z1)), LGTH(z1)) LGTH(Nil) -> c20 EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c21(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z0, z2)) EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c22(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z1, z3)) EQLIST(Cons(z0, z1), Nil) -> c23 EQLIST(Nil, Cons(z0, z1)) -> c24 EQLIST(Nil, Nil) -> c25 MONUS(z0, z1) -> c26(MONUS[ITE](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1), EQLIST(lgth(z1), Cons(Nil, Nil)), LGTH(z1)) GOAL(z0, z1) -> c27(GCD(z0, z1)) 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 MONUS[ITE](False, Cons(z0, z1), Cons(z2, z3)) -> c4(MONUS(z1, z3)) MONUS[ITE](True, Cons(z0, z1), z2) -> c5 GCD[ITE](False, z0, z1) -> c6(GCD[FALSE][ITE](gt0(z0, z1), z0, z1), GT0(z0, z1)) GCD[ITE](True, z0, z1) -> c7 GCD[FALSE][ITE](False, z0, z1) -> c8(GCD(monus(z1, z0), z0), MONUS(z1, z0)) GCD[FALSE][ITE](True, z0, z1) -> c9(GCD(z1, monus(z0, z1)), MONUS(z0, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True monus[Ite](False, Cons(z0, z1), Cons(z2, z3)) -> monus(z1, z3) monus[Ite](True, Cons(z0, z1), z2) -> z1 gcd[Ite](False, z0, z1) -> gcd[False][Ite](gt0(z0, z1), z0, z1) gcd[Ite](True, z0, z1) -> z0 gcd[False][Ite](False, z0, z1) -> gcd(monus(z1, z0), z0) gcd[False][Ite](True, z0, z1) -> gcd(z1, monus(z0, z1)) @(Cons(z0, z1), z2) -> Cons(z0, @(z1, z2)) @(Nil, z0) -> z0 gt0(Cons(z0, z1), Nil) -> True gt0(Cons(z0, z1), Cons(z2, z3)) -> gt0(z1, z3) gt0(Nil, z0) -> False gcd(Nil, Nil) -> Nil gcd(Nil, Cons(z0, z1)) -> Nil gcd(Cons(z0, z1), Nil) -> Nil gcd(Cons(z0, z1), Cons(z2, z3)) -> gcd[Ite](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)) lgth(Cons(z0, z1)) -> @(Cons(Nil, Nil), lgth(z1)) lgth(Nil) -> Nil eqList(Cons(z0, z1), Cons(z2, z3)) -> and(eqList(z0, z2), eqList(z1, z3)) eqList(Cons(z0, z1), Nil) -> False eqList(Nil, Cons(z0, z1)) -> False eqList(Nil, Nil) -> True monus(z0, z1) -> monus[Ite](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1) goal(z0, z1) -> gcd(z0, z1) Rewrite Strategy: INNERMOST ---------------------------------------- (5) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence EQLIST(Cons(z0, z1), Cons(z2, z3)) ->^+ c21(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z0, z2)) gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. The pumping substitution is [z0 / Cons(z0, z1), z2 / Cons(z2, z3)]. The result substitution is [ ]. ---------------------------------------- (6) Complex Obligation (BEST) ---------------------------------------- (7) Obligation: Proved the lower bound n^1 for the following 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: @'(Cons(z0, z1), z2) -> c10(@'(z1, z2)) @'(Nil, z0) -> c11 GT0(Cons(z0, z1), Nil) -> c12 GT0(Cons(z0, z1), Cons(z2, z3)) -> c13(GT0(z1, z3)) GT0(Nil, z0) -> c14 GCD(Nil, Nil) -> c15 GCD(Nil, Cons(z0, z1)) -> c16 GCD(Cons(z0, z1), Nil) -> c17 GCD(Cons(z0, z1), Cons(z2, z3)) -> c18(GCD[ITE](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)), EQLIST(Cons(z0, z1), Cons(z2, z3))) LGTH(Cons(z0, z1)) -> c19(@'(Cons(Nil, Nil), lgth(z1)), LGTH(z1)) LGTH(Nil) -> c20 EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c21(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z0, z2)) EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c22(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z1, z3)) EQLIST(Cons(z0, z1), Nil) -> c23 EQLIST(Nil, Cons(z0, z1)) -> c24 EQLIST(Nil, Nil) -> c25 MONUS(z0, z1) -> c26(MONUS[ITE](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1), EQLIST(lgth(z1), Cons(Nil, Nil)), LGTH(z1)) GOAL(z0, z1) -> c27(GCD(z0, z1)) 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 MONUS[ITE](False, Cons(z0, z1), Cons(z2, z3)) -> c4(MONUS(z1, z3)) MONUS[ITE](True, Cons(z0, z1), z2) -> c5 GCD[ITE](False, z0, z1) -> c6(GCD[FALSE][ITE](gt0(z0, z1), z0, z1), GT0(z0, z1)) GCD[ITE](True, z0, z1) -> c7 GCD[FALSE][ITE](False, z0, z1) -> c8(GCD(monus(z1, z0), z0), MONUS(z1, z0)) GCD[FALSE][ITE](True, z0, z1) -> c9(GCD(z1, monus(z0, z1)), MONUS(z0, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True monus[Ite](False, Cons(z0, z1), Cons(z2, z3)) -> monus(z1, z3) monus[Ite](True, Cons(z0, z1), z2) -> z1 gcd[Ite](False, z0, z1) -> gcd[False][Ite](gt0(z0, z1), z0, z1) gcd[Ite](True, z0, z1) -> z0 gcd[False][Ite](False, z0, z1) -> gcd(monus(z1, z0), z0) gcd[False][Ite](True, z0, z1) -> gcd(z1, monus(z0, z1)) @(Cons(z0, z1), z2) -> Cons(z0, @(z1, z2)) @(Nil, z0) -> z0 gt0(Cons(z0, z1), Nil) -> True gt0(Cons(z0, z1), Cons(z2, z3)) -> gt0(z1, z3) gt0(Nil, z0) -> False gcd(Nil, Nil) -> Nil gcd(Nil, Cons(z0, z1)) -> Nil gcd(Cons(z0, z1), Nil) -> Nil gcd(Cons(z0, z1), Cons(z2, z3)) -> gcd[Ite](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)) lgth(Cons(z0, z1)) -> @(Cons(Nil, Nil), lgth(z1)) lgth(Nil) -> Nil eqList(Cons(z0, z1), Cons(z2, z3)) -> and(eqList(z0, z2), eqList(z1, z3)) eqList(Cons(z0, z1), Nil) -> False eqList(Nil, Cons(z0, z1)) -> False eqList(Nil, Nil) -> True monus(z0, z1) -> monus[Ite](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1) goal(z0, z1) -> gcd(z0, z1) Rewrite Strategy: INNERMOST ---------------------------------------- (8) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (9) BOUNDS(n^1, INF) ---------------------------------------- (10) Obligation: Analyzing the following TRS for decreasing loops: 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: @'(Cons(z0, z1), z2) -> c10(@'(z1, z2)) @'(Nil, z0) -> c11 GT0(Cons(z0, z1), Nil) -> c12 GT0(Cons(z0, z1), Cons(z2, z3)) -> c13(GT0(z1, z3)) GT0(Nil, z0) -> c14 GCD(Nil, Nil) -> c15 GCD(Nil, Cons(z0, z1)) -> c16 GCD(Cons(z0, z1), Nil) -> c17 GCD(Cons(z0, z1), Cons(z2, z3)) -> c18(GCD[ITE](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)), EQLIST(Cons(z0, z1), Cons(z2, z3))) LGTH(Cons(z0, z1)) -> c19(@'(Cons(Nil, Nil), lgth(z1)), LGTH(z1)) LGTH(Nil) -> c20 EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c21(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z0, z2)) EQLIST(Cons(z0, z1), Cons(z2, z3)) -> c22(AND(eqList(z0, z2), eqList(z1, z3)), EQLIST(z1, z3)) EQLIST(Cons(z0, z1), Nil) -> c23 EQLIST(Nil, Cons(z0, z1)) -> c24 EQLIST(Nil, Nil) -> c25 MONUS(z0, z1) -> c26(MONUS[ITE](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1), EQLIST(lgth(z1), Cons(Nil, Nil)), LGTH(z1)) GOAL(z0, z1) -> c27(GCD(z0, z1)) 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 MONUS[ITE](False, Cons(z0, z1), Cons(z2, z3)) -> c4(MONUS(z1, z3)) MONUS[ITE](True, Cons(z0, z1), z2) -> c5 GCD[ITE](False, z0, z1) -> c6(GCD[FALSE][ITE](gt0(z0, z1), z0, z1), GT0(z0, z1)) GCD[ITE](True, z0, z1) -> c7 GCD[FALSE][ITE](False, z0, z1) -> c8(GCD(monus(z1, z0), z0), MONUS(z1, z0)) GCD[FALSE][ITE](True, z0, z1) -> c9(GCD(z1, monus(z0, z1)), MONUS(z0, z1)) and(False, False) -> False and(True, False) -> False and(False, True) -> False and(True, True) -> True monus[Ite](False, Cons(z0, z1), Cons(z2, z3)) -> monus(z1, z3) monus[Ite](True, Cons(z0, z1), z2) -> z1 gcd[Ite](False, z0, z1) -> gcd[False][Ite](gt0(z0, z1), z0, z1) gcd[Ite](True, z0, z1) -> z0 gcd[False][Ite](False, z0, z1) -> gcd(monus(z1, z0), z0) gcd[False][Ite](True, z0, z1) -> gcd(z1, monus(z0, z1)) @(Cons(z0, z1), z2) -> Cons(z0, @(z1, z2)) @(Nil, z0) -> z0 gt0(Cons(z0, z1), Nil) -> True gt0(Cons(z0, z1), Cons(z2, z3)) -> gt0(z1, z3) gt0(Nil, z0) -> False gcd(Nil, Nil) -> Nil gcd(Nil, Cons(z0, z1)) -> Nil gcd(Cons(z0, z1), Nil) -> Nil gcd(Cons(z0, z1), Cons(z2, z3)) -> gcd[Ite](eqList(Cons(z0, z1), Cons(z2, z3)), Cons(z0, z1), Cons(z2, z3)) lgth(Cons(z0, z1)) -> @(Cons(Nil, Nil), lgth(z1)) lgth(Nil) -> Nil eqList(Cons(z0, z1), Cons(z2, z3)) -> and(eqList(z0, z2), eqList(z1, z3)) eqList(Cons(z0, z1), Nil) -> False eqList(Nil, Cons(z0, z1)) -> False eqList(Nil, Nil) -> True monus(z0, z1) -> monus[Ite](eqList(lgth(z1), Cons(Nil, Nil)), z0, z1) goal(z0, z1) -> gcd(z0, z1) Rewrite Strategy: INNERMOST