YES(?,O(n^1)) * Step 1: TrivialSCCs WORST_CASE(?,O(n^1)) + Considered Problem: Rules: 0. evalterminatestart(A,B,C) -> evalterminateentryin(A,B,C) True (1,1) 1. evalterminateentryin(A,B,C) -> evalterminatebb1in(B,A,C) True (?,1) 2. evalterminatebb1in(A,B,C) -> evalterminatebbin(A,B,C) [100 >= B && A >= C] (?,1) 3. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [B >= 101] (?,1) 4. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [C >= 1 + A] (?,1) 5. evalterminatebbin(A,B,C) -> evalterminatebb1in(-1 + A,C,1 + B) [A + -1*C >= 0 && 100 + -1*B >= 0] (?,1) 6. evalterminatereturnin(A,B,C) -> evalterminatestop(A,B,C) True (?,1) Signature: {(evalterminatebb1in,3) ;(evalterminatebbin,3) ;(evalterminateentryin,3) ;(evalterminatereturnin,3) ;(evalterminatestart,3) ;(evalterminatestop,3)} Flow Graph: [0->{1},1->{2,3,4},2->{5},3->{6},4->{6},5->{2,3,4},6->{}] + Applied Processor: TrivialSCCs + Details: All trivial SCCs of the transition graph admit timebound 1. * Step 2: PolyRank WORST_CASE(?,O(n^1)) + Considered Problem: Rules: 0. evalterminatestart(A,B,C) -> evalterminateentryin(A,B,C) True (1,1) 1. evalterminateentryin(A,B,C) -> evalterminatebb1in(B,A,C) True (1,1) 2. evalterminatebb1in(A,B,C) -> evalterminatebbin(A,B,C) [100 >= B && A >= C] (?,1) 3. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [B >= 101] (1,1) 4. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [C >= 1 + A] (1,1) 5. evalterminatebbin(A,B,C) -> evalterminatebb1in(-1 + A,C,1 + B) [A + -1*C >= 0 && 100 + -1*B >= 0] (?,1) 6. evalterminatereturnin(A,B,C) -> evalterminatestop(A,B,C) True (1,1) Signature: {(evalterminatebb1in,3) ;(evalterminatebbin,3) ;(evalterminateentryin,3) ;(evalterminatereturnin,3) ;(evalterminatestart,3) ;(evalterminatestop,3)} Flow Graph: [0->{1},1->{2,3,4},2->{5},3->{6},4->{6},5->{2,3,4},6->{}] + Applied Processor: PolyRank {useFarkas = True, withSizebounds = [], shape = Linear} + Details: We apply a polynomial interpretation of shape linear: p(evalterminatebb1in) = 101 + x1 + -1*x2 + -1*x3 p(evalterminatebbin) = 101 + x1 + -1*x2 + -1*x3 p(evalterminateentryin) = 101 + -1*x1 + x2 + -1*x3 p(evalterminatereturnin) = x1 + -1*x2 + -1*x3 p(evalterminatestart) = 101 + -1*x1 + x2 + -1*x3 p(evalterminatestop) = x1 + -1*x2 + -1*x3 Following rules are strictly oriented: [A + -1*C >= 0 && 100 + -1*B >= 0] ==> evalterminatebbin(A,B,C) = 101 + A + -1*B + -1*C > 99 + A + -1*B + -1*C = evalterminatebb1in(-1 + A,C,1 + B) Following rules are weakly oriented: True ==> evalterminatestart(A,B,C) = 101 + -1*A + B + -1*C >= 101 + -1*A + B + -1*C = evalterminateentryin(A,B,C) True ==> evalterminateentryin(A,B,C) = 101 + -1*A + B + -1*C >= 101 + -1*A + B + -1*C = evalterminatebb1in(B,A,C) [100 >= B && A >= C] ==> evalterminatebb1in(A,B,C) = 101 + A + -1*B + -1*C >= 101 + A + -1*B + -1*C = evalterminatebbin(A,B,C) [B >= 101] ==> evalterminatebb1in(A,B,C) = 101 + A + -1*B + -1*C >= A + -1*B + -1*C = evalterminatereturnin(A,B,C) [C >= 1 + A] ==> evalterminatebb1in(A,B,C) = 101 + A + -1*B + -1*C >= A + -1*B + -1*C = evalterminatereturnin(A,B,C) True ==> evalterminatereturnin(A,B,C) = A + -1*B + -1*C >= A + -1*B + -1*C = evalterminatestop(A,B,C) * Step 3: KnowledgePropagation WORST_CASE(?,O(n^1)) + Considered Problem: Rules: 0. evalterminatestart(A,B,C) -> evalterminateentryin(A,B,C) True (1,1) 1. evalterminateentryin(A,B,C) -> evalterminatebb1in(B,A,C) True (1,1) 2. evalterminatebb1in(A,B,C) -> evalterminatebbin(A,B,C) [100 >= B && A >= C] (?,1) 3. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [B >= 101] (1,1) 4. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [C >= 1 + A] (1,1) 5. evalterminatebbin(A,B,C) -> evalterminatebb1in(-1 + A,C,1 + B) [A + -1*C >= 0 && 100 + -1*B >= 0] (101 + A + B + C,1) 6. evalterminatereturnin(A,B,C) -> evalterminatestop(A,B,C) True (1,1) Signature: {(evalterminatebb1in,3) ;(evalterminatebbin,3) ;(evalterminateentryin,3) ;(evalterminatereturnin,3) ;(evalterminatestart,3) ;(evalterminatestop,3)} Flow Graph: [0->{1},1->{2,3,4},2->{5},3->{6},4->{6},5->{2,3,4},6->{}] + Applied Processor: KnowledgePropagation + Details: We propagate bounds from predecessors. * Step 4: PolyRank WORST_CASE(?,O(n^1)) + Considered Problem: Rules: 0. evalterminatestart(A,B,C) -> evalterminateentryin(A,B,C) True (1,1) 1. evalterminateentryin(A,B,C) -> evalterminatebb1in(B,A,C) True (1,1) 2. evalterminatebb1in(A,B,C) -> evalterminatebbin(A,B,C) [100 >= B && A >= C] (102 + A + B + C,1) 3. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [B >= 101] (1,1) 4. evalterminatebb1in(A,B,C) -> evalterminatereturnin(A,B,C) [C >= 1 + A] (1,1) 5. evalterminatebbin(A,B,C) -> evalterminatebb1in(-1 + A,C,1 + B) [A + -1*C >= 0 && 100 + -1*B >= 0] (101 + A + B + C,1) 6. evalterminatereturnin(A,B,C) -> evalterminatestop(A,B,C) True (1,1) Signature: {(evalterminatebb1in,3) ;(evalterminatebbin,3) ;(evalterminateentryin,3) ;(evalterminatereturnin,3) ;(evalterminatestart,3) ;(evalterminatestop,3)} Flow Graph: [0->{1},1->{2,3,4},2->{5},3->{6},4->{6},5->{2,3,4},6->{}] + Applied Processor: PolyRank {useFarkas = True, withSizebounds = [], shape = Linear} + Details: The problem is already solved. YES(?,O(n^1))