/export/starexec/sandbox2/solver/bin/starexec_run_rcdcRelativeAlsoLower /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^2)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Derivational Complexity (full) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^2). (0) DCpxTrs (1) DerivationalComplexityToRuntimeComplexityProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 195 ms] (4) CpxRelTRS (5) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxWeightedTrs (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxTypedWeightedTrs (11) CompletionProof [UPPER BOUND(ID), 0 ms] (12) CpxTypedWeightedCompleteTrs (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (14) CpxRNTS (15) CompleteCoflocoProof [FINISHED, 817 ms] (16) BOUNDS(1, n^2) (17) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRelTRS (19) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (20) typed CpxTrs (21) OrderProof [LOWER BOUND(ID), 0 ms] (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 440 ms] (24) BEST (25) proven lower bound (26) LowerBoundPropagationProof [FINISHED, 0 ms] (27) BOUNDS(n^1, INF) (28) typed CpxTrs (29) RewriteLemmaProof [LOWER BOUND(ID), 30 ms] (30) BOUNDS(1, INF) ---------------------------------------- (0) Obligation: The Derivational Complexity (full) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: and(tt, X) -> activate(X) plus(N, 0) -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) DerivationalComplexityToRuntimeComplexityProof (BOTH BOUNDS(ID, ID)) The following rules have been added to S to convert the given derivational complexity problem to a runtime complexity problem: encArg(tt) -> tt encArg(0) -> 0 encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0 encode_s(x_1) -> s(encArg(x_1)) ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: and(tt, X) -> activate(X) plus(N, 0) -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X The (relative) TRS S consists of the following rules: encArg(tt) -> tt encArg(0) -> 0 encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0 encode_s(x_1) -> s(encArg(x_1)) Rewrite Strategy: FULL ---------------------------------------- (3) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (4) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: and(tt, X) -> activate(X) plus(N, 0) -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X The (relative) TRS S consists of the following rules: encArg(tt) -> tt encArg(0) -> 0 encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0 encode_s(x_1) -> s(encArg(x_1)) Rewrite Strategy: FULL ---------------------------------------- (5) RcToIrcProof (BOTH BOUNDS(ID, ID)) Converted rc-obligation to irc-obligation. As the TRS is a non-duplicating overlay system, we have rc = irc. ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: and(tt, X) -> activate(X) plus(N, 0) -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X The (relative) TRS S consists of the following rules: encArg(tt) -> tt encArg(0) -> 0 encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0 encode_s(x_1) -> s(encArg(x_1)) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: and(tt, X) -> activate(X) [1] plus(N, 0) -> N [1] plus(N, s(M)) -> s(plus(N, M)) [1] activate(X) -> X [1] encArg(tt) -> tt [0] encArg(0) -> 0 [0] encArg(s(x_1)) -> s(encArg(x_1)) [0] encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) [0] encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) [0] encArg(cons_activate(x_1)) -> activate(encArg(x_1)) [0] encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) [0] encode_tt -> tt [0] encode_activate(x_1) -> activate(encArg(x_1)) [0] encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) [0] encode_0 -> 0 [0] encode_s(x_1) -> s(encArg(x_1)) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: and(tt, X) -> activate(X) [1] plus(N, 0) -> N [1] plus(N, s(M)) -> s(plus(N, M)) [1] activate(X) -> X [1] encArg(tt) -> tt [0] encArg(0) -> 0 [0] encArg(s(x_1)) -> s(encArg(x_1)) [0] encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) [0] encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) [0] encArg(cons_activate(x_1)) -> activate(encArg(x_1)) [0] encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) [0] encode_tt -> tt [0] encode_activate(x_1) -> activate(encArg(x_1)) [0] encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) [0] encode_0 -> 0 [0] encode_s(x_1) -> s(encArg(x_1)) [0] The TRS has the following type information: and :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate tt :: tt:0:s:cons_and:cons_plus:cons_activate activate :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate plus :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate 0 :: tt:0:s:cons_and:cons_plus:cons_activate s :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate encArg :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate cons_and :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate cons_plus :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate cons_activate :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate encode_and :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate encode_tt :: tt:0:s:cons_and:cons_plus:cons_activate encode_activate :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate encode_plus :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate encode_0 :: tt:0:s:cons_and:cons_plus:cons_activate encode_s :: tt:0:s:cons_and:cons_plus:cons_activate -> tt:0:s:cons_and:cons_plus:cons_activate Rewrite Strategy: INNERMOST ---------------------------------------- (11) CompletionProof (UPPER BOUND(ID)) The TRS is a completely defined constructor system, as every type has a constant constructor and the following rules were added: encArg(v0) -> null_encArg [0] encode_and(v0, v1) -> null_encode_and [0] encode_tt -> null_encode_tt [0] encode_activate(v0) -> null_encode_activate [0] encode_plus(v0, v1) -> null_encode_plus [0] encode_0 -> null_encode_0 [0] encode_s(v0) -> null_encode_s [0] and(v0, v1) -> null_and [0] plus(v0, v1) -> null_plus [0] And the following fresh constants: null_encArg, null_encode_and, null_encode_tt, null_encode_activate, null_encode_plus, null_encode_0, null_encode_s, null_and, null_plus ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS where all functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: and(tt, X) -> activate(X) [1] plus(N, 0) -> N [1] plus(N, s(M)) -> s(plus(N, M)) [1] activate(X) -> X [1] encArg(tt) -> tt [0] encArg(0) -> 0 [0] encArg(s(x_1)) -> s(encArg(x_1)) [0] encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) [0] encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) [0] encArg(cons_activate(x_1)) -> activate(encArg(x_1)) [0] encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) [0] encode_tt -> tt [0] encode_activate(x_1) -> activate(encArg(x_1)) [0] encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) [0] encode_0 -> 0 [0] encode_s(x_1) -> s(encArg(x_1)) [0] encArg(v0) -> null_encArg [0] encode_and(v0, v1) -> null_encode_and [0] encode_tt -> null_encode_tt [0] encode_activate(v0) -> null_encode_activate [0] encode_plus(v0, v1) -> null_encode_plus [0] encode_0 -> null_encode_0 [0] encode_s(v0) -> null_encode_s [0] and(v0, v1) -> null_and [0] plus(v0, v1) -> null_plus [0] The TRS has the following type information: and :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus tt :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus activate :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus plus :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus 0 :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus s :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus encArg :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus cons_and :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus cons_plus :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus cons_activate :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus encode_and :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus encode_tt :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus encode_activate :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus encode_plus :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus encode_0 :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus encode_s :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus -> tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_encArg :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_encode_and :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_encode_tt :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_encode_activate :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_encode_plus :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_encode_0 :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_encode_s :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_and :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus null_plus :: tt:0:s:cons_and:cons_plus:cons_activate:null_encArg:null_encode_and:null_encode_tt:null_encode_activate:null_encode_plus:null_encode_0:null_encode_s:null_and:null_plus Rewrite Strategy: INNERMOST ---------------------------------------- (13) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: tt => 1 0 => 0 null_encArg => 0 null_encode_and => 0 null_encode_tt => 0 null_encode_activate => 0 null_encode_plus => 0 null_encode_0 => 0 null_encode_s => 0 null_and => 0 null_plus => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: activate(z) -{ 1 }-> X :|: X >= 0, z = X and(z, z') -{ 1 }-> activate(X) :|: z' = X, z = 1, X >= 0 and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encArg(z) -{ 0 }-> plus(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> and(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> activate(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> 1 :|: z = 1 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encArg(z) -{ 0 }-> 1 + encArg(x_1) :|: z = 1 + x_1, x_1 >= 0 encode_0 -{ 0 }-> 0 :|: encode_activate(z) -{ 0 }-> activate(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_activate(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_and(z, z') -{ 0 }-> and(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_plus(z, z') -{ 0 }-> plus(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_plus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_s(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_s(z) -{ 0 }-> 1 + encArg(x_1) :|: x_1 >= 0, z = x_1 encode_tt -{ 0 }-> 1 :|: encode_tt -{ 0 }-> 0 :|: plus(z, z') -{ 1 }-> N :|: z = N, z' = 0, N >= 0 plus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 plus(z, z') -{ 1 }-> 1 + plus(N, M) :|: z' = 1 + M, z = N, M >= 0, N >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (15) CompleteCoflocoProof (FINISHED) Transformed the RNTS (where only complete derivations are relevant) into cost relations for CoFloCo: eq(start(V1, V),0,[and(V1, V, Out)],[V1 >= 0,V >= 0]). eq(start(V1, V),0,[plus(V1, V, Out)],[V1 >= 0,V >= 0]). eq(start(V1, V),0,[activate(V1, Out)],[V1 >= 0]). eq(start(V1, V),0,[encArg(V1, Out)],[V1 >= 0]). eq(start(V1, V),0,[fun(V1, V, Out)],[V1 >= 0,V >= 0]). eq(start(V1, V),0,[fun1(Out)],[]). eq(start(V1, V),0,[fun2(V1, Out)],[V1 >= 0]). eq(start(V1, V),0,[fun3(V1, V, Out)],[V1 >= 0,V >= 0]). eq(start(V1, V),0,[fun4(Out)],[]). eq(start(V1, V),0,[fun5(V1, Out)],[V1 >= 0]). eq(and(V1, V, Out),1,[activate(X1, Ret)],[Out = Ret,V = X1,V1 = 1,X1 >= 0]). eq(plus(V1, V, Out),1,[],[Out = N1,V1 = N1,V = 0,N1 >= 0]). eq(plus(V1, V, Out),1,[plus(N2, M1, Ret1)],[Out = 1 + Ret1,V = 1 + M1,V1 = N2,M1 >= 0,N2 >= 0]). eq(activate(V1, Out),1,[],[Out = X2,X2 >= 0,V1 = X2]). eq(encArg(V1, Out),0,[],[Out = 1,V1 = 1]). eq(encArg(V1, Out),0,[],[Out = 0,V1 = 0]). eq(encArg(V1, Out),0,[encArg(V2, Ret11)],[Out = 1 + Ret11,V1 = 1 + V2,V2 >= 0]). eq(encArg(V1, Out),0,[encArg(V3, Ret0),encArg(V4, Ret12),and(Ret0, Ret12, Ret2)],[Out = Ret2,V3 >= 0,V1 = 1 + V3 + V4,V4 >= 0]). eq(encArg(V1, Out),0,[encArg(V5, Ret01),encArg(V6, Ret13),plus(Ret01, Ret13, Ret3)],[Out = Ret3,V5 >= 0,V1 = 1 + V5 + V6,V6 >= 0]). eq(encArg(V1, Out),0,[encArg(V7, Ret02),activate(Ret02, Ret4)],[Out = Ret4,V1 = 1 + V7,V7 >= 0]). eq(fun(V1, V, Out),0,[encArg(V9, Ret03),encArg(V8, Ret14),and(Ret03, Ret14, Ret5)],[Out = Ret5,V9 >= 0,V8 >= 0,V1 = V9,V = V8]). eq(fun1(Out),0,[],[Out = 1]). eq(fun2(V1, Out),0,[encArg(V10, Ret04),activate(Ret04, Ret6)],[Out = Ret6,V10 >= 0,V1 = V10]). eq(fun3(V1, V, Out),0,[encArg(V12, Ret05),encArg(V11, Ret15),plus(Ret05, Ret15, Ret7)],[Out = Ret7,V12 >= 0,V11 >= 0,V1 = V12,V = V11]). eq(fun4(Out),0,[],[Out = 0]). eq(fun5(V1, Out),0,[encArg(V13, Ret16)],[Out = 1 + Ret16,V13 >= 0,V1 = V13]). eq(encArg(V1, Out),0,[],[Out = 0,V14 >= 0,V1 = V14]). eq(fun(V1, V, Out),0,[],[Out = 0,V16 >= 0,V15 >= 0,V1 = V16,V = V15]). eq(fun1(Out),0,[],[Out = 0]). eq(fun2(V1, Out),0,[],[Out = 0,V17 >= 0,V1 = V17]). eq(fun3(V1, V, Out),0,[],[Out = 0,V18 >= 0,V19 >= 0,V1 = V18,V = V19]). eq(fun5(V1, Out),0,[],[Out = 0,V20 >= 0,V1 = V20]). eq(and(V1, V, Out),0,[],[Out = 0,V21 >= 0,V22 >= 0,V1 = V21,V = V22]). eq(plus(V1, V, Out),0,[],[Out = 0,V23 >= 0,V24 >= 0,V1 = V23,V = V24]). input_output_vars(and(V1,V,Out),[V1,V],[Out]). input_output_vars(plus(V1,V,Out),[V1,V],[Out]). input_output_vars(activate(V1,Out),[V1],[Out]). input_output_vars(encArg(V1,Out),[V1],[Out]). input_output_vars(fun(V1,V,Out),[V1,V],[Out]). input_output_vars(fun1(Out),[],[Out]). input_output_vars(fun2(V1,Out),[V1],[Out]). input_output_vars(fun3(V1,V,Out),[V1,V],[Out]). input_output_vars(fun4(Out),[],[Out]). input_output_vars(fun5(V1,Out),[V1],[Out]). CoFloCo proof output: Preprocessing Cost Relations ===================================== #### Computed strongly connected components 0. non_recursive : [activate/2] 1. non_recursive : [and/3] 2. recursive : [plus/3] 3. recursive [non_tail,multiple] : [encArg/2] 4. non_recursive : [fun/3] 5. non_recursive : [fun1/1] 6. non_recursive : [fun2/2] 7. non_recursive : [fun3/3] 8. non_recursive : [fun4/1] 9. non_recursive : [fun5/2] 10. non_recursive : [start/2] #### Obtained direct recursion through partial evaluation 0. SCC is completely evaluated into other SCCs 1. SCC is partially evaluated into and/3 2. SCC is partially evaluated into plus/3 3. SCC is partially evaluated into encArg/2 4. SCC is partially evaluated into fun/3 5. SCC is partially evaluated into fun1/1 6. SCC is partially evaluated into fun2/2 7. SCC is partially evaluated into fun3/3 8. SCC is completely evaluated into other SCCs 9. SCC is partially evaluated into fun5/2 10. SCC is partially evaluated into start/2 Control-Flow Refinement of Cost Relations ===================================== ### Specialization of cost equations and/3 * CE 12 is refined into CE [32] * CE 11 is refined into CE [33] ### Cost equations --> "Loop" of and/3 * CEs [32] --> Loop 18 * CEs [33] --> Loop 19 ### Ranking functions of CR and(V1,V,Out) #### Partial ranking functions of CR and(V1,V,Out) ### Specialization of cost equations plus/3 * CE 15 is refined into CE [34] * CE 13 is refined into CE [35] * CE 14 is refined into CE [36] ### Cost equations --> "Loop" of plus/3 * CEs [36] --> Loop 20 * CEs [34] --> Loop 21 * CEs [35] --> Loop 22 ### Ranking functions of CR plus(V1,V,Out) * RF of phase [20]: [V] #### Partial ranking functions of CR plus(V1,V,Out) * Partial RF of phase [20]: - RF of loop [20:1]: V ### Specialization of cost equations encArg/2 * CE 17 is refined into CE [37] * CE 16 is refined into CE [38] * CE 18 is refined into CE [39] * CE 21 is refined into CE [40] * CE 19 is refined into CE [41,42] * CE 20 is refined into CE [43,44,45,46] ### Cost equations --> "Loop" of encArg/2 * CEs [46] --> Loop 23 * CEs [45] --> Loop 24 * CEs [43] --> Loop 25 * CEs [41] --> Loop 26 * CEs [42,44] --> Loop 27 * CEs [39] --> Loop 28 * CEs [40] --> Loop 29 * CEs [37] --> Loop 30 * CEs [38] --> Loop 31 ### Ranking functions of CR encArg(V1,Out) * RF of phase [23,24,25,26,27,28,29]: [V1] #### Partial ranking functions of CR encArg(V1,Out) * Partial RF of phase [23,24,25,26,27,28,29]: - RF of loop [23:1,23:2,24:1,24:2,25:1,25:2,26:1,26:2,27:1,27:2,28:1,29:1]: V1 ### Specialization of cost equations fun/3 * CE 22 is refined into CE [47,48,49,50,51,52] * CE 23 is refined into CE [53] ### Cost equations --> "Loop" of fun/3 * CEs [47] --> Loop 32 * CEs [48,49,50,51,52,53] --> Loop 33 ### Ranking functions of CR fun(V1,V,Out) #### Partial ranking functions of CR fun(V1,V,Out) ### Specialization of cost equations fun1/1 * CE 24 is refined into CE [54] * CE 25 is refined into CE [55] ### Cost equations --> "Loop" of fun1/1 * CEs [54] --> Loop 34 * CEs [55] --> Loop 35 ### Ranking functions of CR fun1(Out) #### Partial ranking functions of CR fun1(Out) ### Specialization of cost equations fun2/2 * CE 26 is refined into CE [56,57] * CE 27 is refined into CE [58] ### Cost equations --> "Loop" of fun2/2 * CEs [56] --> Loop 36 * CEs [57,58] --> Loop 37 ### Ranking functions of CR fun2(V1,Out) #### Partial ranking functions of CR fun2(V1,Out) ### Specialization of cost equations fun3/3 * CE 28 is refined into CE [59,60,61,62,63,64,65,66,67,68,69,70] * CE 29 is refined into CE [71] ### Cost equations --> "Loop" of fun3/3 * CEs [61] --> Loop 38 * CEs [59,63] --> Loop 39 * CEs [62,67,68] --> Loop 40 * CEs [60,64,65,66,69,70,71] --> Loop 41 ### Ranking functions of CR fun3(V1,V,Out) #### Partial ranking functions of CR fun3(V1,V,Out) ### Specialization of cost equations fun5/2 * CE 30 is refined into CE [72,73] * CE 31 is refined into CE [74] ### Cost equations --> "Loop" of fun5/2 * CEs [72] --> Loop 42 * CEs [73] --> Loop 43 * CEs [74] --> Loop 44 ### Ranking functions of CR fun5(V1,Out) #### Partial ranking functions of CR fun5(V1,Out) ### Specialization of cost equations start/2 * CE 1 is refined into CE [75,76] * CE 2 is refined into CE [77,78,79,80] * CE 3 is refined into CE [81] * CE 4 is refined into CE [82,83] * CE 5 is refined into CE [84,85] * CE 6 is refined into CE [86,87] * CE 7 is refined into CE [88,89] * CE 8 is refined into CE [90,91,92,93] * CE 9 is refined into CE [94] * CE 10 is refined into CE [95,96,97] ### Cost equations --> "Loop" of start/2 * CEs [75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97] --> Loop 45 ### Ranking functions of CR start(V1,V) #### Partial ranking functions of CR start(V1,V) Computing Bounds ===================================== #### Cost of chains of and(V1,V,Out): * Chain [19]: 2 with precondition: [V1=1,V=Out,V>=0] * Chain [18]: 0 with precondition: [Out=0,V1>=0,V>=0] #### Cost of chains of plus(V1,V,Out): * Chain [[20],22]: 1*it(20)+1 Such that:it(20) =< V with precondition: [V+V1=Out,V1>=0,V>=1] * Chain [[20],21]: 1*it(20)+0 Such that:it(20) =< Out with precondition: [V1>=0,Out>=1,V>=Out] * Chain [22]: 1 with precondition: [V=0,V1=Out,V1>=0] * Chain [21]: 0 with precondition: [Out=0,V1>=0,V>=0] #### Cost of chains of encArg(V1,Out): * Chain [31]: 0 with precondition: [V1=1,Out=1] * Chain [30]: 0 with precondition: [Out=0,V1>=0] * Chain [multiple([23,24,25,26,27,28,29],[[31],[30]])]: 1*it(24)+1*it(25)+2*it(26)+1*it(29)+1*s(5)+1*s(6)+0 Such that:aux(6) =< V1 aux(7) =< V1+1 aux(8) =< 2/3*V1 it(25) =< aux(6) it(26) =< aux(6) it(29) =< aux(6) it([30]) =< aux(7) it(23) =< aux(8) it(24) =< aux(8) it(26) =< aux(8) aux(4) =< aux(6) it(23) =< it([30])*(1/3)+aux(8) it(24) =< it([30])*(1/3)+aux(8) it(25) =< it([30])*(1/3)+aux(8) it(26) =< it([30])*(1/3)+aux(8) s(6) =< it(24)*aux(4) s(5) =< it(23)*aux(6) with precondition: [V1>=1,Out>=0,V1>=Out] #### Cost of chains of fun(V1,V,Out): * Chain [33]: 3*s(22)+6*s(23)+3*s(24)+3*s(26)+3*s(28)+3*s(29)+2*s(33)+4*s(34)+2*s(35)+2*s(37)+2*s(39)+2*s(40)+2 Such that:aux(9) =< V1 aux(10) =< V1+1 aux(11) =< 2/3*V1 aux(12) =< V aux(13) =< V+1 aux(14) =< 2/3*V s(33) =< aux(12) s(34) =< aux(12) s(35) =< aux(12) s(36) =< aux(14) s(37) =< aux(14) s(34) =< aux(14) s(38) =< aux(12) s(36) =< aux(13)*(1/3)+aux(14) s(37) =< aux(13)*(1/3)+aux(14) s(33) =< aux(13)*(1/3)+aux(14) s(34) =< aux(13)*(1/3)+aux(14) s(39) =< s(37)*s(38) s(40) =< s(36)*aux(12) s(22) =< aux(9) s(23) =< aux(9) s(24) =< aux(9) s(25) =< aux(11) s(26) =< aux(11) s(23) =< aux(11) s(27) =< aux(9) s(25) =< aux(10)*(1/3)+aux(11) s(26) =< aux(10)*(1/3)+aux(11) s(22) =< aux(10)*(1/3)+aux(11) s(23) =< aux(10)*(1/3)+aux(11) s(28) =< s(26)*s(27) s(29) =< s(25)*aux(9) with precondition: [Out=0,V1>=0,V>=0] * Chain [32]: 1*s(77)+2*s(78)+1*s(79)+1*s(81)+1*s(83)+1*s(84)+1*s(88)+2*s(89)+1*s(90)+1*s(92)+1*s(94)+1*s(95)+2 Such that:s(74) =< V1 s(75) =< V1+1 s(76) =< 2/3*V1 s(85) =< V s(86) =< V+1 s(87) =< 2/3*V s(88) =< s(85) s(89) =< s(85) s(90) =< s(85) s(91) =< s(87) s(92) =< s(87) s(89) =< s(87) s(93) =< s(85) s(91) =< s(86)*(1/3)+s(87) s(92) =< s(86)*(1/3)+s(87) s(88) =< s(86)*(1/3)+s(87) s(89) =< s(86)*(1/3)+s(87) s(94) =< s(92)*s(93) s(95) =< s(91)*s(85) s(77) =< s(74) s(78) =< s(74) s(79) =< s(74) s(80) =< s(76) s(81) =< s(76) s(78) =< s(76) s(82) =< s(74) s(80) =< s(75)*(1/3)+s(76) s(81) =< s(75)*(1/3)+s(76) s(77) =< s(75)*(1/3)+s(76) s(78) =< s(75)*(1/3)+s(76) s(83) =< s(81)*s(82) s(84) =< s(80)*s(74) with precondition: [V1>=1,V>=1,Out>=0,V>=Out] #### Cost of chains of fun1(Out): * Chain [35]: 0 with precondition: [Out=0] * Chain [34]: 0 with precondition: [Out=1] #### Cost of chains of fun2(V1,Out): * Chain [37]: 1 with precondition: [Out=0,V1>=0] * Chain [36]: 1*s(99)+2*s(100)+1*s(101)+1*s(103)+1*s(105)+1*s(106)+1 Such that:s(96) =< V1 s(97) =< V1+1 s(98) =< 2/3*V1 s(99) =< s(96) s(100) =< s(96) s(101) =< s(96) s(102) =< s(98) s(103) =< s(98) s(100) =< s(98) s(104) =< s(96) s(102) =< s(97)*(1/3)+s(98) s(103) =< s(97)*(1/3)+s(98) s(99) =< s(97)*(1/3)+s(98) s(100) =< s(97)*(1/3)+s(98) s(105) =< s(103)*s(104) s(106) =< s(102)*s(96) with precondition: [V1>=1,Out>=0,V1>=Out] #### Cost of chains of fun3(V1,V,Out): * Chain [41]: 2*s(110)+4*s(111)+2*s(112)+2*s(114)+2*s(116)+2*s(117)+3*s(121)+6*s(122)+3*s(123)+3*s(125)+3*s(127)+3*s(128)+1 Such that:aux(15) =< V1 aux(16) =< V1+1 aux(17) =< 2/3*V1 aux(18) =< V aux(19) =< V+1 aux(20) =< 2/3*V s(121) =< aux(18) s(122) =< aux(18) s(123) =< aux(18) s(124) =< aux(20) s(125) =< aux(20) s(122) =< aux(20) s(126) =< aux(18) s(124) =< aux(19)*(1/3)+aux(20) s(125) =< aux(19)*(1/3)+aux(20) s(121) =< aux(19)*(1/3)+aux(20) s(122) =< aux(19)*(1/3)+aux(20) s(127) =< s(125)*s(126) s(128) =< s(124)*aux(18) s(110) =< aux(15) s(111) =< aux(15) s(112) =< aux(15) s(113) =< aux(17) s(114) =< aux(17) s(111) =< aux(17) s(115) =< aux(15) s(113) =< aux(16)*(1/3)+aux(17) s(114) =< aux(16)*(1/3)+aux(17) s(110) =< aux(16)*(1/3)+aux(17) s(111) =< aux(16)*(1/3)+aux(17) s(116) =< s(114)*s(115) s(117) =< s(113)*aux(15) with precondition: [Out=0,V1>=0,V>=0] * Chain [40]: 1*s(165)+2*s(166)+1*s(167)+1*s(169)+1*s(171)+1*s(172)+3*s(176)+6*s(177)+6*s(178)+3*s(180)+3*s(182)+3*s(183)+1 Such that:s(162) =< V1 s(163) =< V1+1 s(164) =< 2/3*V1 aux(24) =< V aux(25) =< V+1 aux(26) =< 2/3*V s(178) =< aux(24) s(176) =< aux(24) s(177) =< aux(24) s(179) =< aux(26) s(180) =< aux(26) s(177) =< aux(26) s(181) =< aux(24) s(179) =< aux(25)*(1/3)+aux(26) s(180) =< aux(25)*(1/3)+aux(26) s(176) =< aux(25)*(1/3)+aux(26) s(177) =< aux(25)*(1/3)+aux(26) s(182) =< s(180)*s(181) s(183) =< s(179)*aux(24) s(165) =< s(162) s(166) =< s(162) s(167) =< s(162) s(168) =< s(164) s(169) =< s(164) s(166) =< s(164) s(170) =< s(162) s(168) =< s(163)*(1/3)+s(164) s(169) =< s(163)*(1/3)+s(164) s(165) =< s(163)*(1/3)+s(164) s(166) =< s(163)*(1/3)+s(164) s(171) =< s(169)*s(170) s(172) =< s(168)*s(162) with precondition: [V1>=0,Out>=1,V>=Out] * Chain [39]: 2*s(212)+4*s(213)+2*s(214)+2*s(216)+2*s(218)+2*s(219)+1*s(223)+2*s(224)+1*s(225)+1*s(227)+1*s(229)+1*s(230)+1 Such that:s(220) =< V s(221) =< V+1 s(222) =< 2/3*V aux(27) =< V1 aux(28) =< V1+1 aux(29) =< 2/3*V1 s(223) =< s(220) s(224) =< s(220) s(225) =< s(220) s(226) =< s(222) s(227) =< s(222) s(224) =< s(222) s(228) =< s(220) s(226) =< s(221)*(1/3)+s(222) s(227) =< s(221)*(1/3)+s(222) s(223) =< s(221)*(1/3)+s(222) s(224) =< s(221)*(1/3)+s(222) s(229) =< s(227)*s(228) s(230) =< s(226)*s(220) s(212) =< aux(27) s(213) =< aux(27) s(214) =< aux(27) s(215) =< aux(29) s(216) =< aux(29) s(213) =< aux(29) s(217) =< aux(27) s(215) =< aux(28)*(1/3)+aux(29) s(216) =< aux(28)*(1/3)+aux(29) s(212) =< aux(28)*(1/3)+aux(29) s(213) =< aux(28)*(1/3)+aux(29) s(218) =< s(216)*s(217) s(219) =< s(215)*aux(27) with precondition: [V1>=1,V>=0,Out>=0,V1>=Out] * Chain [38]: 1*s(245)+2*s(246)+1*s(247)+1*s(249)+1*s(251)+1*s(252)+1*s(256)+2*s(257)+2*s(258)+1*s(260)+1*s(262)+1*s(263)+1 Such that:s(242) =< V1 s(243) =< V1+1 s(244) =< 2/3*V1 s(254) =< V+1 s(255) =< 2/3*V aux(30) =< V s(258) =< aux(30) s(256) =< aux(30) s(257) =< aux(30) s(259) =< s(255) s(260) =< s(255) s(257) =< s(255) s(261) =< aux(30) s(259) =< s(254)*(1/3)+s(255) s(260) =< s(254)*(1/3)+s(255) s(256) =< s(254)*(1/3)+s(255) s(257) =< s(254)*(1/3)+s(255) s(262) =< s(260)*s(261) s(263) =< s(259)*aux(30) s(245) =< s(242) s(246) =< s(242) s(247) =< s(242) s(248) =< s(244) s(249) =< s(244) s(246) =< s(244) s(250) =< s(242) s(248) =< s(243)*(1/3)+s(244) s(249) =< s(243)*(1/3)+s(244) s(245) =< s(243)*(1/3)+s(244) s(246) =< s(243)*(1/3)+s(244) s(251) =< s(249)*s(250) s(252) =< s(248)*s(242) with precondition: [V1>=1,V>=1,Out>=1,V+V1>=Out] #### Cost of chains of fun5(V1,Out): * Chain [44]: 0 with precondition: [Out=0,V1>=0] * Chain [43]: 0 with precondition: [Out=1,V1>=0] * Chain [42]: 1*s(268)+2*s(269)+1*s(270)+1*s(272)+1*s(274)+1*s(275)+0 Such that:s(265) =< V1 s(266) =< V1+1 s(267) =< 2/3*V1 s(268) =< s(265) s(269) =< s(265) s(270) =< s(265) s(271) =< s(267) s(272) =< s(267) s(269) =< s(267) s(273) =< s(265) s(271) =< s(266)*(1/3)+s(267) s(272) =< s(266)*(1/3)+s(267) s(268) =< s(266)*(1/3)+s(267) s(269) =< s(266)*(1/3)+s(267) s(274) =< s(272)*s(273) s(275) =< s(271)*s(265) with precondition: [V1>=1,Out>=1,V1+1>=Out] #### Cost of chains of start(V1,V): * Chain [45]: 17*s(276)+13*s(281)+26*s(282)+13*s(283)+13*s(285)+13*s(287)+13*s(288)+11*s(295)+22*s(296)+11*s(299)+11*s(301)+11*s(302)+2 Such that:aux(31) =< V1 aux(32) =< V1+1 aux(33) =< 2/3*V1 aux(34) =< V aux(35) =< V+1 aux(36) =< 2/3*V s(276) =< aux(34) s(281) =< aux(31) s(282) =< aux(31) s(283) =< aux(31) s(284) =< aux(33) s(285) =< aux(33) s(282) =< aux(33) s(286) =< aux(31) s(284) =< aux(32)*(1/3)+aux(33) s(285) =< aux(32)*(1/3)+aux(33) s(281) =< aux(32)*(1/3)+aux(33) s(282) =< aux(32)*(1/3)+aux(33) s(287) =< s(285)*s(286) s(288) =< s(284)*aux(31) s(295) =< aux(34) s(296) =< aux(34) s(298) =< aux(36) s(299) =< aux(36) s(296) =< aux(36) s(300) =< aux(34) s(298) =< aux(35)*(1/3)+aux(36) s(299) =< aux(35)*(1/3)+aux(36) s(295) =< aux(35)*(1/3)+aux(36) s(296) =< aux(35)*(1/3)+aux(36) s(301) =< s(299)*s(300) s(302) =< s(298)*aux(34) with precondition: [] Closed-form bounds of start(V1,V): ------------------------------------- * Chain [45] with precondition: [] - Upper bound: nat(V1)*52+2+nat(V1)*26*nat(2/3*V1)+nat(V)*50+nat(V)*22*nat(2/3*V)+nat(2/3*V1)*13+nat(2/3*V)*11 - Complexity: n^2 ### Maximum cost of start(V1,V): nat(V1)*52+2+nat(V1)*26*nat(2/3*V1)+nat(V)*50+nat(V)*22*nat(2/3*V)+nat(2/3*V1)*13+nat(2/3*V)*11 Asymptotic class: n^2 * Total analysis performed in 687 ms. ---------------------------------------- (16) BOUNDS(1, n^2) ---------------------------------------- (17) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (18) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: and(tt, X) -> activate(X) plus(N, 0') -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X The (relative) TRS S consists of the following rules: encArg(tt) -> tt encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Rewrite Strategy: FULL ---------------------------------------- (19) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (20) Obligation: TRS: Rules: and(tt, X) -> activate(X) plus(N, 0') -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X encArg(tt) -> tt encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate tt :: tt:0':s:cons_and:cons_plus:cons_activate activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate 0' :: tt:0':s:cons_and:cons_plus:cons_activate s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encArg :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_tt :: tt:0':s:cons_and:cons_plus:cons_activate encode_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_0 :: tt:0':s:cons_and:cons_plus:cons_activate encode_s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate hole_tt:0':s:cons_and:cons_plus:cons_activate1_3 :: tt:0':s:cons_and:cons_plus:cons_activate gen_tt:0':s:cons_and:cons_plus:cons_activate2_3 :: Nat -> tt:0':s:cons_and:cons_plus:cons_activate ---------------------------------------- (21) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: plus, encArg They will be analysed ascendingly in the following order: plus < encArg ---------------------------------------- (22) Obligation: TRS: Rules: and(tt, X) -> activate(X) plus(N, 0') -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X encArg(tt) -> tt encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate tt :: tt:0':s:cons_and:cons_plus:cons_activate activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate 0' :: tt:0':s:cons_and:cons_plus:cons_activate s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encArg :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_tt :: tt:0':s:cons_and:cons_plus:cons_activate encode_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_0 :: tt:0':s:cons_and:cons_plus:cons_activate encode_s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate hole_tt:0':s:cons_and:cons_plus:cons_activate1_3 :: tt:0':s:cons_and:cons_plus:cons_activate gen_tt:0':s:cons_and:cons_plus:cons_activate2_3 :: Nat -> tt:0':s:cons_and:cons_plus:cons_activate Generator Equations: gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(0) <=> tt gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(x, 1)) <=> s(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(x)) The following defined symbols remain to be analysed: plus, encArg They will be analysed ascendingly in the following order: plus < encArg ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: plus(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(a), gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(1, n4_3))) -> *3_3, rt in Omega(n4_3) Induction Base: plus(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(a), gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(1, 0))) Induction Step: plus(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(a), gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(1, +(n4_3, 1)))) ->_R^Omega(1) s(plus(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(a), gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(1, n4_3)))) ->_IH s(*3_3) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (24) Complex Obligation (BEST) ---------------------------------------- (25) Obligation: Proved the lower bound n^1 for the following obligation: TRS: Rules: and(tt, X) -> activate(X) plus(N, 0') -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X encArg(tt) -> tt encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate tt :: tt:0':s:cons_and:cons_plus:cons_activate activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate 0' :: tt:0':s:cons_and:cons_plus:cons_activate s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encArg :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_tt :: tt:0':s:cons_and:cons_plus:cons_activate encode_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_0 :: tt:0':s:cons_and:cons_plus:cons_activate encode_s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate hole_tt:0':s:cons_and:cons_plus:cons_activate1_3 :: tt:0':s:cons_and:cons_plus:cons_activate gen_tt:0':s:cons_and:cons_plus:cons_activate2_3 :: Nat -> tt:0':s:cons_and:cons_plus:cons_activate Generator Equations: gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(0) <=> tt gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(x, 1)) <=> s(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(x)) The following defined symbols remain to be analysed: plus, encArg They will be analysed ascendingly in the following order: plus < encArg ---------------------------------------- (26) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (27) BOUNDS(n^1, INF) ---------------------------------------- (28) Obligation: TRS: Rules: and(tt, X) -> activate(X) plus(N, 0') -> N plus(N, s(M)) -> s(plus(N, M)) activate(X) -> X encArg(tt) -> tt encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_plus(x_1, x_2)) -> plus(encArg(x_1), encArg(x_2)) encArg(cons_activate(x_1)) -> activate(encArg(x_1)) encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_tt -> tt encode_activate(x_1) -> activate(encArg(x_1)) encode_plus(x_1, x_2) -> plus(encArg(x_1), encArg(x_2)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate tt :: tt:0':s:cons_and:cons_plus:cons_activate activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate 0' :: tt:0':s:cons_and:cons_plus:cons_activate s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encArg :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate cons_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_and :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_tt :: tt:0':s:cons_and:cons_plus:cons_activate encode_activate :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_plus :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate encode_0 :: tt:0':s:cons_and:cons_plus:cons_activate encode_s :: tt:0':s:cons_and:cons_plus:cons_activate -> tt:0':s:cons_and:cons_plus:cons_activate hole_tt:0':s:cons_and:cons_plus:cons_activate1_3 :: tt:0':s:cons_and:cons_plus:cons_activate gen_tt:0':s:cons_and:cons_plus:cons_activate2_3 :: Nat -> tt:0':s:cons_and:cons_plus:cons_activate Lemmas: plus(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(a), gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(1, n4_3))) -> *3_3, rt in Omega(n4_3) Generator Equations: gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(0) <=> tt gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(x, 1)) <=> s(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(x)) The following defined symbols remain to be analysed: encArg ---------------------------------------- (29) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: encArg(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(n614_3)) -> gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(n614_3), rt in Omega(0) Induction Base: encArg(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(0)) ->_R^Omega(0) tt Induction Step: encArg(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(+(n614_3, 1))) ->_R^Omega(0) s(encArg(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(n614_3))) ->_IH s(gen_tt:0':s:cons_and:cons_plus:cons_activate2_3(c615_3)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (30) BOUNDS(1, INF)