YES(?,POLY) * Step 1: TrivialSCCs WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalspeedpldi2start(A,B,C) -> evalspeedpldi2entryin(A,B,C) True (1,1) 1. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2bb5in(B,0,A) [A >= 0 && B >= 1] (?,1) 2. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= 1 + A] (?,1) 3. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= B] (?,1) 4. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2bb2in(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && C >= 1] (?,1) 5. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2returnin(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && 0 >= C] (?,1) 6. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb3in(A,B,C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && A >= 1 + B] 7. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb5in(A,0,C) [-1 + C >= 0 && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && B >= A] (?,1) 8. evalspeedpldi2bb3in(A,B,C) -> evalspeedpldi2bb5in(A,1 + B,-1 + C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && -1 + A + -1*B >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0] 9. evalspeedpldi2returnin(A,B,C) -> evalspeedpldi2stop(A,B,C) True (?,1) Signature: {(evalspeedpldi2bb2in,3) ;(evalspeedpldi2bb3in,3) ;(evalspeedpldi2bb5in,3) ;(evalspeedpldi2entryin,3) ;(evalspeedpldi2returnin,3) ;(evalspeedpldi2start,3) ;(evalspeedpldi2stop,3)} Flow Graph: [0->{1,2,3},1->{4,5},2->{9},3->{9},4->{6,7},5->{9},6->{8},7->{4,5},8->{4,5},9->{}] + Applied Processor: TrivialSCCs + Details: All trivial SCCs of the transition graph admit timebound 1. * Step 2: UnsatPaths WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalspeedpldi2start(A,B,C) -> evalspeedpldi2entryin(A,B,C) True (1,1) 1. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2bb5in(B,0,A) [A >= 0 && B >= 1] (1,1) 2. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= 1 + A] (1,1) 3. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= B] (1,1) 4. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2bb2in(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && C >= 1] (?,1) 5. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2returnin(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && 0 >= C] (1,1) 6. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb3in(A,B,C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && A >= 1 + B] 7. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb5in(A,0,C) [-1 + C >= 0 && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && B >= A] (?,1) 8. evalspeedpldi2bb3in(A,B,C) -> evalspeedpldi2bb5in(A,1 + B,-1 + C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && -1 + A + -1*B >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0] 9. evalspeedpldi2returnin(A,B,C) -> evalspeedpldi2stop(A,B,C) True (1,1) Signature: {(evalspeedpldi2bb2in,3) ;(evalspeedpldi2bb3in,3) ;(evalspeedpldi2bb5in,3) ;(evalspeedpldi2entryin,3) ;(evalspeedpldi2returnin,3) ;(evalspeedpldi2start,3) ;(evalspeedpldi2stop,3)} Flow Graph: [0->{1,2,3},1->{4,5},2->{9},3->{9},4->{6,7},5->{9},6->{8},7->{4,5},8->{4,5},9->{}] + Applied Processor: UnsatPaths + Details: We remove following edges from the transition graph: [(7,5)] * Step 3: AddSinks WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalspeedpldi2start(A,B,C) -> evalspeedpldi2entryin(A,B,C) True (1,1) 1. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2bb5in(B,0,A) [A >= 0 && B >= 1] (1,1) 2. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= 1 + A] (1,1) 3. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= B] (1,1) 4. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2bb2in(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && C >= 1] (?,1) 5. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2returnin(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && 0 >= C] (1,1) 6. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb3in(A,B,C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && A >= 1 + B] 7. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb5in(A,0,C) [-1 + C >= 0 && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && B >= A] (?,1) 8. evalspeedpldi2bb3in(A,B,C) -> evalspeedpldi2bb5in(A,1 + B,-1 + C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && -1 + A + -1*B >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0] 9. evalspeedpldi2returnin(A,B,C) -> evalspeedpldi2stop(A,B,C) True (1,1) Signature: {(evalspeedpldi2bb2in,3) ;(evalspeedpldi2bb3in,3) ;(evalspeedpldi2bb5in,3) ;(evalspeedpldi2entryin,3) ;(evalspeedpldi2returnin,3) ;(evalspeedpldi2start,3) ;(evalspeedpldi2stop,3)} Flow Graph: [0->{1,2,3},1->{4,5},2->{9},3->{9},4->{6,7},5->{9},6->{8},7->{4},8->{4,5},9->{}] + Applied Processor: AddSinks + Details: () * Step 4: UnsatPaths WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalspeedpldi2start(A,B,C) -> evalspeedpldi2entryin(A,B,C) True (1,1) 1. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2bb5in(B,0,A) [A >= 0 && B >= 1] (?,1) 2. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= 1 + A] (?,1) 3. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= B] (?,1) 4. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2bb2in(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && C >= 1] (?,1) 5. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2returnin(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && 0 >= C] (?,1) 6. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb3in(A,B,C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && A >= 1 + B] 7. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb5in(A,0,C) [-1 + C >= 0 && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && B >= A] (?,1) 8. evalspeedpldi2bb3in(A,B,C) -> evalspeedpldi2bb5in(A,1 + B,-1 + C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && -1 + A + -1*B >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0] 9. evalspeedpldi2returnin(A,B,C) -> evalspeedpldi2stop(A,B,C) True (?,1) 10. evalspeedpldi2returnin(A,B,C) -> exitus616(A,B,C) True (?,1) Signature: {(evalspeedpldi2bb2in,3) ;(evalspeedpldi2bb3in,3) ;(evalspeedpldi2bb5in,3) ;(evalspeedpldi2entryin,3) ;(evalspeedpldi2returnin,3) ;(evalspeedpldi2start,3) ;(evalspeedpldi2stop,3) ;(exitus616,3)} Flow Graph: [0->{1,2,3},1->{4,5},2->{9,10},3->{9,10},4->{6,7},5->{9,10},6->{8},7->{4,5},8->{4,5},9->{},10->{}] + Applied Processor: UnsatPaths + Details: We remove following edges from the transition graph: [(7,5)] * Step 5: LooptreeTransformer WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalspeedpldi2start(A,B,C) -> evalspeedpldi2entryin(A,B,C) True (1,1) 1. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2bb5in(B,0,A) [A >= 0 && B >= 1] (?,1) 2. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= 1 + A] (?,1) 3. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= B] (?,1) 4. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2bb2in(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && C >= 1] (?,1) 5. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2returnin(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && 0 >= C] (?,1) 6. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb3in(A,B,C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && A >= 1 + B] 7. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb5in(A,0,C) [-1 + C >= 0 && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && B >= A] (?,1) 8. evalspeedpldi2bb3in(A,B,C) -> evalspeedpldi2bb5in(A,1 + B,-1 + C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && -1 + A + -1*B >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0] 9. evalspeedpldi2returnin(A,B,C) -> evalspeedpldi2stop(A,B,C) True (?,1) 10. evalspeedpldi2returnin(A,B,C) -> exitus616(A,B,C) True (?,1) Signature: {(evalspeedpldi2bb2in,3) ;(evalspeedpldi2bb3in,3) ;(evalspeedpldi2bb5in,3) ;(evalspeedpldi2entryin,3) ;(evalspeedpldi2returnin,3) ;(evalspeedpldi2start,3) ;(evalspeedpldi2stop,3) ;(exitus616,3)} Flow Graph: [0->{1,2,3},1->{4,5},2->{9,10},3->{9,10},4->{6,7},5->{9,10},6->{8},7->{4},8->{4,5},9->{},10->{}] + Applied Processor: LooptreeTransformer + Details: We construct a looptree: P: [0,1,2,3,4,5,6,7,8,9,10] | `- p:[4,7,8,6] c: [8] | `- p:[4,7] c: [7] * Step 6: SizeAbstraction WORST_CASE(?,POLY) + Considered Problem: (Rules: 0. evalspeedpldi2start(A,B,C) -> evalspeedpldi2entryin(A,B,C) True (1,1) 1. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2bb5in(B,0,A) [A >= 0 && B >= 1] (?,1) 2. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= 1 + A] (?,1) 3. evalspeedpldi2entryin(A,B,C) -> evalspeedpldi2returnin(A,B,C) [0 >= B] (?,1) 4. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2bb2in(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && C >= 1] (?,1) 5. evalspeedpldi2bb5in(A,B,C) -> evalspeedpldi2returnin(A,B,C) [C >= 0 && B + C >= 0 && -1 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && 0 >= C] (?,1) 6. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb3in(A,B,C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && A >= 1 + B] 7. evalspeedpldi2bb2in(A,B,C) -> evalspeedpldi2bb5in(A,0,C) [-1 + C >= 0 && -1 + B + C >= 0 && -2 + A + C >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0 && B >= A] (?,1) 8. evalspeedpldi2bb3in(A,B,C) -> evalspeedpldi2bb5in(A,1 + B,-1 + C) [-1 + C >= 0 (?,1) && -1 + B + C >= 0 && -2 + A + C >= 0 && -1 + A + -1*B >= 0 && B >= 0 && -1 + A + B >= 0 && -1 + A >= 0] 9. evalspeedpldi2returnin(A,B,C) -> evalspeedpldi2stop(A,B,C) True (?,1) 10. evalspeedpldi2returnin(A,B,C) -> exitus616(A,B,C) True (?,1) Signature: {(evalspeedpldi2bb2in,3) ;(evalspeedpldi2bb3in,3) ;(evalspeedpldi2bb5in,3) ;(evalspeedpldi2entryin,3) ;(evalspeedpldi2returnin,3) ;(evalspeedpldi2start,3) ;(evalspeedpldi2stop,3) ;(exitus616,3)} Flow Graph: [0->{1,2,3},1->{4,5},2->{9,10},3->{9,10},4->{6,7},5->{9,10},6->{8},7->{4},8->{4,5},9->{},10->{}] ,We construct a looptree: P: [0,1,2,3,4,5,6,7,8,9,10] | `- p:[4,7,8,6] c: [8] | `- p:[4,7] c: [7]) + Applied Processor: SizeAbstraction UseCFG Minimize + Details: () * Step 7: FlowAbstraction WORST_CASE(?,POLY) + Considered Problem: Program: Domain: [A,B,C,0.0,0.0.0] evalspeedpldi2start ~> evalspeedpldi2entryin [A <= A, B <= B, C <= C] evalspeedpldi2entryin ~> evalspeedpldi2bb5in [A <= B, B <= 0*K, C <= A] evalspeedpldi2entryin ~> evalspeedpldi2returnin [A <= A, B <= B, C <= C] evalspeedpldi2entryin ~> evalspeedpldi2returnin [A <= A, B <= B, C <= C] evalspeedpldi2bb5in ~> evalspeedpldi2bb2in [A <= A, B <= B, C <= C] evalspeedpldi2bb5in ~> evalspeedpldi2returnin [A <= A, B <= B, C <= C] evalspeedpldi2bb2in ~> evalspeedpldi2bb3in [A <= A, B <= B, C <= C] evalspeedpldi2bb2in ~> evalspeedpldi2bb5in [A <= A, B <= 0*K, C <= C] evalspeedpldi2bb3in ~> evalspeedpldi2bb5in [A <= A, B <= A, C <= C] evalspeedpldi2returnin ~> evalspeedpldi2stop [A <= A, B <= B, C <= C] evalspeedpldi2returnin ~> exitus616 [A <= A, B <= B, C <= C] + Loop: [0.0 <= C] evalspeedpldi2bb5in ~> evalspeedpldi2bb2in [A <= A, B <= B, C <= C] evalspeedpldi2bb2in ~> evalspeedpldi2bb5in [A <= A, B <= 0*K, C <= C] evalspeedpldi2bb3in ~> evalspeedpldi2bb5in [A <= A, B <= A, C <= C] evalspeedpldi2bb2in ~> evalspeedpldi2bb3in [A <= A, B <= B, C <= C] + Loop: [0.0.0 <= K + B] evalspeedpldi2bb5in ~> evalspeedpldi2bb2in [A <= A, B <= B, C <= C] evalspeedpldi2bb2in ~> evalspeedpldi2bb5in [A <= A, B <= 0*K, C <= C] + Applied Processor: FlowAbstraction + Details: () * Step 8: LareProcessor WORST_CASE(?,POLY) + Considered Problem: Program: Domain: [tick,huge,K,A,B,C,0.0,0.0.0] evalspeedpldi2start ~> evalspeedpldi2entryin [] evalspeedpldi2entryin ~> evalspeedpldi2bb5in [A ~=> C,B ~=> A,K ~=> B] evalspeedpldi2entryin ~> evalspeedpldi2returnin [] evalspeedpldi2entryin ~> evalspeedpldi2returnin [] evalspeedpldi2bb5in ~> evalspeedpldi2bb2in [] evalspeedpldi2bb5in ~> evalspeedpldi2returnin [] evalspeedpldi2bb2in ~> evalspeedpldi2bb3in [] evalspeedpldi2bb2in ~> evalspeedpldi2bb5in [K ~=> B] evalspeedpldi2bb3in ~> evalspeedpldi2bb5in [A ~=> B] evalspeedpldi2returnin ~> evalspeedpldi2stop [] evalspeedpldi2returnin ~> exitus616 [] + Loop: [C ~=> 0.0] evalspeedpldi2bb5in ~> evalspeedpldi2bb2in [] evalspeedpldi2bb2in ~> evalspeedpldi2bb5in [K ~=> B] evalspeedpldi2bb3in ~> evalspeedpldi2bb5in [A ~=> B] evalspeedpldi2bb2in ~> evalspeedpldi2bb3in [] + Loop: [B ~+> 0.0.0,K ~+> 0.0.0] evalspeedpldi2bb5in ~> evalspeedpldi2bb2in [] evalspeedpldi2bb2in ~> evalspeedpldi2bb5in [K ~=> B] + Applied Processor: LareProcessor + Details: evalspeedpldi2start ~> exitus616 [A ~=> C ,A ~=> 0.0 ,B ~=> A ,K ~=> B ,A ~+> tick ,B ~+> 0.0.0 ,B ~+> tick ,tick ~+> tick ,K ~+> 0.0.0 ,K ~+> tick ,A ~*> tick ,K ~*> 0.0.0 ,K ~*> tick] evalspeedpldi2start ~> evalspeedpldi2stop [A ~=> C ,A ~=> 0.0 ,B ~=> A ,K ~=> B ,A ~+> tick ,B ~+> 0.0.0 ,B ~+> tick ,tick ~+> tick ,K ~+> 0.0.0 ,K ~+> tick ,A ~*> tick ,K ~*> 0.0.0 ,K ~*> tick] + evalspeedpldi2bb5in> [A ~=> B ,C ~=> 0.0 ,K ~=> B ,A ~+> 0.0.0 ,A ~+> tick ,B ~+> 0.0.0 ,B ~+> tick ,C ~+> tick ,tick ~+> tick ,K ~+> 0.0.0 ,K ~+> tick ,B ~*> tick ,C ~*> tick ,K ~*> 0.0.0 ,K ~*> tick] + evalspeedpldi2bb2in> [K ~=> B ,B ~+> 0.0.0 ,B ~+> tick ,tick ~+> tick ,K ~+> 0.0.0 ,K ~+> tick] evalspeedpldi2bb5in> [K ~=> B ,B ~+> 0.0.0 ,B ~+> tick ,tick ~+> tick ,K ~+> 0.0.0 ,K ~+> tick] YES(?,POLY)