1009.40/291.56 WORST_CASE(Omega(n^1), O(n^2)) 1009.50/291.57 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 1009.50/291.57 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 1009.50/291.57 1009.50/291.57 1009.50/291.57 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). 1009.50/291.57 1009.50/291.57 (0) CpxTRS 1009.50/291.57 (1) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 1009.50/291.57 (2) CpxWeightedTrs 1009.50/291.57 (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 1009.50/291.57 (4) CpxTypedWeightedTrs 1009.50/291.57 (5) CompletionProof [UPPER BOUND(ID), 3 ms] 1009.50/291.57 (6) CpxTypedWeightedCompleteTrs 1009.50/291.57 (7) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] 1009.50/291.57 (8) CpxTypedWeightedCompleteTrs 1009.50/291.57 (9) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] 1009.50/291.57 (10) CpxRNTS 1009.50/291.57 (11) SimplificationProof [BOTH BOUNDS(ID, ID), 5 ms] 1009.50/291.57 (12) CpxRNTS 1009.50/291.57 (13) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] 1009.50/291.57 (14) CpxRNTS 1009.50/291.57 (15) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1009.50/291.57 (16) CpxRNTS 1009.50/291.57 (17) IntTrsBoundProof [UPPER BOUND(ID), 448 ms] 1009.50/291.57 (18) CpxRNTS 1009.50/291.57 (19) IntTrsBoundProof [UPPER BOUND(ID), 139 ms] 1009.50/291.57 (20) CpxRNTS 1009.50/291.57 (21) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1009.50/291.57 (22) CpxRNTS 1009.50/291.57 (23) IntTrsBoundProof [UPPER BOUND(ID), 334 ms] 1009.50/291.57 (24) CpxRNTS 1009.50/291.57 (25) IntTrsBoundProof [UPPER BOUND(ID), 96 ms] 1009.50/291.57 (26) CpxRNTS 1009.50/291.57 (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1009.50/291.57 (28) CpxRNTS 1009.50/291.57 (29) IntTrsBoundProof [UPPER BOUND(ID), 251 ms] 1009.50/291.57 (30) CpxRNTS 1009.50/291.57 (31) IntTrsBoundProof [UPPER BOUND(ID), 114 ms] 1009.50/291.57 (32) CpxRNTS 1009.50/291.57 (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1009.50/291.57 (34) CpxRNTS 1009.50/291.57 (35) IntTrsBoundProof [UPPER BOUND(ID), 2094 ms] 1009.50/291.57 (36) CpxRNTS 1009.50/291.57 (37) IntTrsBoundProof [UPPER BOUND(ID), 1501 ms] 1009.50/291.57 (38) CpxRNTS 1009.50/291.57 (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1009.50/291.57 (40) CpxRNTS 1009.50/291.57 (41) IntTrsBoundProof [UPPER BOUND(ID), 159 ms] 1009.50/291.57 (42) CpxRNTS 1009.50/291.57 (43) IntTrsBoundProof [UPPER BOUND(ID), 0 ms] 1009.50/291.57 (44) CpxRNTS 1009.50/291.57 (45) FinalProof [FINISHED, 0 ms] 1009.50/291.57 (46) BOUNDS(1, n^2) 1009.50/291.57 (47) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 1009.50/291.57 (48) CpxTRS 1009.50/291.57 (49) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 1009.50/291.57 (50) typed CpxTrs 1009.50/291.57 (51) OrderProof [LOWER BOUND(ID), 0 ms] 1009.50/291.57 (52) typed CpxTrs 1009.50/291.57 (53) RewriteLemmaProof [LOWER BOUND(ID), 282 ms] 1009.50/291.57 (54) BEST 1009.50/291.57 (55) proven lower bound 1009.50/291.57 (56) LowerBoundPropagationProof [FINISHED, 0 ms] 1009.50/291.57 (57) BOUNDS(n^1, INF) 1009.50/291.57 (58) typed CpxTrs 1009.50/291.57 (59) RewriteLemmaProof [LOWER BOUND(ID), 30 ms] 1009.50/291.57 (60) typed CpxTrs 1009.50/291.57 (61) RewriteLemmaProof [LOWER BOUND(ID), 81 ms] 1009.50/291.57 (62) typed CpxTrs 1009.50/291.57 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (0) 1009.50/291.57 Obligation: 1009.50/291.57 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). 1009.50/291.57 1009.50/291.57 1009.50/291.57 The TRS R consists of the following rules: 1009.50/291.57 1009.50/291.57 division(x, y) -> div(x, y, 0) 1009.50/291.57 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.57 if(true, x, y, z) -> z 1009.50/291.57 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.57 minus(x, 0) -> x 1009.50/291.57 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.57 lt(x, 0) -> false 1009.50/291.57 lt(0, s(y)) -> true 1009.50/291.57 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.57 inc(0) -> s(0) 1009.50/291.57 inc(s(x)) -> s(inc(x)) 1009.50/291.57 1009.50/291.57 S is empty. 1009.50/291.57 Rewrite Strategy: INNERMOST 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (1) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 1009.50/291.57 Transformed relative TRS to weighted TRS 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (2) 1009.50/291.57 Obligation: 1009.50/291.57 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). 1009.50/291.57 1009.50/291.57 1009.50/291.57 The TRS R consists of the following rules: 1009.50/291.57 1009.50/291.57 division(x, y) -> div(x, y, 0) [1] 1009.50/291.57 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) [1] 1009.50/291.57 if(true, x, y, z) -> z [1] 1009.50/291.57 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) [1] 1009.50/291.57 minus(x, 0) -> x [1] 1009.50/291.57 minus(s(x), s(y)) -> minus(x, y) [1] 1009.50/291.57 lt(x, 0) -> false [1] 1009.50/291.57 lt(0, s(y)) -> true [1] 1009.50/291.57 lt(s(x), s(y)) -> lt(x, y) [1] 1009.50/291.57 inc(0) -> s(0) [1] 1009.50/291.57 inc(s(x)) -> s(inc(x)) [1] 1009.50/291.57 1009.50/291.57 Rewrite Strategy: INNERMOST 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1009.50/291.57 Infered types. 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (4) 1009.50/291.57 Obligation: 1009.50/291.57 Runtime Complexity Weighted TRS with Types. 1009.50/291.57 The TRS R consists of the following rules: 1009.50/291.57 1009.50/291.57 division(x, y) -> div(x, y, 0) [1] 1009.50/291.57 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) [1] 1009.50/291.57 if(true, x, y, z) -> z [1] 1009.50/291.57 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) [1] 1009.50/291.57 minus(x, 0) -> x [1] 1009.50/291.57 minus(s(x), s(y)) -> minus(x, y) [1] 1009.50/291.57 lt(x, 0) -> false [1] 1009.50/291.57 lt(0, s(y)) -> true [1] 1009.50/291.57 lt(s(x), s(y)) -> lt(x, y) [1] 1009.50/291.57 inc(0) -> s(0) [1] 1009.50/291.57 inc(s(x)) -> s(inc(x)) [1] 1009.50/291.57 1009.50/291.57 The TRS has the following type information: 1009.50/291.57 division :: 0:s -> 0:s -> 0:s 1009.50/291.57 div :: 0:s -> 0:s -> 0:s -> 0:s 1009.50/291.57 0 :: 0:s 1009.50/291.57 if :: true:false -> 0:s -> 0:s -> 0:s -> 0:s 1009.50/291.57 lt :: 0:s -> 0:s -> true:false 1009.50/291.57 inc :: 0:s -> 0:s 1009.50/291.57 true :: true:false 1009.50/291.57 false :: true:false 1009.50/291.57 s :: 0:s -> 0:s 1009.50/291.57 minus :: 0:s -> 0:s -> 0:s 1009.50/291.57 1009.50/291.57 Rewrite Strategy: INNERMOST 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (5) CompletionProof (UPPER BOUND(ID)) 1009.50/291.57 The transformation into a RNTS is sound, since: 1009.50/291.57 1009.50/291.57 (a) The obligation is a constructor system where every type has a constant constructor, 1009.50/291.57 1009.50/291.57 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 1009.50/291.57 1009.50/291.57 division_2 1009.50/291.57 div_3 1009.50/291.57 if_4 1009.50/291.57 1009.50/291.57 (c) The following functions are completely defined: 1009.50/291.57 1009.50/291.57 minus_2 1009.50/291.57 lt_2 1009.50/291.57 inc_1 1009.50/291.57 1009.50/291.57 Due to the following rules being added: 1009.50/291.57 1009.50/291.57 minus(v0, v1) -> 0 [0] 1009.50/291.57 1009.50/291.57 And the following fresh constants: none 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (6) 1009.50/291.57 Obligation: 1009.50/291.57 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 1009.50/291.57 1009.50/291.57 Runtime Complexity Weighted TRS with Types. 1009.50/291.57 The TRS R consists of the following rules: 1009.50/291.57 1009.50/291.57 division(x, y) -> div(x, y, 0) [1] 1009.50/291.57 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) [1] 1009.50/291.57 if(true, x, y, z) -> z [1] 1009.50/291.57 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) [1] 1009.50/291.57 minus(x, 0) -> x [1] 1009.50/291.57 minus(s(x), s(y)) -> minus(x, y) [1] 1009.50/291.57 lt(x, 0) -> false [1] 1009.50/291.57 lt(0, s(y)) -> true [1] 1009.50/291.57 lt(s(x), s(y)) -> lt(x, y) [1] 1009.50/291.57 inc(0) -> s(0) [1] 1009.50/291.57 inc(s(x)) -> s(inc(x)) [1] 1009.50/291.57 minus(v0, v1) -> 0 [0] 1009.50/291.57 1009.50/291.57 The TRS has the following type information: 1009.50/291.57 division :: 0:s -> 0:s -> 0:s 1009.50/291.57 div :: 0:s -> 0:s -> 0:s -> 0:s 1009.50/291.57 0 :: 0:s 1009.50/291.57 if :: true:false -> 0:s -> 0:s -> 0:s -> 0:s 1009.50/291.57 lt :: 0:s -> 0:s -> true:false 1009.50/291.57 inc :: 0:s -> 0:s 1009.50/291.57 true :: true:false 1009.50/291.57 false :: true:false 1009.50/291.57 s :: 0:s -> 0:s 1009.50/291.57 minus :: 0:s -> 0:s -> 0:s 1009.50/291.57 1009.50/291.57 Rewrite Strategy: INNERMOST 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (7) NarrowingProof (BOTH BOUNDS(ID, ID)) 1009.50/291.57 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (8) 1009.50/291.57 Obligation: 1009.50/291.57 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 1009.50/291.57 1009.50/291.57 Runtime Complexity Weighted TRS with Types. 1009.50/291.57 The TRS R consists of the following rules: 1009.50/291.57 1009.50/291.57 division(x, y) -> div(x, y, 0) [1] 1009.50/291.57 div(x, 0, 0) -> if(false, x, 0, s(0)) [3] 1009.50/291.57 div(x, 0, s(x'')) -> if(false, x, 0, s(inc(x''))) [3] 1009.50/291.57 div(0, s(y'), 0) -> if(true, 0, s(y'), s(0)) [3] 1009.50/291.57 div(0, s(y'), s(x1)) -> if(true, 0, s(y'), s(inc(x1))) [3] 1009.50/291.57 div(s(x'), s(y''), 0) -> if(lt(x', y''), s(x'), s(y''), s(0)) [3] 1009.50/291.57 div(s(x'), s(y''), s(x2)) -> if(lt(x', y''), s(x'), s(y''), s(inc(x2))) [3] 1009.50/291.57 if(true, x, y, z) -> z [1] 1009.50/291.57 if(false, s(x3), s(y), z) -> div(minus(x3, y), s(y), z) [2] 1009.50/291.57 if(false, x, s(y), z) -> div(0, s(y), z) [1] 1009.50/291.57 minus(x, 0) -> x [1] 1009.50/291.57 minus(s(x), s(y)) -> minus(x, y) [1] 1009.50/291.57 lt(x, 0) -> false [1] 1009.50/291.57 lt(0, s(y)) -> true [1] 1009.50/291.57 lt(s(x), s(y)) -> lt(x, y) [1] 1009.50/291.57 inc(0) -> s(0) [1] 1009.50/291.57 inc(s(x)) -> s(inc(x)) [1] 1009.50/291.57 minus(v0, v1) -> 0 [0] 1009.50/291.57 1009.50/291.57 The TRS has the following type information: 1009.50/291.57 division :: 0:s -> 0:s -> 0:s 1009.50/291.57 div :: 0:s -> 0:s -> 0:s -> 0:s 1009.50/291.57 0 :: 0:s 1009.50/291.57 if :: true:false -> 0:s -> 0:s -> 0:s -> 0:s 1009.50/291.57 lt :: 0:s -> 0:s -> true:false 1009.50/291.57 inc :: 0:s -> 0:s 1009.50/291.57 true :: true:false 1009.50/291.57 false :: true:false 1009.50/291.57 s :: 0:s -> 0:s 1009.50/291.57 minus :: 0:s -> 0:s -> 0:s 1009.50/291.57 1009.50/291.57 Rewrite Strategy: INNERMOST 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (9) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 1009.50/291.57 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 1009.50/291.57 The constant constructors are abstracted as follows: 1009.50/291.57 1009.50/291.57 0 => 0 1009.50/291.57 true => 1 1009.50/291.57 false => 0 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (10) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(x', y''), 1 + x', 1 + y'', 1 + inc(x2)) :|: z' = 1 + x', x' >= 0, y'' >= 0, x2 >= 0, z'' = 1 + y'', z1 = 1 + x2 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(x', y''), 1 + x', 1 + y'', 1 + 0) :|: z1 = 0, z' = 1 + x', x' >= 0, y'' >= 0, z'' = 1 + y'' 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + y', 1 + inc(x1)) :|: x1 >= 0, y' >= 0, z1 = 1 + x1, z' = 0, z'' = 1 + y' 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + y', 1 + 0) :|: z1 = 0, y' >= 0, z' = 0, z'' = 1 + y' 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, x, 0, 1 + inc(x'')) :|: z'' = 0, z' = x, z1 = 1 + x'', x >= 0, x'' >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, x, 0, 1 + 0) :|: z'' = 0, z1 = 0, z' = x, x >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(x, y, 0) :|: z' = x, z'' = y, x >= 0, y >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z :|: z1 = y, z >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(x3, y), 1 + y, z) :|: z >= 0, z'' = 1 + x3, z2 = z, y >= 0, z1 = 1 + y, x3 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + y, z) :|: z >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z1 = 1 + y, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(x) :|: z' = 1 + x, x >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> lt(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: y >= 0, z'' = 1 + y, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' = x, x >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> x :|: z'' = 0, z' = x, x >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 1009.50/291.57 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (11) SimplificationProof (BOTH BOUNDS(ID, ID)) 1009.50/291.57 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (12) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> lt(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (13) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 1009.50/291.57 Found the following analysis order by SCC decomposition: 1009.50/291.57 1009.50/291.57 { lt } 1009.50/291.57 { minus } 1009.50/291.57 { inc } 1009.50/291.57 { div, if } 1009.50/291.57 { division } 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (14) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> lt(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {lt}, {minus}, {inc}, {div,if}, {division} 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (15) ResultPropagationProof (UPPER BOUND(ID)) 1009.50/291.57 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (16) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> lt(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {lt}, {minus}, {inc}, {div,if}, {division} 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (17) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.57 1009.50/291.57 Computed SIZE bound using CoFloCo for: lt 1009.50/291.57 after applying outer abstraction to obtain an ITS, 1009.50/291.57 resulting in: O(1) with polynomial bound: 1 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (18) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> lt(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {lt}, {minus}, {inc}, {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: ?, size: O(1) [1] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (19) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.57 1009.50/291.57 Computed RUNTIME bound using KoAT for: lt 1009.50/291.57 after applying outer abstraction to obtain an ITS, 1009.50/291.57 resulting in: O(n^1) with polynomial bound: 2 + z'' 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (20) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(lt(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> lt(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {minus}, {inc}, {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (21) ResultPropagationProof (UPPER BOUND(ID)) 1009.50/291.57 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (22) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {minus}, {inc}, {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (23) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.57 1009.50/291.57 Computed SIZE bound using KoAT for: minus 1009.50/291.57 after applying outer abstraction to obtain an ITS, 1009.50/291.57 resulting in: O(n^1) with polynomial bound: z' 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (24) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {minus}, {inc}, {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.57 minus: runtime: ?, size: O(n^1) [z'] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (25) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.57 1009.50/291.57 Computed RUNTIME bound using CoFloCo for: minus 1009.50/291.57 after applying outer abstraction to obtain an ITS, 1009.50/291.57 resulting in: O(n^1) with polynomial bound: 1 + z'' 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (26) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 }-> div(minus(z'' - 1, z1 - 1), 1 + (z1 - 1), z2) :|: z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> minus(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {inc}, {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.57 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (27) ResultPropagationProof (UPPER BOUND(ID)) 1009.50/291.57 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (28) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 + z1 }-> div(s1, 1 + (z1 - 1), z2) :|: s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {inc}, {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.57 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (29) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.57 1009.50/291.57 Computed SIZE bound using CoFloCo for: inc 1009.50/291.57 after applying outer abstraction to obtain an ITS, 1009.50/291.57 resulting in: O(n^1) with polynomial bound: 1 + z' 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (30) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 + z1 }-> div(s1, 1 + (z1 - 1), z2) :|: s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {inc}, {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.57 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.57 inc: runtime: ?, size: O(n^1) [1 + z'] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (31) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.57 1009.50/291.57 Computed RUNTIME bound using CoFloCo for: inc 1009.50/291.57 after applying outer abstraction to obtain an ITS, 1009.50/291.57 resulting in: O(n^1) with polynomial bound: 1 + z' 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (32) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + inc(z1 - 1)) :|: z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + inc(z1 - 1)) :|: z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.57 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.57 if(z', z'', z1, z2) -{ 2 + z1 }-> div(s1, 1 + (z1 - 1), z2) :|: s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.57 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + inc(z' - 1) :|: z' - 1 >= 0 1009.50/291.57 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.57 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.57 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.57 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.57 1009.50/291.57 Function symbols to be analyzed: {div,if}, {division} 1009.50/291.57 Previous analysis results are: 1009.50/291.57 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.57 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.57 inc: runtime: O(n^1) [1 + z'], size: O(n^1) [1 + z'] 1009.50/291.57 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (33) ResultPropagationProof (UPPER BOUND(ID)) 1009.50/291.57 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1009.50/291.57 ---------------------------------------- 1009.50/291.57 1009.50/291.57 (34) 1009.50/291.57 Obligation: 1009.50/291.57 Complexity RNTS consisting of the following rules: 1009.50/291.57 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.57 div(z', z'', z1) -{ 4 + z'' + z1 }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + s5) :|: s5 >= 0, s5 <= z1 - 1 + 1, s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 3 + z1 }-> if(1, 0, 1 + (z'' - 1), 1 + s4) :|: s4 >= 0, s4 <= z1 - 1 + 1, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 3 + z1 }-> if(0, z', 0, 1 + s3) :|: s3 >= 0, s3 <= z1 - 1 + 1, z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.58 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.58 if(z', z'', z1, z2) -{ 2 + z1 }-> div(s1, 1 + (z1 - 1), z2) :|: s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.58 inc(z') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + 1, z' - 1 >= 0 1009.50/291.58 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.58 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.58 1009.50/291.58 Function symbols to be analyzed: {div,if}, {division} 1009.50/291.58 Previous analysis results are: 1009.50/291.58 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.58 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.58 inc: runtime: O(n^1) [1 + z'], size: O(n^1) [1 + z'] 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (35) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.58 1009.50/291.58 Computed SIZE bound using CoFloCo for: div 1009.50/291.58 after applying outer abstraction to obtain an ITS, 1009.50/291.58 resulting in: O(n^1) with polynomial bound: 2 + z' + z1 1009.50/291.58 1009.50/291.58 Computed SIZE bound using CoFloCo for: if 1009.50/291.58 after applying outer abstraction to obtain an ITS, 1009.50/291.58 resulting in: O(n^1) with polynomial bound: 2 + z'' + z2 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (36) 1009.50/291.58 Obligation: 1009.50/291.58 Complexity RNTS consisting of the following rules: 1009.50/291.58 1009.50/291.58 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 4 + z'' + z1 }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + s5) :|: s5 >= 0, s5 <= z1 - 1 + 1, s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 3 + z1 }-> if(1, 0, 1 + (z'' - 1), 1 + s4) :|: s4 >= 0, s4 <= z1 - 1 + 1, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 3 + z1 }-> if(0, z', 0, 1 + s3) :|: s3 >= 0, s3 <= z1 - 1 + 1, z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.58 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.58 if(z', z'', z1, z2) -{ 2 + z1 }-> div(s1, 1 + (z1 - 1), z2) :|: s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.58 inc(z') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + 1, z' - 1 >= 0 1009.50/291.58 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.58 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.58 1009.50/291.58 Function symbols to be analyzed: {div,if}, {division} 1009.50/291.58 Previous analysis results are: 1009.50/291.58 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.58 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.58 inc: runtime: O(n^1) [1 + z'], size: O(n^1) [1 + z'] 1009.50/291.58 div: runtime: ?, size: O(n^1) [2 + z' + z1] 1009.50/291.58 if: runtime: ?, size: O(n^1) [2 + z'' + z2] 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (37) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.58 1009.50/291.58 Computed RUNTIME bound using CoFloCo for: div 1009.50/291.58 after applying outer abstraction to obtain an ITS, 1009.50/291.58 resulting in: O(n^2) with polynomial bound: 24 + 9*z' + 2*z'*z'' + z'*z1 + z'^2 + 7*z'' + 3*z1 1009.50/291.58 1009.50/291.58 Computed RUNTIME bound using KoAT for: if 1009.50/291.58 after applying outer abstraction to obtain an ITS, 1009.50/291.58 resulting in: O(n^2) with polynomial bound: 44 + 7*z'' + 2*z''*z1 + z''*z2 + z''^2 + 13*z1 + 5*z2 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (38) 1009.50/291.58 Obligation: 1009.50/291.58 Complexity RNTS consisting of the following rules: 1009.50/291.58 1009.50/291.58 div(z', z'', z1) -{ 4 + z'' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1), 1 + 0) :|: s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 4 + z'' + z1 }-> if(s', 1 + (z' - 1), 1 + (z'' - 1), 1 + s5) :|: s5 >= 0, s5 <= z1 - 1 + 1, s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 3 + z1 }-> if(1, 0, 1 + (z'' - 1), 1 + s4) :|: s4 >= 0, s4 <= z1 - 1 + 1, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 3 }-> if(1, 0, 1 + (z'' - 1), 1 + 0) :|: z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 3 + z1 }-> if(0, z', 0, 1 + s3) :|: s3 >= 0, s3 <= z1 - 1 + 1, z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 3 }-> if(0, z', 0, 1 + 0) :|: z'' = 0, z1 = 0, z' >= 0 1009.50/291.58 division(z', z'') -{ 1 }-> div(z', z'', 0) :|: z' >= 0, z'' >= 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.58 if(z', z'', z1, z2) -{ 2 + z1 }-> div(s1, 1 + (z1 - 1), z2) :|: s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> div(0, 1 + (z1 - 1), z2) :|: z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.58 inc(z') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + 1, z' - 1 >= 0 1009.50/291.58 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.58 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.58 1009.50/291.58 Function symbols to be analyzed: {division} 1009.50/291.58 Previous analysis results are: 1009.50/291.58 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.58 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.58 inc: runtime: O(n^1) [1 + z'], size: O(n^1) [1 + z'] 1009.50/291.58 div: runtime: O(n^2) [24 + 9*z' + 2*z'*z'' + z'*z1 + z'^2 + 7*z'' + 3*z1], size: O(n^1) [2 + z' + z1] 1009.50/291.58 if: runtime: O(n^2) [44 + 7*z'' + 2*z''*z1 + z''*z2 + z''^2 + 13*z1 + 5*z2], size: O(n^1) [2 + z'' + z2] 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (39) ResultPropagationProof (UPPER BOUND(ID)) 1009.50/291.58 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (40) 1009.50/291.58 Obligation: 1009.50/291.58 Complexity RNTS consisting of the following rules: 1009.50/291.58 1009.50/291.58 div(z', z'', z1) -{ 52 + 13*z'' }-> s10 :|: s10 >= 0, s10 <= 0 + (1 + 0) + 2, z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 5*s4 + 13*z'' + z1 }-> s11 :|: s11 >= 0, s11 <= 0 + (1 + s4) + 2, s4 >= 0, s4 <= z1 - 1 + 1, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 53 + 8*z' + 2*z'*z'' + z'^2 + 14*z'' }-> s12 :|: s12 >= 0, s12 <= 1 + (z' - 1) + (1 + 0) + 2, s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 53 + 5*s5 + s5*z' + 8*z' + 2*z'*z'' + z'^2 + 14*z'' + z1 }-> s13 :|: s13 >= 0, s13 <= 1 + (z' - 1) + (1 + s5) + 2, s5 >= 0, s5 <= z1 - 1 + 1, s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 8*z' + z'^2 }-> s8 :|: s8 >= 0, s8 <= z' + (1 + 0) + 2, z'' = 0, z1 = 0, z' >= 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 5*s3 + s3*z' + 8*z' + z'^2 + z1 }-> s9 :|: s9 >= 0, s9 <= z' + (1 + s3) + 2, s3 >= 0, s3 <= z1 - 1 + 1, z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.58 division(z', z'') -{ 25 + 9*z' + 2*z'*z'' + z'^2 + 7*z'' }-> s7 :|: s7 >= 0, s7 <= z' + 0 + 2, z' >= 0, z'' >= 0 1009.50/291.58 if(z', z'', z1, z2) -{ 26 + 9*s1 + 2*s1*z1 + s1*z2 + s1^2 + 8*z1 + 3*z2 }-> s14 :|: s14 >= 0, s14 <= s1 + z2 + 2, s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 25 + 7*z1 + 3*z2 }-> s15 :|: s15 >= 0, s15 <= 0 + z2 + 2, z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.58 inc(z') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + 1, z' - 1 >= 0 1009.50/291.58 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.58 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.58 1009.50/291.58 Function symbols to be analyzed: {division} 1009.50/291.58 Previous analysis results are: 1009.50/291.58 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.58 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.58 inc: runtime: O(n^1) [1 + z'], size: O(n^1) [1 + z'] 1009.50/291.58 div: runtime: O(n^2) [24 + 9*z' + 2*z'*z'' + z'*z1 + z'^2 + 7*z'' + 3*z1], size: O(n^1) [2 + z' + z1] 1009.50/291.58 if: runtime: O(n^2) [44 + 7*z'' + 2*z''*z1 + z''*z2 + z''^2 + 13*z1 + 5*z2], size: O(n^1) [2 + z'' + z2] 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (41) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.58 1009.50/291.58 Computed SIZE bound using CoFloCo for: division 1009.50/291.58 after applying outer abstraction to obtain an ITS, 1009.50/291.58 resulting in: O(n^1) with polynomial bound: 2 + z' 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (42) 1009.50/291.58 Obligation: 1009.50/291.58 Complexity RNTS consisting of the following rules: 1009.50/291.58 1009.50/291.58 div(z', z'', z1) -{ 52 + 13*z'' }-> s10 :|: s10 >= 0, s10 <= 0 + (1 + 0) + 2, z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 5*s4 + 13*z'' + z1 }-> s11 :|: s11 >= 0, s11 <= 0 + (1 + s4) + 2, s4 >= 0, s4 <= z1 - 1 + 1, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 53 + 8*z' + 2*z'*z'' + z'^2 + 14*z'' }-> s12 :|: s12 >= 0, s12 <= 1 + (z' - 1) + (1 + 0) + 2, s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 53 + 5*s5 + s5*z' + 8*z' + 2*z'*z'' + z'^2 + 14*z'' + z1 }-> s13 :|: s13 >= 0, s13 <= 1 + (z' - 1) + (1 + s5) + 2, s5 >= 0, s5 <= z1 - 1 + 1, s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 8*z' + z'^2 }-> s8 :|: s8 >= 0, s8 <= z' + (1 + 0) + 2, z'' = 0, z1 = 0, z' >= 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 5*s3 + s3*z' + 8*z' + z'^2 + z1 }-> s9 :|: s9 >= 0, s9 <= z' + (1 + s3) + 2, s3 >= 0, s3 <= z1 - 1 + 1, z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.58 division(z', z'') -{ 25 + 9*z' + 2*z'*z'' + z'^2 + 7*z'' }-> s7 :|: s7 >= 0, s7 <= z' + 0 + 2, z' >= 0, z'' >= 0 1009.50/291.58 if(z', z'', z1, z2) -{ 26 + 9*s1 + 2*s1*z1 + s1*z2 + s1^2 + 8*z1 + 3*z2 }-> s14 :|: s14 >= 0, s14 <= s1 + z2 + 2, s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 25 + 7*z1 + 3*z2 }-> s15 :|: s15 >= 0, s15 <= 0 + z2 + 2, z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.58 inc(z') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + 1, z' - 1 >= 0 1009.50/291.58 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.58 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.58 1009.50/291.58 Function symbols to be analyzed: {division} 1009.50/291.58 Previous analysis results are: 1009.50/291.58 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.58 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.58 inc: runtime: O(n^1) [1 + z'], size: O(n^1) [1 + z'] 1009.50/291.58 div: runtime: O(n^2) [24 + 9*z' + 2*z'*z'' + z'*z1 + z'^2 + 7*z'' + 3*z1], size: O(n^1) [2 + z' + z1] 1009.50/291.58 if: runtime: O(n^2) [44 + 7*z'' + 2*z''*z1 + z''*z2 + z''^2 + 13*z1 + 5*z2], size: O(n^1) [2 + z'' + z2] 1009.50/291.58 division: runtime: ?, size: O(n^1) [2 + z'] 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (43) IntTrsBoundProof (UPPER BOUND(ID)) 1009.50/291.58 1009.50/291.58 Computed RUNTIME bound using KoAT for: division 1009.50/291.58 after applying outer abstraction to obtain an ITS, 1009.50/291.58 resulting in: O(n^2) with polynomial bound: 25 + 9*z' + 2*z'*z'' + z'^2 + 7*z'' 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (44) 1009.50/291.58 Obligation: 1009.50/291.58 Complexity RNTS consisting of the following rules: 1009.50/291.58 1009.50/291.58 div(z', z'', z1) -{ 52 + 13*z'' }-> s10 :|: s10 >= 0, s10 <= 0 + (1 + 0) + 2, z1 = 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 5*s4 + 13*z'' + z1 }-> s11 :|: s11 >= 0, s11 <= 0 + (1 + s4) + 2, s4 >= 0, s4 <= z1 - 1 + 1, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 div(z', z'', z1) -{ 53 + 8*z' + 2*z'*z'' + z'^2 + 14*z'' }-> s12 :|: s12 >= 0, s12 <= 1 + (z' - 1) + (1 + 0) + 2, s >= 0, s <= 1, z1 = 0, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 53 + 5*s5 + s5*z' + 8*z' + 2*z'*z'' + z'^2 + 14*z'' + z1 }-> s13 :|: s13 >= 0, s13 <= 1 + (z' - 1) + (1 + s5) + 2, s5 >= 0, s5 <= z1 - 1 + 1, s' >= 0, s' <= 1, z' - 1 >= 0, z'' - 1 >= 0, z1 - 1 >= 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 8*z' + z'^2 }-> s8 :|: s8 >= 0, s8 <= z' + (1 + 0) + 2, z'' = 0, z1 = 0, z' >= 0 1009.50/291.58 div(z', z'', z1) -{ 52 + 5*s3 + s3*z' + 8*z' + z'^2 + z1 }-> s9 :|: s9 >= 0, s9 <= z' + (1 + s3) + 2, s3 >= 0, s3 <= z1 - 1 + 1, z'' = 0, z' >= 0, z1 - 1 >= 0 1009.50/291.58 division(z', z'') -{ 25 + 9*z' + 2*z'*z'' + z'^2 + 7*z'' }-> s7 :|: s7 >= 0, s7 <= z' + 0 + 2, z' >= 0, z'' >= 0 1009.50/291.58 if(z', z'', z1, z2) -{ 26 + 9*s1 + 2*s1*z1 + s1*z2 + s1^2 + 8*z1 + 3*z2 }-> s14 :|: s14 >= 0, s14 <= s1 + z2 + 2, s1 >= 0, s1 <= z'' - 1, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 25 + 7*z1 + 3*z2 }-> s15 :|: s15 >= 0, s15 <= 0 + z2 + 2, z2 >= 0, z'' >= 0, z1 - 1 >= 0, z' = 0 1009.50/291.58 if(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 1009.50/291.58 inc(z') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + 1, z' - 1 >= 0 1009.50/291.58 inc(z') -{ 1 }-> 1 + 0 :|: z' = 0 1009.50/291.58 lt(z', z'') -{ 2 + z'' }-> s'' :|: s'' >= 0, s'' <= 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 1009.50/291.58 lt(z', z'') -{ 1 }-> 0 :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 1 + z'' }-> s2 :|: s2 >= 0, s2 <= z' - 1, z' - 1 >= 0, z'' - 1 >= 0 1009.50/291.58 minus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 1009.50/291.58 minus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 1009.50/291.58 1009.50/291.58 Function symbols to be analyzed: 1009.50/291.58 Previous analysis results are: 1009.50/291.58 lt: runtime: O(n^1) [2 + z''], size: O(1) [1] 1009.50/291.58 minus: runtime: O(n^1) [1 + z''], size: O(n^1) [z'] 1009.50/291.58 inc: runtime: O(n^1) [1 + z'], size: O(n^1) [1 + z'] 1009.50/291.58 div: runtime: O(n^2) [24 + 9*z' + 2*z'*z'' + z'*z1 + z'^2 + 7*z'' + 3*z1], size: O(n^1) [2 + z' + z1] 1009.50/291.58 if: runtime: O(n^2) [44 + 7*z'' + 2*z''*z1 + z''*z2 + z''^2 + 13*z1 + 5*z2], size: O(n^1) [2 + z'' + z2] 1009.50/291.58 division: runtime: O(n^2) [25 + 9*z' + 2*z'*z'' + z'^2 + 7*z''], size: O(n^1) [2 + z'] 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (45) FinalProof (FINISHED) 1009.50/291.58 Computed overall runtime complexity 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (46) 1009.50/291.58 BOUNDS(1, n^2) 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (47) RenamingProof (BOTH BOUNDS(ID, ID)) 1009.50/291.58 Renamed function symbols to avoid clashes with predefined symbol. 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (48) 1009.50/291.58 Obligation: 1009.50/291.58 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1009.50/291.58 1009.50/291.58 1009.50/291.58 The TRS R consists of the following rules: 1009.50/291.58 1009.50/291.58 division(x, y) -> div(x, y, 0') 1009.50/291.58 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.58 if(true, x, y, z) -> z 1009.50/291.58 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.58 minus(x, 0') -> x 1009.50/291.58 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.58 lt(x, 0') -> false 1009.50/291.58 lt(0', s(y)) -> true 1009.50/291.58 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.58 inc(0') -> s(0') 1009.50/291.58 inc(s(x)) -> s(inc(x)) 1009.50/291.58 1009.50/291.58 S is empty. 1009.50/291.58 Rewrite Strategy: INNERMOST 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (49) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1009.50/291.58 Infered types. 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (50) 1009.50/291.58 Obligation: 1009.50/291.58 Innermost TRS: 1009.50/291.58 Rules: 1009.50/291.58 division(x, y) -> div(x, y, 0') 1009.50/291.58 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.58 if(true, x, y, z) -> z 1009.50/291.58 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.58 minus(x, 0') -> x 1009.50/291.58 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.58 lt(x, 0') -> false 1009.50/291.58 lt(0', s(y)) -> true 1009.50/291.58 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.58 inc(0') -> s(0') 1009.50/291.58 inc(s(x)) -> s(inc(x)) 1009.50/291.58 1009.50/291.58 Types: 1009.50/291.58 division :: 0':s -> 0':s -> 0':s 1009.50/291.58 div :: 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 0' :: 0':s 1009.50/291.58 if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 lt :: 0':s -> 0':s -> true:false 1009.50/291.58 inc :: 0':s -> 0':s 1009.50/291.58 true :: true:false 1009.50/291.58 false :: true:false 1009.50/291.58 s :: 0':s -> 0':s 1009.50/291.58 minus :: 0':s -> 0':s -> 0':s 1009.50/291.58 hole_0':s1_0 :: 0':s 1009.50/291.58 hole_true:false2_0 :: true:false 1009.50/291.58 gen_0':s3_0 :: Nat -> 0':s 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (51) OrderProof (LOWER BOUND(ID)) 1009.50/291.58 Heuristically decided to analyse the following defined symbols: 1009.50/291.58 div, lt, inc, minus 1009.50/291.58 1009.50/291.58 They will be analysed ascendingly in the following order: 1009.50/291.58 lt < div 1009.50/291.58 inc < div 1009.50/291.58 minus < div 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (52) 1009.50/291.58 Obligation: 1009.50/291.58 Innermost TRS: 1009.50/291.58 Rules: 1009.50/291.58 division(x, y) -> div(x, y, 0') 1009.50/291.58 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.58 if(true, x, y, z) -> z 1009.50/291.58 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.58 minus(x, 0') -> x 1009.50/291.58 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.58 lt(x, 0') -> false 1009.50/291.58 lt(0', s(y)) -> true 1009.50/291.58 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.58 inc(0') -> s(0') 1009.50/291.58 inc(s(x)) -> s(inc(x)) 1009.50/291.58 1009.50/291.58 Types: 1009.50/291.58 division :: 0':s -> 0':s -> 0':s 1009.50/291.58 div :: 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 0' :: 0':s 1009.50/291.58 if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 lt :: 0':s -> 0':s -> true:false 1009.50/291.58 inc :: 0':s -> 0':s 1009.50/291.58 true :: true:false 1009.50/291.58 false :: true:false 1009.50/291.58 s :: 0':s -> 0':s 1009.50/291.58 minus :: 0':s -> 0':s -> 0':s 1009.50/291.58 hole_0':s1_0 :: 0':s 1009.50/291.58 hole_true:false2_0 :: true:false 1009.50/291.58 gen_0':s3_0 :: Nat -> 0':s 1009.50/291.58 1009.50/291.58 1009.50/291.58 Generator Equations: 1009.50/291.58 gen_0':s3_0(0) <=> 0' 1009.50/291.58 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 1009.50/291.58 1009.50/291.58 1009.50/291.58 The following defined symbols remain to be analysed: 1009.50/291.58 lt, div, inc, minus 1009.50/291.58 1009.50/291.58 They will be analysed ascendingly in the following order: 1009.50/291.58 lt < div 1009.50/291.58 inc < div 1009.50/291.58 minus < div 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (53) RewriteLemmaProof (LOWER BOUND(ID)) 1009.50/291.58 Proved the following rewrite lemma: 1009.50/291.58 lt(gen_0':s3_0(n5_0), gen_0':s3_0(n5_0)) -> false, rt in Omega(1 + n5_0) 1009.50/291.58 1009.50/291.58 Induction Base: 1009.50/291.58 lt(gen_0':s3_0(0), gen_0':s3_0(0)) ->_R^Omega(1) 1009.50/291.58 false 1009.50/291.58 1009.50/291.58 Induction Step: 1009.50/291.58 lt(gen_0':s3_0(+(n5_0, 1)), gen_0':s3_0(+(n5_0, 1))) ->_R^Omega(1) 1009.50/291.58 lt(gen_0':s3_0(n5_0), gen_0':s3_0(n5_0)) ->_IH 1009.50/291.58 false 1009.50/291.58 1009.50/291.58 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (54) 1009.50/291.58 Complex Obligation (BEST) 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (55) 1009.50/291.58 Obligation: 1009.50/291.58 Proved the lower bound n^1 for the following obligation: 1009.50/291.58 1009.50/291.58 Innermost TRS: 1009.50/291.58 Rules: 1009.50/291.58 division(x, y) -> div(x, y, 0') 1009.50/291.58 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.58 if(true, x, y, z) -> z 1009.50/291.58 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.58 minus(x, 0') -> x 1009.50/291.58 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.58 lt(x, 0') -> false 1009.50/291.58 lt(0', s(y)) -> true 1009.50/291.58 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.58 inc(0') -> s(0') 1009.50/291.58 inc(s(x)) -> s(inc(x)) 1009.50/291.58 1009.50/291.58 Types: 1009.50/291.58 division :: 0':s -> 0':s -> 0':s 1009.50/291.58 div :: 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 0' :: 0':s 1009.50/291.58 if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 lt :: 0':s -> 0':s -> true:false 1009.50/291.58 inc :: 0':s -> 0':s 1009.50/291.58 true :: true:false 1009.50/291.58 false :: true:false 1009.50/291.58 s :: 0':s -> 0':s 1009.50/291.58 minus :: 0':s -> 0':s -> 0':s 1009.50/291.58 hole_0':s1_0 :: 0':s 1009.50/291.58 hole_true:false2_0 :: true:false 1009.50/291.58 gen_0':s3_0 :: Nat -> 0':s 1009.50/291.58 1009.50/291.58 1009.50/291.58 Generator Equations: 1009.50/291.58 gen_0':s3_0(0) <=> 0' 1009.50/291.58 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 1009.50/291.58 1009.50/291.58 1009.50/291.58 The following defined symbols remain to be analysed: 1009.50/291.58 lt, div, inc, minus 1009.50/291.58 1009.50/291.58 They will be analysed ascendingly in the following order: 1009.50/291.58 lt < div 1009.50/291.58 inc < div 1009.50/291.58 minus < div 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (56) LowerBoundPropagationProof (FINISHED) 1009.50/291.58 Propagated lower bound. 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (57) 1009.50/291.58 BOUNDS(n^1, INF) 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (58) 1009.50/291.58 Obligation: 1009.50/291.58 Innermost TRS: 1009.50/291.58 Rules: 1009.50/291.58 division(x, y) -> div(x, y, 0') 1009.50/291.58 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.58 if(true, x, y, z) -> z 1009.50/291.58 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.58 minus(x, 0') -> x 1009.50/291.58 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.58 lt(x, 0') -> false 1009.50/291.58 lt(0', s(y)) -> true 1009.50/291.58 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.58 inc(0') -> s(0') 1009.50/291.58 inc(s(x)) -> s(inc(x)) 1009.50/291.58 1009.50/291.58 Types: 1009.50/291.58 division :: 0':s -> 0':s -> 0':s 1009.50/291.58 div :: 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 0' :: 0':s 1009.50/291.58 if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 lt :: 0':s -> 0':s -> true:false 1009.50/291.58 inc :: 0':s -> 0':s 1009.50/291.58 true :: true:false 1009.50/291.58 false :: true:false 1009.50/291.58 s :: 0':s -> 0':s 1009.50/291.58 minus :: 0':s -> 0':s -> 0':s 1009.50/291.58 hole_0':s1_0 :: 0':s 1009.50/291.58 hole_true:false2_0 :: true:false 1009.50/291.58 gen_0':s3_0 :: Nat -> 0':s 1009.50/291.58 1009.50/291.58 1009.50/291.58 Lemmas: 1009.50/291.58 lt(gen_0':s3_0(n5_0), gen_0':s3_0(n5_0)) -> false, rt in Omega(1 + n5_0) 1009.50/291.58 1009.50/291.58 1009.50/291.58 Generator Equations: 1009.50/291.58 gen_0':s3_0(0) <=> 0' 1009.50/291.58 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 1009.50/291.58 1009.50/291.58 1009.50/291.58 The following defined symbols remain to be analysed: 1009.50/291.58 inc, div, minus 1009.50/291.58 1009.50/291.58 They will be analysed ascendingly in the following order: 1009.50/291.58 inc < div 1009.50/291.58 minus < div 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (59) RewriteLemmaProof (LOWER BOUND(ID)) 1009.50/291.58 Proved the following rewrite lemma: 1009.50/291.58 inc(gen_0':s3_0(n305_0)) -> gen_0':s3_0(+(1, n305_0)), rt in Omega(1 + n305_0) 1009.50/291.58 1009.50/291.58 Induction Base: 1009.50/291.58 inc(gen_0':s3_0(0)) ->_R^Omega(1) 1009.50/291.58 s(0') 1009.50/291.58 1009.50/291.58 Induction Step: 1009.50/291.58 inc(gen_0':s3_0(+(n305_0, 1))) ->_R^Omega(1) 1009.50/291.58 s(inc(gen_0':s3_0(n305_0))) ->_IH 1009.50/291.58 s(gen_0':s3_0(+(1, c306_0))) 1009.50/291.58 1009.50/291.58 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (60) 1009.50/291.58 Obligation: 1009.50/291.58 Innermost TRS: 1009.50/291.58 Rules: 1009.50/291.58 division(x, y) -> div(x, y, 0') 1009.50/291.58 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.58 if(true, x, y, z) -> z 1009.50/291.58 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.58 minus(x, 0') -> x 1009.50/291.58 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.58 lt(x, 0') -> false 1009.50/291.58 lt(0', s(y)) -> true 1009.50/291.58 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.58 inc(0') -> s(0') 1009.50/291.58 inc(s(x)) -> s(inc(x)) 1009.50/291.58 1009.50/291.58 Types: 1009.50/291.58 division :: 0':s -> 0':s -> 0':s 1009.50/291.58 div :: 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 0' :: 0':s 1009.50/291.58 if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 lt :: 0':s -> 0':s -> true:false 1009.50/291.58 inc :: 0':s -> 0':s 1009.50/291.58 true :: true:false 1009.50/291.58 false :: true:false 1009.50/291.58 s :: 0':s -> 0':s 1009.50/291.58 minus :: 0':s -> 0':s -> 0':s 1009.50/291.58 hole_0':s1_0 :: 0':s 1009.50/291.58 hole_true:false2_0 :: true:false 1009.50/291.58 gen_0':s3_0 :: Nat -> 0':s 1009.50/291.58 1009.50/291.58 1009.50/291.58 Lemmas: 1009.50/291.58 lt(gen_0':s3_0(n5_0), gen_0':s3_0(n5_0)) -> false, rt in Omega(1 + n5_0) 1009.50/291.58 inc(gen_0':s3_0(n305_0)) -> gen_0':s3_0(+(1, n305_0)), rt in Omega(1 + n305_0) 1009.50/291.58 1009.50/291.58 1009.50/291.58 Generator Equations: 1009.50/291.58 gen_0':s3_0(0) <=> 0' 1009.50/291.58 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 1009.50/291.58 1009.50/291.58 1009.50/291.58 The following defined symbols remain to be analysed: 1009.50/291.58 minus, div 1009.50/291.58 1009.50/291.58 They will be analysed ascendingly in the following order: 1009.50/291.58 minus < div 1009.50/291.58 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (61) RewriteLemmaProof (LOWER BOUND(ID)) 1009.50/291.58 Proved the following rewrite lemma: 1009.50/291.58 minus(gen_0':s3_0(n547_0), gen_0':s3_0(n547_0)) -> gen_0':s3_0(0), rt in Omega(1 + n547_0) 1009.50/291.58 1009.50/291.58 Induction Base: 1009.50/291.58 minus(gen_0':s3_0(0), gen_0':s3_0(0)) ->_R^Omega(1) 1009.50/291.58 gen_0':s3_0(0) 1009.50/291.58 1009.50/291.58 Induction Step: 1009.50/291.58 minus(gen_0':s3_0(+(n547_0, 1)), gen_0':s3_0(+(n547_0, 1))) ->_R^Omega(1) 1009.50/291.58 minus(gen_0':s3_0(n547_0), gen_0':s3_0(n547_0)) ->_IH 1009.50/291.58 gen_0':s3_0(0) 1009.50/291.58 1009.50/291.58 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1009.50/291.58 ---------------------------------------- 1009.50/291.58 1009.50/291.58 (62) 1009.50/291.58 Obligation: 1009.50/291.58 Innermost TRS: 1009.50/291.58 Rules: 1009.50/291.58 division(x, y) -> div(x, y, 0') 1009.50/291.58 div(x, y, z) -> if(lt(x, y), x, y, inc(z)) 1009.50/291.58 if(true, x, y, z) -> z 1009.50/291.58 if(false, x, s(y), z) -> div(minus(x, s(y)), s(y), z) 1009.50/291.58 minus(x, 0') -> x 1009.50/291.58 minus(s(x), s(y)) -> minus(x, y) 1009.50/291.58 lt(x, 0') -> false 1009.50/291.58 lt(0', s(y)) -> true 1009.50/291.58 lt(s(x), s(y)) -> lt(x, y) 1009.50/291.58 inc(0') -> s(0') 1009.50/291.58 inc(s(x)) -> s(inc(x)) 1009.50/291.58 1009.50/291.58 Types: 1009.50/291.58 division :: 0':s -> 0':s -> 0':s 1009.50/291.58 div :: 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 0' :: 0':s 1009.50/291.58 if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s 1009.50/291.58 lt :: 0':s -> 0':s -> true:false 1009.50/291.58 inc :: 0':s -> 0':s 1009.50/291.58 true :: true:false 1009.50/291.58 false :: true:false 1009.50/291.58 s :: 0':s -> 0':s 1009.50/291.58 minus :: 0':s -> 0':s -> 0':s 1009.50/291.58 hole_0':s1_0 :: 0':s 1009.50/291.58 hole_true:false2_0 :: true:false 1009.50/291.58 gen_0':s3_0 :: Nat -> 0':s 1009.50/291.58 1009.50/291.58 1009.50/291.58 Lemmas: 1009.50/291.58 lt(gen_0':s3_0(n5_0), gen_0':s3_0(n5_0)) -> false, rt in Omega(1 + n5_0) 1009.50/291.58 inc(gen_0':s3_0(n305_0)) -> gen_0':s3_0(+(1, n305_0)), rt in Omega(1 + n305_0) 1009.50/291.58 minus(gen_0':s3_0(n547_0), gen_0':s3_0(n547_0)) -> gen_0':s3_0(0), rt in Omega(1 + n547_0) 1009.50/291.58 1009.50/291.58 1009.50/291.58 Generator Equations: 1009.50/291.58 gen_0':s3_0(0) <=> 0' 1009.50/291.58 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 1009.50/291.58 1009.50/291.58 1009.50/291.58 The following defined symbols remain to be analysed: 1009.50/291.58 div 1009.60/291.64 EOF