YES Solver Timeout: 4 Global Timeout: 300 No parsing errors! Init Location: 0 Transitions: 0) /\ (arg2 > 0) /\ ((((2 * undef5) + 1) - (2 * undef6)) = 1) /\ (undef5 > ~(1)) /\ (arg1 > 0) /\ (undef7 > 2), par{arg3 -> undef3, arg4 -> undef4}> 0) /\ (arg2 > 0) /\ ((((2 * undef12) + 1) - (2 * undef13)) = 1) /\ (undef12 > ~(1)) /\ (arg1 > 0) /\ (undef8 > 2) /\ ((((2 * undef12) + 1) - (2 * undef13)) < 2) /\ ((((2 * undef12) + 1) - (2 * undef13)) >= 0), par{arg1 -> undef8, arg2 -> 0, arg3 -> ((2 * undef12) + 1), arg4 -> undef11}> 2) /\ (undef14 > 2) /\ ((arg3 + 4) <= arg1), par{arg1 -> undef14, arg3 -> 0, arg4 -> arg3}> = undef18) /\ (arg3 > 2) /\ (arg1 > 2) /\ (undef18 > 2) /\ (arg1 >= (arg4 + 4)), par{arg1 -> undef18, arg2 -> (arg2 + 1), arg3 -> arg4, arg4 -> undef21}> arg2) /\ (arg3 < 3) /\ (undef26 > arg3) /\ (undef26 > ~(1)) /\ (undef22 <= arg1) /\ (arg1 > 2) /\ (undef22 > 2) /\ ((arg4 + 4) <= arg1), par{arg1 -> undef22, arg3 -> (arg3 + 1)}> 1) /\ (arg2 > 2) /\ (arg3 > undef31) /\ (arg3 > undef32) /\ (undef33 <= arg1) /\ (arg1 > 2) /\ (undef33 > 2) /\ ((arg3 + 4) <= arg1), par{arg4 -> undef30}> 1) /\ (arg2 > 2) /\ (arg3 > undef38) /\ (arg3 > undef39) /\ (undef34 <= arg1) /\ (arg1 > 2) /\ (undef34 > 2) /\ ((arg3 + 4) <= arg1) /\ ((arg3 - (2 * undef38)) >= 0) /\ ((arg3 - (2 * undef38)) < 2) /\ ((arg3 - (2 * undef39)) < 2) /\ ((arg3 - (2 * undef39)) >= 0), par{arg1 -> undef34, arg2 -> 0, arg4 -> undef37}> arg2) /\ (arg1 > 2) /\ (undef40 > 2) /\ ((arg3 + 4) <= arg1), par{arg1 -> undef40, arg3 -> 0, arg4 -> arg3}> 2) /\ (undef44 > 2) /\ ((arg4 + 4) <= arg1), par{arg1 -> undef44, arg2 -> (arg2 + 1), arg3 -> arg4, arg4 -> undef47}> arg3) /\ (arg1 > 2) /\ (undef48 > 2) /\ ((arg4 + 4) <= arg1), par{arg1 -> undef48, arg3 -> (arg3 + 1)}> undef52, arg2 -> undef53, arg3 -> undef54, arg4 -> undef55}> Fresh variables: undef3, undef4, undef5, undef6, undef7, undef8, undef11, undef12, undef13, undef14, undef18, undef21, undef22, undef26, undef30, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef40, undef44, undef47, undef48, undef52, undef53, undef54, undef55, Undef variables: undef3, undef4, undef5, undef6, undef7, undef8, undef11, undef12, undef13, undef14, undef18, undef21, undef22, undef26, undef30, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef40, undef44, undef47, undef48, undef52, undef53, undef54, undef55, Abstraction variables: Exit nodes: Accepting locations: Asserts: Preprocessed LLVMGraph Init Location: 0 Transitions: 0) /\ (undef53 > 0) /\ ((((2 * undef5) + 1) - (2 * undef6)) = 1) /\ (undef5 > ~(1)) /\ (undef52 > 0) /\ (undef7 > 2) /\ ((2 * undef12) > 0) /\ (undef53 > 0) /\ ((((2 * undef12) + 1) - (2 * undef13)) = 1) /\ (undef12 > ~(1)) /\ (undef52 > 0) /\ (undef8 > 2) /\ ((((2 * undef12) + 1) - (2 * undef13)) < 2) /\ ((((2 * undef12) + 1) - (2 * undef13)) >= 0) /\ (undef14 <= undef8) /\ (0 < 3) /\ (undef8 > 2) /\ (undef14 > 2) /\ ((((2 * undef12) + 1) + 4) <= undef8), par{arg1 -> undef14}> = undef18) /\ (arg3 > 2) /\ (arg1 > 2) /\ (undef18 > 2) /\ (arg1 >= (arg4 + 4)) /\ (undef14 <= undef18) /\ ((arg2 + 1) < 3) /\ (undef18 > 2) /\ (undef14 > 2) /\ ((arg4 + 4) <= undef18), par{arg1 -> undef14, arg2 -> (arg2 + 1), arg3 -> 0, arg4 -> arg4}> = undef18) /\ (arg3 > 2) /\ (arg1 > 2) /\ (undef18 > 2) /\ (arg1 >= (arg4 + 4)) /\ (arg4 > 1) /\ ((arg2 + 1) > 2) /\ (arg4 > undef31) /\ (arg4 > undef32) /\ (undef33 <= undef18) /\ (undef18 > 2) /\ (undef33 > 2) /\ ((arg4 + 4) <= undef18) /\ (arg4 > 1) /\ ((arg2 + 1) > 2) /\ (arg4 > undef38) /\ (arg4 > undef39) /\ (undef34 <= undef18) /\ (undef18 > 2) /\ (undef34 > 2) /\ ((arg4 + 4) <= undef18) /\ ((arg4 - (2 * undef38)) >= 0) /\ ((arg4 - (2 * undef38)) < 2) /\ ((arg4 - (2 * undef39)) < 2) /\ ((arg4 - (2 * undef39)) >= 0) /\ (undef40 <= undef34) /\ (arg4 > 0) /\ (undef34 > 2) /\ (undef40 > 2) /\ ((arg4 + 4) <= undef34), par{arg1 -> undef40, arg2 -> 0, arg3 -> 0, arg4 -> arg4}> arg2) /\ (arg3 < 3) /\ (undef26 > arg3) /\ (undef26 > ~(1)) /\ (undef22 <= arg1) /\ (arg1 > 2) /\ (undef22 > 2) /\ ((arg4 + 4) <= arg1), par{arg1 -> undef22, arg3 -> (arg3 + 1)}> 2) /\ (undef44 > 2) /\ ((arg4 + 4) <= arg1) /\ (undef40 <= undef44) /\ (arg4 > (arg2 + 1)) /\ (undef44 > 2) /\ (undef40 > 2) /\ ((arg4 + 4) <= undef44), par{arg1 -> undef40, arg2 -> (arg2 + 1), arg3 -> 0, arg4 -> arg4}> arg3) /\ (arg1 > 2) /\ (undef48 > 2) /\ ((arg4 + 4) <= arg1), par{arg1 -> undef48, arg3 -> (arg3 + 1)}> Fresh variables: undef3, undef4, undef5, undef6, undef7, undef8, undef11, undef12, undef13, undef14, undef18, undef21, undef22, undef26, undef30, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef40, undef44, undef47, undef48, undef52, undef53, undef54, undef55, Undef variables: undef3, undef4, undef5, undef6, undef7, undef8, undef11, undef12, undef13, undef14, undef18, undef21, undef22, undef26, undef30, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef40, undef44, undef47, undef48, undef52, undef53, undef54, undef55, Abstraction variables: Exit nodes: Accepting locations: Asserts: ************************************************************* ******************************************************************************************* *********************** WORKING TRANSITION SYSTEM (DAG) *********************** ******************************************************************************************* Init Location: 0 Graph 0: Transitions: Variables: Graph 1: Transitions: undef14, arg2 -> 1 + arg2, arg3 -> 0, rest remain the same}> undef22, arg3 -> 1 + arg3, rest remain the same}> Variables: arg1, arg2, arg3, arg4 Graph 2: Transitions: undef40, arg2 -> 1 + arg2, arg3 -> 0, rest remain the same}> undef48, arg3 -> 1 + arg3, rest remain the same}> Variables: arg1, arg2, arg3, arg4 Precedence: Graph 0 Graph 1 undef14, rest remain the same}> Graph 2 undef40, arg2 -> 0, arg3 -> 0, rest remain the same}> Map Locations to Subgraph: ( 0 , 0 ) ( 4 , 1 ) ( 7 , 2 ) ******************************************************************************************* ******************************** CHECKING ASSERTIONS ******************************** ******************************************************************************************* Proving termination of subgraph 0 Proving termination of subgraph 1 Checking unfeasibility... Time used: 0.011469 Checking conditional termination of SCC {l4}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.001520s Ranking function: -2 + arg1 - arg2 New Graphs: Transitions: undef22, arg3 -> 1 + arg3, rest remain the same}> Variables: arg1, arg2, arg3, arg4 Checking conditional termination of SCC {l4}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.000677s Ranking function: 2 - arg3 New Graphs: Proving termination of subgraph 2 Checking unfeasibility... Time used: 0.011575 Checking conditional termination of SCC {l7}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.001360s Ranking function: -12 + (7 / 3)*arg1 + (~(4) / 3)*arg2 - arg4 New Graphs: Transitions: undef48, arg3 -> 1 + arg3, rest remain the same}> Variables: arg1, arg3, arg4 Checking conditional termination of SCC {l7}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.000546s Ranking function: -1 - arg3 + arg4 New Graphs: Program Terminates