YES Solver Timeout: 4 Global Timeout: 60 No parsing errors! Init Location: 0 Transitions: 0) /\ (undef1 > 0) /\ (undef2 > 0) /\ (0 = arg2), par{arg1 -> undef1, arg2 -> undef2, arg3 -> 0, arg4 -> 0, arg5 -> 0, arg6 -> 0, arg7 -> 0, arg8 -> 0}> ~(1)) /\ (undef10 <= arg1) /\ (arg1 > 0) /\ (undef9 > 0) /\ (undef10 > 0) /\ (1 = arg2), par{arg1 -> undef9, arg2 -> undef10, arg3 -> 0, arg4 -> 0, arg5 -> 1, arg6 -> 1, arg7 -> 1, arg8 -> 0}> ~(1)) /\ (arg2 > 1) /\ ((undef26 * undef27) >= 0) /\ (undef27 > ~(1)) /\ (undef18 <= arg1) /\ (arg1 >= undef19) /\ (arg1 > 0) /\ (undef18 > 0) /\ (undef19 > 0), par{arg1 -> undef18, arg2 -> undef19, arg3 -> 0, arg4 -> (undef26 * undef27), arg5 -> arg2, arg6 -> 2, arg7 -> arg2, arg8 -> (undef26 * undef27)}> arg3) /\ (arg5 > ~(1)) /\ (arg6 >= arg5) /\ (arg4 > ~(1)) /\ (undef28 <= arg1) /\ (undef28 <= arg2) /\ (undef29 <= arg1) /\ (undef29 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef28 > 0) /\ (undef29 > 0) /\ (arg5 = arg7) /\ (arg4 = arg8), par{arg1 -> undef28, arg2 -> undef29, arg3 -> (arg3 + 1), arg7 -> arg5, arg8 -> arg4}> arg3) /\ (arg5 > ~(1)) /\ (arg6 > ~(1)) /\ (arg6 < arg5) /\ (arg4 > ~(1)) /\ (undef36 <= arg1) /\ (undef36 <= arg2) /\ (undef37 <= arg1) /\ (undef37 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef36 > 0) /\ (undef37 > 0) /\ (arg5 = arg7) /\ (arg4 = arg8), par{arg1 -> undef36, arg2 -> undef37, arg3 -> (arg3 + 1), arg6 -> (arg6 + 1), arg7 -> arg5, arg8 -> arg4}> ~(1)) /\ (arg4 <= arg3) /\ (undef44 <= arg1) /\ (undef44 <= arg2) /\ (undef45 <= arg1) /\ (undef45 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef44 > 0) /\ (undef45 > 0) /\ (arg5 = arg7) /\ (arg4 = arg8), par{arg1 -> undef44, arg2 -> undef45, arg3 -> 1, arg5 -> arg4, arg6 -> undef49, arg7 -> undef50, arg8 -> undef51}> = 1) /\ (arg4 > 1) /\ (arg3 > 0) /\ (arg4 > arg3) /\ (undef52 <= arg1) /\ (undef52 <= arg2) /\ (undef53 <= arg1) /\ (undef53 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef52 > 0) /\ (undef53 > 0), par{arg1 -> undef52, arg2 -> undef53, arg3 -> (arg3 + 1), arg6 -> undef57, arg7 -> undef58, arg8 -> undef59}> = 1) /\ (arg4 > 1) /\ (arg3 > 0) /\ (arg4 > arg3) /\ (undef60 <= arg1) /\ (undef60 <= arg2) /\ (undef61 <= arg1) /\ (undef61 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef60 > 0) /\ (undef61 > 0), par{arg1 -> undef60, arg2 -> undef61, arg3 -> (arg3 + 1), arg5 -> undef64, arg6 -> undef65, arg7 -> undef66, arg8 -> undef67}> = 1) /\ (arg4 > 1) /\ (arg3 > 0) /\ (arg4 > arg3) /\ (undef70 <= arg1) /\ (undef70 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef70 > 0), par{arg1 -> 0, arg2 -> 0, arg3 -> undef70, arg4 -> 0, arg5 -> (arg4 - arg3), arg6 -> arg5, arg7 -> undef74, arg8 -> undef75}> ~(1)) /\ (arg6 > (arg2 + 1)) /\ (arg5 > arg2) /\ (undef84 <= undef85) /\ (undef79 <= arg3) /\ (arg3 > 0) /\ (undef79 > 0) /\ (arg2 = arg4), par{arg2 -> (arg2 + 1), arg3 -> arg5, arg4 -> undef79, arg5 -> undef80, arg7 -> undef82, arg8 -> undef83}> ~(1)) /\ (arg6 > (arg2 + 1)) /\ (arg5 > arg2) /\ (undef94 > undef95) /\ (undef89 <= arg3) /\ (arg3 > 0) /\ (undef89 > 0) /\ (arg2 = arg4), par{arg2 -> (arg2 + 1), arg3 -> arg5, arg4 -> undef89, arg5 -> undef90, arg7 -> undef92, arg8 -> undef93}> 0) /\ (arg2 > 0) /\ (arg3 >= arg2) /\ (arg3 >= arg1) /\ (undef98 <= arg4) /\ (arg4 > 0) /\ (undef98 > 0), par{arg1 -> arg2, arg3 -> undef98, arg4 -> arg2, arg5 -> arg3, arg7 -> undef102, arg8 -> undef103}> undef104, arg2 -> undef105, arg3 -> undef106, arg4 -> undef107, arg5 -> undef108, arg6 -> undef109, arg7 -> undef110, arg8 -> undef111}> Fresh variables: undef1, undef2, undef9, undef10, undef17, undef18, undef19, undef26, undef27, undef28, undef29, undef36, undef37, undef44, undef45, undef49, undef50, undef51, undef52, undef53, undef57, undef58, undef59, undef60, undef61, undef64, undef65, undef66, undef67, undef70, undef74, undef75, undef79, undef80, undef82, undef83, undef84, undef85, undef89, undef90, undef92, undef93, undef94, undef95, undef98, undef102, undef103, undef104, undef105, undef106, undef107, undef108, undef109, undef110, undef111, Undef variables: undef1, undef2, undef9, undef10, undef17, undef18, undef19, undef26, undef27, undef28, undef29, undef36, undef37, undef44, undef45, undef49, undef50, undef51, undef52, undef53, undef57, undef58, undef59, undef60, undef61, undef64, undef65, undef66, undef67, undef70, undef74, undef75, undef79, undef80, undef82, undef83, undef84, undef85, undef89, undef90, undef92, undef93, undef94, undef95, undef98, undef102, undef103, undef104, undef105, undef106, undef107, undef108, undef109, undef110, undef111, Abstraction variables: Exit nodes: Accepting locations: Asserts: Preprocessed LLVMGraph Init Location: 0 Transitions: 0) /\ (undef1 > 0) /\ (undef2 > 0) /\ (0 = undef105), par{arg1 -> undef1, arg2 -> undef2, arg4 -> 0, arg5 -> 0, arg6 -> 0, arg7 -> 0, arg8 -> 0}> ~(1)) /\ (undef10 <= undef104) /\ (undef104 > 0) /\ (undef9 > 0) /\ (undef10 > 0) /\ (1 = undef105), par{arg1 -> undef9, arg2 -> undef10, arg4 -> 0, arg5 -> 1, arg6 -> 1, arg7 -> 1, arg8 -> 0}> ~(1)) /\ (undef105 > 1) /\ (undef27 > ~(1)) /\ (undef18 <= undef104) /\ (undef104 >= undef19) /\ (undef104 > 0) /\ (undef18 > 0) /\ (undef19 > 0), par{arg1 -> undef18, arg2 -> undef19, arg4 -> abstract_112, arg5 -> undef105, arg6 -> 2, arg7 -> undef105, arg8 -> abstract_113}> arg3) /\ (arg5 > ~(1)) /\ (arg6 >= arg5) /\ (arg4 > ~(1)) /\ (undef28 <= arg1) /\ (undef28 <= arg2) /\ (undef29 <= arg1) /\ (undef29 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef28 > 0) /\ (undef29 > 0) /\ (arg5 = arg7) /\ (arg4 = arg8), par{arg1 -> undef28, arg2 -> undef29, arg3 -> (arg3 + 1), arg7 -> arg5, arg8 -> arg4}> arg3) /\ (arg5 > ~(1)) /\ (arg6 > ~(1)) /\ (arg6 < arg5) /\ (arg4 > ~(1)) /\ (undef36 <= arg1) /\ (undef36 <= arg2) /\ (undef37 <= arg1) /\ (undef37 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef36 > 0) /\ (undef37 > 0) /\ (arg5 = arg7) /\ (arg4 = arg8), par{arg1 -> undef36, arg2 -> undef37, arg3 -> (arg3 + 1), arg6 -> (arg6 + 1), arg7 -> arg5, arg8 -> arg4}> ~(1)) /\ (arg4 <= arg3) /\ (undef44 <= arg1) /\ (undef44 <= arg2) /\ (undef45 <= arg1) /\ (undef45 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef44 > 0) /\ (undef45 > 0) /\ (arg5 = arg7) /\ (arg4 = arg8), par{arg1 -> undef44, arg2 -> undef45, arg3 -> 1, arg5 -> arg4, arg6 -> undef49, arg7 -> undef50, arg8 -> undef51}> = 1) /\ (arg4 > 1) /\ (arg3 > 0) /\ (arg4 > arg3) /\ (undef52 <= arg1) /\ (undef52 <= arg2) /\ (undef53 <= arg1) /\ (undef53 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef52 > 0) /\ (undef53 > 0), par{arg1 -> undef52, arg2 -> undef53, arg3 -> (arg3 + 1), arg6 -> undef57, arg7 -> undef58, arg8 -> undef59}> = 1) /\ (arg4 > 1) /\ (arg3 > 0) /\ (arg4 > arg3) /\ (undef60 <= arg1) /\ (undef60 <= arg2) /\ (undef61 <= arg1) /\ (undef61 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef60 > 0) /\ (undef61 > 0), par{arg1 -> undef60, arg2 -> undef61, arg3 -> (arg3 + 1), arg5 -> undef64, arg6 -> undef65, arg7 -> undef66, arg8 -> undef67}> = 1) /\ (arg4 > 1) /\ (arg3 > 0) /\ (arg4 > arg3) /\ (undef70 <= arg1) /\ (undef70 <= arg2) /\ (arg1 > 0) /\ (arg2 > 0) /\ (undef70 > 0), par{arg1 -> 0, arg2 -> 0, arg3 -> undef70, arg4 -> 0, arg5 -> (arg4 - arg3), arg6 -> arg5, arg7 -> undef74, arg8 -> undef75}> ~(1)) /\ (arg6 > (arg2 + 1)) /\ (arg5 > arg2) /\ (undef84 <= undef85) /\ (undef79 <= arg3) /\ (arg3 > 0) /\ (undef79 > 0) /\ (arg2 = arg4) /\ (arg5 > 0) /\ ((arg2 + 1) > 0) /\ (arg5 >= (arg2 + 1)) /\ (arg5 >= arg1) /\ (undef98 <= undef79) /\ (undef79 > 0) /\ (undef98 > 0), par{arg1 -> (arg2 + 1), arg2 -> (arg2 + 1), arg3 -> undef98, arg4 -> (arg2 + 1), arg5 -> arg5, arg7 -> undef102, arg8 -> undef103}> ~(1)) /\ (arg6 > (arg2 + 1)) /\ (arg5 > arg2) /\ (undef94 > undef95) /\ (undef89 <= arg3) /\ (arg3 > 0) /\ (undef89 > 0) /\ (arg2 = arg4) /\ (arg5 > 0) /\ ((arg2 + 1) > 0) /\ (arg5 >= (arg2 + 1)) /\ (arg5 >= arg1) /\ (undef98 <= undef89) /\ (undef89 > 0) /\ (undef98 > 0), par{arg1 -> (arg2 + 1), arg2 -> (arg2 + 1), arg3 -> undef98, arg4 -> (arg2 + 1), arg5 -> arg5, arg7 -> undef102, arg8 -> undef103}> Fresh variables: undef1, undef2, undef9, undef10, undef17, undef18, undef19, undef26, undef27, undef28, undef29, undef36, undef37, undef44, undef45, undef49, undef50, undef51, undef52, undef53, undef57, undef58, undef59, undef60, undef61, undef64, undef65, undef66, undef67, undef70, undef74, undef75, undef79, undef80, undef82, undef83, undef84, undef85, undef89, undef90, undef92, undef93, undef94, undef95, undef98, undef102, undef103, undef104, undef105, undef106, undef107, undef108, undef109, undef110, undef111, abstract_112, abstract_113, Undef variables: undef1, undef2, undef9, undef10, undef17, undef18, undef19, undef26, undef27, undef28, undef29, undef36, undef37, undef44, undef45, undef49, undef50, undef51, undef52, undef53, undef57, undef58, undef59, undef60, undef61, undef64, undef65, undef66, undef67, undef70, undef74, undef75, undef79, undef80, undef82, undef83, undef84, undef85, undef89, undef90, undef92, undef93, undef94, undef95, undef98, undef102, undef103, undef104, undef105, undef106, undef107, undef108, undef109, undef110, undef111, Abstraction variables: abstract_113 --> ( * undef26 undef27 ) Exit nodes: Accepting locations: Asserts: ************************************************************* ******************************************************************************************* *********************** WORKING TRANSITION SYSTEM (DAG) *********************** ******************************************************************************************* Init Location: 0 Graph 0: Transitions: Variables: Graph 1: Transitions: undef28, arg2 -> undef29, arg3 -> 1 + arg3, arg7 -> arg5, arg8 -> arg4, rest remain the same}> undef36, arg2 -> undef37, arg3 -> 1 + arg3, arg6 -> 1 + arg6, arg7 -> arg5, arg8 -> arg4, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 Graph 2: Transitions: undef52, arg2 -> undef53, arg3 -> 1 + arg3, arg6 -> undef57, arg7 -> undef58, arg8 -> undef59, rest remain the same}> undef60, arg2 -> undef61, arg3 -> 1 + arg3, arg5 -> undef64, arg6 -> undef65, arg7 -> undef66, arg8 -> undef67, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg6, arg7, arg8, arg5 Graph 3: Transitions: 1 + arg2, arg2 -> 1 + arg2, arg3 -> undef98, arg4 -> 1 + arg2, arg7 -> undef102, arg8 -> undef103, rest remain the same}> 1 + arg2, arg2 -> 1 + arg2, arg3 -> undef98, arg4 -> 1 + arg2, arg7 -> undef102, arg8 -> undef103, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 Precedence: Graph 0 Graph 1 undef1, arg2 -> undef2, arg4 -> 0, arg5 -> 0, arg6 -> 0, arg7 -> 0, arg8 -> 0, rest remain the same}> undef9, arg2 -> undef10, arg4 -> 0, arg5 -> 1, arg6 -> 1, arg7 -> 1, arg8 -> 0, rest remain the same}> undef18, arg2 -> undef19, arg4 -> abstract_112, arg5 -> undef105, arg6 -> 2, arg7 -> undef105, arg8 -> abstract_113, rest remain the same}> Graph 2 undef44, arg2 -> undef45, arg3 -> 1, arg5 -> arg4, arg6 -> undef49, arg7 -> undef50, arg8 -> undef51, rest remain the same}> Graph 3 0, arg2 -> 0, arg3 -> undef70, arg4 -> 0, arg5 -> -arg3 + arg4, arg6 -> arg5, arg7 -> undef74, arg8 -> undef75, rest remain the same}> Map Locations to Subgraph: ( 0 , 0 ) ( 2 , 1 ) ( 3 , 2 ) ( 4 , 3 ) ******************************************************************************************* ******************************** CHECKING ASSERTIONS ******************************** ******************************************************************************************* Detected abstraction incompatible with non-termination check. Proving termination of subgraph 0 Proving termination of subgraph 1 Checking unfeasibility... Time used: 0.019261 Checking conditional termination of SCC {l2}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.004815s Ranking function: -4 + 4*arg5 - 4*arg6 New Graphs: Transitions: undef28, arg2 -> undef29, arg3 -> 1 + arg3, arg7 -> arg5, arg8 -> arg4, rest remain the same}> Variables: arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 Checking conditional termination of SCC {l2}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.002104s Ranking function: -1 - arg3 + arg4 New Graphs: Proving termination of subgraph 2 Checking unfeasibility... Time used: 0.017372 Checking conditional termination of SCC {l3}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.004075s Ranking function: -1 - arg3 + arg4 New Graphs: Proving termination of subgraph 3 Checking unfeasibility... Time used: 0.011412 Checking conditional termination of SCC {l4}... LOG: CALL solveLinear LOG: RETURN solveLinear - Elapsed time: 0.004506s Ranking function: -2 - arg2 + arg6 New Graphs: Program Terminates