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