YES Solver Timeout: 4 Global Timeout: 300 No parsing errors! Init Location: 0 Transitions: ~(1)) /\ (arg2 > 0) /\ (undef1 <= arg1) /\ (arg1 > 0) /\ (undef1 > 0) /\ (undef2 > 0) /\ (undef3 > ~(1)), par{arg1 -> undef1, arg2 -> undef2, arg3 -> undef3, arg4 -> undef4, arg5 -> undef5, arg6 -> undef6}> = undef8) /\ (undef8 <= arg2) /\ ((undef8 - 1) <= arg3) /\ (undef9 <= arg2) /\ ((undef10 + 1) <= arg2) /\ (undef10 <= arg3) /\ (arg1 > 0) /\ (arg2 > 0) /\ (arg3 > ~(1)) /\ (undef8 > 0) /\ (undef9 > 0) /\ (undef10 > ~(1)) /\ ((arg4 + 2) <= arg2) /\ ((arg5 + 2) <= arg2), par{arg1 -> undef8, arg2 -> undef9, arg3 -> undef10, arg6 -> undef13}> ~(1)) /\ (arg2 > 1) /\ (undef16 > ~(1)) /\ (arg1 > 0) /\ (undef14 > 1), par{arg1 -> undef14, arg2 -> 0, arg3 -> undef16, arg4 -> arg2, arg5 -> 2, arg6 -> undef19}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef26 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef20 > 3) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef20, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef25}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef33 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef27 > 3) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef27, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef32}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef40 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef34 > 2) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef34, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef39}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef47 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef41 > 2) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef41, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef46}> 1) /\ ((undef49 + 1) <= arg2) /\ (undef49 <= arg3) /\ (arg1 > 0) /\ (arg2 > 0) /\ (arg3 > ~(1)) /\ (undef48 > 0) /\ (undef49 > ~(1)) /\ ((arg4 + 2) <= arg2) /\ ((arg5 + 2) <= arg2), par{arg1 -> undef48, arg2 -> undef49, arg3 -> arg5, arg4 -> undef51, arg5 -> undef52, arg6 -> undef53}> 2) /\ (arg2 > 0) /\ (undef55 > 3) /\ (undef56 > ~(1)) /\ ((arg3 + 2) <= arg1), par{arg1 -> undef55, arg2 -> undef56, arg3 -> 0, arg4 -> undef58, arg5 -> undef59, arg6 -> undef60}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef62 > ~(1)) /\ (arg5 < arg4) /\ (undef61 <= arg1) /\ (arg1 > 0) /\ (undef61 > 0) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef61, arg2 -> undef62, arg3 -> arg4, arg4 -> arg6, arg5 -> undef65, arg6 -> undef66}> 1) /\ (arg4 < arg2) /\ ((undef67 + 2) <= arg1) /\ (arg1 > 2) /\ (undef67 > 0) /\ ((arg4 + 2) <= arg1) /\ ((undef70 + 4) <= arg1), par{arg1 -> undef67, arg4 -> undef70, arg5 -> undef71, arg6 -> undef72}> 1) /\ (arg4 >= arg2) /\ ((undef73 + 2) <= arg1) /\ (arg1 > 2) /\ (undef73 > 0) /\ ((arg4 + 2) <= arg1) /\ ((undef76 + 4) <= arg1), par{arg1 -> undef73, arg4 -> undef76, arg5 -> undef77, arg6 -> undef78}> undef79, arg2 -> undef80, arg3 -> undef81, arg4 -> undef82, arg5 -> undef83, arg6 -> undef84}> Fresh variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef13, undef14, undef16, undef19, undef20, undef25, undef26, undef27, undef32, undef33, undef34, undef39, undef40, undef41, undef46, undef47, undef48, undef49, undef51, undef52, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef61, undef62, undef65, undef66, undef67, undef70, undef71, undef72, undef73, undef76, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, Undef variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef13, undef14, undef16, undef19, undef20, undef25, undef26, undef27, undef32, undef33, undef34, undef39, undef40, undef41, undef46, undef47, undef48, undef49, undef51, undef52, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef61, undef62, undef65, undef66, undef67, undef70, undef71, undef72, undef73, undef76, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, Abstraction variables: Exit nodes: Accepting locations: Asserts: Preprocessed LLVMGraph Init Location: 0 Transitions: ~(1)) /\ (undef80 > 0) /\ (undef1 <= undef79) /\ (undef79 > 0) /\ (undef1 > 0) /\ (undef2 > 0) /\ (undef3 > ~(1)) /\ (undef48 <= undef2) /\ (undef54 > 1) /\ ((undef49 + 1) <= undef2) /\ (undef49 <= undef3) /\ (undef1 > 0) /\ (undef2 > 0) /\ (undef3 > ~(1)) /\ (undef48 > 0) /\ (undef49 > ~(1)) /\ ((undef4 + 2) <= undef2) /\ ((undef5 + 2) <= undef2), par{arg1 -> undef48, arg2 -> undef49, arg3 -> undef5, arg4 -> undef51, arg5 -> undef52, arg6 -> undef53}> ~(1)) /\ (undef80 > 1) /\ (undef16 > ~(1)) /\ (undef79 > 0) /\ (undef14 > 1), par{arg1 -> undef14, arg2 -> 0, arg3 -> undef16, arg4 -> undef80, arg5 -> 2, arg6 -> undef19}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef26 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef20 > 3) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef20, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef25}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef33 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef27 > 3) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef27, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef32}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef40 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef34 > 2) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef34, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef39}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef47 > ~(1)) /\ (arg5 < arg4) /\ (arg1 > 0) /\ (undef41 > 2) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef41, arg2 -> (arg2 + 1), arg5 -> (arg5 + 1), arg6 -> undef46}> ~(1)) /\ (arg3 > arg2) /\ (arg3 > 0) /\ (arg4 > 1) /\ (undef62 > ~(1)) /\ (arg5 < arg4) /\ (undef61 <= arg1) /\ (arg1 > 0) /\ (undef61 > 0) /\ ((arg6 + 2) <= arg1), par{arg1 -> undef61, arg2 -> undef62, arg3 -> arg4, arg4 -> arg6, arg5 -> undef65, arg6 -> undef66}> 2) /\ (arg2 > 0) /\ (undef55 > 3) /\ (undef56 > ~(1)) /\ ((arg3 + 2) <= arg1), par{arg1 -> undef55, arg2 -> undef56, arg3 -> 0, arg4 -> undef58, arg5 -> undef59, arg6 -> undef60}> 1) /\ (arg4 < arg2) /\ ((undef67 + 2) <= arg1) /\ (arg1 > 2) /\ (undef67 > 0) /\ ((arg4 + 2) <= arg1) /\ ((undef70 + 4) <= arg1), par{arg1 -> undef67, arg4 -> undef70, arg5 -> undef71, arg6 -> undef72}> 1) /\ (arg4 >= arg2) /\ ((undef73 + 2) <= arg1) /\ (arg1 > 2) /\ (undef73 > 0) /\ ((arg4 + 2) <= arg1) /\ ((undef76 + 4) <= arg1), par{arg1 -> undef73, arg4 -> undef76, arg5 -> undef77, arg6 -> undef78}> Fresh variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef13, undef14, undef16, undef19, undef20, undef25, undef26, undef27, undef32, undef33, undef34, undef39, undef40, undef41, undef46, undef47, undef48, undef49, undef51, undef52, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef61, undef62, undef65, undef66, undef67, undef70, undef71, undef72, undef73, undef76, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, Undef variables: undef1, undef2, undef3, undef4, undef5, undef6, undef7, undef8, undef9, undef10, undef13, undef14, undef16, undef19, undef20, undef25, undef26, undef27, undef32, undef33, undef34, undef39, undef40, undef41, undef46, undef47, undef48, undef49, undef51, undef52, undef53, undef54, undef55, undef56, undef58, undef59, undef60, undef61, undef62, undef65, undef66, undef67, undef70, undef71, undef72, undef73, undef76, undef77, undef78, undef79, undef80, undef81, undef82, undef83, undef84, Abstraction variables: Exit nodes: Accepting locations: Asserts: ************************************************************* ******************************************************************************************* *********************** WORKING TRANSITION SYSTEM (DAG) *********************** ******************************************************************************************* Init Location: 0 Graph 0: Transitions: Variables: Graph 1: Transitions: undef20, arg2 -> 1 + arg2, arg5 -> 1 + arg5, arg6 -> undef25, rest remain the same}> undef27, arg2 -> 1 + arg2, arg5 -> 1 + arg5, arg6 -> undef32, rest remain the same}> undef34, arg2 -> 1 + arg2, arg5 -> 1 + arg5, arg6 -> undef39, rest remain the same}> undef41, arg2 -> 1 + arg2, arg5 -> 1 + arg5, arg6 -> undef46, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6 Graph 2: Transitions: undef67, arg4 -> undef70, arg5 -> undef71, arg6 -> undef72, rest remain the same}> undef73, arg4 -> undef76, arg5 -> undef77, arg6 -> undef78, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6 Graph 3: Transitions: undef55, arg2 -> undef56, arg3 -> 0, arg4 -> undef58, arg5 -> undef59, arg6 -> undef60, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6 Precedence: Graph 0 Graph 1 undef14, arg2 -> 0, arg3 -> undef16, arg4 -> undef80, arg5 -> 2, arg6 -> undef19, rest remain the same}> Graph 2 undef61, arg2 -> undef62, arg3 -> arg4, arg4 -> arg6, arg5 -> undef65, arg6 -> undef66, rest remain the same}> Graph 3 undef48, arg2 -> undef49, arg3 -> undef5, arg4 -> undef51, arg5 -> undef52, arg6 -> undef53, rest remain the same}> Map Locations to Subgraph: ( 0 , 0 ) ( 4 , 1 ) ( 5 , 3 ) ( 6 , 2 ) ******************************************************************************************* ******************************** CHECKING ASSERTIONS ******************************** ******************************************************************************************* Proving termination of subgraph 0 Proving termination of subgraph 1 Checking unfeasibility... Time used: 0.014228 Checking conditional termination of SCC {l4}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.003799s Ranking function: -13 - arg2 + arg3 + 6*arg4 New Graphs: Proving termination of subgraph 2 Checking unfeasibility... Time used: 0.004838 Checking conditional termination of SCC {l6}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.001596s Ranking function: -32 + 16*arg1 - 16*arg2 New Graphs: Transitions: undef67, arg4 -> undef70, arg5 -> undef71, arg6 -> undef72, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6 Checking conditional termination of SCC {l6}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.000784s Ranking function: (~(3) / 2) + (1 / 2)*arg1 New Graphs: Proving termination of subgraph 3 Checking unfeasibility... Time used: 0.002261 Checking conditional termination of SCC {l5}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.000871s Ranking function: -1 + arg2 New Graphs: Program Terminates