WORST_CASE(Omega(n^1),?) proof of input_HbmsLiF8ZI.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), 4 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 396 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), 62 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 85 ms] (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 53 ms] (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 40 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 43 ms] (26) 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: le(0, y) -> true le(s(x), 0) -> false le(s(x), s(y)) -> le(x, y) minus(x, 0) -> x minus(0, s(y)) -> 0 minus(s(x), s(y)) -> minus(x, y) plus(x, 0) -> x plus(x, s(y)) -> s(plus(x, y)) mod(s(x), 0) -> 0 mod(x, s(y)) -> help(x, s(y), 0) help(x, s(y), c) -> if(le(c, x), x, s(y), c) if(true, x, s(y), c) -> help(x, s(y), plus(c, s(y))) if(false, x, s(y), c) -> minus(x, minus(c, s(y))) 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: le(0, z0) -> true le(s(z0), 0) -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0) -> z0 minus(0, s(z0)) -> 0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0) -> 0 mod(z0, s(z1)) -> help(z0, s(z1), 0) help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Tuples: LE(0, z0) -> c LE(s(z0), 0) -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0) -> c3 MINUS(0, s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0) -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0) -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0)) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) S tuples: LE(0, z0) -> c LE(s(z0), 0) -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0) -> c3 MINUS(0, s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0) -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0) -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0)) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) K tuples:none Defined Rule Symbols: le_2, minus_2, plus_2, mod_2, help_3, if_4 Defined Pair Symbols: LE_2, MINUS_2, PLUS_2, MOD_2, HELP_3, IF_4 Compound Symbols: c, c1, c2_1, c3, c4, c5_1, c6, c7_1, c8, c9_1, c10_2, c11_2, c12_2 ---------------------------------------- (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: LE(0, z0) -> c LE(s(z0), 0) -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0) -> c3 MINUS(0, s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0) -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0) -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0)) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) The (relative) TRS S consists of the following rules: le(0, z0) -> true le(s(z0), 0) -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0) -> z0 minus(0, s(z0)) -> 0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0) -> 0 mod(z0, s(z1)) -> help(z0, s(z1), 0) help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) 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: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) The (relative) TRS S consists of the following rules: le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: LE, MINUS, PLUS, HELP, le, plus, minus, help They will be analysed ascendingly in the following order: LE < HELP MINUS < HELP PLUS < HELP le < HELP plus < HELP minus < HELP le < help plus < help minus < help ---------------------------------------- (10) Obligation: Innermost TRS: Rules: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: LE, MINUS, PLUS, HELP, le, plus, minus, help They will be analysed ascendingly in the following order: LE < HELP MINUS < HELP PLUS < HELP le < HELP plus < HELP minus < HELP le < help plus < help minus < help ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13)) -> gen_c:c1:c29_13(n14_13), rt in Omega(1 + n14_13) Induction Base: LE(gen_0':s10_13(0), gen_0':s10_13(0)) ->_R^Omega(1) c Induction Step: LE(gen_0':s10_13(+(n14_13, 1)), gen_0':s10_13(+(n14_13, 1))) ->_R^Omega(1) c2(LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13))) ->_IH c2(gen_c:c1:c29_13(c15_13)) 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: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: LE, MINUS, PLUS, HELP, le, plus, minus, help They will be analysed ascendingly in the following order: LE < HELP MINUS < HELP PLUS < HELP le < HELP plus < HELP minus < HELP le < help plus < help minus < help ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) Obligation: Innermost TRS: Rules: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Lemmas: LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13)) -> gen_c:c1:c29_13(n14_13), rt in Omega(1 + n14_13) Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: MINUS, PLUS, HELP, le, plus, minus, help They will be analysed ascendingly in the following order: MINUS < HELP PLUS < HELP le < HELP plus < HELP minus < HELP le < help plus < help minus < help ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MINUS(gen_0':s10_13(n662_13), gen_0':s10_13(n662_13)) -> gen_c3:c4:c511_13(n662_13), rt in Omega(1 + n662_13) Induction Base: MINUS(gen_0':s10_13(0), gen_0':s10_13(0)) ->_R^Omega(1) c3 Induction Step: MINUS(gen_0':s10_13(+(n662_13, 1)), gen_0':s10_13(+(n662_13, 1))) ->_R^Omega(1) c5(MINUS(gen_0':s10_13(n662_13), gen_0':s10_13(n662_13))) ->_IH c5(gen_c3:c4:c511_13(c663_13)) 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: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Lemmas: LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13)) -> gen_c:c1:c29_13(n14_13), rt in Omega(1 + n14_13) MINUS(gen_0':s10_13(n662_13), gen_0':s10_13(n662_13)) -> gen_c3:c4:c511_13(n662_13), rt in Omega(1 + n662_13) Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: PLUS, HELP, le, plus, minus, help They will be analysed ascendingly in the following order: PLUS < HELP le < HELP plus < HELP minus < HELP le < help plus < help minus < help ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: PLUS(gen_0':s10_13(a), gen_0':s10_13(n1384_13)) -> gen_c6:c712_13(n1384_13), rt in Omega(1 + n1384_13) Induction Base: PLUS(gen_0':s10_13(a), gen_0':s10_13(0)) ->_R^Omega(1) c6 Induction Step: PLUS(gen_0':s10_13(a), gen_0':s10_13(+(n1384_13, 1))) ->_R^Omega(1) c7(PLUS(gen_0':s10_13(a), gen_0':s10_13(n1384_13))) ->_IH c7(gen_c6:c712_13(c1385_13)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (20) Obligation: Innermost TRS: Rules: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Lemmas: LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13)) -> gen_c:c1:c29_13(n14_13), rt in Omega(1 + n14_13) MINUS(gen_0':s10_13(n662_13), gen_0':s10_13(n662_13)) -> gen_c3:c4:c511_13(n662_13), rt in Omega(1 + n662_13) PLUS(gen_0':s10_13(a), gen_0':s10_13(n1384_13)) -> gen_c6:c712_13(n1384_13), rt in Omega(1 + n1384_13) Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: le, HELP, plus, minus, help They will be analysed ascendingly in the following order: le < HELP plus < HELP minus < HELP le < help plus < help minus < help ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: le(gen_0':s10_13(n2147_13), gen_0':s10_13(n2147_13)) -> true, rt in Omega(0) Induction Base: le(gen_0':s10_13(0), gen_0':s10_13(0)) ->_R^Omega(0) true Induction Step: le(gen_0':s10_13(+(n2147_13, 1)), gen_0':s10_13(+(n2147_13, 1))) ->_R^Omega(0) le(gen_0':s10_13(n2147_13), gen_0':s10_13(n2147_13)) ->_IH true 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: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Lemmas: LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13)) -> gen_c:c1:c29_13(n14_13), rt in Omega(1 + n14_13) MINUS(gen_0':s10_13(n662_13), gen_0':s10_13(n662_13)) -> gen_c3:c4:c511_13(n662_13), rt in Omega(1 + n662_13) PLUS(gen_0':s10_13(a), gen_0':s10_13(n1384_13)) -> gen_c6:c712_13(n1384_13), rt in Omega(1 + n1384_13) le(gen_0':s10_13(n2147_13), gen_0':s10_13(n2147_13)) -> true, rt in Omega(0) Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: plus, HELP, minus, help They will be analysed ascendingly in the following order: plus < HELP minus < HELP plus < help minus < help ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: plus(gen_0':s10_13(a), gen_0':s10_13(n2580_13)) -> gen_0':s10_13(+(n2580_13, a)), rt in Omega(0) Induction Base: plus(gen_0':s10_13(a), gen_0':s10_13(0)) ->_R^Omega(0) gen_0':s10_13(a) Induction Step: plus(gen_0':s10_13(a), gen_0':s10_13(+(n2580_13, 1))) ->_R^Omega(0) s(plus(gen_0':s10_13(a), gen_0':s10_13(n2580_13))) ->_IH s(gen_0':s10_13(+(a, c2581_13))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (24) Obligation: Innermost TRS: Rules: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Lemmas: LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13)) -> gen_c:c1:c29_13(n14_13), rt in Omega(1 + n14_13) MINUS(gen_0':s10_13(n662_13), gen_0':s10_13(n662_13)) -> gen_c3:c4:c511_13(n662_13), rt in Omega(1 + n662_13) PLUS(gen_0':s10_13(a), gen_0':s10_13(n1384_13)) -> gen_c6:c712_13(n1384_13), rt in Omega(1 + n1384_13) le(gen_0':s10_13(n2147_13), gen_0':s10_13(n2147_13)) -> true, rt in Omega(0) plus(gen_0':s10_13(a), gen_0':s10_13(n2580_13)) -> gen_0':s10_13(+(n2580_13, a)), rt in Omega(0) Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: minus, HELP, help They will be analysed ascendingly in the following order: minus < HELP minus < help ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: minus(gen_0':s10_13(n3933_13), gen_0':s10_13(n3933_13)) -> gen_0':s10_13(0), rt in Omega(0) Induction Base: minus(gen_0':s10_13(0), gen_0':s10_13(0)) ->_R^Omega(0) gen_0':s10_13(0) Induction Step: minus(gen_0':s10_13(+(n3933_13, 1)), gen_0':s10_13(+(n3933_13, 1))) ->_R^Omega(0) minus(gen_0':s10_13(n3933_13), gen_0':s10_13(n3933_13)) ->_IH gen_0':s10_13(0) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (26) Obligation: Innermost TRS: Rules: LE(0', z0) -> c LE(s(z0), 0') -> c1 LE(s(z0), s(z1)) -> c2(LE(z0, z1)) MINUS(z0, 0') -> c3 MINUS(0', s(z0)) -> c4 MINUS(s(z0), s(z1)) -> c5(MINUS(z0, z1)) PLUS(z0, 0') -> c6 PLUS(z0, s(z1)) -> c7(PLUS(z0, z1)) MOD(s(z0), 0') -> c8 MOD(z0, s(z1)) -> c9(HELP(z0, s(z1), 0')) HELP(z0, s(z1), z2) -> c10(IF(le(z2, z0), z0, s(z1), z2), LE(z2, z0)) IF(true, z0, s(z1), z2) -> c11(HELP(z0, s(z1), plus(z2, s(z1))), PLUS(z2, s(z1))) IF(false, z0, s(z1), z2) -> c12(MINUS(z0, minus(z2, s(z1))), MINUS(z2, s(z1))) le(0', z0) -> true le(s(z0), 0') -> false le(s(z0), s(z1)) -> le(z0, z1) minus(z0, 0') -> z0 minus(0', s(z0)) -> 0' minus(s(z0), s(z1)) -> minus(z0, z1) plus(z0, 0') -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) mod(s(z0), 0') -> 0' mod(z0, s(z1)) -> help(z0, s(z1), 0') help(z0, s(z1), z2) -> if(le(z2, z0), z0, s(z1), z2) if(true, z0, s(z1), z2) -> help(z0, s(z1), plus(z2, s(z1))) if(false, z0, s(z1), z2) -> minus(z0, minus(z2, s(z1))) Types: LE :: 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 MINUS :: 0':s -> 0':s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 PLUS :: 0':s -> 0':s -> c6:c7 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 MOD :: 0':s -> 0':s -> c8:c9 c8 :: c8:c9 c9 :: c10 -> c8:c9 HELP :: 0':s -> 0':s -> 0':s -> c10 c10 :: c11:c12 -> c:c1:c2 -> c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 le :: 0':s -> 0':s -> true:false true :: true:false c11 :: c10 -> c6:c7 -> c11:c12 plus :: 0':s -> 0':s -> 0':s false :: true:false c12 :: c3:c4:c5 -> c3:c4:c5 -> c11:c12 minus :: 0':s -> 0':s -> 0':s mod :: 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_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c4:c53_13 :: c3:c4:c5 hole_c6:c74_13 :: c6:c7 hole_c8:c95_13 :: c8:c9 hole_c106_13 :: c10 hole_c11:c127_13 :: c11:c12 hole_true:false8_13 :: true:false gen_c:c1:c29_13 :: Nat -> c:c1:c2 gen_0':s10_13 :: Nat -> 0':s gen_c3:c4:c511_13 :: Nat -> c3:c4:c5 gen_c6:c712_13 :: Nat -> c6:c7 Lemmas: LE(gen_0':s10_13(n14_13), gen_0':s10_13(n14_13)) -> gen_c:c1:c29_13(n14_13), rt in Omega(1 + n14_13) MINUS(gen_0':s10_13(n662_13), gen_0':s10_13(n662_13)) -> gen_c3:c4:c511_13(n662_13), rt in Omega(1 + n662_13) PLUS(gen_0':s10_13(a), gen_0':s10_13(n1384_13)) -> gen_c6:c712_13(n1384_13), rt in Omega(1 + n1384_13) le(gen_0':s10_13(n2147_13), gen_0':s10_13(n2147_13)) -> true, rt in Omega(0) plus(gen_0':s10_13(a), gen_0':s10_13(n2580_13)) -> gen_0':s10_13(+(n2580_13, a)), rt in Omega(0) minus(gen_0':s10_13(n3933_13), gen_0':s10_13(n3933_13)) -> gen_0':s10_13(0), rt in Omega(0) Generator Equations: gen_c:c1:c29_13(0) <=> c gen_c:c1:c29_13(+(x, 1)) <=> c2(gen_c:c1:c29_13(x)) gen_0':s10_13(0) <=> 0' gen_0':s10_13(+(x, 1)) <=> s(gen_0':s10_13(x)) gen_c3:c4:c511_13(0) <=> c3 gen_c3:c4:c511_13(+(x, 1)) <=> c5(gen_c3:c4:c511_13(x)) gen_c6:c712_13(0) <=> c6 gen_c6:c712_13(+(x, 1)) <=> c7(gen_c6:c712_13(x)) The following defined symbols remain to be analysed: HELP, help