YES(?,POLY) * Step 1: TrivialSCCs WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalaxstart(A,B,C) -> evalaxentryin(A,B,C) True (1,1) 1. evalaxentryin(A,B,C) -> evalaxbbin(0,B,C) True (?,1) 2. evalaxbbin(A,B,C) -> evalaxbb2in(A,0,C) [A >= 0] (?,1) 3. evalaxbb2in(A,B,C) -> evalaxbb3in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C] (?,1) 4. evalaxbb2in(A,B,C) -> evalaxbb1in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && C >= 2 + B] (?,1) 5. evalaxbb3in(A,B,C) -> evalaxreturnin(A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 2 + A >= C] (?,1) 6. evalaxbb3in(A,B,C) -> evalaxbbin(1 + A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C && C >= 3 + A] (?,1) 7. evalaxbb1in(A,B,C) -> evalaxbb2in(A,1 + B,C) [-2 + C >= 0 && -2 + B + C >= 0 && -2 + -1*B + C >= 0 && -2 + A + C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (?,1) 8. evalaxreturnin(A,B,C) -> evalaxstop(A,B,C) [1 + B + -1*C >= 0 && 2 + A + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (?,1) Signature: {(evalaxbb1in,3) ;(evalaxbb2in,3) ;(evalaxbb3in,3) ;(evalaxbbin,3) ;(evalaxentryin,3) ;(evalaxreturnin,3) ;(evalaxstart,3) ;(evalaxstop,3)} Flow Graph: [0->{1},1->{2},2->{3,4},3->{5,6},4->{7},5->{8},6->{2},7->{3,4},8->{}] + Applied Processor: TrivialSCCs + Details: All trivial SCCs of the transition graph admit timebound 1. * Step 2: AddSinks WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalaxstart(A,B,C) -> evalaxentryin(A,B,C) True (1,1) 1. evalaxentryin(A,B,C) -> evalaxbbin(0,B,C) True (1,1) 2. evalaxbbin(A,B,C) -> evalaxbb2in(A,0,C) [A >= 0] (?,1) 3. evalaxbb2in(A,B,C) -> evalaxbb3in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C] (?,1) 4. evalaxbb2in(A,B,C) -> evalaxbb1in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && C >= 2 + B] (?,1) 5. evalaxbb3in(A,B,C) -> evalaxreturnin(A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 2 + A >= C] (1,1) 6. evalaxbb3in(A,B,C) -> evalaxbbin(1 + A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C && C >= 3 + A] (?,1) 7. evalaxbb1in(A,B,C) -> evalaxbb2in(A,1 + B,C) [-2 + C >= 0 && -2 + B + C >= 0 && -2 + -1*B + C >= 0 && -2 + A + C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (?,1) 8. evalaxreturnin(A,B,C) -> evalaxstop(A,B,C) [1 + B + -1*C >= 0 && 2 + A + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (1,1) Signature: {(evalaxbb1in,3) ;(evalaxbb2in,3) ;(evalaxbb3in,3) ;(evalaxbbin,3) ;(evalaxentryin,3) ;(evalaxreturnin,3) ;(evalaxstart,3) ;(evalaxstop,3)} Flow Graph: [0->{1},1->{2},2->{3,4},3->{5,6},4->{7},5->{8},6->{2},7->{3,4},8->{}] + Applied Processor: AddSinks + Details: () * Step 3: LooptreeTransformer WORST_CASE(?,POLY) + Considered Problem: Rules: 0. evalaxstart(A,B,C) -> evalaxentryin(A,B,C) True (1,1) 1. evalaxentryin(A,B,C) -> evalaxbbin(0,B,C) True (?,1) 2. evalaxbbin(A,B,C) -> evalaxbb2in(A,0,C) [A >= 0] (?,1) 3. evalaxbb2in(A,B,C) -> evalaxbb3in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C] (?,1) 4. evalaxbb2in(A,B,C) -> evalaxbb1in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && C >= 2 + B] (?,1) 5. evalaxbb3in(A,B,C) -> evalaxreturnin(A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 2 + A >= C] (?,1) 6. evalaxbb3in(A,B,C) -> evalaxbbin(1 + A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C && C >= 3 + A] (?,1) 7. evalaxbb1in(A,B,C) -> evalaxbb2in(A,1 + B,C) [-2 + C >= 0 && -2 + B + C >= 0 && -2 + -1*B + C >= 0 && -2 + A + C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (?,1) 8. evalaxreturnin(A,B,C) -> evalaxstop(A,B,C) [1 + B + -1*C >= 0 && 2 + A + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (?,1) 9. evalaxreturnin(A,B,C) -> exitus616(A,B,C) True (?,1) Signature: {(evalaxbb1in,3) ;(evalaxbb2in,3) ;(evalaxbb3in,3) ;(evalaxbbin,3) ;(evalaxentryin,3) ;(evalaxreturnin,3) ;(evalaxstart,3) ;(evalaxstop,3) ;(exitus616,3)} Flow Graph: [0->{1},1->{2},2->{3,4},3->{5,6},4->{7},5->{8,9},6->{2},7->{3,4},8->{},9->{}] + Applied Processor: LooptreeTransformer + Details: We construct a looptree: P: [0,1,2,3,4,5,6,7,8,9] | `- p:[2,6,3,7,4] c: [6] | `- p:[4,7] c: [7] * Step 4: SizeAbstraction WORST_CASE(?,POLY) + Considered Problem: (Rules: 0. evalaxstart(A,B,C) -> evalaxentryin(A,B,C) True (1,1) 1. evalaxentryin(A,B,C) -> evalaxbbin(0,B,C) True (?,1) 2. evalaxbbin(A,B,C) -> evalaxbb2in(A,0,C) [A >= 0] (?,1) 3. evalaxbb2in(A,B,C) -> evalaxbb3in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C] (?,1) 4. evalaxbb2in(A,B,C) -> evalaxbb1in(A,B,C) [B >= 0 && A + B >= 0 && A >= 0 && C >= 2 + B] (?,1) 5. evalaxbb3in(A,B,C) -> evalaxreturnin(A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 2 + A >= C] (?,1) 6. evalaxbb3in(A,B,C) -> evalaxbbin(1 + A,B,C) [1 + B + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0 && 1 + B >= C && C >= 3 + A] (?,1) 7. evalaxbb1in(A,B,C) -> evalaxbb2in(A,1 + B,C) [-2 + C >= 0 && -2 + B + C >= 0 && -2 + -1*B + C >= 0 && -2 + A + C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (?,1) 8. evalaxreturnin(A,B,C) -> evalaxstop(A,B,C) [1 + B + -1*C >= 0 && 2 + A + -1*C >= 0 && B >= 0 && A + B >= 0 && A >= 0] (?,1) 9. evalaxreturnin(A,B,C) -> exitus616(A,B,C) True (?,1) Signature: {(evalaxbb1in,3) ;(evalaxbb2in,3) ;(evalaxbb3in,3) ;(evalaxbbin,3) ;(evalaxentryin,3) ;(evalaxreturnin,3) ;(evalaxstart,3) ;(evalaxstop,3) ;(exitus616,3)} Flow Graph: [0->{1},1->{2},2->{3,4},3->{5,6},4->{7},5->{8,9},6->{2},7->{3,4},8->{},9->{}] ,We construct a looptree: P: [0,1,2,3,4,5,6,7,8,9] | `- p:[2,6,3,7,4] c: [6] | `- p:[4,7] c: [7]) + Applied Processor: SizeAbstraction UseCFG Minimize + Details: () * Step 5: FlowAbstraction WORST_CASE(?,POLY) + Considered Problem: Program: Domain: [A,B,C,0.0,0.0.0] evalaxstart ~> evalaxentryin [A <= A, B <= B, C <= C] evalaxentryin ~> evalaxbbin [A <= 0*K, B <= B, C <= C] evalaxbbin ~> evalaxbb2in [A <= A, B <= 0*K, C <= C] evalaxbb2in ~> evalaxbb3in [A <= A, B <= B, C <= C] evalaxbb2in ~> evalaxbb1in [A <= A, B <= B, C <= C] evalaxbb3in ~> evalaxreturnin [A <= A, B <= B, C <= C] evalaxbb3in ~> evalaxbbin [A <= C, B <= B, C <= C] evalaxbb1in ~> evalaxbb2in [A <= A, B <= C, C <= C] evalaxreturnin ~> evalaxstop [A <= A, B <= B, C <= C] evalaxreturnin ~> exitus616 [A <= A, B <= B, C <= C] + Loop: [0.0 <= 2*K + A + C] evalaxbbin ~> evalaxbb2in [A <= A, B <= 0*K, C <= C] evalaxbb3in ~> evalaxbbin [A <= C, B <= B, C <= C] evalaxbb2in ~> evalaxbb3in [A <= A, B <= B, C <= C] evalaxbb1in ~> evalaxbb2in [A <= A, B <= C, C <= C] evalaxbb2in ~> evalaxbb1in [A <= A, B <= B, C <= C] + Loop: [0.0.0 <= K + B + C] evalaxbb2in ~> evalaxbb1in [A <= A, B <= B, C <= C] evalaxbb1in ~> evalaxbb2in [A <= A, B <= C, C <= C] + Applied Processor: FlowAbstraction + Details: () * Step 6: LareProcessor WORST_CASE(?,POLY) + Considered Problem: Program: Domain: [tick,huge,K,A,B,C,0.0,0.0.0] evalaxstart ~> evalaxentryin [] evalaxentryin ~> evalaxbbin [K ~=> A] evalaxbbin ~> evalaxbb2in [K ~=> B] evalaxbb2in ~> evalaxbb3in [] evalaxbb2in ~> evalaxbb1in [] evalaxbb3in ~> evalaxreturnin [] evalaxbb3in ~> evalaxbbin [C ~=> A] evalaxbb1in ~> evalaxbb2in [C ~=> B] evalaxreturnin ~> evalaxstop [] evalaxreturnin ~> exitus616 [] + Loop: [A ~+> 0.0,C ~+> 0.0,K ~*> 0.0] evalaxbbin ~> evalaxbb2in [K ~=> B] evalaxbb3in ~> evalaxbbin [C ~=> A] evalaxbb2in ~> evalaxbb3in [] evalaxbb1in ~> evalaxbb2in [C ~=> B] evalaxbb2in ~> evalaxbb1in [] + Loop: [B ~+> 0.0.0,C ~+> 0.0.0,K ~+> 0.0.0] evalaxbb2in ~> evalaxbb1in [] evalaxbb1in ~> evalaxbb2in [C ~=> B] + Applied Processor: LareProcessor + Details: evalaxstart ~> evalaxstop [C ~=> A ,C ~=> B ,K ~=> A ,K ~=> B ,C ~+> 0.0 ,C ~+> 0.0.0 ,C ~+> tick ,tick ~+> tick ,K ~+> 0.0 ,K ~+> 0.0.0 ,K ~+> tick ,C ~*> 0.0.0 ,C ~*> tick ,K ~*> 0.0 ,K ~*> 0.0.0 ,K ~*> tick] evalaxstart ~> exitus616 [C ~=> A ,C ~=> B ,K ~=> A ,K ~=> B ,C ~+> 0.0 ,C ~+> 0.0.0 ,C ~+> tick ,tick ~+> tick ,K ~+> 0.0 ,K ~+> 0.0.0 ,K ~+> tick ,C ~*> 0.0.0 ,C ~*> tick ,K ~*> 0.0 ,K ~*> 0.0.0 ,K ~*> tick] + evalaxbb3in> [C ~=> A ,C ~=> B ,K ~=> B ,A ~+> 0.0 ,A ~+> tick ,C ~+> 0.0 ,C ~+> 0.0.0 ,C ~+> tick ,tick ~+> tick ,K ~+> 0.0.0 ,K ~+> tick ,A ~*> tick ,C ~*> 0.0.0 ,C ~*> tick ,K ~*> 0.0 ,K ~*> 0.0.0 ,K ~*> tick] + evalaxbb2in> [C ~=> B ,B ~+> 0.0.0 ,B ~+> tick ,C ~+> 0.0.0 ,C ~+> tick ,tick ~+> tick ,K ~+> 0.0.0 ,K ~+> tick] YES(?,POLY)