/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 172 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 12.2 s] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) LLVM Symbolic Execution SCC (9) LLVM Symbolic Execution SCC (10) SymbolicExecutionGraphToLassoProof [COMPLETE, 0 ms] (11) AND (12) LLVM Symbolic Execution Lasso (13) LLVM Symbolic Execution Lasso (14) LLVM Symbolic Execution Lasso (15) LLVM Symbolic Execution Lasso ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Name: nomsg initVal: -1 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: null section: null Name: mode1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: r1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p3_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: alive1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: id1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: send1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: st1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p1_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: mode2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p1_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: alive2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: id2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: send2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: st2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p2_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: mode3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p2_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: alive3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: id3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: send3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: st3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p3_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: nodes initVal: (@node1,@node2,@node3) type: [3 x *BasicFunctionType varArgs: falsereturnType: BasicVoidTypeparamTypes: ()] addrSpace: null alignment: 16 threadLocal: false constant: false linkageType: null section: null Name: p1 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: p2 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: p3 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_char" returnParam: i8 signext parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_nondet_msg_t" returnParam: i8 signext parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_nondet__Bool" returnParam: i1 zeroext parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_error" returnParam: BasicVoidType parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "node1" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %m1 = alloca i8, align 1 %1 = load @nomsg store %1, %m1 %2 = load @mode1 %3 = trunc i8 %2 to i1 br %3, %4, %42 4: %5 = load @r1 %6 = sext i8 %5 to i32 %7 = add %6 1 %8 = trunc i32 %7 to i8 store %8, @r1 %9 = load @p3_old store %9, %m1 %10 = load @nomsg store %10, @p3_old %11 = load %m1 %12 = sext i8 %11 to i32 %13 = load @nomsg %14 = sext i8 %13 to i32 %15 = icmp ne %12 %14 br %15, %16, %41 16: %17 = load @alive1 %18 = trunc i8 %17 to i1 br %18, %19, %38 19: %20 = load %m1 %21 = sext i8 %20 to i32 %22 = load @id1 %23 = sext i8 %22 to i32 %24 = icmp sgt %21 %23 br %24, %25, %27 25: %26 = load %m1 store %26, @send1 br %37 27: %28 = load %m1 %29 = sext i8 %28 to i32 %30 = load @id1 %31 = sext i8 %30 to i32 %32 = icmp eq %29 %31 br %32, %33, %34 33: store 1, @st1 br %36 34: %35 = load %m1 store %35, @send1 br %36 36: br %37 37: br %40 38: %39 = load %m1 store %39, @send1 br %40 40: br %41 41: store 0, @mode1 br %95 42: %43 = load @alive1 %44 = trunc i8 %43 to i1 br %44, %45, %66 45: %46 = load @send1 %47 = sext i8 %46 to i32 %48 = load @nomsg %49 = sext i8 %48 to i32 %50 = icmp ne %47 %49 br %50, %51, %60 51: %52 = load @p1_new %53 = sext i8 %52 to i32 %54 = load @nomsg %55 = sext i8 %54 to i32 %56 = icmp eq %53 %55 br %56, %57, %60 57: %58 = load @send1 %59 = sext i8 %58 to i32 br %63 60: %61 = load @p1_new %62 = sext i8 %61 to i32 br %63 63: %64 = phi [%59, %57], [%62, %60] %65 = trunc i32 %64 to i8 store %65, @p1_new br %94 66: %67 = load @send1 %68 = sext i8 %67 to i32 %69 = load @id1 %70 = sext i8 %69 to i32 %71 = icmp ne %68 %70 br %71, %72, %93 72: %73 = load @send1 %74 = sext i8 %73 to i32 %75 = load @nomsg %76 = sext i8 %75 to i32 %77 = icmp ne %74 %76 br %77, %78, %87 78: %79 = load @p1_new %80 = sext i8 %79 to i32 %81 = load @nomsg %82 = sext i8 %81 to i32 %83 = icmp eq %80 %82 br %83, %84, %87 84: %85 = load @send1 %86 = sext i8 %85 to i32 br %90 87: %88 = load @p1_new %89 = sext i8 %88 to i32 br %90 90: %91 = phi [%86, %84], [%89, %87] %92 = trunc i32 %91 to i8 store %92, @p1_new br %93 93: br %94 94: store 1, @mode1 br %95 95: ret void *BasicFunctionTypename: "node2" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %m2 = alloca i8, align 1 %1 = load @nomsg store %1, %m2 %2 = load @mode2 %3 = trunc i8 %2 to i1 br %3, %4, %36 4: %5 = load @p1_old store %5, %m2 %6 = load @nomsg store %6, @p1_old %7 = load %m2 %8 = sext i8 %7 to i32 %9 = load @nomsg %10 = sext i8 %9 to i32 %11 = icmp ne %8 %10 br %11, %12, %35 12: %13 = load @alive2 %14 = trunc i8 %13 to i1 br %14, %15, %32 15: %16 = load %m2 %17 = sext i8 %16 to i32 %18 = load @id2 %19 = sext i8 %18 to i32 %20 = icmp sgt %17 %19 br %20, %21, %23 21: %22 = load %m2 store %22, @send2 br %31 23: %24 = load %m2 %25 = sext i8 %24 to i32 %26 = load @id2 %27 = sext i8 %26 to i32 %28 = icmp eq %25 %27 br %28, %29, %30 29: store 1, @st2 br %30 30: br %31 31: br %34 32: %33 = load %m2 store %33, @send2 br %34 34: br %35 35: store 0, @mode2 br %89 36: %37 = load @alive2 %38 = trunc i8 %37 to i1 br %38, %39, %60 39: %40 = load @send2 %41 = sext i8 %40 to i32 %42 = load @nomsg %43 = sext i8 %42 to i32 %44 = icmp ne %41 %43 br %44, %45, %54 45: %46 = load @p2_new %47 = sext i8 %46 to i32 %48 = load @nomsg %49 = sext i8 %48 to i32 %50 = icmp eq %47 %49 br %50, %51, %54 51: %52 = load @send2 %53 = sext i8 %52 to i32 br %57 54: %55 = load @p2_new %56 = sext i8 %55 to i32 br %57 57: %58 = phi [%53, %51], [%56, %54] %59 = trunc i32 %58 to i8 store %59, @p2_new br %88 60: %61 = load @send2 %62 = sext i8 %61 to i32 %63 = load @id2 %64 = sext i8 %63 to i32 %65 = icmp ne %62 %64 br %65, %66, %87 66: %67 = load @send2 %68 = sext i8 %67 to i32 %69 = load @nomsg %70 = sext i8 %69 to i32 %71 = icmp ne %68 %70 br %71, %72, %81 72: %73 = load @p2_new %74 = sext i8 %73 to i32 %75 = load @nomsg %76 = sext i8 %75 to i32 %77 = icmp eq %74 %76 br %77, %78, %81 78: %79 = load @send2 %80 = sext i8 %79 to i32 br %84 81: %82 = load @p2_new %83 = sext i8 %82 to i32 br %84 84: %85 = phi [%80, %78], [%83, %81] %86 = trunc i32 %85 to i8 store %86, @p2_new br %87 87: br %88 88: store 1, @mode2 br %89 89: ret void *BasicFunctionTypename: "node3" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %m3 = alloca i8, align 1 %1 = load @nomsg store %1, %m3 %2 = load @mode3 %3 = trunc i8 %2 to i1 br %3, %4, %36 4: %5 = load @p2_old store %5, %m3 %6 = load @nomsg store %6, @p2_old %7 = load %m3 %8 = sext i8 %7 to i32 %9 = load @nomsg %10 = sext i8 %9 to i32 %11 = icmp ne %8 %10 br %11, %12, %35 12: %13 = load @alive3 %14 = trunc i8 %13 to i1 br %14, %15, %32 15: %16 = load %m3 %17 = sext i8 %16 to i32 %18 = load @id3 %19 = sext i8 %18 to i32 %20 = icmp sgt %17 %19 br %20, %21, %23 21: %22 = load %m3 store %22, @send3 br %31 23: %24 = load %m3 %25 = sext i8 %24 to i32 %26 = load @id3 %27 = sext i8 %26 to i32 %28 = icmp eq %25 %27 br %28, %29, %30 29: store 1, @st3 br %30 30: br %31 31: br %34 32: %33 = load %m3 store %33, @send3 br %34 34: br %35 35: store 0, @mode3 br %89 36: %37 = load @alive3 %38 = trunc i8 %37 to i1 br %38, %39, %60 39: %40 = load @send3 %41 = sext i8 %40 to i32 %42 = load @nomsg %43 = sext i8 %42 to i32 %44 = icmp ne %41 %43 br %44, %45, %54 45: %46 = load @p3_new %47 = sext i8 %46 to i32 %48 = load @nomsg %49 = sext i8 %48 to i32 %50 = icmp eq %47 %49 br %50, %51, %54 51: %52 = load @send3 %53 = sext i8 %52 to i32 br %57 54: %55 = load @p3_new %56 = sext i8 %55 to i32 br %57 57: %58 = phi [%53, %51], [%56, %54] %59 = trunc i32 %58 to i8 store %59, @p3_new br %88 60: %61 = load @send3 %62 = sext i8 %61 to i32 %63 = load @id3 %64 = sext i8 %63 to i32 %65 = icmp ne %62 %64 br %65, %66, %87 66: %67 = load @send3 %68 = sext i8 %67 to i32 %69 = load @nomsg %70 = sext i8 %69 to i32 %71 = icmp ne %68 %70 br %71, %72, %81 72: %73 = load @p3_new %74 = sext i8 %73 to i32 %75 = load @nomsg %76 = sext i8 %75 to i32 %77 = icmp eq %74 %76 br %77, %78, %81 78: %79 = load @send3 %80 = sext i8 %79 to i32 br %84 81: %82 = load @p3_new %83 = sext i8 %82 to i32 br %84 84: %85 = phi [%80, %78], [%83, %81] %86 = trunc i32 %85 to i8 store %86, @p3_new br %87 87: br %88 88: store 1, @mode3 br %89 89: ret void *BasicFunctionTypename: "init" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %tmp = alloca i32, align 4 %1 = load @r1 %2 = sext i8 %1 to i32 %3 = icmp eq %2 0 br %3, %4, %125 4: %5 = load @alive1 %6 = trunc i8 %5 to i1 %7 = zext i1 %6 to i32 %8 = load @alive2 %9 = trunc i8 %8 to i1 %10 = zext i1 %9 to i32 %11 = add %7 %10 %12 = load @alive3 %13 = trunc i8 %12 to i1 %14 = zext i1 %13 to i32 %15 = add %11 %14 %16 = icmp sge %15 1 br %16, %17, %123 17: %18 = load @id1 %19 = sext i8 %18 to i32 %20 = icmp sge %19 0 br %20, %21, %121 21: %22 = load @st1 %23 = sext i8 %22 to i32 %24 = icmp eq %23 0 br %24, %25, %119 25: %26 = load @send1 %27 = sext i8 %26 to i32 %28 = load @id1 %29 = sext i8 %28 to i32 %30 = icmp eq %27 %29 br %30, %31, %117 31: %32 = load @mode1 %33 = trunc i8 %32 to i1 %34 = zext i1 %33 to i32 %35 = icmp eq %34 0 br %35, %36, %115 36: %37 = load @id2 %38 = sext i8 %37 to i32 %39 = icmp sge %38 0 br %39, %40, %113 40: %41 = load @st2 %42 = sext i8 %41 to i32 %43 = icmp eq %42 0 br %43, %44, %111 44: %45 = load @send2 %46 = sext i8 %45 to i32 %47 = load @id2 %48 = sext i8 %47 to i32 %49 = icmp eq %46 %48 br %49, %50, %109 50: %51 = load @mode2 %52 = trunc i8 %51 to i1 %53 = zext i1 %52 to i32 %54 = icmp eq %53 0 br %54, %55, %107 55: %56 = load @id3 %57 = sext i8 %56 to i32 %58 = icmp sge %57 0 br %58, %59, %105 59: %60 = load @st3 %61 = sext i8 %60 to i32 %62 = icmp eq %61 0 br %62, %63, %103 63: %64 = load @send3 %65 = sext i8 %64 to i32 %66 = load @id3 %67 = sext i8 %66 to i32 %68 = icmp eq %65 %67 br %68, %69, %101 69: %70 = load @mode3 %71 = trunc i8 %70 to i1 %72 = zext i1 %71 to i32 %73 = icmp eq %72 0 br %73, %74, %99 74: %75 = load @id1 %76 = sext i8 %75 to i32 %77 = load @id2 %78 = sext i8 %77 to i32 %79 = icmp ne %76 %78 br %79, %80, %97 80: %81 = load @id1 %82 = sext i8 %81 to i32 %83 = load @id3 %84 = sext i8 %83 to i32 %85 = icmp ne %82 %84 br %85, %86, %95 86: %87 = load @id2 %88 = sext i8 %87 to i32 %89 = load @id3 %90 = sext i8 %89 to i32 %91 = icmp ne %88 %90 br %91, %92, %93 92: store 1, %tmp br %94 93: store 0, %tmp br %94 94: br %96 95: store 0, %tmp br %96 96: br %98 97: store 0, %tmp br %98 98: br %100 99: store 0, %tmp br %100 100: br %102 101: store 0, %tmp br %102 102: br %104 103: store 0, %tmp br %104 104: br %106 105: store 0, %tmp br %106 106: br %108 107: store 0, %tmp br %108 108: br %110 109: store 0, %tmp br %110 110: br %112 111: store 0, %tmp br %112 112: br %114 113: store 0, %tmp br %114 114: br %116 115: store 0, %tmp br %116 116: br %118 117: store 0, %tmp br %118 118: br %120 119: store 0, %tmp br %120 120: br %122 121: store 0, %tmp br %122 122: br %124 123: store 0, %tmp br %124 124: br %126 125: store 0, %tmp br %126 126: %127 = load %tmp ret %127 *BasicFunctionTypename: "check" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %tmp = alloca i32, align 4 %1 = load @st1 %2 = sext i8 %1 to i32 %3 = load @st2 %4 = sext i8 %3 to i32 %5 = add %2 %4 %6 = load @st3 %7 = sext i8 %6 to i32 %8 = add %5 %7 %9 = icmp sle %8 1 br %9, %10, %29 10: %11 = load @r1 %12 = sext i8 %11 to i32 %13 = icmp slt %12 3 br %13, %14, %15 14: store 1, %tmp br %28 15: %16 = load @st1 %17 = sext i8 %16 to i32 %18 = load @st2 %19 = sext i8 %18 to i32 %20 = add %17 %19 %21 = load @st3 %22 = sext i8 %21 to i32 %23 = add %20 %22 %24 = icmp eq %23 1 br %24, %25, %26 25: store 1, %tmp br %27 26: store 0, %tmp br %27 27: br %28 28: br %30 29: store 0, %tmp br %30 30: %31 = load %tmp ret %31 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %c1 = alloca i32, align 4 %i2 = alloca i32, align 4 store 0, %1 store 0, %c1 %2 = call signext i8 @__VERIFIER_nondet_char() store %2, @r1 %3 = call signext i8 @__VERIFIER_nondet_char() store %3, @id1 %4 = call signext i8 @__VERIFIER_nondet_char() store %4, @st1 %5 = call signext i8 @__VERIFIER_nondet_msg_t() store %5, @send1 %6 = call zeroext i1 @__VERIFIER_nondet__Bool() %7 = zext i1 %6 to i8 store %7, @mode1 %8 = call zeroext i1 @__VERIFIER_nondet__Bool() %9 = zext i1 %8 to i8 store %9, @alive1 %10 = call signext i8 @__VERIFIER_nondet_char() store %10, @id2 %11 = call signext i8 @__VERIFIER_nondet_char() store %11, @st2 %12 = call signext i8 @__VERIFIER_nondet_msg_t() store %12, @send2 %13 = call zeroext i1 @__VERIFIER_nondet__Bool() %14 = zext i1 %13 to i8 store %14, @mode2 %15 = call zeroext i1 @__VERIFIER_nondet__Bool() %16 = zext i1 %15 to i8 store %16, @alive2 %17 = call signext i8 @__VERIFIER_nondet_char() store %17, @id3 %18 = call signext i8 @__VERIFIER_nondet_char() store %18, @st3 %19 = call signext i8 @__VERIFIER_nondet_msg_t() store %19, @send3 %20 = call zeroext i1 @__VERIFIER_nondet__Bool() %21 = zext i1 %20 to i8 store %21, @mode3 %22 = call zeroext i1 @__VERIFIER_nondet__Bool() %23 = zext i1 %22 to i8 store %23, @alive3 %24 = call i32 @init() store %24, %i2 %25 = load %i2 %26 = icmp ne %25 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %26) %27 = load @nomsg store %27, @p1_old %28 = load @nomsg store %28, @p1_new %29 = load @nomsg store %29, @p2_old %30 = load @nomsg store %30, @p2_new %31 = load @nomsg store %31, @p3_old %32 = load @nomsg store %32, @p3_new store 0, %i2 br %33 33: %34 = load %i2 %35 = icmp slt %34 6 br %35, %36, %48 36: Unnamed Call-Instruction = call BasicVoidType @node1() Unnamed Call-Instruction = call BasicVoidType @node2() Unnamed Call-Instruction = call BasicVoidType @node3() %37 = load @p1_new store %37, @p1_old %38 = load @nomsg store %38, @p1_new %39 = load @p2_new store %39, @p2_old %40 = load @nomsg store %40, @p2_new %41 = load @p3_new store %41, @p3_old %42 = load @nomsg store %42, @p3_new %43 = call i32 @check() store %43, %c1 %44 = load %c1 %45 = icmp ne %44 0 Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext %45) %46 = load %i2 %47 = add %46 1 store %47, %i2 br %33 48: %49 = load %1 ret %49 *BasicFunctionTypename: "__VERIFIER_assume" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (arg i1 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = zext i1 %arg to i8 store %2, %1 br %3 3: %4 = load %1 %5 = trunc i8 %4 to i1 %6 = xor %5 1 br %6, %7, %8 7: br %3 8: ret void *BasicFunctionTypename: "assert" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (arg i1 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = zext i1 %arg to i8 store %2, %1 %3 = load %1 %4 = trunc i8 %3 to i1 br %4, %7, %5 5: br %6 6: Unnamed Call-Instruction = call BasicVoidType (...)* @__VERIFIER_error() noreturn unreachable 7: ret void Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 3 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) Obligation: SCC ---------------------------------------- (9) Obligation: SCC ---------------------------------------- (10) SymbolicExecutionGraphToLassoProof (COMPLETE) Converted SEGraph to 4 dependent lassos. ---------------------------------------- (11) Complex Obligation (AND) ---------------------------------------- (12) Obligation: Lasso ---------------------------------------- (13) Obligation: Lasso ---------------------------------------- (14) Obligation: Lasso ---------------------------------------- (15) Obligation: Lasso