YES Solver Timeout: 4 Global Timeout: 300 No parsing errors! Init Location: 0 Transitions: 0) /\ (undef1 > 0) /\ (undef2 > 2), par{arg1 -> undef1, arg2 -> undef2, arg3 -> undef3, arg4 -> undef4, arg5 -> undef5}> = undef6) /\ (arg2 >= (undef6 + 2)) /\ (arg2 >= undef7) /\ (arg1 > 0) /\ (arg2 > 2) /\ (undef6 > 0) /\ (undef7 > 2) /\ (arg2 >= (arg4 + 2)), par{arg1 -> undef6, arg2 -> undef7, arg5 -> undef10}> 0) /\ (arg2 > ~(1)) /\ ((undef11 - 2) <= arg1) /\ ((undef12 - 2) <= arg1) /\ (arg1 > 0) /\ (undef11 > 2) /\ (undef12 > 2), par{arg1 -> undef11, arg2 -> undef12, arg3 -> undef13, arg4 -> 1, arg5 -> undef15}> ~(1)) /\ (arg3 > 0) /\ (undef16 <= arg1) /\ ((undef17 + 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef16 > 2) /\ (undef17 > 0), par{arg1 -> undef16, arg2 -> undef17, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1), arg5 -> undef20}> 0) /\ (undef26 > 0) /\ (arg4 > ~(1)) /\ (undef21 <= arg1) /\ ((undef22 + 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef21 > 2) /\ (undef22 > 0), par{arg1 -> undef21, arg2 -> undef22, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1), arg5 -> undef25}> 0) /\ (undef32 > 0) /\ (arg4 > ~(1)) /\ (arg1 > 2) /\ (arg2 > 1) /\ (undef27 > 2) /\ (undef28 > 2), par{arg1 -> undef27, arg2 -> undef28, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1), arg5 -> undef31}> ~(1)) /\ (arg3 > 0) /\ (arg1 > 2) /\ (arg2 > 1) /\ (undef33 > 2) /\ (undef34 > 2), par{arg1 -> undef33, arg2 -> undef34, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1), arg5 -> undef37}> ~(1)) /\ (arg3 > 0) /\ ((undef38 - 2) <= arg1) /\ ((undef38 - 2) <= arg2) /\ ((undef39 - 2) <= arg1) /\ ((undef39 - 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef38 > 4) /\ (undef39 > 4), par{arg1 -> undef38, arg2 -> undef39, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1), arg5 -> undef42}> 0) /\ (undef48 > 0) /\ (arg4 > ~(1)) /\ ((undef43 - 2) <= arg1) /\ ((undef43 - 2) <= arg2) /\ ((undef44 - 2) <= arg1) /\ ((undef44 - 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef43 > 4) /\ (undef44 > 4), par{arg1 -> undef43, arg2 -> undef44, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1), arg5 -> undef47}> 0) /\ ((undef50 + 1) <= arg1) /\ (arg1 > 0) /\ (undef49 > ~(1)) /\ (undef50 > ~(1)), par{arg1 -> undef49, arg2 -> undef50, arg3 -> arg2, arg4 -> 1, arg5 -> undef53}> 0) /\ (undef55 <= arg2) /\ (arg1 > 0) /\ (arg2 > 2) /\ (undef54 > 2) /\ (undef55 > 2) /\ ((arg4 + 2) <= arg2), par{arg1 -> undef54, arg2 -> undef55, arg3 -> undef56, arg4 -> arg3, arg5 -> undef58}> ~(1)) /\ (undef64 > 41) /\ (arg4 > ~(1)) /\ (undef59 <= arg1) /\ (undef59 <= arg2) /\ ((undef60 + 1) <= arg1) /\ ((undef60 + 1) <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef59 > 0) /\ (undef60 > ~(1)) /\ ((undef63 + 2) <= arg1) /\ ((undef63 + 2) <= arg2), par{arg1 -> undef59, arg2 -> undef60, arg4 -> (arg4 + 1), arg5 -> undef63}> ~(1)) /\ (arg4 > ~(1)) /\ (undef70 < 42) /\ (undef70 > ~(1)) /\ (undef65 <= arg1) /\ (undef65 <= arg2) /\ ((undef66 + 2) <= arg1) /\ ((undef66 + 2) <= arg2) /\ (arg1 > 1) /\ (arg2 > 1) /\ (undef65 > 1) /\ (undef66 > ~(1)) /\ ((undef69 + 2) <= arg1) /\ ((undef69 + 2) <= arg2), par{arg1 -> undef65, arg2 -> undef66, arg4 -> (arg4 + 1), arg5 -> undef69}> ~(1)) /\ (arg4 > ~(1)) /\ (undef76 < 42) /\ (undef76 > ~(1)) /\ ((undef71 + 2) <= arg1) /\ ((undef71 + 2) <= arg2) /\ ((undef72 + 2) <= arg1) /\ ((undef72 + 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef71 > 0) /\ (undef72 > 0), par{arg1 -> undef71, arg2 -> undef72, arg4 -> (arg4 + 1), arg5 -> undef75}> 2) /\ (arg2 > 0) /\ (undef77 > 0) /\ (undef78 > 0) /\ ((arg5 + 2) <= arg1), par{arg1 -> undef77, arg2 -> undef78, arg5 -> undef81}> undef82, arg2 -> undef83, arg3 -> undef84, arg4 -> undef85, arg5 -> undef86}> Fresh variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef10, undef11, undef12, undef13, undef15, undef16, undef17, undef20, undef21, undef22, undef25, undef26, undef27, undef28, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef42, undef43, undef44, undef47, undef48, undef49, undef50, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef63, undef64, undef65, undef66, undef69, undef70, undef71, undef72, undef75, undef76, undef77, undef78, undef81, undef82, undef83, undef84, undef85, undef86, Undef variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef10, undef11, undef12, undef13, undef15, undef16, undef17, undef20, undef21, undef22, undef25, undef26, undef27, undef28, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef42, undef43, undef44, undef47, undef48, undef49, undef50, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef63, undef64, undef65, undef66, undef69, undef70, undef71, undef72, undef75, undef76, undef77, undef78, undef81, undef82, undef83, undef84, undef85, undef86, Abstraction variables: Exit nodes: Accepting locations: Asserts: Preprocessed LLVMGraph Init Location: 0 Transitions: 0) /\ (undef1 > 0) /\ (undef2 > 2) /\ (undef54 <= undef2) /\ (undef56 > 0) /\ (undef55 <= undef2) /\ (undef1 > 0) /\ (undef2 > 2) /\ (undef54 > 2) /\ (undef55 > 2) /\ ((undef4 + 2) <= undef2), par{arg1 -> undef54, arg2 -> undef55, arg3 -> undef56, arg4 -> undef3}> 0) /\ (undef83 > ~(1)) /\ ((undef11 - 2) <= undef82) /\ ((undef12 - 2) <= undef82) /\ (undef82 > 0) /\ (undef11 > 2) /\ (undef12 > 2), par{arg1 -> undef11, arg2 -> undef12, arg3 -> undef13, arg4 -> 1}> 0) /\ ((undef50 + 1) <= undef82) /\ (undef82 > 0) /\ (undef49 > ~(1)) /\ (undef50 > ~(1)), par{arg1 -> undef49, arg2 -> undef50, arg3 -> undef83, arg4 -> 1}> ~(1)) /\ (arg3 > 0) /\ (undef16 <= arg1) /\ ((undef17 + 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef16 > 2) /\ (undef17 > 0), par{arg1 -> undef16, arg2 -> undef17, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1)}> 0) /\ (undef26 > 0) /\ (arg4 > ~(1)) /\ (undef21 <= arg1) /\ ((undef22 + 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef21 > 2) /\ (undef22 > 0), par{arg1 -> undef21, arg2 -> undef22, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1)}> 0) /\ (undef32 > 0) /\ (arg4 > ~(1)) /\ (arg1 > 2) /\ (arg2 > 1) /\ (undef27 > 2) /\ (undef28 > 2), par{arg1 -> undef27, arg2 -> undef28, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1)}> ~(1)) /\ (arg3 > 0) /\ (arg1 > 2) /\ (arg2 > 1) /\ (undef33 > 2) /\ (undef34 > 2), par{arg1 -> undef33, arg2 -> undef34, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1)}> ~(1)) /\ (arg3 > 0) /\ ((undef38 - 2) <= arg1) /\ ((undef38 - 2) <= arg2) /\ ((undef39 - 2) <= arg1) /\ ((undef39 - 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef38 > 4) /\ (undef39 > 4), par{arg1 -> undef38, arg2 -> undef39, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1)}> 0) /\ (undef48 > 0) /\ (arg4 > ~(1)) /\ ((undef43 - 2) <= arg1) /\ ((undef43 - 2) <= arg2) /\ ((undef44 - 2) <= arg1) /\ ((undef44 - 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef43 > 4) /\ (undef44 > 4), par{arg1 -> undef43, arg2 -> undef44, arg3 -> (arg3 - 1), arg4 -> (arg4 + 1)}> ~(1)) /\ (undef64 > 41) /\ (arg4 > ~(1)) /\ (undef59 <= arg1) /\ (undef59 <= arg2) /\ ((undef60 + 1) <= arg1) /\ ((undef60 + 1) <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef59 > 0) /\ (undef60 > ~(1)) /\ ((undef63 + 2) <= arg1) /\ ((undef63 + 2) <= arg2) /\ ((undef77 + 2) <= undef59) /\ (undef77 <= undef60) /\ ((undef78 + 2) <= undef59) /\ (undef78 <= undef60) /\ (undef59 > 2) /\ (undef60 > 0) /\ (undef77 > 0) /\ (undef78 > 0) /\ ((undef63 + 2) <= undef59), par{arg1 -> undef77, arg2 -> undef78, arg4 -> (arg4 + 1)}> ~(1)) /\ (arg4 > ~(1)) /\ (undef70 < 42) /\ (undef70 > ~(1)) /\ (undef65 <= arg1) /\ (undef65 <= arg2) /\ ((undef66 + 2) <= arg1) /\ ((undef66 + 2) <= arg2) /\ (arg1 > 1) /\ (arg2 > 1) /\ (undef65 > 1) /\ (undef66 > ~(1)) /\ ((undef69 + 2) <= arg1) /\ ((undef69 + 2) <= arg2) /\ ((undef77 + 2) <= undef65) /\ (undef77 <= undef66) /\ ((undef78 + 2) <= undef65) /\ (undef78 <= undef66) /\ (undef65 > 2) /\ (undef66 > 0) /\ (undef77 > 0) /\ (undef78 > 0) /\ ((undef69 + 2) <= undef65), par{arg1 -> undef77, arg2 -> undef78, arg4 -> (arg4 + 1)}> ~(1)) /\ (arg4 > ~(1)) /\ (undef76 < 42) /\ (undef76 > ~(1)) /\ ((undef71 + 2) <= arg1) /\ ((undef71 + 2) <= arg2) /\ ((undef72 + 2) <= arg1) /\ ((undef72 + 2) <= arg2) /\ (arg1 > 2) /\ (arg2 > 2) /\ (undef71 > 0) /\ (undef72 > 0), par{arg1 -> undef71, arg2 -> undef72, arg4 -> (arg4 + 1)}> Fresh variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef10, undef11, undef12, undef13, undef15, undef16, undef17, undef20, undef21, undef22, undef25, undef26, undef27, undef28, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef42, undef43, undef44, undef47, undef48, undef49, undef50, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef63, undef64, undef65, undef66, undef69, undef70, undef71, undef72, undef75, undef76, undef77, undef78, undef81, undef82, undef83, undef84, undef85, undef86, Undef variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef10, undef11, undef12, undef13, undef15, undef16, undef17, undef20, undef21, undef22, undef25, undef26, undef27, undef28, undef31, undef32, undef33, undef34, undef37, undef38, undef39, undef42, undef43, undef44, undef47, undef48, undef49, undef50, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef63, undef64, undef65, undef66, undef69, undef70, undef71, undef72, undef75, undef76, undef77, undef78, undef81, undef82, undef83, undef84, undef85, undef86, Abstraction variables: Exit nodes: Accepting locations: Asserts: ************************************************************* ******************************************************************************************* *********************** WORKING TRANSITION SYSTEM (DAG) *********************** ******************************************************************************************* Init Location: 0 Graph 0: Transitions: Variables: Graph 1: Transitions: undef16, arg2 -> undef17, arg3 -> -1 + arg3, arg4 -> 1 + arg4, rest remain the same}> undef21, arg2 -> undef22, arg3 -> -1 + arg3, arg4 -> 1 + arg4, rest remain the same}> undef27, arg2 -> undef28, arg3 -> -1 + arg3, arg4 -> 1 + arg4, rest remain the same}> undef33, arg2 -> undef34, arg3 -> -1 + arg3, arg4 -> 1 + arg4, rest remain the same}> undef38, arg2 -> undef39, arg3 -> -1 + arg3, arg4 -> 1 + arg4, rest remain the same}> undef43, arg2 -> undef44, arg3 -> -1 + arg3, arg4 -> 1 + arg4, rest remain the same}> Variables: arg1, arg2, arg3, arg4 Graph 2: Transitions: undef77, arg2 -> undef78, arg4 -> 1 + arg4, rest remain the same}> undef77, arg2 -> undef78, arg4 -> 1 + arg4, rest remain the same}> undef71, arg2 -> undef72, arg4 -> 1 + arg4, rest remain the same}> Variables: arg1, arg2, arg3, arg4 Precedence: Graph 0 Graph 1 undef11, arg2 -> undef12, arg3 -> undef13, arg4 -> 1, rest remain the same}> Graph 2 undef54, arg2 -> undef55, arg3 -> undef56, arg4 -> undef3, rest remain the same}> undef49, arg2 -> undef50, arg3 -> undef83, arg4 -> 1, rest remain the same}> Map Locations to Subgraph: ( 0 , 0 ) ( 4 , 1 ) ( 5 , 2 ) ******************************************************************************************* ******************************** CHECKING ASSERTIONS ******************************** ******************************************************************************************* Proving termination of subgraph 0 Proving termination of subgraph 1 Checking unfeasibility... Time used: 0.019475 Checking conditional termination of SCC {l4}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.005630s Ranking function: -1 + arg3 New Graphs: Proving termination of subgraph 2 Checking unfeasibility... Time used: 0.007434 Checking conditional termination of SCC {l5}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.004916s Ranking function: -1 + (1 / 2)*arg2 New Graphs: Program Terminates