WORST_CASE(Omega(n^1),?) proof of input_YSEKERbVYQ.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). (0) CpxTRS (1) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CdtProblem (3) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) typed CpxTrs (9) OrderProof [LOWER BOUND(ID), 0 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 388 ms] (12) BEST (13) proven lower bound (14) LowerBoundPropagationProof [FINISHED, 0 ms] (15) BOUNDS(n^1, INF) (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 101 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 76 ms] (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 79 ms] (22) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: lt(x, 0) -> false lt(0, s(y)) -> true lt(s(x), s(y)) -> lt(x, y) plus(x, 0) -> x plus(x, s(y)) -> s(plus(x, y)) quot(x, s(y)) -> help(x, s(y), 0) help(x, s(y), c) -> if(lt(c, x), x, s(y), c) if(true, x, s(y), c) -> s(help(x, s(y), plus(c, s(y)))) if(false, x, s(y), c) -> 0 S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: lt(z0, 0) -> false lt(0, s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0) help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0 Tuples: LT(z0, 0) -> c LT(0, s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0) -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0)) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 S tuples: LT(z0, 0) -> c LT(0, s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0) -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0)) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 K tuples:none Defined Rule Symbols: lt_2, plus_2, quot_2, help_3, if_4 Defined Pair Symbols: LT_2, PLUS_2, QUOT_2, HELP_3, IF_4 Compound Symbols: c, c1, c2_1, c3, c4_1, c5_1, c6_2, c7_2, c8 ---------------------------------------- (3) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (4) 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: LT(z0, 0) -> c LT(0, s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0) -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0)) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 The (relative) TRS S consists of the following rules: lt(z0, 0) -> false lt(0, s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0) help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0 Rewrite Strategy: INNERMOST ---------------------------------------- (5) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (6) 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: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 The (relative) TRS S consists of the following rules: lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Types: LT :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 s :: 0':s -> 0':s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 QUOT :: 0':s -> 0':s -> c5 c5 :: c6 -> c5 HELP :: 0':s -> 0':s -> 0':s -> c6 c6 :: c7:c8 -> c:c1:c2 -> c6 IF :: true:false -> 0':s -> 0':s -> 0':s -> c7:c8 lt :: 0':s -> 0':s -> true:false true :: true:false c7 :: c6 -> c3:c4 -> c7:c8 plus :: 0':s -> 0':s -> 0':s false :: true:false c8 :: c7:c8 quot :: 0':s -> 0':s -> 0':s help :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_9 :: c:c1:c2 hole_0':s2_9 :: 0':s hole_c3:c43_9 :: c3:c4 hole_c54_9 :: c5 hole_c65_9 :: c6 hole_c7:c86_9 :: c7:c8 hole_true:false7_9 :: true:false gen_c:c1:c28_9 :: Nat -> c:c1:c2 gen_0':s9_9 :: Nat -> 0':s gen_c3:c410_9 :: Nat -> c3:c4 ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: LT, PLUS, HELP, lt, plus, help They will be analysed ascendingly in the following order: LT < HELP PLUS < HELP lt < HELP plus < HELP lt < help plus < help ---------------------------------------- (10) Obligation: Innermost TRS: Rules: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Types: LT :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 s :: 0':s -> 0':s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 QUOT :: 0':s -> 0':s -> c5 c5 :: c6 -> c5 HELP :: 0':s -> 0':s -> 0':s -> c6 c6 :: c7:c8 -> c:c1:c2 -> c6 IF :: true:false -> 0':s -> 0':s -> 0':s -> c7:c8 lt :: 0':s -> 0':s -> true:false true :: true:false c7 :: c6 -> c3:c4 -> c7:c8 plus :: 0':s -> 0':s -> 0':s false :: true:false c8 :: c7:c8 quot :: 0':s -> 0':s -> 0':s help :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_9 :: c:c1:c2 hole_0':s2_9 :: 0':s hole_c3:c43_9 :: c3:c4 hole_c54_9 :: c5 hole_c65_9 :: c6 hole_c7:c86_9 :: c7:c8 hole_true:false7_9 :: true:false gen_c:c1:c28_9 :: Nat -> c:c1:c2 gen_0':s9_9 :: Nat -> 0':s gen_c3:c410_9 :: Nat -> c3:c4 Generator Equations: gen_c:c1:c28_9(0) <=> c gen_c:c1:c28_9(+(x, 1)) <=> c2(gen_c:c1:c28_9(x)) gen_0':s9_9(0) <=> 0' gen_0':s9_9(+(x, 1)) <=> s(gen_0':s9_9(x)) gen_c3:c410_9(0) <=> c3 gen_c3:c410_9(+(x, 1)) <=> c4(gen_c3:c410_9(x)) The following defined symbols remain to be analysed: LT, PLUS, HELP, lt, plus, help They will be analysed ascendingly in the following order: LT < HELP PLUS < HELP lt < HELP plus < HELP lt < help plus < help ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: LT(gen_0':s9_9(n12_9), gen_0':s9_9(n12_9)) -> gen_c:c1:c28_9(n12_9), rt in Omega(1 + n12_9) Induction Base: LT(gen_0':s9_9(0), gen_0':s9_9(0)) ->_R^Omega(1) c Induction Step: LT(gen_0':s9_9(+(n12_9, 1)), gen_0':s9_9(+(n12_9, 1))) ->_R^Omega(1) c2(LT(gen_0':s9_9(n12_9), gen_0':s9_9(n12_9))) ->_IH c2(gen_c:c1:c28_9(c13_9)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (12) Complex Obligation (BEST) ---------------------------------------- (13) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Types: LT :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 s :: 0':s -> 0':s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 QUOT :: 0':s -> 0':s -> c5 c5 :: c6 -> c5 HELP :: 0':s -> 0':s -> 0':s -> c6 c6 :: c7:c8 -> c:c1:c2 -> c6 IF :: true:false -> 0':s -> 0':s -> 0':s -> c7:c8 lt :: 0':s -> 0':s -> true:false true :: true:false c7 :: c6 -> c3:c4 -> c7:c8 plus :: 0':s -> 0':s -> 0':s false :: true:false c8 :: c7:c8 quot :: 0':s -> 0':s -> 0':s help :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_9 :: c:c1:c2 hole_0':s2_9 :: 0':s hole_c3:c43_9 :: c3:c4 hole_c54_9 :: c5 hole_c65_9 :: c6 hole_c7:c86_9 :: c7:c8 hole_true:false7_9 :: true:false gen_c:c1:c28_9 :: Nat -> c:c1:c2 gen_0':s9_9 :: Nat -> 0':s gen_c3:c410_9 :: Nat -> c3:c4 Generator Equations: gen_c:c1:c28_9(0) <=> c gen_c:c1:c28_9(+(x, 1)) <=> c2(gen_c:c1:c28_9(x)) gen_0':s9_9(0) <=> 0' gen_0':s9_9(+(x, 1)) <=> s(gen_0':s9_9(x)) gen_c3:c410_9(0) <=> c3 gen_c3:c410_9(+(x, 1)) <=> c4(gen_c3:c410_9(x)) The following defined symbols remain to be analysed: LT, PLUS, HELP, lt, plus, help They will be analysed ascendingly in the following order: LT < HELP PLUS < HELP lt < HELP plus < HELP lt < help plus < help ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) Obligation: Innermost TRS: Rules: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Types: LT :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 s :: 0':s -> 0':s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 QUOT :: 0':s -> 0':s -> c5 c5 :: c6 -> c5 HELP :: 0':s -> 0':s -> 0':s -> c6 c6 :: c7:c8 -> c:c1:c2 -> c6 IF :: true:false -> 0':s -> 0':s -> 0':s -> c7:c8 lt :: 0':s -> 0':s -> true:false true :: true:false c7 :: c6 -> c3:c4 -> c7:c8 plus :: 0':s -> 0':s -> 0':s false :: true:false c8 :: c7:c8 quot :: 0':s -> 0':s -> 0':s help :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_9 :: c:c1:c2 hole_0':s2_9 :: 0':s hole_c3:c43_9 :: c3:c4 hole_c54_9 :: c5 hole_c65_9 :: c6 hole_c7:c86_9 :: c7:c8 hole_true:false7_9 :: true:false gen_c:c1:c28_9 :: Nat -> c:c1:c2 gen_0':s9_9 :: Nat -> 0':s gen_c3:c410_9 :: Nat -> c3:c4 Lemmas: LT(gen_0':s9_9(n12_9), gen_0':s9_9(n12_9)) -> gen_c:c1:c28_9(n12_9), rt in Omega(1 + n12_9) Generator Equations: gen_c:c1:c28_9(0) <=> c gen_c:c1:c28_9(+(x, 1)) <=> c2(gen_c:c1:c28_9(x)) gen_0':s9_9(0) <=> 0' gen_0':s9_9(+(x, 1)) <=> s(gen_0':s9_9(x)) gen_c3:c410_9(0) <=> c3 gen_c3:c410_9(+(x, 1)) <=> c4(gen_c3:c410_9(x)) The following defined symbols remain to be analysed: PLUS, HELP, lt, plus, help They will be analysed ascendingly in the following order: PLUS < HELP lt < HELP plus < HELP lt < help plus < help ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: PLUS(gen_0':s9_9(a), gen_0':s9_9(n569_9)) -> gen_c3:c410_9(n569_9), rt in Omega(1 + n569_9) Induction Base: PLUS(gen_0':s9_9(a), gen_0':s9_9(0)) ->_R^Omega(1) c3 Induction Step: PLUS(gen_0':s9_9(a), gen_0':s9_9(+(n569_9, 1))) ->_R^Omega(1) c4(PLUS(gen_0':s9_9(a), gen_0':s9_9(n569_9))) ->_IH c4(gen_c3:c410_9(c570_9)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (18) Obligation: Innermost TRS: Rules: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Types: LT :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 s :: 0':s -> 0':s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 QUOT :: 0':s -> 0':s -> c5 c5 :: c6 -> c5 HELP :: 0':s -> 0':s -> 0':s -> c6 c6 :: c7:c8 -> c:c1:c2 -> c6 IF :: true:false -> 0':s -> 0':s -> 0':s -> c7:c8 lt :: 0':s -> 0':s -> true:false true :: true:false c7 :: c6 -> c3:c4 -> c7:c8 plus :: 0':s -> 0':s -> 0':s false :: true:false c8 :: c7:c8 quot :: 0':s -> 0':s -> 0':s help :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_9 :: c:c1:c2 hole_0':s2_9 :: 0':s hole_c3:c43_9 :: c3:c4 hole_c54_9 :: c5 hole_c65_9 :: c6 hole_c7:c86_9 :: c7:c8 hole_true:false7_9 :: true:false gen_c:c1:c28_9 :: Nat -> c:c1:c2 gen_0':s9_9 :: Nat -> 0':s gen_c3:c410_9 :: Nat -> c3:c4 Lemmas: LT(gen_0':s9_9(n12_9), gen_0':s9_9(n12_9)) -> gen_c:c1:c28_9(n12_9), rt in Omega(1 + n12_9) PLUS(gen_0':s9_9(a), gen_0':s9_9(n569_9)) -> gen_c3:c410_9(n569_9), rt in Omega(1 + n569_9) Generator Equations: gen_c:c1:c28_9(0) <=> c gen_c:c1:c28_9(+(x, 1)) <=> c2(gen_c:c1:c28_9(x)) gen_0':s9_9(0) <=> 0' gen_0':s9_9(+(x, 1)) <=> s(gen_0':s9_9(x)) gen_c3:c410_9(0) <=> c3 gen_c3:c410_9(+(x, 1)) <=> c4(gen_c3:c410_9(x)) The following defined symbols remain to be analysed: lt, HELP, plus, help They will be analysed ascendingly in the following order: lt < HELP plus < HELP lt < help plus < help ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: lt(gen_0':s9_9(n1141_9), gen_0':s9_9(n1141_9)) -> false, rt in Omega(0) Induction Base: lt(gen_0':s9_9(0), gen_0':s9_9(0)) ->_R^Omega(0) false Induction Step: lt(gen_0':s9_9(+(n1141_9, 1)), gen_0':s9_9(+(n1141_9, 1))) ->_R^Omega(0) lt(gen_0':s9_9(n1141_9), gen_0':s9_9(n1141_9)) ->_IH false We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (20) Obligation: Innermost TRS: Rules: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Types: LT :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 s :: 0':s -> 0':s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 QUOT :: 0':s -> 0':s -> c5 c5 :: c6 -> c5 HELP :: 0':s -> 0':s -> 0':s -> c6 c6 :: c7:c8 -> c:c1:c2 -> c6 IF :: true:false -> 0':s -> 0':s -> 0':s -> c7:c8 lt :: 0':s -> 0':s -> true:false true :: true:false c7 :: c6 -> c3:c4 -> c7:c8 plus :: 0':s -> 0':s -> 0':s false :: true:false c8 :: c7:c8 quot :: 0':s -> 0':s -> 0':s help :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_9 :: c:c1:c2 hole_0':s2_9 :: 0':s hole_c3:c43_9 :: c3:c4 hole_c54_9 :: c5 hole_c65_9 :: c6 hole_c7:c86_9 :: c7:c8 hole_true:false7_9 :: true:false gen_c:c1:c28_9 :: Nat -> c:c1:c2 gen_0':s9_9 :: Nat -> 0':s gen_c3:c410_9 :: Nat -> c3:c4 Lemmas: LT(gen_0':s9_9(n12_9), gen_0':s9_9(n12_9)) -> gen_c:c1:c28_9(n12_9), rt in Omega(1 + n12_9) PLUS(gen_0':s9_9(a), gen_0':s9_9(n569_9)) -> gen_c3:c410_9(n569_9), rt in Omega(1 + n569_9) lt(gen_0':s9_9(n1141_9), gen_0':s9_9(n1141_9)) -> false, rt in Omega(0) Generator Equations: gen_c:c1:c28_9(0) <=> c gen_c:c1:c28_9(+(x, 1)) <=> c2(gen_c:c1:c28_9(x)) gen_0':s9_9(0) <=> 0' gen_0':s9_9(+(x, 1)) <=> s(gen_0':s9_9(x)) gen_c3:c410_9(0) <=> c3 gen_c3:c410_9(+(x, 1)) <=> c4(gen_c3:c410_9(x)) The following defined symbols remain to be analysed: plus, HELP, help They will be analysed ascendingly in the following order: plus < HELP plus < help ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: plus(gen_0':s9_9(a), gen_0':s9_9(n1491_9)) -> gen_0':s9_9(+(n1491_9, a)), rt in Omega(0) Induction Base: plus(gen_0':s9_9(a), gen_0':s9_9(0)) ->_R^Omega(0) gen_0':s9_9(a) Induction Step: plus(gen_0':s9_9(a), gen_0':s9_9(+(n1491_9, 1))) ->_R^Omega(0) s(plus(gen_0':s9_9(a), gen_0':s9_9(n1491_9))) ->_IH s(gen_0':s9_9(+(a, c1492_9))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (22) Obligation: Innermost TRS: Rules: LT(z0, 0') -> c LT(0', s(z0)) -> c1 LT(s(z0), s(z1)) -> c2(LT(z0, z1)) PLUS(z0, 0') -> c3 PLUS(z0, s(z1)) -> c4(PLUS(z0, z1)) QUOT(z0, s(z1)) -> c5(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c6(IF(lt(z2, z0), z0, s(z1), z2), LT(z2, z0)) IF(true, z0, s(z1), z2) -> c7(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c8 lt(z0, 0') -> false lt(0', s(z0)) -> true lt(s(z0), s(z1)) -> lt(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) quot(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(lt(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> s(help(z0, s(z1), plus(z2, s(z1)))) if(false, z0, s(z1), z2) -> 0' Types: LT :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 s :: 0':s -> 0':s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 QUOT :: 0':s -> 0':s -> c5 c5 :: c6 -> c5 HELP :: 0':s -> 0':s -> 0':s -> c6 c6 :: c7:c8 -> c:c1:c2 -> c6 IF :: true:false -> 0':s -> 0':s -> 0':s -> c7:c8 lt :: 0':s -> 0':s -> true:false true :: true:false c7 :: c6 -> c3:c4 -> c7:c8 plus :: 0':s -> 0':s -> 0':s false :: true:false c8 :: c7:c8 quot :: 0':s -> 0':s -> 0':s help :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_9 :: c:c1:c2 hole_0':s2_9 :: 0':s hole_c3:c43_9 :: c3:c4 hole_c54_9 :: c5 hole_c65_9 :: c6 hole_c7:c86_9 :: c7:c8 hole_true:false7_9 :: true:false gen_c:c1:c28_9 :: Nat -> c:c1:c2 gen_0':s9_9 :: Nat -> 0':s gen_c3:c410_9 :: Nat -> c3:c4 Lemmas: LT(gen_0':s9_9(n12_9), gen_0':s9_9(n12_9)) -> gen_c:c1:c28_9(n12_9), rt in Omega(1 + n12_9) PLUS(gen_0':s9_9(a), gen_0':s9_9(n569_9)) -> gen_c3:c410_9(n569_9), rt in Omega(1 + n569_9) lt(gen_0':s9_9(n1141_9), gen_0':s9_9(n1141_9)) -> false, rt in Omega(0) plus(gen_0':s9_9(a), gen_0':s9_9(n1491_9)) -> gen_0':s9_9(+(n1491_9, a)), rt in Omega(0) Generator Equations: gen_c:c1:c28_9(0) <=> c gen_c:c1:c28_9(+(x, 1)) <=> c2(gen_c:c1:c28_9(x)) gen_0':s9_9(0) <=> 0' gen_0':s9_9(+(x, 1)) <=> s(gen_0':s9_9(x)) gen_c3:c410_9(0) <=> c3 gen_c3:c410_9(+(x, 1)) <=> c4(gen_c3:c410_9(x)) The following defined symbols remain to be analysed: HELP, help