/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/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, 179 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 47.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, 57 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/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/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: p6_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: mode4 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: alive4 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: id4 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: send4 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: st4 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p4_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: mode5 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p4_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: alive5 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: id5 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: send5 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: st5 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p5_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: mode6 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p5_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: alive6 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: id6 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: send6 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: st6 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: p6_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: nodes initVal: (@node1,@node2,@node3,@node4,@node5,@node6) type: [6 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 Name: p4 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: p5 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: p6 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 @p6_old store %9, %m1 %10 = load @nomsg store %10, @p6_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: "node4" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %m4 = alloca i8, align 1 %1 = load @nomsg store %1, %m4 %2 = load @mode4 %3 = trunc i8 %2 to i1 br %3, %4, %36 4: %5 = load @p3_old store %5, %m4 %6 = load @nomsg store %6, @p3_old %7 = load %m4 %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 @alive4 %14 = trunc i8 %13 to i1 br %14, %15, %32 15: %16 = load %m4 %17 = sext i8 %16 to i32 %18 = load @id4 %19 = sext i8 %18 to i32 %20 = icmp sgt %17 %19 br %20, %21, %23 21: %22 = load %m4 store %22, @send4 br %31 23: %24 = load %m4 %25 = sext i8 %24 to i32 %26 = load @id4 %27 = sext i8 %26 to i32 %28 = icmp eq %25 %27 br %28, %29, %30 29: store 1, @st4 br %30 30: br %31 31: br %34 32: %33 = load %m4 store %33, @send4 br %34 34: br %35 35: store 0, @mode4 br %89 36: %37 = load @alive4 %38 = trunc i8 %37 to i1 br %38, %39, %60 39: %40 = load @send4 %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 @p4_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 @send4 %53 = sext i8 %52 to i32 br %57 54: %55 = load @p4_new %56 = sext i8 %55 to i32 br %57 57: %58 = phi [%53, %51], [%56, %54] %59 = trunc i32 %58 to i8 store %59, @p4_new br %88 60: %61 = load @send4 %62 = sext i8 %61 to i32 %63 = load @id4 %64 = sext i8 %63 to i32 %65 = icmp ne %62 %64 br %65, %66, %87 66: %67 = load @send4 %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 @p4_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 @send4 %80 = sext i8 %79 to i32 br %84 81: %82 = load @p4_new %83 = sext i8 %82 to i32 br %84 84: %85 = phi [%80, %78], [%83, %81] %86 = trunc i32 %85 to i8 store %86, @p4_new br %87 87: br %88 88: store 1, @mode4 br %89 89: ret void *BasicFunctionTypename: "node5" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %m5 = alloca i8, align 1 %1 = load @nomsg store %1, %m5 %2 = load @mode5 %3 = trunc i8 %2 to i1 br %3, %4, %36 4: %5 = load @p4_old store %5, %m5 %6 = load @nomsg store %6, @p4_old %7 = load %m5 %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 @alive5 %14 = trunc i8 %13 to i1 br %14, %15, %32 15: %16 = load %m5 %17 = sext i8 %16 to i32 %18 = load @id5 %19 = sext i8 %18 to i32 %20 = icmp sgt %17 %19 br %20, %21, %23 21: %22 = load %m5 store %22, @send5 br %31 23: %24 = load %m5 %25 = sext i8 %24 to i32 %26 = load @id5 %27 = sext i8 %26 to i32 %28 = icmp eq %25 %27 br %28, %29, %30 29: store 1, @st5 br %30 30: br %31 31: br %34 32: %33 = load %m5 store %33, @send5 br %34 34: br %35 35: store 0, @mode5 br %89 36: %37 = load @alive5 %38 = trunc i8 %37 to i1 br %38, %39, %60 39: %40 = load @send5 %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 @p5_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 @send5 %53 = sext i8 %52 to i32 br %57 54: %55 = load @p5_new %56 = sext i8 %55 to i32 br %57 57: %58 = phi [%53, %51], [%56, %54] %59 = trunc i32 %58 to i8 store %59, @p5_new br %88 60: %61 = load @send5 %62 = sext i8 %61 to i32 %63 = load @id5 %64 = sext i8 %63 to i32 %65 = icmp ne %62 %64 br %65, %66, %87 66: %67 = load @send5 %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 @p5_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 @send5 %80 = sext i8 %79 to i32 br %84 81: %82 = load @p5_new %83 = sext i8 %82 to i32 br %84 84: %85 = phi [%80, %78], [%83, %81] %86 = trunc i32 %85 to i8 store %86, @p5_new br %87 87: br %88 88: store 1, @mode5 br %89 89: ret void *BasicFunctionTypename: "node6" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %m6 = alloca i8, align 1 %1 = load @nomsg store %1, %m6 %2 = load @mode6 %3 = trunc i8 %2 to i1 br %3, %4, %36 4: %5 = load @p5_old store %5, %m6 %6 = load @nomsg store %6, @p5_old %7 = load %m6 %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 @alive6 %14 = trunc i8 %13 to i1 br %14, %15, %32 15: %16 = load %m6 %17 = sext i8 %16 to i32 %18 = load @id6 %19 = sext i8 %18 to i32 %20 = icmp sgt %17 %19 br %20, %21, %23 21: %22 = load %m6 store %22, @send6 br %31 23: %24 = load %m6 %25 = sext i8 %24 to i32 %26 = load @id6 %27 = sext i8 %26 to i32 %28 = icmp eq %25 %27 br %28, %29, %30 29: store 1, @st6 br %30 30: br %31 31: br %34 32: %33 = load %m6 store %33, @send6 br %34 34: br %35 35: store 0, @mode6 br %89 36: %37 = load @alive6 %38 = trunc i8 %37 to i1 br %38, %39, %60 39: %40 = load @send6 %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 @p6_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 @send6 %53 = sext i8 %52 to i32 br %57 54: %55 = load @p6_new %56 = sext i8 %55 to i32 br %57 57: %58 = phi [%53, %51], [%56, %54] %59 = trunc i32 %58 to i8 store %59, @p6_new br %88 60: %61 = load @send6 %62 = sext i8 %61 to i32 %63 = load @id6 %64 = sext i8 %63 to i32 %65 = icmp ne %62 %64 br %65, %66, %87 66: %67 = load @send6 %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 @p6_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 @send6 %80 = sext i8 %79 to i32 br %84 81: %82 = load @p6_new %83 = sext i8 %82 to i32 br %84 84: %85 = phi [%80, %78], [%83, %81] %86 = trunc i32 %85 to i8 store %86, @p6_new br %87 87: br %88 88: store 1, @mode6 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, %314 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 = load @alive4 %17 = trunc i8 %16 to i1 %18 = zext i1 %17 to i32 %19 = add %15 %18 %20 = load @alive5 %21 = trunc i8 %20 to i1 %22 = zext i1 %21 to i32 %23 = add %19 %22 %24 = load @alive6 %25 = trunc i8 %24 to i1 %26 = zext i1 %25 to i32 %27 = add %23 %26 %28 = icmp sge %27 1 br %28, %29, %312 29: %30 = load @id1 %31 = sext i8 %30 to i32 %32 = icmp sge %31 0 br %32, %33, %310 33: %34 = load @st1 %35 = sext i8 %34 to i32 %36 = icmp eq %35 0 br %36, %37, %308 37: %38 = load @send1 %39 = sext i8 %38 to i32 %40 = load @id1 %41 = sext i8 %40 to i32 %42 = icmp eq %39 %41 br %42, %43, %306 43: %44 = load @mode1 %45 = trunc i8 %44 to i1 %46 = zext i1 %45 to i32 %47 = icmp eq %46 0 br %47, %48, %304 48: %49 = load @id2 %50 = sext i8 %49 to i32 %51 = icmp sge %50 0 br %51, %52, %302 52: %53 = load @st2 %54 = sext i8 %53 to i32 %55 = icmp eq %54 0 br %55, %56, %300 56: %57 = load @send2 %58 = sext i8 %57 to i32 %59 = load @id2 %60 = sext i8 %59 to i32 %61 = icmp eq %58 %60 br %61, %62, %298 62: %63 = load @mode2 %64 = trunc i8 %63 to i1 %65 = zext i1 %64 to i32 %66 = icmp eq %65 0 br %66, %67, %296 67: %68 = load @id3 %69 = sext i8 %68 to i32 %70 = icmp sge %69 0 br %70, %71, %294 71: %72 = load @st3 %73 = sext i8 %72 to i32 %74 = icmp eq %73 0 br %74, %75, %292 75: %76 = load @send3 %77 = sext i8 %76 to i32 %78 = load @id3 %79 = sext i8 %78 to i32 %80 = icmp eq %77 %79 br %80, %81, %290 81: %82 = load @mode3 %83 = trunc i8 %82 to i1 %84 = zext i1 %83 to i32 %85 = icmp eq %84 0 br %85, %86, %288 86: %87 = load @id4 %88 = sext i8 %87 to i32 %89 = icmp sge %88 0 br %89, %90, %286 90: %91 = load @st4 %92 = sext i8 %91 to i32 %93 = icmp eq %92 0 br %93, %94, %284 94: %95 = load @send4 %96 = sext i8 %95 to i32 %97 = load @id4 %98 = sext i8 %97 to i32 %99 = icmp eq %96 %98 br %99, %100, %282 100: %101 = load @mode4 %102 = trunc i8 %101 to i1 %103 = zext i1 %102 to i32 %104 = icmp eq %103 0 br %104, %105, %280 105: %106 = load @id5 %107 = sext i8 %106 to i32 %108 = icmp sge %107 0 br %108, %109, %278 109: %110 = load @st5 %111 = sext i8 %110 to i32 %112 = icmp eq %111 0 br %112, %113, %276 113: %114 = load @send5 %115 = sext i8 %114 to i32 %116 = load @id5 %117 = sext i8 %116 to i32 %118 = icmp eq %115 %117 br %118, %119, %274 119: %120 = load @mode5 %121 = trunc i8 %120 to i1 %122 = zext i1 %121 to i32 %123 = icmp eq %122 0 br %123, %124, %272 124: %125 = load @id6 %126 = sext i8 %125 to i32 %127 = icmp sge %126 0 br %127, %128, %270 128: %129 = load @st6 %130 = sext i8 %129 to i32 %131 = icmp eq %130 0 br %131, %132, %268 132: %133 = load @send6 %134 = sext i8 %133 to i32 %135 = load @id6 %136 = sext i8 %135 to i32 %137 = icmp eq %134 %136 br %137, %138, %266 138: %139 = load @mode6 %140 = trunc i8 %139 to i1 %141 = zext i1 %140 to i32 %142 = icmp eq %141 0 br %142, %143, %264 143: %144 = load @id1 %145 = sext i8 %144 to i32 %146 = load @id2 %147 = sext i8 %146 to i32 %148 = icmp ne %145 %147 br %148, %149, %262 149: %150 = load @id1 %151 = sext i8 %150 to i32 %152 = load @id3 %153 = sext i8 %152 to i32 %154 = icmp ne %151 %153 br %154, %155, %260 155: %156 = load @id1 %157 = sext i8 %156 to i32 %158 = load @id4 %159 = sext i8 %158 to i32 %160 = icmp ne %157 %159 br %160, %161, %258 161: %162 = load @id1 %163 = sext i8 %162 to i32 %164 = load @id5 %165 = sext i8 %164 to i32 %166 = icmp ne %163 %165 br %166, %167, %256 167: %168 = load @id1 %169 = sext i8 %168 to i32 %170 = load @id6 %171 = sext i8 %170 to i32 %172 = icmp ne %169 %171 br %172, %173, %254 173: %174 = load @id2 %175 = sext i8 %174 to i32 %176 = load @id3 %177 = sext i8 %176 to i32 %178 = icmp ne %175 %177 br %178, %179, %252 179: %180 = load @id2 %181 = sext i8 %180 to i32 %182 = load @id4 %183 = sext i8 %182 to i32 %184 = icmp ne %181 %183 br %184, %185, %250 185: %186 = load @id2 %187 = sext i8 %186 to i32 %188 = load @id5 %189 = sext i8 %188 to i32 %190 = icmp ne %187 %189 br %190, %191, %248 191: %192 = load @id2 %193 = sext i8 %192 to i32 %194 = load @id6 %195 = sext i8 %194 to i32 %196 = icmp ne %193 %195 br %196, %197, %246 197: %198 = load @id3 %199 = sext i8 %198 to i32 %200 = load @id4 %201 = sext i8 %200 to i32 %202 = icmp ne %199 %201 br %202, %203, %244 203: %204 = load @id3 %205 = sext i8 %204 to i32 %206 = load @id5 %207 = sext i8 %206 to i32 %208 = icmp ne %205 %207 br %208, %209, %242 209: %210 = load @id3 %211 = sext i8 %210 to i32 %212 = load @id6 %213 = sext i8 %212 to i32 %214 = icmp ne %211 %213 br %214, %215, %240 215: %216 = load @id4 %217 = sext i8 %216 to i32 %218 = load @id5 %219 = sext i8 %218 to i32 %220 = icmp ne %217 %219 br %220, %221, %238 221: %222 = load @id4 %223 = sext i8 %222 to i32 %224 = load @id6 %225 = sext i8 %224 to i32 %226 = icmp ne %223 %225 br %226, %227, %236 227: %228 = load @id5 %229 = sext i8 %228 to i32 %230 = load @id6 %231 = sext i8 %230 to i32 %232 = icmp ne %229 %231 br %232, %233, %234 233: store 1, %tmp br %235 234: store 0, %tmp br %235 235: br %237 236: store 0, %tmp br %237 237: br %239 238: store 0, %tmp br %239 239: br %241 240: store 0, %tmp br %241 241: br %243 242: store 0, %tmp br %243 243: br %245 244: store 0, %tmp br %245 245: br %247 246: store 0, %tmp br %247 247: br %249 248: store 0, %tmp br %249 249: br %251 250: store 0, %tmp br %251 251: br %253 252: store 0, %tmp br %253 253: br %255 254: store 0, %tmp br %255 255: br %257 256: store 0, %tmp br %257 257: br %259 258: store 0, %tmp br %259 259: br %261 260: store 0, %tmp br %261 261: br %263 262: store 0, %tmp br %263 263: br %265 264: store 0, %tmp br %265 265: br %267 266: store 0, %tmp br %267 267: br %269 268: store 0, %tmp br %269 269: br %271 270: store 0, %tmp br %271 271: br %273 272: store 0, %tmp br %273 273: br %275 274: store 0, %tmp br %275 275: br %277 276: store 0, %tmp br %277 277: br %279 278: store 0, %tmp br %279 279: br %281 280: store 0, %tmp br %281 281: br %283 282: store 0, %tmp br %283 283: br %285 284: store 0, %tmp br %285 285: br %287 286: store 0, %tmp br %287 287: br %289 288: store 0, %tmp br %289 289: br %291 290: store 0, %tmp br %291 291: br %293 292: store 0, %tmp br %293 293: br %295 294: store 0, %tmp br %295 295: br %297 296: store 0, %tmp br %297 297: br %299 298: store 0, %tmp br %299 299: br %301 300: store 0, %tmp br %301 301: br %303 302: store 0, %tmp br %303 303: br %305 304: store 0, %tmp br %305 305: br %307 306: store 0, %tmp br %307 307: br %309 308: store 0, %tmp br %309 309: br %311 310: store 0, %tmp br %311 311: br %313 312: store 0, %tmp br %313 313: br %315 314: store 0, %tmp br %315 315: %316 = load %tmp ret %316 *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 = load @st4 %10 = sext i8 %9 to i32 %11 = add %8 %10 %12 = load @st5 %13 = sext i8 %12 to i32 %14 = add %11 %13 %15 = load @st6 %16 = sext i8 %15 to i32 %17 = add %14 %16 %18 = icmp sle %17 1 br %18, %19, %47 19: %20 = load @r1 %21 = sext i8 %20 to i32 %22 = icmp slt %21 6 br %22, %23, %24 23: store 1, %tmp br %46 24: %25 = load @st1 %26 = sext i8 %25 to i32 %27 = load @st2 %28 = sext i8 %27 to i32 %29 = add %26 %28 %30 = load @st3 %31 = sext i8 %30 to i32 %32 = add %29 %31 %33 = load @st4 %34 = sext i8 %33 to i32 %35 = add %32 %34 %36 = load @st5 %37 = sext i8 %36 to i32 %38 = add %35 %37 %39 = load @st6 %40 = sext i8 %39 to i32 %41 = add %38 %40 %42 = icmp eq %41 1 br %42, %43, %44 43: store 1, %tmp br %45 44: store 0, %tmp br %45 45: br %46 46: br %48 47: store 0, %tmp br %48 48: %49 = load %tmp ret %49 *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 signext i8 @__VERIFIER_nondet_char() store %24, @id4 %25 = call signext i8 @__VERIFIER_nondet_char() store %25, @st4 %26 = call signext i8 @__VERIFIER_nondet_msg_t() store %26, @send4 %27 = call zeroext i1 @__VERIFIER_nondet__Bool() %28 = zext i1 %27 to i8 store %28, @mode4 %29 = call zeroext i1 @__VERIFIER_nondet__Bool() %30 = zext i1 %29 to i8 store %30, @alive4 %31 = call signext i8 @__VERIFIER_nondet_char() store %31, @id5 %32 = call signext i8 @__VERIFIER_nondet_char() store %32, @st5 %33 = call signext i8 @__VERIFIER_nondet_msg_t() store %33, @send5 %34 = call zeroext i1 @__VERIFIER_nondet__Bool() %35 = zext i1 %34 to i8 store %35, @mode5 %36 = call zeroext i1 @__VERIFIER_nondet__Bool() %37 = zext i1 %36 to i8 store %37, @alive5 %38 = call signext i8 @__VERIFIER_nondet_char() store %38, @id6 %39 = call signext i8 @__VERIFIER_nondet_char() store %39, @st6 %40 = call signext i8 @__VERIFIER_nondet_msg_t() store %40, @send6 %41 = call zeroext i1 @__VERIFIER_nondet__Bool() %42 = zext i1 %41 to i8 store %42, @mode6 %43 = call zeroext i1 @__VERIFIER_nondet__Bool() %44 = zext i1 %43 to i8 store %44, @alive6 %45 = call i32 @init() store %45, %i2 %46 = load %i2 %47 = icmp ne %46 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %47) %48 = load @nomsg store %48, @p1_old %49 = load @nomsg store %49, @p1_new %50 = load @nomsg store %50, @p2_old %51 = load @nomsg store %51, @p2_new %52 = load @nomsg store %52, @p3_old %53 = load @nomsg store %53, @p3_new %54 = load @nomsg store %54, @p4_old %55 = load @nomsg store %55, @p4_new %56 = load @nomsg store %56, @p5_old %57 = load @nomsg store %57, @p5_new %58 = load @nomsg store %58, @p6_old %59 = load @nomsg store %59, @p6_new store 0, %i2 br %60 60: %61 = load %i2 %62 = icmp slt %61 12 br %62, %63, %81 63: Unnamed Call-Instruction = call BasicVoidType @node1() Unnamed Call-Instruction = call BasicVoidType @node2() Unnamed Call-Instruction = call BasicVoidType @node3() Unnamed Call-Instruction = call BasicVoidType @node4() Unnamed Call-Instruction = call BasicVoidType @node5() Unnamed Call-Instruction = call BasicVoidType @node6() %64 = load @p1_new store %64, @p1_old %65 = load @nomsg store %65, @p1_new %66 = load @p2_new store %66, @p2_old %67 = load @nomsg store %67, @p2_new %68 = load @p3_new store %68, @p3_old %69 = load @nomsg store %69, @p3_new %70 = load @p4_new store %70, @p4_old %71 = load @nomsg store %71, @p4_new %72 = load @p5_new store %72, @p5_old %73 = load @nomsg store %73, @p5_new %74 = load @p6_new store %74, @p6_old %75 = load @nomsg store %75, @p6_new %76 = call i32 @check() store %76, %c1 %77 = load %c1 %78 = icmp ne %77 0 Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext %78) %79 = load %i2 %80 = add %79 1 store %80, %i2 br %60 81: %82 = load %1 ret %82 *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