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), 827 ms] (2) CpxRelTRS (3) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (4) TRS for Loop Detection (5) DecreasingLoopProof [LOWER BOUND(ID), 3 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: AND(false, false) -> c AND(true, false) -> c1 AND(false, true) -> c2 AND(true, true) -> c3 EQ(nil, nil) -> c4 EQ(cons(z0, z1), nil) -> c5 EQ(nil, cons(z0, z1)) -> c6 EQ(cons(z0, z1), cons(z2, z3)) -> c7(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(cons(z0, z1), cons(z2, z3)) -> c8(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(var(z0), var(z1)) -> c9(EQ(z0, z1)) EQ(var(z0), apply(z1, z2)) -> c10 EQ(var(z0), lambda(z1, z2)) -> c11 EQ(apply(z0, z1), var(z2)) -> c12 EQ(apply(z0, z1), apply(z2, z3)) -> c13(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(apply(z0, z1), apply(z2, z3)) -> c14(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(apply(z0, z1), lambda(z2, z3)) -> c15 EQ(lambda(z0, z1), var(z2)) -> c16 EQ(lambda(z0, z1), apply(z2, z3)) -> c17 EQ(lambda(z0, z1), lambda(z2, z3)) -> c18(AND(eq(z1, z3), eq(z0, z2)), EQ(z1, z3)) EQ(lambda(z0, z1), lambda(z2, z3)) -> c19(AND(eq(z1, z3), eq(z0, z2)), EQ(z0, z2)) IF(true, var(z0), var(z1)) -> c20 IF(false, var(z0), var(z1)) -> c21 REN(var(z0), var(z1), var(z2)) -> c22(IF(eq(z0, z2), var(z1), var(z2)), EQ(z0, z2)) REN(z0, z1, apply(z2, z3)) -> c23(REN(z0, z1, z2)) REN(z0, z1, apply(z2, z3)) -> c24(REN(z0, z1, z3)) REN(z0, z1, lambda(z2, z3)) -> c25(REN(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)), REN(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)) 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 eq(nil, nil) -> true eq(cons(z0, z1), nil) -> false eq(nil, cons(z0, z1)) -> false eq(cons(z0, z1), cons(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(var(z0), var(z1)) -> eq(z0, z1) eq(var(z0), apply(z1, z2)) -> false eq(var(z0), lambda(z1, z2)) -> false eq(apply(z0, z1), var(z2)) -> false eq(apply(z0, z1), apply(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(apply(z0, z1), lambda(z2, z3)) -> false eq(lambda(z0, z1), var(z2)) -> false eq(lambda(z0, z1), apply(z2, z3)) -> false eq(lambda(z0, z1), lambda(z2, z3)) -> and(eq(z1, z3), eq(z0, z2)) if(true, var(z0), var(z1)) -> var(z0) if(false, var(z0), var(z1)) -> var(z1) ren(var(z0), var(z1), var(z2)) -> if(eq(z0, z2), var(z1), var(z2)) ren(z0, z1, apply(z2, z3)) -> apply(ren(z0, z1, z2), ren(z0, z1, z3)) ren(z0, z1, lambda(z2, z3)) -> lambda(var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), ren(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3))) 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: AND(false, false) -> c AND(true, false) -> c1 AND(false, true) -> c2 AND(true, true) -> c3 EQ(nil, nil) -> c4 EQ(cons(z0, z1), nil) -> c5 EQ(nil, cons(z0, z1)) -> c6 EQ(cons(z0, z1), cons(z2, z3)) -> c7(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(cons(z0, z1), cons(z2, z3)) -> c8(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(var(z0), var(z1)) -> c9(EQ(z0, z1)) EQ(var(z0), apply(z1, z2)) -> c10 EQ(var(z0), lambda(z1, z2)) -> c11 EQ(apply(z0, z1), var(z2)) -> c12 EQ(apply(z0, z1), apply(z2, z3)) -> c13(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(apply(z0, z1), apply(z2, z3)) -> c14(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(apply(z0, z1), lambda(z2, z3)) -> c15 EQ(lambda(z0, z1), var(z2)) -> c16 EQ(lambda(z0, z1), apply(z2, z3)) -> c17 EQ(lambda(z0, z1), lambda(z2, z3)) -> c18(AND(eq(z1, z3), eq(z0, z2)), EQ(z1, z3)) EQ(lambda(z0, z1), lambda(z2, z3)) -> c19(AND(eq(z1, z3), eq(z0, z2)), EQ(z0, z2)) IF(true, var(z0), var(z1)) -> c20 IF(false, var(z0), var(z1)) -> c21 REN(var(z0), var(z1), var(z2)) -> c22(IF(eq(z0, z2), var(z1), var(z2)), EQ(z0, z2)) REN(z0, z1, apply(z2, z3)) -> c23(REN(z0, z1, z2)) REN(z0, z1, apply(z2, z3)) -> c24(REN(z0, z1, z3)) REN(z0, z1, lambda(z2, z3)) -> c25(REN(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)), REN(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)) 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 eq(nil, nil) -> true eq(cons(z0, z1), nil) -> false eq(nil, cons(z0, z1)) -> false eq(cons(z0, z1), cons(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(var(z0), var(z1)) -> eq(z0, z1) eq(var(z0), apply(z1, z2)) -> false eq(var(z0), lambda(z1, z2)) -> false eq(apply(z0, z1), var(z2)) -> false eq(apply(z0, z1), apply(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(apply(z0, z1), lambda(z2, z3)) -> false eq(lambda(z0, z1), var(z2)) -> false eq(lambda(z0, z1), apply(z2, z3)) -> false eq(lambda(z0, z1), lambda(z2, z3)) -> and(eq(z1, z3), eq(z0, z2)) if(true, var(z0), var(z1)) -> var(z0) if(false, var(z0), var(z1)) -> var(z1) ren(var(z0), var(z1), var(z2)) -> if(eq(z0, z2), var(z1), var(z2)) ren(z0, z1, apply(z2, z3)) -> apply(ren(z0, z1, z2), ren(z0, z1, z3)) ren(z0, z1, lambda(z2, z3)) -> lambda(var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), ren(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3))) 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: AND(false, false) -> c AND(true, false) -> c1 AND(false, true) -> c2 AND(true, true) -> c3 EQ(nil, nil) -> c4 EQ(cons(z0, z1), nil) -> c5 EQ(nil, cons(z0, z1)) -> c6 EQ(cons(z0, z1), cons(z2, z3)) -> c7(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(cons(z0, z1), cons(z2, z3)) -> c8(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(var(z0), var(z1)) -> c9(EQ(z0, z1)) EQ(var(z0), apply(z1, z2)) -> c10 EQ(var(z0), lambda(z1, z2)) -> c11 EQ(apply(z0, z1), var(z2)) -> c12 EQ(apply(z0, z1), apply(z2, z3)) -> c13(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(apply(z0, z1), apply(z2, z3)) -> c14(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(apply(z0, z1), lambda(z2, z3)) -> c15 EQ(lambda(z0, z1), var(z2)) -> c16 EQ(lambda(z0, z1), apply(z2, z3)) -> c17 EQ(lambda(z0, z1), lambda(z2, z3)) -> c18(AND(eq(z1, z3), eq(z0, z2)), EQ(z1, z3)) EQ(lambda(z0, z1), lambda(z2, z3)) -> c19(AND(eq(z1, z3), eq(z0, z2)), EQ(z0, z2)) IF(true, var(z0), var(z1)) -> c20 IF(false, var(z0), var(z1)) -> c21 REN(var(z0), var(z1), var(z2)) -> c22(IF(eq(z0, z2), var(z1), var(z2)), EQ(z0, z2)) REN(z0, z1, apply(z2, z3)) -> c23(REN(z0, z1, z2)) REN(z0, z1, apply(z2, z3)) -> c24(REN(z0, z1, z3)) REN(z0, z1, lambda(z2, z3)) -> c25(REN(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)), REN(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)) 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 eq(nil, nil) -> true eq(cons(z0, z1), nil) -> false eq(nil, cons(z0, z1)) -> false eq(cons(z0, z1), cons(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(var(z0), var(z1)) -> eq(z0, z1) eq(var(z0), apply(z1, z2)) -> false eq(var(z0), lambda(z1, z2)) -> false eq(apply(z0, z1), var(z2)) -> false eq(apply(z0, z1), apply(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(apply(z0, z1), lambda(z2, z3)) -> false eq(lambda(z0, z1), var(z2)) -> false eq(lambda(z0, z1), apply(z2, z3)) -> false eq(lambda(z0, z1), lambda(z2, z3)) -> and(eq(z1, z3), eq(z0, z2)) if(true, var(z0), var(z1)) -> var(z0) if(false, var(z0), var(z1)) -> var(z1) ren(var(z0), var(z1), var(z2)) -> if(eq(z0, z2), var(z1), var(z2)) ren(z0, z1, apply(z2, z3)) -> apply(ren(z0, z1, z2), ren(z0, z1, z3)) ren(z0, z1, lambda(z2, z3)) -> lambda(var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), ren(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3))) 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 REN(z0, z1, apply(z2, z3)) ->^+ c24(REN(z0, z1, z3)) gives rise to a decreasing loop by considering the right hand sides subterm at position [0]. The pumping substitution is [z3 / apply(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: AND(false, false) -> c AND(true, false) -> c1 AND(false, true) -> c2 AND(true, true) -> c3 EQ(nil, nil) -> c4 EQ(cons(z0, z1), nil) -> c5 EQ(nil, cons(z0, z1)) -> c6 EQ(cons(z0, z1), cons(z2, z3)) -> c7(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(cons(z0, z1), cons(z2, z3)) -> c8(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(var(z0), var(z1)) -> c9(EQ(z0, z1)) EQ(var(z0), apply(z1, z2)) -> c10 EQ(var(z0), lambda(z1, z2)) -> c11 EQ(apply(z0, z1), var(z2)) -> c12 EQ(apply(z0, z1), apply(z2, z3)) -> c13(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(apply(z0, z1), apply(z2, z3)) -> c14(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(apply(z0, z1), lambda(z2, z3)) -> c15 EQ(lambda(z0, z1), var(z2)) -> c16 EQ(lambda(z0, z1), apply(z2, z3)) -> c17 EQ(lambda(z0, z1), lambda(z2, z3)) -> c18(AND(eq(z1, z3), eq(z0, z2)), EQ(z1, z3)) EQ(lambda(z0, z1), lambda(z2, z3)) -> c19(AND(eq(z1, z3), eq(z0, z2)), EQ(z0, z2)) IF(true, var(z0), var(z1)) -> c20 IF(false, var(z0), var(z1)) -> c21 REN(var(z0), var(z1), var(z2)) -> c22(IF(eq(z0, z2), var(z1), var(z2)), EQ(z0, z2)) REN(z0, z1, apply(z2, z3)) -> c23(REN(z0, z1, z2)) REN(z0, z1, apply(z2, z3)) -> c24(REN(z0, z1, z3)) REN(z0, z1, lambda(z2, z3)) -> c25(REN(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)), REN(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)) 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 eq(nil, nil) -> true eq(cons(z0, z1), nil) -> false eq(nil, cons(z0, z1)) -> false eq(cons(z0, z1), cons(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(var(z0), var(z1)) -> eq(z0, z1) eq(var(z0), apply(z1, z2)) -> false eq(var(z0), lambda(z1, z2)) -> false eq(apply(z0, z1), var(z2)) -> false eq(apply(z0, z1), apply(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(apply(z0, z1), lambda(z2, z3)) -> false eq(lambda(z0, z1), var(z2)) -> false eq(lambda(z0, z1), apply(z2, z3)) -> false eq(lambda(z0, z1), lambda(z2, z3)) -> and(eq(z1, z3), eq(z0, z2)) if(true, var(z0), var(z1)) -> var(z0) if(false, var(z0), var(z1)) -> var(z1) ren(var(z0), var(z1), var(z2)) -> if(eq(z0, z2), var(z1), var(z2)) ren(z0, z1, apply(z2, z3)) -> apply(ren(z0, z1, z2), ren(z0, z1, z3)) ren(z0, z1, lambda(z2, z3)) -> lambda(var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), ren(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3))) 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: AND(false, false) -> c AND(true, false) -> c1 AND(false, true) -> c2 AND(true, true) -> c3 EQ(nil, nil) -> c4 EQ(cons(z0, z1), nil) -> c5 EQ(nil, cons(z0, z1)) -> c6 EQ(cons(z0, z1), cons(z2, z3)) -> c7(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(cons(z0, z1), cons(z2, z3)) -> c8(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(var(z0), var(z1)) -> c9(EQ(z0, z1)) EQ(var(z0), apply(z1, z2)) -> c10 EQ(var(z0), lambda(z1, z2)) -> c11 EQ(apply(z0, z1), var(z2)) -> c12 EQ(apply(z0, z1), apply(z2, z3)) -> c13(AND(eq(z0, z2), eq(z1, z3)), EQ(z0, z2)) EQ(apply(z0, z1), apply(z2, z3)) -> c14(AND(eq(z0, z2), eq(z1, z3)), EQ(z1, z3)) EQ(apply(z0, z1), lambda(z2, z3)) -> c15 EQ(lambda(z0, z1), var(z2)) -> c16 EQ(lambda(z0, z1), apply(z2, z3)) -> c17 EQ(lambda(z0, z1), lambda(z2, z3)) -> c18(AND(eq(z1, z3), eq(z0, z2)), EQ(z1, z3)) EQ(lambda(z0, z1), lambda(z2, z3)) -> c19(AND(eq(z1, z3), eq(z0, z2)), EQ(z0, z2)) IF(true, var(z0), var(z1)) -> c20 IF(false, var(z0), var(z1)) -> c21 REN(var(z0), var(z1), var(z2)) -> c22(IF(eq(z0, z2), var(z1), var(z2)), EQ(z0, z2)) REN(z0, z1, apply(z2, z3)) -> c23(REN(z0, z1, z2)) REN(z0, z1, apply(z2, z3)) -> c24(REN(z0, z1, z3)) REN(z0, z1, lambda(z2, z3)) -> c25(REN(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)), REN(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3)) 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 eq(nil, nil) -> true eq(cons(z0, z1), nil) -> false eq(nil, cons(z0, z1)) -> false eq(cons(z0, z1), cons(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(var(z0), var(z1)) -> eq(z0, z1) eq(var(z0), apply(z1, z2)) -> false eq(var(z0), lambda(z1, z2)) -> false eq(apply(z0, z1), var(z2)) -> false eq(apply(z0, z1), apply(z2, z3)) -> and(eq(z0, z2), eq(z1, z3)) eq(apply(z0, z1), lambda(z2, z3)) -> false eq(lambda(z0, z1), var(z2)) -> false eq(lambda(z0, z1), apply(z2, z3)) -> false eq(lambda(z0, z1), lambda(z2, z3)) -> and(eq(z1, z3), eq(z0, z2)) if(true, var(z0), var(z1)) -> var(z0) if(false, var(z0), var(z1)) -> var(z1) ren(var(z0), var(z1), var(z2)) -> if(eq(z0, z2), var(z1), var(z2)) ren(z0, z1, apply(z2, z3)) -> apply(ren(z0, z1, z2), ren(z0, z1, z3)) ren(z0, z1, lambda(z2, z3)) -> lambda(var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), ren(z0, z1, ren(z2, var(cons(z0, cons(z1, cons(lambda(z2, z3), nil)))), z3))) Rewrite Strategy: INNERMOST