YES(?,O(n^1)) * Step 1: TrivialSCCs WORST_CASE(?,O(n^1)) + Considered Problem: Rules: 0. evalndecrstart(A) -> evalndecrentryin(A) True (1,1) 1. evalndecrentryin(A) -> evalndecrbb1in(-1 + A) True (?,1) 2. evalndecrbb1in(A) -> evalndecrbbin(A) [A >= 2] (?,1) 3. evalndecrbb1in(A) -> evalndecrreturnin(A) [1 >= A] (?,1) 4. evalndecrbbin(A) -> evalndecrbb1in(-1 + A) [-2 + A >= 0] (?,1) 5. evalndecrreturnin(A) -> evalndecrstop(A) [1 + -1*A >= 0] (?,1) Signature: {(evalndecrbb1in,1) ;(evalndecrbbin,1) ;(evalndecrentryin,1) ;(evalndecrreturnin,1) ;(evalndecrstart,1) ;(evalndecrstop,1)} Flow Graph: [0->{1},1->{2,3},2->{4},3->{5},4->{2,3},5->{}] + 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. evalndecrstart(A) -> evalndecrentryin(A) True (1,1) 1. evalndecrentryin(A) -> evalndecrbb1in(-1 + A) True (1,1) 2. evalndecrbb1in(A) -> evalndecrbbin(A) [A >= 2] (?,1) 3. evalndecrbb1in(A) -> evalndecrreturnin(A) [1 >= A] (1,1) 4. evalndecrbbin(A) -> evalndecrbb1in(-1 + A) [-2 + A >= 0] (?,1) 5. evalndecrreturnin(A) -> evalndecrstop(A) [1 + -1*A >= 0] (1,1) Signature: {(evalndecrbb1in,1) ;(evalndecrbbin,1) ;(evalndecrentryin,1) ;(evalndecrreturnin,1) ;(evalndecrstart,1) ;(evalndecrstop,1)} Flow Graph: [0->{1},1->{2,3},2->{4},3->{5},4->{2,3},5->{}] + Applied Processor: PolyRank {useFarkas = True, withSizebounds = [], shape = Linear} + Details: We apply a polynomial interpretation of shape linear: p(evalndecrbb1in) = -1 + x1 p(evalndecrbbin) = -1 + x1 p(evalndecrentryin) = -2 + x1 p(evalndecrreturnin) = -1 + x1 p(evalndecrstart) = -2 + x1 p(evalndecrstop) = -1 + x1 Following rules are strictly oriented: [-2 + A >= 0] ==> evalndecrbbin(A) = -1 + A > -2 + A = evalndecrbb1in(-1 + A) Following rules are weakly oriented: True ==> evalndecrstart(A) = -2 + A >= -2 + A = evalndecrentryin(A) True ==> evalndecrentryin(A) = -2 + A >= -2 + A = evalndecrbb1in(-1 + A) [A >= 2] ==> evalndecrbb1in(A) = -1 + A >= -1 + A = evalndecrbbin(A) [1 >= A] ==> evalndecrbb1in(A) = -1 + A >= -1 + A = evalndecrreturnin(A) [1 + -1*A >= 0] ==> evalndecrreturnin(A) = -1 + A >= -1 + A = evalndecrstop(A) * Step 3: KnowledgePropagation WORST_CASE(?,O(n^1)) + Considered Problem: Rules: 0. evalndecrstart(A) -> evalndecrentryin(A) True (1,1) 1. evalndecrentryin(A) -> evalndecrbb1in(-1 + A) True (1,1) 2. evalndecrbb1in(A) -> evalndecrbbin(A) [A >= 2] (?,1) 3. evalndecrbb1in(A) -> evalndecrreturnin(A) [1 >= A] (1,1) 4. evalndecrbbin(A) -> evalndecrbb1in(-1 + A) [-2 + A >= 0] (2 + A,1) 5. evalndecrreturnin(A) -> evalndecrstop(A) [1 + -1*A >= 0] (1,1) Signature: {(evalndecrbb1in,1) ;(evalndecrbbin,1) ;(evalndecrentryin,1) ;(evalndecrreturnin,1) ;(evalndecrstart,1) ;(evalndecrstop,1)} Flow Graph: [0->{1},1->{2,3},2->{4},3->{5},4->{2,3},5->{}] + Applied Processor: KnowledgePropagation + Details: We propagate bounds from predecessors. * Step 4: PolyRank WORST_CASE(?,O(n^1)) + Considered Problem: Rules: 0. evalndecrstart(A) -> evalndecrentryin(A) True (1,1) 1. evalndecrentryin(A) -> evalndecrbb1in(-1 + A) True (1,1) 2. evalndecrbb1in(A) -> evalndecrbbin(A) [A >= 2] (3 + A,1) 3. evalndecrbb1in(A) -> evalndecrreturnin(A) [1 >= A] (1,1) 4. evalndecrbbin(A) -> evalndecrbb1in(-1 + A) [-2 + A >= 0] (2 + A,1) 5. evalndecrreturnin(A) -> evalndecrstop(A) [1 + -1*A >= 0] (1,1) Signature: {(evalndecrbb1in,1) ;(evalndecrbbin,1) ;(evalndecrentryin,1) ;(evalndecrreturnin,1) ;(evalndecrstart,1) ;(evalndecrstop,1)} Flow Graph: [0->{1},1->{2,3},2->{4},3->{5},4->{2,3},5->{}] + Applied Processor: PolyRank {useFarkas = True, withSizebounds = [], shape = Linear} + Details: The problem is already solved. YES(?,O(n^1))