YES Solver Timeout: 4 Global Timeout: 60 No parsing errors! Init Location: 0 Transitions: ~(1)) /\ (arg2 > 0) /\ (arg1 > 0), par{arg1 -> undef1, arg3 -> 1, arg4 -> undef4, arg5 -> undef5, arg6 -> undef6}> ~(1)) /\ (arg2 > 0) /\ (undef7 <= arg1) /\ (arg1 > 0) /\ (undef7 > 0) /\ (undef8 > ~(1)), par{arg1 -> undef7, arg2 -> undef8, arg3 -> undef9, arg4 -> undef10, arg5 -> undef11, arg6 -> undef12}> 0) /\ (undef14 > 0) /\ (undef15 > ~(1)), par{arg1 -> undef14, arg2 -> undef15, arg3 -> arg2, arg4 -> undef17, arg5 -> undef18, arg6 -> undef19}> 0) /\ (arg3 > 1) /\ (undef20 <= arg2) /\ (arg1 > 0) /\ (arg2 > ~(1)) /\ (undef20 > ~(1)), par{arg1 -> undef20, arg2 -> arg3, arg3 -> undef22, arg4 -> undef23, arg5 -> undef24, arg6 -> undef25}> ~(1)) /\ (arg1 > 0) /\ (arg3 > 0) /\ (arg3 < arg2) /\ (undef30 > ~(1)), par{arg2 -> (arg1 - 1), arg3 -> 0, arg4 -> undef30, arg5 -> arg2, arg6 -> (arg3 + 1)}> 0) /\ (arg4 > arg3) /\ (arg1 > 0) /\ (arg6 > 1) /\ (arg2 < arg1) /\ ((arg2 - 1) < arg1) /\ (arg2 > ~(1)) /\ ((arg2 - 1) < arg2), par{arg1 -> (arg2 - 1), arg2 -> arg5, arg3 -> arg6, arg4 -> undef36, arg5 -> undef37, arg6 -> undef38}> 0) /\ (arg4 > arg3) /\ (arg1 > 0) /\ (arg6 > 1) /\ (arg2 < arg1) /\ ((arg2 - 1) < arg1) /\ (arg2 > ~(1)) /\ ((arg2 - 1) < arg2), par{arg3 -> (arg3 + 1)}> 0) /\ (arg4 > arg3) /\ (arg1 > 0) /\ (arg6 > 1) /\ (arg2 < arg1) /\ ((arg2 - 1) < arg1) /\ (arg2 > ~(1)) /\ ((arg2 - 1) < arg2), par{arg3 -> (arg3 + 1), arg6 -> undef50}> 1) /\ (arg1 > 2) /\ (undef51 > 0), par{arg1 -> undef51, arg3 -> undef53, arg4 -> undef54, arg5 -> undef55, arg6 -> undef56}> 1) /\ (arg1 > 3) /\ (undef57 > ~(1)), par{arg1 -> undef57, arg3 -> undef59, arg4 -> undef60, arg5 -> undef61, arg6 -> undef62}> 1) /\ ((undef65 + 2) <= arg1) /\ (arg1 > 2) /\ (undef63 > 1) /\ (undef64 > 2) /\ (undef65 > ~(1)), par{arg1 -> undef63, arg2 -> undef64, arg3 -> undef65, arg4 -> undef66, arg5 -> arg2, arg6 -> undef68}> 1) /\ ((undef71 + 2) <= arg1) /\ (arg1 > 2) /\ (undef69 > 1) /\ (undef70 > 5) /\ (undef71 > ~(1)), par{arg1 -> undef69, arg2 -> undef70, arg3 -> undef71, arg4 -> undef72, arg5 -> arg2, arg6 -> undef74}> 1) /\ ((undef75 + 1) <= arg3) /\ (arg1 > 2) /\ (arg2 > 0) /\ (arg3 > 0) /\ (undef75 > ~(1)), par{arg1 -> undef75, arg2 -> arg5, arg3 -> undef77, arg4 -> undef78, arg5 -> undef79, arg6 -> undef80}> 1) /\ (undef82 <= arg1) /\ ((undef82 - 3) <= arg2) /\ ((undef82 - 2) <= arg3) /\ (arg1 > 3) /\ (arg2 > 0) /\ (arg3 > 1) /\ (undef81 > 0) /\ (undef82 > 3), par{arg1 -> undef81, arg2 -> undef82, arg3 -> undef83, arg4 -> undef84, arg5 -> undef85, arg6 -> undef86}> 1) /\ (undef88 <= arg1) /\ ((undef88 - 2) <= arg3) /\ (arg1 > 5) /\ (arg2 > 0) /\ (arg3 > 3) /\ (undef87 > 0) /\ (undef88 > 5), par{arg1 -> undef87, arg2 -> undef88, arg3 -> undef89, arg4 -> undef90, arg5 -> undef91, arg6 -> undef92}> 1) /\ (arg1 > 2) /\ (arg2 > 0) /\ (arg3 > 0) /\ (undef93 > 0) /\ (undef94 > 5), par{arg1 -> undef93, arg2 -> undef94, arg3 -> undef95, arg4 -> undef96, arg5 -> undef97, arg6 -> undef98}> undef99, arg2 -> undef100, arg3 -> undef101, arg4 -> undef102, arg5 -> undef103, arg6 -> undef104}> Fresh variables: undef1, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef11, undef12, undef13, undef14, undef15, undef17, undef18, undef19, undef20, undef22, undef23, undef24, undef25, undef26, undef30, undef36, undef37, undef38, undef50, undef51, undef53, undef54, undef55, undef56, undef57, undef59, undef60, undef61, undef62, undef63, undef64, undef65, undef66, undef68, undef69, undef70, undef71, undef72, undef74, undef75, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, undef85, undef86, undef87, undef88, undef89, undef90, undef91, undef92, undef93, undef94, undef95, undef96, undef97, undef98, undef99, undef100, undef101, undef102, undef103, undef104, Undef variables: undef1, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef11, undef12, undef13, undef14, undef15, undef17, undef18, undef19, undef20, undef22, undef23, undef24, undef25, undef26, undef30, undef36, undef37, undef38, undef50, undef51, undef53, undef54, undef55, undef56, undef57, undef59, undef60, undef61, undef62, undef63, undef64, undef65, undef66, undef68, undef69, undef70, undef71, undef72, undef74, undef75, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, undef85, undef86, undef87, undef88, undef89, undef90, undef91, undef92, undef93, undef94, undef95, undef96, undef97, undef98, undef99, undef100, undef101, undef102, undef103, undef104, Abstraction variables: Exit nodes: Accepting locations: Asserts: Preprocessed LLVMGraph Init Location: 0 Transitions: ~(1)) /\ (undef100 > 0) /\ (undef99 > 0) /\ (undef100 > ~(1)) /\ (undef1 > 0) /\ (1 > 0) /\ (1 < undef100) /\ (undef30 > ~(1)), par{arg1 -> undef1, arg2 -> (undef1 - 1), arg3 -> 0, arg4 -> undef30, arg5 -> undef100, arg6 -> (1 + 1)}> ~(1)) /\ (undef100 > 0) /\ (undef7 <= undef99) /\ (undef99 > 0) /\ (undef7 > 0) /\ (undef8 > ~(1)) /\ (undef26 > 0) /\ (undef9 > 1) /\ (undef20 <= undef8) /\ (undef7 > 0) /\ (undef8 > ~(1)) /\ (undef20 > ~(1)), par{arg1 -> undef20, arg2 -> undef9, arg3 -> undef22, arg4 -> undef23, arg5 -> undef24, arg6 -> undef25}> 1) /\ (arg1 > 2) /\ (undef51 > 0), par{arg1 -> undef51, arg3 -> undef53, arg4 -> undef54, arg5 -> undef55, arg6 -> undef56}> 1) /\ (arg1 > 3) /\ (undef57 > ~(1)), par{arg1 -> undef57, arg3 -> undef59, arg4 -> undef60, arg5 -> undef61, arg6 -> undef62}> 1) /\ ((undef65 + 2) <= arg1) /\ (arg1 > 2) /\ (undef63 > 1) /\ (undef64 > 2) /\ (undef65 > ~(1)) /\ ((undef75 + 3) <= undef63) /\ (arg2 > 1) /\ ((undef75 + 1) <= undef65) /\ (undef63 > 2) /\ (undef64 > 0) /\ (undef65 > 0) /\ (undef75 > ~(1)), par{arg1 -> undef75, arg2 -> arg2, arg3 -> undef77, arg4 -> undef78, arg5 -> undef79, arg6 -> undef80}> 1) /\ ((undef65 + 2) <= arg1) /\ (arg1 > 2) /\ (undef63 > 1) /\ (undef64 > 2) /\ (undef65 > ~(1)) /\ (undef81 <= undef64) /\ (arg2 > 1) /\ (undef82 <= undef63) /\ ((undef82 - 3) <= undef64) /\ ((undef82 - 2) <= undef65) /\ (undef63 > 3) /\ (undef64 > 0) /\ (undef65 > 1) /\ (undef81 > 0) /\ (undef82 > 3), par{arg1 -> undef81, arg2 -> undef82, arg3 -> undef83, arg4 -> undef84, arg5 -> undef85, arg6 -> undef86}> 1) /\ ((undef65 + 2) <= arg1) /\ (arg1 > 2) /\ (undef63 > 1) /\ (undef64 > 2) /\ (undef65 > ~(1)) /\ (undef87 <= undef64) /\ (arg2 > 1) /\ (undef88 <= undef63) /\ ((undef88 - 2) <= undef65) /\ (undef63 > 5) /\ (undef64 > 0) /\ (undef65 > 3) /\ (undef87 > 0) /\ (undef88 > 5), par{arg1 -> undef87, arg2 -> undef88, arg3 -> undef89, arg4 -> undef90, arg5 -> undef91, arg6 -> undef92}> 1) /\ ((undef65 + 2) <= arg1) /\ (arg1 > 2) /\ (undef63 > 1) /\ (undef64 > 2) /\ (undef65 > ~(1)) /\ (undef93 <= undef64) /\ (arg2 > 1) /\ (undef63 > 2) /\ (undef64 > 0) /\ (undef65 > 0) /\ (undef93 > 0) /\ (undef94 > 5), par{arg1 -> undef93, arg2 -> undef94, arg3 -> undef95, arg4 -> undef96, arg5 -> undef97, arg6 -> undef98}> 1) /\ ((undef71 + 2) <= arg1) /\ (arg1 > 2) /\ (undef69 > 1) /\ (undef70 > 5) /\ (undef71 > ~(1)) /\ ((undef75 + 3) <= undef69) /\ (arg2 > 1) /\ ((undef75 + 1) <= undef71) /\ (undef69 > 2) /\ (undef70 > 0) /\ (undef71 > 0) /\ (undef75 > ~(1)), par{arg1 -> undef75, arg2 -> arg2, arg3 -> undef77, arg4 -> undef78, arg5 -> undef79, arg6 -> undef80}> 1) /\ ((undef71 + 2) <= arg1) /\ (arg1 > 2) /\ (undef69 > 1) /\ (undef70 > 5) /\ (undef71 > ~(1)) /\ (undef81 <= undef70) /\ (arg2 > 1) /\ (undef82 <= undef69) /\ ((undef82 - 3) <= undef70) /\ ((undef82 - 2) <= undef71) /\ (undef69 > 3) /\ (undef70 > 0) /\ (undef71 > 1) /\ (undef81 > 0) /\ (undef82 > 3), par{arg1 -> undef81, arg2 -> undef82, arg3 -> undef83, arg4 -> undef84, arg5 -> undef85, arg6 -> undef86}> 1) /\ ((undef71 + 2) <= arg1) /\ (arg1 > 2) /\ (undef69 > 1) /\ (undef70 > 5) /\ (undef71 > ~(1)) /\ (undef87 <= undef70) /\ (arg2 > 1) /\ (undef88 <= undef69) /\ ((undef88 - 2) <= undef71) /\ (undef69 > 5) /\ (undef70 > 0) /\ (undef71 > 3) /\ (undef87 > 0) /\ (undef88 > 5), par{arg1 -> undef87, arg2 -> undef88, arg3 -> undef89, arg4 -> undef90, arg5 -> undef91, arg6 -> undef92}> 1) /\ ((undef71 + 2) <= arg1) /\ (arg1 > 2) /\ (undef69 > 1) /\ (undef70 > 5) /\ (undef71 > ~(1)) /\ (undef93 <= undef70) /\ (arg2 > 1) /\ (undef69 > 2) /\ (undef70 > 0) /\ (undef71 > 0) /\ (undef93 > 0) /\ (undef94 > 5), par{arg1 -> undef93, arg2 -> undef94, arg3 -> undef95, arg4 -> undef96, arg5 -> undef97, arg6 -> undef98}> 0) /\ (arg4 > arg3) /\ (arg1 > 0) /\ (arg6 > 1) /\ (arg2 < arg1) /\ ((arg2 - 1) < arg1) /\ (arg2 > ~(1)) /\ ((arg2 - 1) < arg2) /\ (arg5 > ~(1)) /\ ((arg2 - 1) > 0) /\ (arg6 > 0) /\ (arg6 < arg5) /\ (undef30 > ~(1)), par{arg1 -> (arg2 - 1), arg2 -> ((arg2 - 1) - 1), arg3 -> 0, arg4 -> undef30, arg5 -> arg5, arg6 -> (arg6 + 1)}> 0) /\ (arg4 > arg3) /\ (arg1 > 0) /\ (arg6 > 1) /\ (arg2 < arg1) /\ ((arg2 - 1) < arg1) /\ (arg2 > ~(1)) /\ ((arg2 - 1) < arg2), par{arg3 -> (arg3 + 1)}> 0) /\ (arg4 > arg3) /\ (arg1 > 0) /\ (arg6 > 1) /\ (arg2 < arg1) /\ ((arg2 - 1) < arg1) /\ (arg2 > ~(1)) /\ ((arg2 - 1) < arg2), par{arg3 -> (arg3 + 1), arg6 -> undef50}> Fresh variables: undef1, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef11, undef12, undef13, undef14, undef15, undef17, undef18, undef19, undef20, undef22, undef23, undef24, undef25, undef26, undef30, undef36, undef37, undef38, undef50, undef51, undef53, undef54, undef55, undef56, undef57, undef59, undef60, undef61, undef62, undef63, undef64, undef65, undef66, undef68, undef69, undef70, undef71, undef72, undef74, undef75, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, undef85, undef86, undef87, undef88, undef89, undef90, undef91, undef92, undef93, undef94, undef95, undef96, undef97, undef98, undef99, undef100, undef101, undef102, undef103, undef104, Undef variables: undef1, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef11, undef12, undef13, undef14, undef15, undef17, undef18, undef19, undef20, undef22, undef23, undef24, undef25, undef26, undef30, undef36, undef37, undef38, undef50, undef51, undef53, undef54, undef55, undef56, undef57, undef59, undef60, undef61, undef62, undef63, undef64, undef65, undef66, undef68, undef69, undef70, undef71, undef72, undef74, undef75, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, undef85, undef86, undef87, undef88, undef89, undef90, undef91, undef92, undef93, undef94, undef95, undef96, undef97, undef98, undef99, undef100, undef101, undef102, undef103, undef104, Abstraction variables: Exit nodes: Accepting locations: Asserts: ************************************************************* ******************************************************************************************* *********************** WORKING TRANSITION SYSTEM (DAG) *********************** ******************************************************************************************* Init Location: 0 Graph 0: Transitions: Variables: Graph 1: Transitions: undef51, arg3 -> undef53, arg4 -> undef54, arg5 -> undef55, arg6 -> undef56, rest remain the same}> undef57, arg3 -> undef59, arg4 -> undef60, arg5 -> undef61, arg6 -> undef62, rest remain the same}> undef75, arg3 -> undef77, arg4 -> undef78, arg5 -> undef79, arg6 -> undef80, rest remain the same}> undef75, arg3 -> undef77, arg4 -> undef78, arg5 -> undef79, arg6 -> undef80, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6 Graph 2: Transitions: Variables: Graph 3: Transitions: -1 + arg2, arg2 -> -2 + arg2, arg3 -> 0, arg4 -> undef30, arg6 -> 1 + arg6, rest remain the same}> 1 + arg3, rest remain the same}> 1 + arg3, arg6 -> undef50, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6 Precedence: Graph 0 Graph 1 undef20, arg2 -> undef9, arg3 -> undef22, arg4 -> undef23, arg5 -> undef24, arg6 -> undef25, rest remain the same}> Graph 2 undef81, arg2 -> undef82, arg3 -> undef83, arg4 -> undef84, arg5 -> undef85, arg6 -> undef86, rest remain the same}> undef87, arg2 -> undef88, arg3 -> undef89, arg4 -> undef90, arg5 -> undef91, arg6 -> undef92, rest remain the same}> undef93, arg2 -> undef94, arg3 -> undef95, arg4 -> undef96, arg5 -> undef97, arg6 -> undef98, rest remain the same}> undef81, arg2 -> undef82, arg3 -> undef83, arg4 -> undef84, arg5 -> undef85, arg6 -> undef86, rest remain the same}> undef87, arg2 -> undef88, arg3 -> undef89, arg4 -> undef90, arg5 -> undef91, arg6 -> undef92, rest remain the same}> undef93, arg2 -> undef94, arg3 -> undef95, arg4 -> undef96, arg5 -> undef97, arg6 -> undef98, rest remain the same}> Graph 3 undef1, arg2 -> -1 + undef1, arg3 -> 0, arg4 -> undef30, arg5 -> undef100, arg6 -> 2, rest remain the same}> Map Locations to Subgraph: ( 0 , 0 ) ( 5 , 1 ) ( 6 , 3 ) ( 8 , 2 ) ******************************************************************************************* ******************************** CHECKING ASSERTIONS ******************************** ******************************************************************************************* Proving termination of subgraph 0 Proving termination of subgraph 1 Checking unfeasibility... Time used: 0.022138 Checking conditional termination of SCC {l5}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.005498s Ranking function: (~(3) / 2) + (1 / 2)*arg1 New Graphs: Proving termination of subgraph 2 Analyzing SCC {l8}... No cycles found. Proving termination of subgraph 3 Checking unfeasibility... Time used: 0.21932 Checking conditional termination of SCC {l6}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.005576s Ranking function: (~(13) / 2) + (3 / 2)*arg1 - arg2 + (5 / 3)*arg5 New Graphs: Transitions: 1 + arg3, rest remain the same}> 1 + arg3, arg6 -> undef50, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg6 Checking conditional termination of SCC {l6}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.002241s Ranking function: -1 - arg3 + arg4 New Graphs: Program Terminates