/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^1)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^1). (0) DCpxTrs (1) DerivationalComplexityToRuntimeComplexityProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 193 ms] (4) CpxRelTRS (5) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxWeightedTrs (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxTypedWeightedTrs (9) CompletionProof [UPPER BOUND(ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (12) CpxRNTS (13) CompleteCoflocoProof [FINISHED, 799 ms] (14) BOUNDS(1, n^1) (15) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRelTRS (17) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (18) typed CpxTrs (19) OrderProof [LOWER BOUND(ID), 0 ms] (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 287 ms] (22) proven lower bound (23) LowerBoundPropagationProof [FINISHED, 0 ms] (24) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: f(x, y, w, w, a) -> g1(x, x, y, w) f(x, y, w, a, a) -> g1(y, x, x, w) f(x, y, a, a, w) -> g2(x, y, y, w) f(x, y, a, w, w) -> g2(y, y, x, w) g1(x, x, y, a) -> h(x, y) g1(y, x, x, a) -> h(x, y) g2(x, y, y, a) -> h(x, y) g2(y, y, x, a) -> h(x, y) h(x, x) -> x S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (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(a) -> a encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encode_a -> a encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) ---------------------------------------- (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: f(x, y, w, w, a) -> g1(x, x, y, w) f(x, y, w, a, a) -> g1(y, x, x, w) f(x, y, a, a, w) -> g2(x, y, y, w) f(x, y, a, w, w) -> g2(y, y, x, w) g1(x, x, y, a) -> h(x, y) g1(y, x, x, a) -> h(x, y) g2(x, y, y, a) -> h(x, y) g2(y, y, x, a) -> h(x, y) h(x, x) -> x The (relative) TRS S consists of the following rules: encArg(a) -> a encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encode_a -> a encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) Rewrite Strategy: INNERMOST ---------------------------------------- (3) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (4) 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: f(x, y, w, w, a) -> g1(x, x, y, w) f(x, y, w, a, a) -> g1(y, x, x, w) f(x, y, a, a, w) -> g2(x, y, y, w) f(x, y, a, w, w) -> g2(y, y, x, w) g1(x, x, y, a) -> h(x, y) g1(y, x, x, a) -> h(x, y) g2(x, y, y, a) -> h(x, y) g2(y, y, x, a) -> h(x, y) h(x, x) -> x The (relative) TRS S consists of the following rules: encArg(a) -> a encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encode_a -> a encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) Rewrite Strategy: INNERMOST ---------------------------------------- (5) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: f(x, y, w, w, a) -> g1(x, x, y, w) [1] f(x, y, w, a, a) -> g1(y, x, x, w) [1] f(x, y, a, a, w) -> g2(x, y, y, w) [1] f(x, y, a, w, w) -> g2(y, y, x, w) [1] g1(x, x, y, a) -> h(x, y) [1] g1(y, x, x, a) -> h(x, y) [1] g2(x, y, y, a) -> h(x, y) [1] g2(y, y, x, a) -> h(x, y) [1] h(x, x) -> x [1] encArg(a) -> a [0] encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) [0] encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) [0] encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) [0] encode_a -> a [0] encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: f(x, y, w, w, a) -> g1(x, x, y, w) [1] f(x, y, w, a, a) -> g1(y, x, x, w) [1] f(x, y, a, a, w) -> g2(x, y, y, w) [1] f(x, y, a, w, w) -> g2(y, y, x, w) [1] g1(x, x, y, a) -> h(x, y) [1] g1(y, x, x, a) -> h(x, y) [1] g2(x, y, y, a) -> h(x, y) [1] g2(y, y, x, a) -> h(x, y) [1] h(x, x) -> x [1] encArg(a) -> a [0] encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) [0] encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) [0] encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) [0] encode_a -> a [0] encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) [0] The TRS has the following type information: f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h a :: a:cons_f:cons_g1:cons_g2:cons_h g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encArg :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_a :: a:cons_f:cons_g1:cons_g2:cons_h encode_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h Rewrite Strategy: INNERMOST ---------------------------------------- (9) 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_f(v0, v1, v2, v3, v4) -> null_encode_f [0] encode_a -> null_encode_a [0] encode_g1(v0, v1, v2, v3) -> null_encode_g1 [0] encode_g2(v0, v1, v2, v3) -> null_encode_g2 [0] encode_h(v0, v1) -> null_encode_h [0] f(v0, v1, v2, v3, v4) -> null_f [0] g1(v0, v1, v2, v3) -> null_g1 [0] g2(v0, v1, v2, v3) -> null_g2 [0] h(v0, v1) -> null_h [0] And the following fresh constants: null_encArg, null_encode_f, null_encode_a, null_encode_g1, null_encode_g2, null_encode_h, null_f, null_g1, null_g2, null_h ---------------------------------------- (10) 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: f(x, y, w, w, a) -> g1(x, x, y, w) [1] f(x, y, w, a, a) -> g1(y, x, x, w) [1] f(x, y, a, a, w) -> g2(x, y, y, w) [1] f(x, y, a, w, w) -> g2(y, y, x, w) [1] g1(x, x, y, a) -> h(x, y) [1] g1(y, x, x, a) -> h(x, y) [1] g2(x, y, y, a) -> h(x, y) [1] g2(y, y, x, a) -> h(x, y) [1] h(x, x) -> x [1] encArg(a) -> a [0] encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) [0] encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) [0] encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) [0] encode_a -> a [0] encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) [0] encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) [0] encArg(v0) -> null_encArg [0] encode_f(v0, v1, v2, v3, v4) -> null_encode_f [0] encode_a -> null_encode_a [0] encode_g1(v0, v1, v2, v3) -> null_encode_g1 [0] encode_g2(v0, v1, v2, v3) -> null_encode_g2 [0] encode_h(v0, v1) -> null_encode_h [0] f(v0, v1, v2, v3, v4) -> null_f [0] g1(v0, v1, v2, v3) -> null_g1 [0] g2(v0, v1, v2, v3) -> null_g2 [0] h(v0, v1) -> null_h [0] The TRS has the following type information: f :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h a :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h g1 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h g2 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h h :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h encArg :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h cons_f :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h cons_g1 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h cons_g2 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h cons_h :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h encode_f :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h encode_a :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h encode_g1 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h encode_g2 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h encode_h :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h -> a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_encArg :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_encode_f :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_encode_a :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_encode_g1 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_encode_g2 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_encode_h :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_f :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_g1 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_g2 :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h null_h :: a:cons_f:cons_g1:cons_g2:cons_h:null_encArg:null_encode_f:null_encode_a:null_encode_g1:null_encode_g2:null_encode_h:null_f:null_g1:null_g2:null_h Rewrite Strategy: INNERMOST ---------------------------------------- (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: a => 0 null_encArg => 0 null_encode_f => 0 null_encode_a => 0 null_encode_g1 => 0 null_encode_g2 => 0 null_encode_h => 0 null_f => 0 null_g1 => 0 null_g2 => 0 null_h => 0 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: encArg(z) -{ 0 }-> h(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) :|: x_1 >= 0, x_3 >= 0, x_2 >= 0, z = 1 + x_1 + x_2 + x_3 + x_4, x_4 >= 0 encArg(z) -{ 0 }-> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) :|: x_1 >= 0, x_3 >= 0, x_2 >= 0, z = 1 + x_1 + x_2 + x_3 + x_4, x_4 >= 0 encArg(z) -{ 0 }-> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) :|: x_1 >= 0, x_5 >= 0, z = 1 + x_1 + x_2 + x_3 + x_4 + x_5, x_3 >= 0, x_2 >= 0, x_4 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_a -{ 0 }-> 0 :|: encode_f(z, z', z'', z1, z2) -{ 0 }-> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) :|: x_1 >= 0, x_5 >= 0, z1 = x_4, x_3 >= 0, x_2 >= 0, z = x_1, z' = x_2, z2 = x_5, z'' = x_3, x_4 >= 0 encode_f(z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 encode_g1(z, z', z'', z1) -{ 0 }-> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) :|: x_1 >= 0, z1 = x_4, x_3 >= 0, x_2 >= 0, z = x_1, z' = x_2, z'' = x_3, x_4 >= 0 encode_g1(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 encode_g2(z, z', z'', z1) -{ 0 }-> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) :|: x_1 >= 0, z1 = x_4, x_3 >= 0, x_2 >= 0, z = x_1, z' = x_2, z'' = x_3, x_4 >= 0 encode_g2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 encode_h(z, z') -{ 0 }-> h(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_h(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 f(z, z', z'', z1, z2) -{ 1 }-> g2(x, y, y, w) :|: z'' = 0, z1 = 0, x >= 0, y >= 0, w >= 0, z = x, z' = y, z2 = w f(z, z', z'', z1, z2) -{ 1 }-> g2(y, y, x, w) :|: z'' = 0, x >= 0, y >= 0, w >= 0, z = x, z' = y, z1 = w, z2 = w f(z, z', z'', z1, z2) -{ 1 }-> g1(x, x, y, w) :|: z'' = w, z2 = 0, x >= 0, y >= 0, w >= 0, z = x, z' = y, z1 = w f(z, z', z'', z1, z2) -{ 1 }-> g1(y, x, x, w) :|: z1 = 0, z'' = w, z2 = 0, x >= 0, y >= 0, w >= 0, z = x, z' = y f(z, z', z'', z1, z2) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 g1(z, z', z'', z1) -{ 1 }-> h(x, y) :|: z1 = 0, z' = x, z'' = y, x >= 0, y >= 0, z = x g1(z, z', z'', z1) -{ 1 }-> h(x, y) :|: z1 = 0, z' = x, y >= 0, x >= 0, z'' = x, z = y g1(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 g2(z, z', z'', z1) -{ 1 }-> h(x, y) :|: z1 = 0, z'' = y, x >= 0, y >= 0, z = x, z' = y g2(z, z', z'', z1) -{ 1 }-> h(x, y) :|: z1 = 0, y >= 0, x >= 0, z'' = x, z' = y, z = y g2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 h(z, z') -{ 1 }-> x :|: z' = x, x >= 0, z = x h(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (13) CompleteCoflocoProof (FINISHED) Transformed the RNTS (where only complete derivations are relevant) into cost relations for CoFloCo: eq(start(V1, V, V3, V7, V4),0,[f(V1, V, V3, V7, V4, Out)],[V1 >= 0,V >= 0,V3 >= 0,V7 >= 0,V4 >= 0]). eq(start(V1, V, V3, V7, V4),0,[g1(V1, V, V3, V7, Out)],[V1 >= 0,V >= 0,V3 >= 0,V7 >= 0]). eq(start(V1, V, V3, V7, V4),0,[g2(V1, V, V3, V7, Out)],[V1 >= 0,V >= 0,V3 >= 0,V7 >= 0]). eq(start(V1, V, V3, V7, V4),0,[h(V1, V, Out)],[V1 >= 0,V >= 0]). eq(start(V1, V, V3, V7, V4),0,[encArg(V1, Out)],[V1 >= 0]). eq(start(V1, V, V3, V7, V4),0,[fun(V1, V, V3, V7, V4, Out)],[V1 >= 0,V >= 0,V3 >= 0,V7 >= 0,V4 >= 0]). eq(start(V1, V, V3, V7, V4),0,[fun1(Out)],[]). eq(start(V1, V, V3, V7, V4),0,[fun2(V1, V, V3, V7, Out)],[V1 >= 0,V >= 0,V3 >= 0,V7 >= 0]). eq(start(V1, V, V3, V7, V4),0,[fun3(V1, V, V3, V7, Out)],[V1 >= 0,V >= 0,V3 >= 0,V7 >= 0]). eq(start(V1, V, V3, V7, V4),0,[fun4(V1, V, Out)],[V1 >= 0,V >= 0]). eq(f(V1, V, V3, V7, V4, Out),1,[g1(V6, V6, V5, V2, Ret)],[Out = Ret,V3 = V2,V4 = 0,V6 >= 0,V5 >= 0,V2 >= 0,V1 = V6,V = V5,V7 = V2]). eq(f(V1, V, V3, V7, V4, Out),1,[g1(V10, V8, V8, V9, Ret1)],[Out = Ret1,V7 = 0,V3 = V9,V4 = 0,V8 >= 0,V10 >= 0,V9 >= 0,V1 = V8,V = V10]). eq(f(V1, V, V3, V7, V4, Out),1,[g2(V13, V12, V12, V11, Ret2)],[Out = Ret2,V3 = 0,V7 = 0,V13 >= 0,V12 >= 0,V11 >= 0,V1 = V13,V = V12,V4 = V11]). eq(f(V1, V, V3, V7, V4, Out),1,[g2(V16, V16, V14, V15, Ret3)],[Out = Ret3,V3 = 0,V14 >= 0,V16 >= 0,V15 >= 0,V1 = V14,V = V16,V7 = V15,V4 = V15]). eq(g1(V1, V, V3, V7, Out),1,[h(V18, V17, Ret4)],[Out = Ret4,V7 = 0,V = V18,V3 = V17,V18 >= 0,V17 >= 0,V1 = V18]). eq(g1(V1, V, V3, V7, Out),1,[h(V20, V19, Ret5)],[Out = Ret5,V7 = 0,V = V20,V19 >= 0,V20 >= 0,V3 = V20,V1 = V19]). eq(g2(V1, V, V3, V7, Out),1,[h(V22, V21, Ret6)],[Out = Ret6,V7 = 0,V3 = V21,V22 >= 0,V21 >= 0,V1 = V22,V = V21]). eq(g2(V1, V, V3, V7, Out),1,[h(V23, V24, Ret7)],[Out = Ret7,V7 = 0,V24 >= 0,V23 >= 0,V3 = V23,V = V24,V1 = V24]). eq(h(V1, V, Out),1,[],[Out = V25,V = V25,V25 >= 0,V1 = V25]). eq(encArg(V1, Out),0,[],[Out = 0,V1 = 0]). eq(encArg(V1, Out),0,[encArg(V30, Ret0),encArg(V29, Ret11),encArg(V27, Ret21),encArg(V26, Ret31),encArg(V28, Ret41),f(Ret0, Ret11, Ret21, Ret31, Ret41, Ret8)],[Out = Ret8,V30 >= 0,V28 >= 0,V1 = 1 + V26 + V27 + V28 + V29 + V30,V27 >= 0,V29 >= 0,V26 >= 0]). eq(encArg(V1, Out),0,[encArg(V32, Ret01),encArg(V34, Ret12),encArg(V33, Ret22),encArg(V31, Ret32),g1(Ret01, Ret12, Ret22, Ret32, Ret9)],[Out = Ret9,V32 >= 0,V33 >= 0,V34 >= 0,V1 = 1 + V31 + V32 + V33 + V34,V31 >= 0]). eq(encArg(V1, Out),0,[encArg(V36, Ret02),encArg(V35, Ret13),encArg(V38, Ret23),encArg(V37, Ret33),g2(Ret02, Ret13, Ret23, Ret33, Ret10)],[Out = Ret10,V36 >= 0,V38 >= 0,V35 >= 0,V1 = 1 + V35 + V36 + V37 + V38,V37 >= 0]). eq(encArg(V1, Out),0,[encArg(V40, Ret03),encArg(V39, Ret14),h(Ret03, Ret14, Ret15)],[Out = Ret15,V40 >= 0,V1 = 1 + V39 + V40,V39 >= 0]). eq(fun(V1, V, V3, V7, V4, Out),0,[encArg(V45, Ret04),encArg(V44, Ret16),encArg(V42, Ret24),encArg(V43, Ret34),encArg(V41, Ret42),f(Ret04, Ret16, Ret24, Ret34, Ret42, Ret17)],[Out = Ret17,V45 >= 0,V41 >= 0,V7 = V43,V42 >= 0,V44 >= 0,V1 = V45,V = V44,V4 = V41,V3 = V42,V43 >= 0]). eq(fun1(Out),0,[],[Out = 0]). eq(fun2(V1, V, V3, V7, Out),0,[encArg(V48, Ret05),encArg(V49, Ret18),encArg(V47, Ret25),encArg(V46, Ret35),g1(Ret05, Ret18, Ret25, Ret35, Ret19)],[Out = Ret19,V48 >= 0,V7 = V46,V47 >= 0,V49 >= 0,V1 = V48,V = V49,V3 = V47,V46 >= 0]). eq(fun3(V1, V, V3, V7, Out),0,[encArg(V52, Ret06),encArg(V51, Ret110),encArg(V53, Ret26),encArg(V50, Ret36),g2(Ret06, Ret110, Ret26, Ret36, Ret20)],[Out = Ret20,V52 >= 0,V7 = V50,V53 >= 0,V51 >= 0,V1 = V52,V = V51,V3 = V53,V50 >= 0]). eq(fun4(V1, V, Out),0,[encArg(V55, Ret07),encArg(V54, Ret111),h(Ret07, Ret111, Ret27)],[Out = Ret27,V55 >= 0,V54 >= 0,V1 = V55,V = V54]). eq(encArg(V1, Out),0,[],[Out = 0,V56 >= 0,V1 = V56]). eq(fun(V1, V, V3, V7, V4, Out),0,[],[Out = 0,V7 = V60,V58 >= 0,V59 >= 0,V3 = V61,V57 >= 0,V1 = V58,V = V57,V4 = V59,V61 >= 0,V60 >= 0]). eq(fun2(V1, V, V3, V7, Out),0,[],[Out = 0,V7 = V65,V64 >= 0,V3 = V62,V63 >= 0,V1 = V64,V = V63,V62 >= 0,V65 >= 0]). eq(fun3(V1, V, V3, V7, Out),0,[],[Out = 0,V7 = V67,V66 >= 0,V3 = V68,V69 >= 0,V1 = V66,V = V69,V68 >= 0,V67 >= 0]). eq(fun4(V1, V, Out),0,[],[Out = 0,V70 >= 0,V71 >= 0,V1 = V70,V = V71]). eq(f(V1, V, V3, V7, V4, Out),0,[],[Out = 0,V7 = V74,V73 >= 0,V76 >= 0,V3 = V75,V72 >= 0,V1 = V73,V = V72,V4 = V76,V75 >= 0,V74 >= 0]). eq(g1(V1, V, V3, V7, Out),0,[],[Out = 0,V7 = V79,V78 >= 0,V3 = V80,V77 >= 0,V1 = V78,V = V77,V80 >= 0,V79 >= 0]). eq(g2(V1, V, V3, V7, Out),0,[],[Out = 0,V7 = V84,V81 >= 0,V3 = V82,V83 >= 0,V1 = V81,V = V83,V82 >= 0,V84 >= 0]). eq(h(V1, V, Out),0,[],[Out = 0,V85 >= 0,V86 >= 0,V1 = V85,V = V86]). input_output_vars(f(V1,V,V3,V7,V4,Out),[V1,V,V3,V7,V4],[Out]). input_output_vars(g1(V1,V,V3,V7,Out),[V1,V,V3,V7],[Out]). input_output_vars(g2(V1,V,V3,V7,Out),[V1,V,V3,V7],[Out]). input_output_vars(h(V1,V,Out),[V1,V],[Out]). input_output_vars(encArg(V1,Out),[V1],[Out]). input_output_vars(fun(V1,V,V3,V7,V4,Out),[V1,V,V3,V7,V4],[Out]). input_output_vars(fun1(Out),[],[Out]). input_output_vars(fun2(V1,V,V3,V7,Out),[V1,V,V3,V7],[Out]). input_output_vars(fun3(V1,V,V3,V7,Out),[V1,V,V3,V7],[Out]). input_output_vars(fun4(V1,V,Out),[V1,V],[Out]). CoFloCo proof output: Preprocessing Cost Relations ===================================== #### Computed strongly connected components 0. non_recursive : [h/3] 1. non_recursive : [g1/5] 2. non_recursive : [g2/5] 3. non_recursive : [f/6] 4. recursive [non_tail,multiple] : [encArg/2] 5. non_recursive : [fun/6] 6. non_recursive : [fun1/1] 7. non_recursive : [fun2/5] 8. non_recursive : [fun3/5] 9. non_recursive : [fun4/3] 10. non_recursive : [start/5] #### Obtained direct recursion through partial evaluation 0. SCC is partially evaluated into h/3 1. SCC is partially evaluated into g1/5 2. SCC is partially evaluated into g2/5 3. SCC is partially evaluated into f/6 4. SCC is partially evaluated into encArg/2 5. SCC is partially evaluated into fun/6 6. SCC is completely evaluated into other SCCs 7. SCC is partially evaluated into fun2/5 8. SCC is partially evaluated into fun3/5 9. SCC is partially evaluated into fun4/3 10. SCC is partially evaluated into start/5 Control-Flow Refinement of Cost Relations ===================================== ### Specialization of cost equations h/3 * CE 22 is refined into CE [37] * CE 23 is refined into CE [38] ### Cost equations --> "Loop" of h/3 * CEs [37] --> Loop 23 * CEs [38] --> Loop 24 ### Ranking functions of CR h(V1,V,Out) #### Partial ranking functions of CR h(V1,V,Out) ### Specialization of cost equations g1/5 * CE 18 is refined into CE [39] * CE 17 is refined into CE [40,41] * CE 16 is refined into CE [42,43] ### Cost equations --> "Loop" of g1/5 * CEs [41,43] --> Loop 25 * CEs [40] --> Loop 26 * CEs [39,42] --> Loop 27 ### Ranking functions of CR g1(V1,V,V3,V7,Out) #### Partial ranking functions of CR g1(V1,V,V3,V7,Out) ### Specialization of cost equations g2/5 * CE 21 is refined into CE [44] * CE 19 is refined into CE [45,46] * CE 20 is refined into CE [47,48] ### Cost equations --> "Loop" of g2/5 * CEs [46,48] --> Loop 28 * CEs [45] --> Loop 29 * CEs [44,47] --> Loop 30 ### Ranking functions of CR g2(V1,V,V3,V7,Out) #### Partial ranking functions of CR g2(V1,V,V3,V7,Out) ### Specialization of cost equations f/6 * CE 15 is refined into CE [49] * CE 11 is refined into CE [50,51] * CE 12 is refined into CE [52,53] * CE 14 is refined into CE [54,55] * CE 13 is refined into CE [56,57] ### Cost equations --> "Loop" of f/6 * CEs [50] --> Loop 31 * CEs [52] --> Loop 32 * CEs [54] --> Loop 33 * CEs [49,56] --> Loop 34 * CEs [51,53,55,57] --> Loop 35 ### Ranking functions of CR f(V1,V,V3,V7,V4,Out) #### Partial ranking functions of CR f(V1,V,V3,V7,V4,Out) ### Specialization of cost equations encArg/2 * CE 24 is refined into CE [58] * CE 28 is refined into CE [59,60] * CE 26 is refined into CE [61,62] * CE 27 is refined into CE [63,64] * CE 25 is refined into CE [65,66,67,68] ### Cost equations --> "Loop" of encArg/2 * CEs [65] --> Loop 36 * CEs [68] --> Loop 37 * CEs [66,67] --> Loop 38 * CEs [62,64] --> Loop 39 * CEs [61,63] --> Loop 40 * CEs [60] --> Loop 41 * CEs [59] --> Loop 42 * CEs [58] --> Loop 43 ### Ranking functions of CR encArg(V1,Out) * RF of phase [36,37,38,39,40,41,42]: [V1] #### Partial ranking functions of CR encArg(V1,Out) * Partial RF of phase [36,37,38,39,40,41,42]: - RF of loop [36:1,36:2,36:3,36:4,36:5,37:1,37:2,37:3,37:4,37:5,38:1,38:2,38:3,38:4,38:5,39:1,39:2,39:3,39:4,40:1,40:2,40:3,40:4,41:1,41:2,42:1,42:2]: V1 ### Specialization of cost equations fun/6 * CE 29 is refined into CE [69,70,71,72] * CE 30 is refined into CE [73] ### Cost equations --> "Loop" of fun/6 * CEs [69,70,71,72,73] --> Loop 44 ### Ranking functions of CR fun(V1,V,V3,V7,V4,Out) #### Partial ranking functions of CR fun(V1,V,V3,V7,V4,Out) ### Specialization of cost equations fun2/5 * CE 31 is refined into CE [74,75] * CE 32 is refined into CE [76] ### Cost equations --> "Loop" of fun2/5 * CEs [74,75,76] --> Loop 45 ### Ranking functions of CR fun2(V1,V,V3,V7,Out) #### Partial ranking functions of CR fun2(V1,V,V3,V7,Out) ### Specialization of cost equations fun3/5 * CE 33 is refined into CE [77,78] * CE 34 is refined into CE [79] ### Cost equations --> "Loop" of fun3/5 * CEs [77,78,79] --> Loop 46 ### Ranking functions of CR fun3(V1,V,V3,V7,Out) #### Partial ranking functions of CR fun3(V1,V,V3,V7,Out) ### Specialization of cost equations fun4/3 * CE 35 is refined into CE [80,81] * CE 36 is refined into CE [82] ### Cost equations --> "Loop" of fun4/3 * CEs [80,81,82] --> Loop 47 ### Ranking functions of CR fun4(V1,V,Out) #### Partial ranking functions of CR fun4(V1,V,Out) ### Specialization of cost equations start/5 * CE 1 is refined into CE [83,84,85,86] * CE 2 is refined into CE [87,88] * CE 3 is refined into CE [89,90] * CE 4 is refined into CE [91,92] * CE 5 is refined into CE [93] * CE 6 is refined into CE [94] * CE 7 is refined into CE [95] * CE 8 is refined into CE [96] * CE 9 is refined into CE [97] * CE 10 is refined into CE [98] ### Cost equations --> "Loop" of start/5 * CEs [83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98] --> Loop 48 ### Ranking functions of CR start(V1,V,V3,V7,V4) #### Partial ranking functions of CR start(V1,V,V3,V7,V4) Computing Bounds ===================================== #### Cost of chains of h(V1,V,Out): * Chain [24]: 0 with precondition: [Out=0,V1>=0,V>=0] * Chain [23]: 1 with precondition: [V1=V,V1=Out,V1>=0] #### Cost of chains of g1(V1,V,V3,V7,Out): * Chain [27]: 1 with precondition: [Out=0,V1>=0,V>=0,V3>=0,V7>=0] * Chain [26]: 1 with precondition: [V7=0,Out=0,V=V3,V1>=0,V>=0] * Chain [25]: 2 with precondition: [V7=0,V1=V,V1=V3,V1=Out,V1>=0] #### Cost of chains of g2(V1,V,V3,V7,Out): * Chain [30]: 1 with precondition: [Out=0,V1>=0,V>=0,V3>=0,V7>=0] * Chain [29]: 1 with precondition: [V7=0,Out=0,V=V3,V1>=0,V>=0] * Chain [28]: 2 with precondition: [V7=0,V1=V,V1=V3,V1=Out,V1>=0] #### Cost of chains of f(V1,V,V3,V7,V4,Out): * Chain [35]: 3 with precondition: [V3=0,V7=0,V4=0,V1=V,V1=Out,V1>=0] * Chain [34]: 2 with precondition: [Out=0,V1>=0,V>=0,V3>=0,V7>=0,V4>=0] * Chain [33]: 2 with precondition: [V3=0,Out=0,V7=V4,V1>=0,V>=0,V7>=0] * Chain [32]: 2 with precondition: [V7=0,V4=0,Out=0,V1>=0,V>=0,V3>=0] * Chain [31]: 2 with precondition: [V4=0,Out=0,V3=V7,V1>=0,V>=0,V3>=0] #### Cost of chains of encArg(V1,Out): * Chain [43]: 0 with precondition: [Out=0,V1>=0] * Chain [multiple([36,37,38,39,40,41,42],[[43]])]: 11*it(36)+0 Such that:aux(1) =< V1 it(36) =< aux(1) with precondition: [Out=0,V1>=1] #### Cost of chains of fun(V1,V,V3,V7,V4,Out): * Chain [44]: 44*s(4)+44*s(6)+44*s(8)+44*s(10)+44*s(12)+3 Such that:aux(2) =< V1 aux(3) =< V aux(4) =< V3 aux(5) =< V7 aux(6) =< V4 s(12) =< aux(6) s(10) =< aux(5) s(8) =< aux(4) s(6) =< aux(3) s(4) =< aux(2) with precondition: [Out=0,V1>=0,V>=0,V3>=0,V7>=0,V4>=0] #### Cost of chains of fun2(V1,V,V3,V7,Out): * Chain [45]: 22*s(44)+22*s(46)+22*s(48)+22*s(50)+2 Such that:aux(7) =< V1 aux(8) =< V aux(9) =< V3 aux(10) =< V7 s(50) =< aux(10) s(48) =< aux(9) s(46) =< aux(8) s(44) =< aux(7) with precondition: [Out=0,V1>=0,V>=0,V3>=0,V7>=0] #### Cost of chains of fun3(V1,V,V3,V7,Out): * Chain [46]: 22*s(60)+22*s(62)+22*s(64)+22*s(66)+2 Such that:aux(11) =< V1 aux(12) =< V aux(13) =< V3 aux(14) =< V7 s(66) =< aux(14) s(64) =< aux(13) s(62) =< aux(12) s(60) =< aux(11) with precondition: [Out=0,V1>=0,V>=0,V3>=0,V7>=0] #### Cost of chains of fun4(V1,V,Out): * Chain [47]: 22*s(76)+22*s(78)+1 Such that:aux(15) =< V1 aux(16) =< V s(78) =< aux(16) s(76) =< aux(15) with precondition: [Out=0,V1>=0,V>=0] #### Cost of chains of start(V1,V,V3,V7,V4): * Chain [48]: 121*s(84)+44*s(90)+88*s(91)+88*s(92)+110*s(93)+3 Such that:s(89) =< V4 aux(17) =< V1 aux(18) =< V aux(19) =< V3 aux(20) =< V7 s(84) =< aux(17) s(90) =< s(89) s(91) =< aux(20) s(92) =< aux(19) s(93) =< aux(18) with precondition: [] Closed-form bounds of start(V1,V,V3,V7,V4): ------------------------------------- * Chain [48] with precondition: [] - Upper bound: nat(V1)*121+3+nat(V)*110+nat(V3)*88+nat(V7)*88+nat(V4)*44 - Complexity: n ### Maximum cost of start(V1,V,V3,V7,V4): nat(V1)*121+3+nat(V)*110+nat(V3)*88+nat(V7)*88+nat(V4)*44 Asymptotic class: n * Total analysis performed in 687 ms. ---------------------------------------- (14) BOUNDS(1, n^1) ---------------------------------------- (15) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (16) 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: f(x, y, w, w, a) -> g1(x, x, y, w) f(x, y, w, a, a) -> g1(y, x, x, w) f(x, y, a, a, w) -> g2(x, y, y, w) f(x, y, a, w, w) -> g2(y, y, x, w) g1(x, x, y, a) -> h(x, y) g1(y, x, x, a) -> h(x, y) g2(x, y, y, a) -> h(x, y) g2(y, y, x, a) -> h(x, y) h(x, x) -> x The (relative) TRS S consists of the following rules: encArg(a) -> a encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encode_a -> a encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) Rewrite Strategy: INNERMOST ---------------------------------------- (17) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (18) Obligation: Innermost TRS: Rules: f(x, y, w, w, a) -> g1(x, x, y, w) f(x, y, w, a, a) -> g1(y, x, x, w) f(x, y, a, a, w) -> g2(x, y, y, w) f(x, y, a, w, w) -> g2(y, y, x, w) g1(x, x, y, a) -> h(x, y) g1(y, x, x, a) -> h(x, y) g2(x, y, y, a) -> h(x, y) g2(y, y, x, a) -> h(x, y) h(x, x) -> x encArg(a) -> a encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encode_a -> a encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) Types: f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h a :: a:cons_f:cons_g1:cons_g2:cons_h g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encArg :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_a :: a:cons_f:cons_g1:cons_g2:cons_h encode_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h hole_a:cons_f:cons_g1:cons_g2:cons_h1_0 :: a:cons_f:cons_g1:cons_g2:cons_h gen_a:cons_f:cons_g1:cons_g2:cons_h2_0 :: Nat -> a:cons_f:cons_g1:cons_g2:cons_h ---------------------------------------- (19) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: encArg ---------------------------------------- (20) Obligation: Innermost TRS: Rules: f(x, y, w, w, a) -> g1(x, x, y, w) f(x, y, w, a, a) -> g1(y, x, x, w) f(x, y, a, a, w) -> g2(x, y, y, w) f(x, y, a, w, w) -> g2(y, y, x, w) g1(x, x, y, a) -> h(x, y) g1(y, x, x, a) -> h(x, y) g2(x, y, y, a) -> h(x, y) g2(y, y, x, a) -> h(x, y) h(x, x) -> x encArg(a) -> a encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encode_a -> a encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) Types: f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h a :: a:cons_f:cons_g1:cons_g2:cons_h g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encArg :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_a :: a:cons_f:cons_g1:cons_g2:cons_h encode_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h hole_a:cons_f:cons_g1:cons_g2:cons_h1_0 :: a:cons_f:cons_g1:cons_g2:cons_h gen_a:cons_f:cons_g1:cons_g2:cons_h2_0 :: Nat -> a:cons_f:cons_g1:cons_g2:cons_h Generator Equations: gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(0) <=> a gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(+(x, 1)) <=> cons_f(a, a, a, a, gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(x)) The following defined symbols remain to be analysed: encArg ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(n4_0)) -> gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(0), rt in Omega(n4_0) Induction Base: encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(0)) ->_R^Omega(0) a Induction Step: encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(+(n4_0, 1))) ->_R^Omega(0) f(encArg(a), encArg(a), encArg(a), encArg(a), encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(n4_0))) ->_R^Omega(0) f(a, encArg(a), encArg(a), encArg(a), encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(n4_0))) ->_R^Omega(0) f(a, a, encArg(a), encArg(a), encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(n4_0))) ->_R^Omega(0) f(a, a, a, encArg(a), encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(n4_0))) ->_R^Omega(0) f(a, a, a, a, encArg(gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(n4_0))) ->_IH f(a, a, a, a, gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(0)) ->_R^Omega(1) g1(a, a, a, a) ->_R^Omega(1) h(a, a) ->_R^Omega(1) a We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (22) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: f(x, y, w, w, a) -> g1(x, x, y, w) f(x, y, w, a, a) -> g1(y, x, x, w) f(x, y, a, a, w) -> g2(x, y, y, w) f(x, y, a, w, w) -> g2(y, y, x, w) g1(x, x, y, a) -> h(x, y) g1(y, x, x, a) -> h(x, y) g2(x, y, y, a) -> h(x, y) g2(y, y, x, a) -> h(x, y) h(x, x) -> x encArg(a) -> a encArg(cons_f(x_1, x_2, x_3, x_4, x_5)) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encArg(cons_g1(x_1, x_2, x_3, x_4)) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_g2(x_1, x_2, x_3, x_4)) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encArg(cons_h(x_1, x_2)) -> h(encArg(x_1), encArg(x_2)) encode_f(x_1, x_2, x_3, x_4, x_5) -> f(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4), encArg(x_5)) encode_a -> a encode_g1(x_1, x_2, x_3, x_4) -> g1(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_g2(x_1, x_2, x_3, x_4) -> g2(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_h(x_1, x_2) -> h(encArg(x_1), encArg(x_2)) Types: f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h a :: a:cons_f:cons_g1:cons_g2:cons_h g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encArg :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h cons_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_f :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_a :: a:cons_f:cons_g1:cons_g2:cons_h encode_g1 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_g2 :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h encode_h :: a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h -> a:cons_f:cons_g1:cons_g2:cons_h hole_a:cons_f:cons_g1:cons_g2:cons_h1_0 :: a:cons_f:cons_g1:cons_g2:cons_h gen_a:cons_f:cons_g1:cons_g2:cons_h2_0 :: Nat -> a:cons_f:cons_g1:cons_g2:cons_h Generator Equations: gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(0) <=> a gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(+(x, 1)) <=> cons_f(a, a, a, a, gen_a:cons_f:cons_g1:cons_g2:cons_h2_0(x)) The following defined symbols remain to be analysed: encArg ---------------------------------------- (23) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (24) BOUNDS(n^1, INF)