MAYBE proof of input_9nvGC7Jgbc.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CdtProblem (5) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxRelTRS (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (10) typed CpxTrs (11) OrderProof [LOWER BOUND(ID), 4 ms] (12) typed CpxTrs (13) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (14) TRS for Loop Detection (15) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (16) CpxTRS (17) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (18) CdtProblem (19) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (20) CdtProblem (21) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CdtProblem (23) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRelTRS (25) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (26) CpxTRS (27) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (28) CpxWeightedTrs (29) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CpxTypedWeightedTrs (31) CompletionProof [UPPER BOUND(ID), 0 ms] (32) CpxTypedWeightedCompleteTrs (33) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CpxTypedWeightedCompleteTrs (35) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (36) CpxRNTS (37) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CpxRNTS (39) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CpxRNTS (41) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 1391 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 575 ms] (46) CpxRNTS (47) CompletionProof [UPPER BOUND(ID), 0 ms] (48) CpxTypedWeightedCompleteTrs (49) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (50) CpxRNTS (51) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 59 ms] (52) CdtProblem (53) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CdtProblem (57) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CdtProblem (59) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (62) CpxWeightedTrs (63) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CpxTypedWeightedTrs (65) CompletionProof [UPPER BOUND(ID), 0 ms] (66) CpxTypedWeightedCompleteTrs (67) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CpxTypedWeightedCompleteTrs (69) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (70) CpxRNTS (71) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CpxRNTS (73) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (74) CpxRNTS (75) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 58 ms] (78) CpxRNTS (79) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] (80) CpxRNTS (81) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 1373 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 686 ms] (86) CpxRNTS (87) CompletionProof [UPPER BOUND(ID), 0 ms] (88) CpxTypedWeightedCompleteTrs (89) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (90) CpxRNTS ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) eql(Nil) -> Nil eql(Cons(x, xs)) -> eql(Cons(x, xs)) number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(x) -> nesteql(x) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) eql(Nil) -> Nil eql(Cons(x, xs)) -> eql(Cons(x, xs)) number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(x) -> nesteql(x) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Tuples: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) S tuples: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) K tuples:none Defined Rule Symbols: nesteql_1, eql_1, number17_1, goal_1 Defined Pair Symbols: NESTEQL_1, EQL_1, NUMBER17_1, GOAL_1 Compound Symbols: c, c1_2, c2, c3_1, c4, c5_1 ---------------------------------------- (5) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) The (relative) TRS S consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) The (relative) TRS S consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Rewrite Strategy: INNERMOST ---------------------------------------- (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (10) Obligation: Innermost TRS: Rules: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Types: NESTEQL :: Nil:Cons -> c:c1 Nil :: Nil:Cons c :: c:c1 Cons :: Nil:Cons -> Nil:Cons -> Nil:Cons c1 :: c:c1 -> c2:c3 -> c:c1 eql :: Nil:Cons -> Nil:Cons EQL :: Nil:Cons -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 -> c2:c3 NUMBER17 :: a -> c4 c4 :: c4 GOAL :: Nil:Cons -> c5 c5 :: c:c1 -> c5 nesteql :: Nil:Cons -> Nil:Cons number17 :: b -> Nil:Cons goal :: Nil:Cons -> Nil:Cons hole_c:c11_6 :: c:c1 hole_Nil:Cons2_6 :: Nil:Cons hole_c2:c33_6 :: c2:c3 hole_c44_6 :: c4 hole_a5_6 :: a hole_c56_6 :: c5 hole_b7_6 :: b gen_c:c18_6 :: Nat -> c:c1 gen_Nil:Cons9_6 :: Nat -> Nil:Cons gen_c2:c310_6 :: Nat -> c2:c3 ---------------------------------------- (11) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: NESTEQL, eql, EQL, nesteql They will be analysed ascendingly in the following order: eql < NESTEQL EQL < NESTEQL eql < nesteql ---------------------------------------- (12) Obligation: Innermost TRS: Rules: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Types: NESTEQL :: Nil:Cons -> c:c1 Nil :: Nil:Cons c :: c:c1 Cons :: Nil:Cons -> Nil:Cons -> Nil:Cons c1 :: c:c1 -> c2:c3 -> c:c1 eql :: Nil:Cons -> Nil:Cons EQL :: Nil:Cons -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 -> c2:c3 NUMBER17 :: a -> c4 c4 :: c4 GOAL :: Nil:Cons -> c5 c5 :: c:c1 -> c5 nesteql :: Nil:Cons -> Nil:Cons number17 :: b -> Nil:Cons goal :: Nil:Cons -> Nil:Cons hole_c:c11_6 :: c:c1 hole_Nil:Cons2_6 :: Nil:Cons hole_c2:c33_6 :: c2:c3 hole_c44_6 :: c4 hole_a5_6 :: a hole_c56_6 :: c5 hole_b7_6 :: b gen_c:c18_6 :: Nat -> c:c1 gen_Nil:Cons9_6 :: Nat -> Nil:Cons gen_c2:c310_6 :: Nat -> c2:c3 Generator Equations: gen_c:c18_6(0) <=> c gen_c:c18_6(+(x, 1)) <=> c1(gen_c:c18_6(x), c2) gen_Nil:Cons9_6(0) <=> Nil gen_Nil:Cons9_6(+(x, 1)) <=> Cons(Nil, gen_Nil:Cons9_6(x)) gen_c2:c310_6(0) <=> c2 gen_c2:c310_6(+(x, 1)) <=> c3(gen_c2:c310_6(x)) The following defined symbols remain to be analysed: eql, NESTEQL, EQL, nesteql They will be analysed ascendingly in the following order: eql < NESTEQL EQL < NESTEQL eql < nesteql ---------------------------------------- (13) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (14) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) The (relative) TRS S consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Rewrite Strategy: INNERMOST ---------------------------------------- (15) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (16) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) eql(Nil) -> Nil eql(Cons(x, xs)) -> eql(Cons(x, xs)) number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(x) -> nesteql(x) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (17) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Tuples: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) S tuples: NESTEQL(Nil) -> c NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Nil) -> c2 EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NUMBER17(z0) -> c4 GOAL(z0) -> c5(NESTEQL(z0)) K tuples:none Defined Rule Symbols: nesteql_1, eql_1, number17_1, goal_1 Defined Pair Symbols: NESTEQL_1, EQL_1, NUMBER17_1, GOAL_1 Compound Symbols: c, c1_2, c2, c3_1, c4, c5_1 ---------------------------------------- (19) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: GOAL(z0) -> c5(NESTEQL(z0)) Removed 3 trailing nodes: NESTEQL(Nil) -> c NUMBER17(z0) -> c4 EQL(Nil) -> c2 ---------------------------------------- (20) Obligation: Complexity Dependency Tuples Problem Rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) Tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) S tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) K tuples:none Defined Rule Symbols: nesteql_1, eql_1, number17_1, goal_1 Defined Pair Symbols: NESTEQL_1, EQL_1 Compound Symbols: c1_2, c3_1 ---------------------------------------- (21) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) nesteql(Cons(z0, z1)) -> nesteql(eql(Cons(z0, z1))) eql(Nil) -> Nil number17(z0) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) goal(z0) -> nesteql(z0) ---------------------------------------- (22) Obligation: Complexity Dependency Tuples Problem Rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) Tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) S tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) K tuples:none Defined Rule Symbols: eql_1 Defined Pair Symbols: NESTEQL_1, EQL_1 Compound Symbols: c1_2, c3_1 ---------------------------------------- (23) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (24) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) The (relative) TRS S consists of the following rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (25) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (26) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (27) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (28) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) [1] EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) [1] eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (29) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (30) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) [1] EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) [1] eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) [0] The TRS has the following type information: NESTEQL :: Cons -> c1 Cons :: a -> b -> Cons c1 :: c1 -> c3 -> c1 eql :: Cons -> Cons EQL :: Cons -> c3 c3 :: c3 -> c3 Rewrite Strategy: INNERMOST ---------------------------------------- (31) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: NESTEQL_1 EQL_1 (c) The following functions are completely defined: eql_1 Due to the following rules being added: eql(v0) -> const1 [0] And the following fresh constants: const1, const, const2, const3, const4 ---------------------------------------- (32) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) [1] EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) [1] eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) [0] eql(v0) -> const1 [0] The TRS has the following type information: NESTEQL :: Cons:const1 -> c1 Cons :: a -> b -> Cons:const1 c1 :: c1 -> c3 -> c1 eql :: Cons:const1 -> Cons:const1 EQL :: Cons:const1 -> c3 c3 :: c3 -> c3 const1 :: Cons:const1 const :: c1 const2 :: a const3 :: b const4 :: c3 Rewrite Strategy: INNERMOST ---------------------------------------- (33) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (34) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) [1] NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(const1), EQL(Cons(z0, z1))) [1] EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) [1] eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) [0] eql(v0) -> const1 [0] The TRS has the following type information: NESTEQL :: Cons:const1 -> c1 Cons :: a -> b -> Cons:const1 c1 :: c1 -> c3 -> c1 eql :: Cons:const1 -> Cons:const1 EQL :: Cons:const1 -> c3 c3 :: c3 -> c3 const1 :: Cons:const1 const :: c1 const2 :: a const3 :: b const4 :: c3 Rewrite Strategy: INNERMOST ---------------------------------------- (35) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: const1 => 0 const => 0 const2 => 0 const3 => 0 const4 => 0 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: EQL(z) -{ 1 }-> 1 + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(eql(1 + z0 + z1)) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(0) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> eql(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (37) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: EQL(z) -{ 1 }-> 1 + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(eql(1 + z0 + z1)) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(0) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> eql(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> 0 :|: z >= 0 ---------------------------------------- (39) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { EQL } { eql } { NESTEQL } ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: EQL(z) -{ 1 }-> 1 + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(eql(1 + z0 + z1)) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(0) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> eql(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {EQL}, {eql}, {NESTEQL} ---------------------------------------- (41) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: EQL(z) -{ 1 }-> 1 + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(eql(1 + z0 + z1)) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(0) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> eql(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {EQL}, {eql}, {NESTEQL} ---------------------------------------- (43) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: EQL after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: EQL(z) -{ 1 }-> 1 + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(eql(1 + z0 + z1)) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(0) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> eql(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {EQL}, {eql}, {NESTEQL} Previous analysis results are: EQL: runtime: ?, size: O(1) [0] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: EQL after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: EQL(z) -{ 1 }-> 1 + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(eql(1 + z0 + z1)) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(0) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> eql(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {EQL}, {eql}, {NESTEQL} Previous analysis results are: EQL: runtime: INF, size: O(1) [0] ---------------------------------------- (47) 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: eql(v0) -> null_eql [0] NESTEQL(v0) -> null_NESTEQL [0] EQL(v0) -> null_EQL [0] And the following fresh constants: null_eql, null_NESTEQL, null_EQL, const, const1 ---------------------------------------- (48) 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: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) [1] EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) [1] eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) [0] eql(v0) -> null_eql [0] NESTEQL(v0) -> null_NESTEQL [0] EQL(v0) -> null_EQL [0] The TRS has the following type information: NESTEQL :: Cons:null_eql -> c1:null_NESTEQL Cons :: a -> b -> Cons:null_eql c1 :: c1:null_NESTEQL -> c3:null_EQL -> c1:null_NESTEQL eql :: Cons:null_eql -> Cons:null_eql EQL :: Cons:null_eql -> c3:null_EQL c3 :: c3:null_EQL -> c3:null_EQL null_eql :: Cons:null_eql null_NESTEQL :: c1:null_NESTEQL null_EQL :: c3:null_EQL const :: a const1 :: b Rewrite Strategy: INNERMOST ---------------------------------------- (49) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: null_eql => 0 null_NESTEQL => 0 null_EQL => 0 const => 0 const1 => 0 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: EQL(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 EQL(z) -{ 1 }-> 1 + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 NESTEQL(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 NESTEQL(z) -{ 1 }-> 1 + NESTEQL(eql(1 + z0 + z1)) + EQL(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> eql(1 + z0 + z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eql(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (51) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) We considered the (Usable) Rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) And the Tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) The order we found is given by the following interpretation: Polynomial interpretation : POL(Cons(x_1, x_2)) = [2] POL(EQL(x_1)) = 0 POL(NESTEQL(x_1)) = [2]x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c3(x_1)) = x_1 POL(eql(x_1)) = 0 ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) Tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) S tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) K tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) Defined Rule Symbols: eql_1 Defined Pair Symbols: NESTEQL_1, EQL_1 Compound Symbols: c1_2, c3_1 ---------------------------------------- (53) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) by NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) Tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) S tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) K tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) Defined Rule Symbols: eql_1 Defined Pair Symbols: EQL_1, NESTEQL_1 Compound Symbols: c3_1, c1_2 ---------------------------------------- (55) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) by NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) Tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) S tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) K tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) Defined Rule Symbols: eql_1 Defined Pair Symbols: EQL_1, NESTEQL_1 Compound Symbols: c3_1, c1_2 ---------------------------------------- (57) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) by NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) Tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) S tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) K tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) Defined Rule Symbols: eql_1 Defined Pair Symbols: EQL_1, NESTEQL_1 Compound Symbols: c3_1, c1_2 ---------------------------------------- (59) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) by NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: eql(Cons(z0, z1)) -> eql(Cons(z0, z1)) Tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) S tuples: EQL(Cons(z0, z1)) -> c3(EQL(Cons(z0, z1))) K tuples: NESTEQL(Cons(z0, z1)) -> c1(NESTEQL(eql(Cons(z0, z1))), EQL(Cons(z0, z1))) Defined Rule Symbols: eql_1 Defined Pair Symbols: EQL_1, NESTEQL_1 Compound Symbols: c3_1, c1_2 ---------------------------------------- (61) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (62) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) [1] eql(Nil) -> Nil [1] eql(Cons(x, xs)) -> eql(Cons(x, xs)) [1] number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] goal(x) -> nesteql(x) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (63) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (64) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) [1] eql(Nil) -> Nil [1] eql(Cons(x, xs)) -> eql(Cons(x, xs)) [1] number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] goal(x) -> nesteql(x) [1] The TRS has the following type information: nesteql :: Nil:Cons -> Nil:Cons Nil :: Nil:Cons Cons :: Nil:Cons -> Nil:Cons -> Nil:Cons eql :: Nil:Cons -> Nil:Cons number17 :: a -> Nil:Cons goal :: Nil:Cons -> Nil:Cons Rewrite Strategy: INNERMOST ---------------------------------------- (65) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: nesteql_1 number17_1 goal_1 (c) The following functions are completely defined: eql_1 Due to the following rules being added: none And the following fresh constants: const ---------------------------------------- (66) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) [1] eql(Nil) -> Nil [1] eql(Cons(x, xs)) -> eql(Cons(x, xs)) [1] number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] goal(x) -> nesteql(x) [1] The TRS has the following type information: nesteql :: Nil:Cons -> Nil:Cons Nil :: Nil:Cons Cons :: Nil:Cons -> Nil:Cons -> Nil:Cons eql :: Nil:Cons -> Nil:Cons number17 :: a -> Nil:Cons goal :: Nil:Cons -> Nil:Cons const :: a Rewrite Strategy: INNERMOST ---------------------------------------- (67) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (68) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) [2] eql(Nil) -> Nil [1] eql(Cons(x, xs)) -> eql(Cons(x, xs)) [1] number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] goal(x) -> nesteql(x) [1] The TRS has the following type information: nesteql :: Nil:Cons -> Nil:Cons Nil :: Nil:Cons Cons :: Nil:Cons -> Nil:Cons -> Nil:Cons eql :: Nil:Cons -> Nil:Cons number17 :: a -> Nil:Cons goal :: Nil:Cons -> Nil:Cons const :: a Rewrite Strategy: INNERMOST ---------------------------------------- (69) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: Nil => 0 const => 0 ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(x) :|: x >= 0, z = x nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: n >= 0, z = n ---------------------------------------- (71) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 ---------------------------------------- (73) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { number17 } { eql } { nesteql } { goal } ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 Function symbols to be analyzed: {number17}, {eql}, {nesteql}, {goal} ---------------------------------------- (75) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 Function symbols to be analyzed: {number17}, {eql}, {nesteql}, {goal} ---------------------------------------- (77) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: number17 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 17 ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 Function symbols to be analyzed: {number17}, {eql}, {nesteql}, {goal} Previous analysis results are: number17: runtime: ?, size: O(1) [17] ---------------------------------------- (79) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: number17 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 Function symbols to be analyzed: {eql}, {nesteql}, {goal} Previous analysis results are: number17: runtime: O(1) [1], size: O(1) [17] ---------------------------------------- (81) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 Function symbols to be analyzed: {eql}, {nesteql}, {goal} Previous analysis results are: number17: runtime: O(1) [1], size: O(1) [17] ---------------------------------------- (83) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: eql after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 Function symbols to be analyzed: {eql}, {nesteql}, {goal} Previous analysis results are: number17: runtime: O(1) [1], size: O(1) [17] eql: runtime: ?, size: O(1) [0] ---------------------------------------- (85) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: eql after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(z) :|: z >= 0 nesteql(z) -{ 2 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z >= 0 Function symbols to be analyzed: {eql}, {nesteql}, {goal} Previous analysis results are: number17: runtime: O(1) [1], size: O(1) [17] eql: runtime: INF, size: O(1) [0] ---------------------------------------- (87) 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: none And the following fresh constants: const ---------------------------------------- (88) 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: nesteql(Nil) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] nesteql(Cons(x, xs)) -> nesteql(eql(Cons(x, xs))) [1] eql(Nil) -> Nil [1] eql(Cons(x, xs)) -> eql(Cons(x, xs)) [1] number17(n) -> Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Cons(Nil, Nil))))))))))))))))) [1] goal(x) -> nesteql(x) [1] The TRS has the following type information: nesteql :: Nil:Cons -> Nil:Cons Nil :: Nil:Cons Cons :: Nil:Cons -> Nil:Cons -> Nil:Cons eql :: Nil:Cons -> Nil:Cons number17 :: a -> Nil:Cons goal :: Nil:Cons -> Nil:Cons const :: a Rewrite Strategy: INNERMOST ---------------------------------------- (89) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: Nil => 0 const => 0 ---------------------------------------- (90) Obligation: Complexity RNTS consisting of the following rules: eql(z) -{ 1 }-> eql(1 + x + xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 eql(z) -{ 1 }-> 0 :|: z = 0 goal(z) -{ 1 }-> nesteql(x) :|: x >= 0, z = x nesteql(z) -{ 1 }-> nesteql(eql(1 + x + xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 nesteql(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: z = 0 number17(z) -{ 1 }-> 1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + (1 + 0 + 0)))))))))))))))) :|: n >= 0, z = n Only complete derivations are relevant for the runtime complexity.