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