/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, 45.7 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, 8002 ms] (11) AND (12) LLVM Symbolic Execution Lasso (13) LLVM Symbolic Execution Lasso (14) LLVM Symbolic Execution Lasso (15) LLVM Symbolic Execution Lasso (16) LLVM Symbolic Execution Lasso (17) LLVM Symbolic Execution Lasso (18) LLVM Symbolic Execution Lasso (19) LLVM Symbolic Execution Lasso (20) LLVM Symbolic Execution Lasso (21) LLVM Symbolic Execution Lasso (22) LLVM Symbolic Execution Lasso (23) LLVM Symbolic Execution Lasso (24) LLVM Symbolic Execution Lasso (25) LLVM Symbolic Execution Lasso (26) LLVM Symbolic Execution Lasso (27) 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: side1Failed_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: side1Failed_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: side1Failed_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: side2Failed_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: side2Failed_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: side2Failed_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: active_side_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: active_side_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: active_side_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: manual_selection_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: manual_selection_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: manual_selection_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: INTERNAL section: null Name: cs1_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: cs2_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: side1Failed initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s1s1_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s1s2_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s1p_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: side1_written initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s1s1_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s2s1_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: cs1_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: side2Failed initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s2s1_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s2s2_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s2p_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: side2_written initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s1s2_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s2s2_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: cs2_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s1p_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: s2p_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: nodes initVal: (@Console_task_each_pals_period,@Side1_activestandby_task_each_pals_period,@Side2_activestandby_task_each_pals_period,@Pendulum_prism_task_each_pals_period) type: [4 x *BasicFunctionType varArgs: falsereturnType: BasicVoidTypeparamTypes: ()] addrSpace: null alignment: 16 threadLocal: false constant: false linkageType: null section: null Name: cs1 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: cs2 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: s1s2 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: s1s1 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: s2s1 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: s2s2 initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: s1p initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: s2p 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: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_nondet_bool" returnParam: i1 zeroext parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_nondet__Bool" returnParam: i1 zeroext 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_int8_t" returnParam: i8 signext parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_error" returnParam: BasicVoidType parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "write_side1_failed_history" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (val i1 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = zext i1 %val to i8 store %2, %1 %3 = load @side1Failed_History_1 %4 = trunc i8 %3 to i1 %5 = zext i1 %4 to i8 store %5, @side1Failed_History_2 %6 = load @side1Failed_History_0 %7 = trunc i8 %6 to i1 %8 = zext i1 %7 to i8 store %8, @side1Failed_History_1 %9 = load %1 %10 = trunc i8 %9 to i1 %11 = zext i1 %10 to i8 store %11, @side1Failed_History_0 ret void *BasicFunctionTypename: "read_side1_failed_history" linkageType: EXTERNALLY_VISIBLE returnParam: i1 zeroext parameters: (index i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i1, align 1 %2 = alloca i8, align 1 store %index, %2 %3 = load %2 %4 = zext i8 %3 to i32 %5 = icmp eq %4 0 br %5, %6, %9 6: %7 = load @side1Failed_History_0 %8 = trunc i8 %7 to i1 store %8, %1 br %24 9: %10 = load %2 %11 = zext i8 %10 to i32 %12 = icmp eq %11 1 br %12, %13, %16 13: %14 = load @side1Failed_History_1 %15 = trunc i8 %14 to i1 store %15, %1 br %24 16: %17 = load %2 %18 = zext i8 %17 to i32 %19 = icmp eq %18 2 br %19, %20, %23 20: %21 = load @side1Failed_History_2 %22 = trunc i8 %21 to i1 store %22, %1 br %24 23: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) store 0, %1 br %24 24: %25 = load %1 ret %25 *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 *BasicFunctionTypename: "write_side2_failed_history" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (val i1 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = zext i1 %val to i8 store %2, %1 %3 = load @side2Failed_History_1 %4 = trunc i8 %3 to i1 %5 = zext i1 %4 to i8 store %5, @side2Failed_History_2 %6 = load @side2Failed_History_0 %7 = trunc i8 %6 to i1 %8 = zext i1 %7 to i8 store %8, @side2Failed_History_1 %9 = load %1 %10 = trunc i8 %9 to i1 %11 = zext i1 %10 to i8 store %11, @side2Failed_History_0 ret void *BasicFunctionTypename: "read_side2_failed_history" linkageType: EXTERNALLY_VISIBLE returnParam: i1 zeroext parameters: (index i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i1, align 1 %2 = alloca i8, align 1 store %index, %2 %3 = load %2 %4 = zext i8 %3 to i32 %5 = icmp eq %4 0 br %5, %6, %9 6: %7 = load @side2Failed_History_0 %8 = trunc i8 %7 to i1 store %8, %1 br %24 9: %10 = load %2 %11 = zext i8 %10 to i32 %12 = icmp eq %11 1 br %12, %13, %16 13: %14 = load @side2Failed_History_1 %15 = trunc i8 %14 to i1 store %15, %1 br %24 16: %17 = load %2 %18 = zext i8 %17 to i32 %19 = icmp eq %18 2 br %19, %20, %23 20: %21 = load @side2Failed_History_2 %22 = trunc i8 %21 to i1 store %22, %1 br %24 23: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) store 0, %1 br %24 24: %25 = load %1 ret %25 *BasicFunctionTypename: "write_active_side_history" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (val i8 signext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 store %val, %1 %2 = load @active_side_History_1 store %2, @active_side_History_2 %3 = load @active_side_History_0 store %3, @active_side_History_1 %4 = load %1 store %4, @active_side_History_0 ret void *BasicFunctionTypename: "read_active_side_history" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (index i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 store %index, %2 %3 = load %2 %4 = zext i8 %3 to i32 %5 = icmp eq %4 0 br %5, %6, %8 6: %7 = load @active_side_History_0 store %7, %1 br %21 8: %9 = load %2 %10 = zext i8 %9 to i32 %11 = icmp eq %10 1 br %11, %12, %14 12: %13 = load @active_side_History_1 store %13, %1 br %21 14: %15 = load %2 %16 = zext i8 %15 to i32 %17 = icmp eq %16 2 br %17, %18, %20 18: %19 = load @active_side_History_2 store %19, %1 br %21 20: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) store -2, %1 br %21 21: %22 = load %1 ret %22 *BasicFunctionTypename: "write_manual_selection_history" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (val i8 signext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 store %val, %1 %2 = load @manual_selection_History_1 store %2, @manual_selection_History_2 %3 = load @manual_selection_History_0 store %3, @manual_selection_History_1 %4 = load %1 store %4, @manual_selection_History_0 ret void *BasicFunctionTypename: "read_manual_selection_history" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (index i8 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i8, align 1 store %index, %2 %3 = load %2 %4 = zext i8 %3 to i32 %5 = icmp eq %4 0 br %5, %6, %8 6: %7 = load @manual_selection_History_0 store %7, %1 br %21 8: %9 = load %2 %10 = zext i8 %9 to i32 %11 = icmp eq %10 1 br %11, %12, %14 12: %13 = load @manual_selection_History_1 store %13, %1 br %21 14: %15 = load %2 %16 = zext i8 %15 to i32 %17 = icmp eq %16 2 br %17, %18, %20 18: %19 = load @manual_selection_History_2 store %19, %1 br %21 20: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) store 0, %1 br %21 21: %22 = load %1 ret %22 *BasicFunctionTypename: "init" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = load @side1Failed_History_0 %3 = trunc i8 %2 to i1 %4 = zext i1 %3 to i32 %5 = icmp ne %4 0 br %5, %6, %7 6: store 0, %1 br %68 7: %8 = load @side2Failed_History_0 %9 = trunc i8 %8 to i1 %10 = zext i1 %9 to i32 %11 = icmp ne %10 0 br %11, %12, %13 12: store 0, %1 br %68 13: %14 = load @active_side_History_0 %15 = sext i8 %14 to i32 %16 = icmp ne %15 -2 br %16, %17, %18 17: store 0, %1 br %68 18: %19 = load @manual_selection_History_0 %20 = sext i8 %19 to i32 %21 = icmp ne %20 0 br %21, %22, %23 22: store 0, %1 br %68 23: %24 = load @side1Failed_History_1 %25 = trunc i8 %24 to i1 %26 = zext i1 %25 to i32 %27 = icmp ne %26 0 br %27, %28, %29 28: store 0, %1 br %68 29: %30 = load @side2Failed_History_1 %31 = trunc i8 %30 to i1 %32 = zext i1 %31 to i32 %33 = icmp ne %32 0 br %33, %34, %35 34: store 0, %1 br %68 35: %36 = load @active_side_History_1 %37 = sext i8 %36 to i32 %38 = icmp ne %37 -2 br %38, %39, %40 39: store 0, %1 br %68 40: %41 = load @manual_selection_History_1 %42 = sext i8 %41 to i32 %43 = icmp ne %42 0 br %43, %44, %45 44: store 0, %1 br %68 45: %46 = load @side1Failed_History_2 %47 = trunc i8 %46 to i1 %48 = zext i1 %47 to i32 %49 = icmp ne %48 0 br %49, %50, %51 50: store 0, %1 br %68 51: %52 = load @side2Failed_History_2 %53 = trunc i8 %52 to i1 %54 = zext i1 %53 to i32 %55 = icmp ne %54 0 br %55, %56, %57 56: store 0, %1 br %68 57: %58 = load @active_side_History_2 %59 = sext i8 %58 to i32 %60 = icmp ne %59 -2 br %60, %61, %62 61: store 0, %1 br %68 62: %63 = load @manual_selection_History_2 %64 = sext i8 %63 to i32 %65 = icmp ne %64 0 br %65, %66, %67 66: store 0, %1 br %68 67: store 1, %1 br %68 68: %69 = load %1 ret %69 *BasicFunctionTypename: "flip_the_side" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (side i8 signext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %tmp = alloca i32, align 4 store %side, %1 %2 = load %1 %3 = sext i8 %2 to i32 %4 = icmp eq %3 1 br %4, %5, %6 5: store 0, %tmp br %7 6: store 1, %tmp br %7 7: %8 = load %tmp %9 = trunc i32 %8 to i8 ret %9 *BasicFunctionTypename: "Console_task_each_pals_period" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %manual_selection = alloca i8, align 1 %tmp = alloca i8, align 1 %1 = call signext i8 (...)* @__VERIFIER_nondet_char() store %1, %tmp %2 = load %tmp store %2, %manual_selection %3 = load %manual_selection Unnamed Call-Instruction = call BasicVoidType @write_manual_selection_history(i8 signext %3) %4 = load %manual_selection %5 = sext i8 %4 to i32 %6 = load @nomsg %7 = sext i8 %6 to i32 %8 = icmp ne %5 %7 br %8, %9, %18 9: %10 = load @cs1_new %11 = sext i8 %10 to i32 %12 = load @nomsg %13 = sext i8 %12 to i32 %14 = icmp eq %11 %13 br %14, %15, %18 15: %16 = load %manual_selection %17 = sext i8 %16 to i32 br %21 18: %19 = load @cs1_new %20 = sext i8 %19 to i32 br %21 21: %22 = phi [%17, %15], [%20, %18] %23 = trunc i32 %22 to i8 store %23, @cs1_new %24 = load %manual_selection %25 = sext i8 %24 to i32 %26 = load @nomsg %27 = sext i8 %26 to i32 %28 = icmp ne %25 %27 br %28, %29, %38 29: %30 = load @cs2_new %31 = sext i8 %30 to i32 %32 = load @nomsg %33 = sext i8 %32 to i32 %34 = icmp eq %31 %33 br %34, %35, %38 35: %36 = load %manual_selection %37 = sext i8 %36 to i32 br %41 38: %39 = load @cs2_new %40 = sext i8 %39 to i32 br %41 41: %42 = phi [%37, %35], [%40, %38] %43 = trunc i32 %42 to i8 store %43, @cs2_new store 0, %manual_selection ret void *BasicFunctionTypename: "Side1_activestandby_task_each_pals_period" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %side1 = alloca i8, align 1 %side2 = alloca i8, align 1 %manual_selection = alloca i8, align 1 %next_state = alloca i8, align 1 %1 = load @nomsg store %1, %side1 %2 = load @nomsg store %2, %side2 store 0, %manual_selection %3 = call zeroext i1 (...)* @__VERIFIER_nondet_bool() %4 = zext i1 %3 to i8 store %4, @side1Failed %5 = load @side1Failed %6 = trunc i8 %5 to i1 Unnamed Call-Instruction = call BasicVoidType @write_side1_failed_history(i1 zeroext %6) %7 = load @side1Failed %8 = trunc i8 %7 to i1 br %8, %9, %71 9: %10 = load @nomsg %11 = sext i8 %10 to i32 %12 = load @nomsg %13 = sext i8 %12 to i32 %14 = icmp ne %11 %13 br %14, %15, %24 15: %16 = load @s1s1_new %17 = sext i8 %16 to i32 %18 = load @nomsg %19 = sext i8 %18 to i32 %20 = icmp eq %17 %19 br %20, %21, %24 21: %22 = load @nomsg %23 = sext i8 %22 to i32 br %27 24: %25 = load @s1s1_new %26 = sext i8 %25 to i32 br %27 27: %28 = phi [%23, %21], [%26, %24] %29 = trunc i32 %28 to i8 store %29, @s1s1_new %30 = load @nomsg %31 = sext i8 %30 to i32 %32 = load @nomsg %33 = sext i8 %32 to i32 %34 = icmp ne %31 %33 br %34, %35, %44 35: %36 = load @s1s2_new %37 = sext i8 %36 to i32 %38 = load @nomsg %39 = sext i8 %38 to i32 %40 = icmp eq %37 %39 br %40, %41, %44 41: %42 = load @nomsg %43 = sext i8 %42 to i32 br %47 44: %45 = load @s1s2_new %46 = sext i8 %45 to i32 br %47 47: %48 = phi [%43, %41], [%46, %44] %49 = trunc i32 %48 to i8 store %49, @s1s2_new %50 = load @nomsg %51 = sext i8 %50 to i32 %52 = load @nomsg %53 = sext i8 %52 to i32 %54 = icmp ne %51 %53 br %54, %55, %64 55: %56 = load @s1p_new %57 = sext i8 %56 to i32 %58 = load @nomsg %59 = sext i8 %58 to i32 %60 = icmp eq %57 %59 br %60, %61, %64 61: %62 = load @nomsg %63 = sext i8 %62 to i32 br %67 64: %65 = load @s1p_new %66 = sext i8 %65 to i32 br %67 67: %68 = phi [%63, %61], [%66, %64] %69 = trunc i32 %68 to i8 store %69, @s1p_new %70 = load @nomsg store %70, @side1_written br %190 71: %72 = load @s1s1_old store %72, %side1 %73 = load @nomsg store %73, @s1s1_old %74 = load @s2s1_old store %74, %side2 %75 = load @nomsg store %75, @s2s1_old %76 = load @cs1_old store %76, %manual_selection %77 = load @nomsg store %77, @cs1_old %78 = load %side1 %79 = sext i8 %78 to i32 %80 = load %side2 %81 = sext i8 %80 to i32 %82 = icmp eq %79 %81 br %82, %83, %84 83: store 1, %next_state br %128 84: %85 = load %side1 %86 = sext i8 %85 to i32 %87 = load @nomsg %88 = sext i8 %87 to i32 %89 = icmp eq %86 %88 br %89, %90, %99 90: %91 = load %side2 %92 = sext i8 %91 to i32 %93 = load @nomsg %94 = sext i8 %93 to i32 %95 = icmp ne %92 %94 br %95, %96, %97 96: store 0, %next_state br %98 97: br %100 98: br %127 99: br %100 100: %101 = load %side1 %102 = sext i8 %101 to i32 %103 = load @nomsg %104 = sext i8 %103 to i32 %105 = icmp ne %102 %104 br %105, %106, %115 106: %107 = load %side2 %108 = sext i8 %107 to i32 %109 = load @nomsg %110 = sext i8 %109 to i32 %111 = icmp eq %108 %110 br %111, %112, %113 112: store 1, %next_state br %114 113: br %116 114: br %126 115: br %116 116: %117 = load %manual_selection %118 = sext i8 %117 to i32 %119 = icmp eq %118 1 br %119, %120, %123 120: %121 = load %side1 %122 = call signext i8 @flip_the_side(i8 signext %121) store %122, %next_state br %125 123: %124 = load %side1 store %124, %next_state br %125 125: br %126 126: br %127 127: br %128 128: %129 = load %next_state %130 = sext i8 %129 to i32 %131 = load @nomsg %132 = sext i8 %131 to i32 %133 = icmp ne %130 %132 br %133, %134, %143 134: %135 = load @s1s1_new %136 = sext i8 %135 to i32 %137 = load @nomsg %138 = sext i8 %137 to i32 %139 = icmp eq %136 %138 br %139, %140, %143 140: %141 = load %next_state %142 = sext i8 %141 to i32 br %146 143: %144 = load @s1s1_new %145 = sext i8 %144 to i32 br %146 146: %147 = phi [%142, %140], [%145, %143] %148 = trunc i32 %147 to i8 store %148, @s1s1_new %149 = load %next_state %150 = sext i8 %149 to i32 %151 = load @nomsg %152 = sext i8 %151 to i32 %153 = icmp ne %150 %152 br %153, %154, %163 154: %155 = load @s1s2_new %156 = sext i8 %155 to i32 %157 = load @nomsg %158 = sext i8 %157 to i32 %159 = icmp eq %156 %158 br %159, %160, %163 160: %161 = load %next_state %162 = sext i8 %161 to i32 br %166 163: %164 = load @s1s2_new %165 = sext i8 %164 to i32 br %166 166: %167 = phi [%162, %160], [%165, %163] %168 = trunc i32 %167 to i8 store %168, @s1s2_new %169 = load %next_state %170 = sext i8 %169 to i32 %171 = load @nomsg %172 = sext i8 %171 to i32 %173 = icmp ne %170 %172 br %173, %174, %183 174: %175 = load @s1p_new %176 = sext i8 %175 to i32 %177 = load @nomsg %178 = sext i8 %177 to i32 %179 = icmp eq %176 %178 br %179, %180, %183 180: %181 = load %next_state %182 = sext i8 %181 to i32 br %186 183: %184 = load @s1p_new %185 = sext i8 %184 to i32 br %186 186: %187 = phi [%182, %180], [%185, %183] %188 = trunc i32 %187 to i8 store %188, @s1p_new %189 = load %next_state store %189, @side1_written br %190 190: ret void *BasicFunctionTypename: "Side2_activestandby_task_each_pals_period" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %side1 = alloca i8, align 1 %side2 = alloca i8, align 1 %manual_selection = alloca i8, align 1 %next_state = alloca i8, align 1 %1 = load @nomsg store %1, %side1 %2 = load @nomsg store %2, %side2 store 0, %manual_selection %3 = call zeroext i1 (...)* @__VERIFIER_nondet_bool() %4 = zext i1 %3 to i8 store %4, @side2Failed %5 = load @side2Failed %6 = trunc i8 %5 to i1 Unnamed Call-Instruction = call BasicVoidType @write_side2_failed_history(i1 zeroext %6) %7 = load @side2Failed %8 = trunc i8 %7 to i1 br %8, %9, %71 9: %10 = load @nomsg %11 = sext i8 %10 to i32 %12 = load @nomsg %13 = sext i8 %12 to i32 %14 = icmp ne %11 %13 br %14, %15, %24 15: %16 = load @s2s1_new %17 = sext i8 %16 to i32 %18 = load @nomsg %19 = sext i8 %18 to i32 %20 = icmp eq %17 %19 br %20, %21, %24 21: %22 = load @nomsg %23 = sext i8 %22 to i32 br %27 24: %25 = load @s2s1_new %26 = sext i8 %25 to i32 br %27 27: %28 = phi [%23, %21], [%26, %24] %29 = trunc i32 %28 to i8 store %29, @s2s1_new %30 = load @nomsg %31 = sext i8 %30 to i32 %32 = load @nomsg %33 = sext i8 %32 to i32 %34 = icmp ne %31 %33 br %34, %35, %44 35: %36 = load @s2s2_new %37 = sext i8 %36 to i32 %38 = load @nomsg %39 = sext i8 %38 to i32 %40 = icmp eq %37 %39 br %40, %41, %44 41: %42 = load @nomsg %43 = sext i8 %42 to i32 br %47 44: %45 = load @s2s2_new %46 = sext i8 %45 to i32 br %47 47: %48 = phi [%43, %41], [%46, %44] %49 = trunc i32 %48 to i8 store %49, @s2s2_new %50 = load @nomsg %51 = sext i8 %50 to i32 %52 = load @nomsg %53 = sext i8 %52 to i32 %54 = icmp ne %51 %53 br %54, %55, %64 55: %56 = load @s2p_new %57 = sext i8 %56 to i32 %58 = load @nomsg %59 = sext i8 %58 to i32 %60 = icmp eq %57 %59 br %60, %61, %64 61: %62 = load @nomsg %63 = sext i8 %62 to i32 br %67 64: %65 = load @s2p_new %66 = sext i8 %65 to i32 br %67 67: %68 = phi [%63, %61], [%66, %64] %69 = trunc i32 %68 to i8 store %69, @s2p_new %70 = load @nomsg store %70, @side2_written br %190 71: %72 = load @s1s2_old store %72, %side1 %73 = load @nomsg store %73, @s1s2_old %74 = load @s2s2_old store %74, %side2 %75 = load @nomsg store %75, @s2s2_old %76 = load @cs2_old store %76, %manual_selection %77 = load @nomsg store %77, @cs2_old %78 = load %side1 %79 = sext i8 %78 to i32 %80 = load %side2 %81 = sext i8 %80 to i32 %82 = icmp eq %79 %81 br %82, %83, %84 83: store 1, %next_state br %128 84: %85 = load %side2 %86 = sext i8 %85 to i32 %87 = load @nomsg %88 = sext i8 %87 to i32 %89 = icmp eq %86 %88 br %89, %90, %99 90: %91 = load %side1 %92 = sext i8 %91 to i32 %93 = load @nomsg %94 = sext i8 %93 to i32 %95 = icmp ne %92 %94 br %95, %96, %97 96: store 0, %next_state br %98 97: br %100 98: br %127 99: br %100 100: %101 = load %side2 %102 = sext i8 %101 to i32 %103 = load @nomsg %104 = sext i8 %103 to i32 %105 = icmp ne %102 %104 br %105, %106, %115 106: %107 = load %side1 %108 = sext i8 %107 to i32 %109 = load @nomsg %110 = sext i8 %109 to i32 %111 = icmp eq %108 %110 br %111, %112, %113 112: store 1, %next_state br %114 113: br %116 114: br %126 115: br %116 116: %117 = load %manual_selection %118 = sext i8 %117 to i32 %119 = icmp eq %118 1 br %119, %120, %123 120: %121 = load %side2 %122 = call signext i8 @flip_the_side(i8 signext %121) store %122, %next_state br %125 123: %124 = load %side2 store %124, %next_state br %125 125: br %126 126: br %127 127: br %128 128: %129 = load %next_state %130 = sext i8 %129 to i32 %131 = load @nomsg %132 = sext i8 %131 to i32 %133 = icmp ne %130 %132 br %133, %134, %143 134: %135 = load @s2s1_new %136 = sext i8 %135 to i32 %137 = load @nomsg %138 = sext i8 %137 to i32 %139 = icmp eq %136 %138 br %139, %140, %143 140: %141 = load %next_state %142 = sext i8 %141 to i32 br %146 143: %144 = load @s2s1_new %145 = sext i8 %144 to i32 br %146 146: %147 = phi [%142, %140], [%145, %143] %148 = trunc i32 %147 to i8 store %148, @s2s1_new %149 = load %next_state %150 = sext i8 %149 to i32 %151 = load @nomsg %152 = sext i8 %151 to i32 %153 = icmp ne %150 %152 br %153, %154, %163 154: %155 = load @s2s2_new %156 = sext i8 %155 to i32 %157 = load @nomsg %158 = sext i8 %157 to i32 %159 = icmp eq %156 %158 br %159, %160, %163 160: %161 = load %next_state %162 = sext i8 %161 to i32 br %166 163: %164 = load @s2s2_new %165 = sext i8 %164 to i32 br %166 166: %167 = phi [%162, %160], [%165, %163] %168 = trunc i32 %167 to i8 store %168, @s2s2_new %169 = load %next_state %170 = sext i8 %169 to i32 %171 = load @nomsg %172 = sext i8 %171 to i32 %173 = icmp ne %170 %172 br %173, %174, %183 174: %175 = load @s2p_new %176 = sext i8 %175 to i32 %177 = load @nomsg %178 = sext i8 %177 to i32 %179 = icmp eq %176 %178 br %179, %180, %183 180: %181 = load %next_state %182 = sext i8 %181 to i32 br %186 183: %184 = load @s2p_new %185 = sext i8 %184 to i32 br %186 186: %187 = phi [%182, %180], [%185, %183] %188 = trunc i32 %187 to i8 store %188, @s2p_new %189 = load %next_state store %189, @side2_written br %190 190: ret void *BasicFunctionTypename: "Pendulum_prism_task_each_pals_period" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %active_side = alloca i8, align 1 %tmp = alloca i8, align 1 %side1 = alloca i8, align 1 %side2 = alloca i8, align 1 %1 = call signext i8 @read_active_side_history(i8 zeroext 0) store %1, %tmp %2 = load %tmp store %2, %active_side %3 = load @nomsg store %3, %side1 %4 = load @nomsg store %4, %side2 %5 = load @s1p_old store %5, %side1 %6 = load @nomsg store %6, @s1p_old %7 = load @s2p_old store %7, %side2 %8 = load @nomsg store %8, @s2p_old %9 = load %side1 %10 = sext i8 %9 to i32 %11 = icmp eq %10 1 br %11, %12, %13 12: store 1, %active_side br %49 13: %14 = load %side2 %15 = sext i8 %14 to i32 %16 = icmp eq %15 1 br %16, %17, %18 17: store 2, %active_side br %48 18: %19 = load %side1 %20 = sext i8 %19 to i32 %21 = icmp eq %20 0 br %21, %22, %31 22: %23 = load %side2 %24 = sext i8 %23 to i32 %25 = load @nomsg %26 = sext i8 %25 to i32 %27 = icmp eq %24 %26 br %27, %28, %29 28: store 1, %active_side br %30 29: br %32 30: br %47 31: br %32 32: %33 = load %side1 %34 = sext i8 %33 to i32 %35 = load @nomsg %36 = sext i8 %35 to i32 %37 = icmp eq %34 %36 br %37, %38, %45 38: %39 = load %side2 %40 = sext i8 %39 to i32 %41 = icmp eq %40 0 br %41, %42, %43 42: store 2, %active_side br %44 43: store 0, %active_side br %44 44: br %46 45: store 0, %active_side br %46 46: br %47 47: br %48 48: br %49 49: %50 = load %active_side Unnamed Call-Instruction = call BasicVoidType @write_active_side_history(i8 signext %50) ret void *BasicFunctionTypename: "check" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %tmp = alloca i32, align 4 %tmp___0 = alloca i8, align 1 %tmp___1 = alloca i8, align 1 %tmp___2 = alloca i8, align 1 %tmp___3 = alloca i8, align 1 %tmp___4 = alloca i8, align 1 %tmp___5 = alloca i8, align 1 %tmp___6 = alloca i8, align 1 %tmp___7 = alloca i8, align 1 %tmp___8 = alloca i8, align 1 %tmp___9 = alloca i8, align 1 %tmp___10 = alloca i8, align 1 %tmp___11 = alloca i8, align 1 %tmp___12 = alloca i8, align 1 %tmp___13 = alloca i8, align 1 %tmp___14 = alloca i8, align 1 %tmp___15 = alloca i8, align 1 %tmp___16 = alloca i8, align 1 %tmp___17 = alloca i8, align 1 %tmp___18 = alloca i8, align 1 %tmp___19 = alloca i8, align 1 %tmp___20 = alloca i8, align 1 %2 = load @side1Failed %3 = trunc i8 %2 to i1 br %3, %5, %4 4: store 1, %tmp br %11 5: %6 = load @side2Failed %7 = trunc i8 %6 to i1 br %7, %9, %8 8: store 1, %tmp br %10 9: store 0, %tmp br %10 10: br %11 11: %12 = load %tmp %13 = icmp ne %12 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %13) %14 = call signext i8 @read_manual_selection_history(i8 zeroext 1) store %14, %tmp___0 %15 = load %tmp___0 %16 = icmp ne %15 0 br %16, %72, %17 17: %18 = call zeroext i1 @read_side1_failed_history(i8 zeroext 1) %19 = zext i1 %18 to i8 store %19, %tmp___1 %20 = load %tmp___1 %21 = trunc i8 %20 to i1 br %21, %71, %22 22: %23 = call zeroext i1 @read_side1_failed_history(i8 zeroext 0) %24 = zext i1 %23 to i8 store %24, %tmp___2 %25 = load %tmp___2 %26 = trunc i8 %25 to i1 br %26, %70, %27 27: %28 = call zeroext i1 @read_side2_failed_history(i8 zeroext 1) %29 = zext i1 %28 to i8 store %29, %tmp___3 %30 = load %tmp___3 %31 = trunc i8 %30 to i1 br %31, %69, %32 32: %33 = call zeroext i1 @read_side2_failed_history(i8 zeroext 0) %34 = zext i1 %33 to i8 store %34, %tmp___4 %35 = load %tmp___4 %36 = trunc i8 %35 to i1 br %36, %68, %37 37: %38 = load @side1_written %39 = sext i8 %38 to i32 %40 = icmp eq %39 1 br %40, %47, %41 41: %42 = load @side1_written %43 = sext i8 %42 to i32 %44 = icmp eq %43 0 br %44, %46, %45 45: store 0, %1 br %177 46: br %47 47: %48 = load @side1_written %49 = sext i8 %48 to i32 %50 = icmp eq %49 0 br %50, %51, %57 51: %52 = load @side2_written %53 = sext i8 %52 to i32 %54 = icmp eq %53 1 br %54, %56, %55 55: store 0, %1 br %177 56: br %57 57: %58 = load @side1_written %59 = sext i8 %58 to i32 %60 = icmp eq %59 1 br %60, %61, %67 61: %62 = load @side2_written %63 = sext i8 %62 to i32 %64 = icmp eq %63 0 br %64, %66, %65 65: store 0, %1 br %177 66: br %67 67: br %68 68: br %69 69: br %70 70: br %71 71: br %72 72: %73 = call zeroext i1 @read_side1_failed_history(i8 zeroext 1) %74 = zext i1 %73 to i8 store %74, %tmp___7 %75 = load %tmp___7 %76 = trunc i8 %75 to i1 br %76, %77, %101 77: %78 = call zeroext i1 @read_side2_failed_history(i8 zeroext 1) %79 = zext i1 %78 to i8 store %79, %tmp___8 %80 = load %tmp___8 %81 = trunc i8 %80 to i1 br %81, %100, %82 82: %83 = call signext i8 @read_active_side_history(i8 zeroext 0) store %83, %tmp___5 %84 = load %tmp___5 %85 = sext i8 %84 to i32 %86 = icmp eq %85 2 br %86, %88, %87 87: store 0, %1 br %177 88: %89 = call zeroext i1 @read_side2_failed_history(i8 zeroext 0) %90 = zext i1 %89 to i8 store %90, %tmp___6 %91 = load %tmp___6 %92 = trunc i8 %91 to i1 br %92, %99, %93 93: %94 = load @side2_written %95 = sext i8 %94 to i32 %96 = icmp eq %95 1 br %96, %98, %97 97: store 0, %1 br %177 98: br %99 99: br %100 100: br %101 101: %102 = call zeroext i1 @read_side1_failed_history(i8 zeroext 1) %103 = zext i1 %102 to i8 store %103, %tmp___11 %104 = load %tmp___11 %105 = trunc i8 %104 to i1 br %105, %130, %106 106: %107 = call zeroext i1 @read_side2_failed_history(i8 zeroext 1) %108 = zext i1 %107 to i8 store %108, %tmp___12 %109 = load %tmp___12 %110 = trunc i8 %109 to i1 br %110, %111, %129 111: %112 = call signext i8 @read_active_side_history(i8 zeroext 0) store %112, %tmp___9 %113 = load %tmp___9 %114 = sext i8 %113 to i32 %115 = icmp eq %114 1 br %115, %117, %116 116: store 0, %1 br %177 117: %118 = call zeroext i1 @read_side1_failed_history(i8 zeroext 0) %119 = zext i1 %118 to i8 store %119, %tmp___10 %120 = load %tmp___10 %121 = trunc i8 %120 to i1 br %121, %128, %122 122: %123 = load @side1_written %124 = sext i8 %123 to i32 %125 = icmp eq %124 1 br %125, %127, %126 126: store 0, %1 br %177 127: br %128 128: br %129 129: br %130 130: %131 = call signext i8 @read_active_side_history(i8 zeroext 2) store %131, %tmp___20 %132 = load %tmp___20 %133 = sext i8 %132 to i32 %134 = icmp sgt %133 -2 br %134, %135, %176 135: %136 = call signext i8 @read_manual_selection_history(i8 zeroext 2) store %136, %tmp___13 %137 = load %tmp___13 %138 = icmp ne %137 0 br %138, %175, %139 139: %140 = call zeroext i1 @read_side1_failed_history(i8 zeroext 2) %141 = zext i1 %140 to i8 store %141, %tmp___14 %142 = call zeroext i1 @read_side1_failed_history(i8 zeroext 1) %143 = zext i1 %142 to i8 store %143, %tmp___15 %144 = load %tmp___14 %145 = trunc i8 %144 to i1 %146 = zext i1 %145 to i32 %147 = load %tmp___15 %148 = trunc i8 %147 to i1 %149 = zext i1 %148 to i32 %150 = icmp eq %146 %149 br %150, %151, %174 151: %152 = call zeroext i1 @read_side2_failed_history(i8 zeroext 2) %153 = zext i1 %152 to i8 store %153, %tmp___16 %154 = call zeroext i1 @read_side2_failed_history(i8 zeroext 1) %155 = zext i1 %154 to i8 store %155, %tmp___17 %156 = load %tmp___16 %157 = trunc i8 %156 to i1 %158 = zext i1 %157 to i32 %159 = load %tmp___17 %160 = trunc i8 %159 to i1 %161 = zext i1 %160 to i32 %162 = icmp eq %158 %161 br %162, %163, %173 163: %164 = call signext i8 @read_active_side_history(i8 zeroext 1) store %164, %tmp___18 %165 = call signext i8 @read_active_side_history(i8 zeroext 0) store %165, %tmp___19 %166 = load %tmp___18 %167 = sext i8 %166 to i32 %168 = load %tmp___19 %169 = sext i8 %168 to i32 %170 = icmp eq %167 %169 br %170, %172, %171 171: store 0, %1 br %177 172: br %173 173: br %174 174: br %175 175: br %176 176: store 1, %1 br %177 177: %178 = load %1 ret %178 *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: "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 zeroext i1 @__VERIFIER_nondet__Bool() %3 = zext i1 %2 to i8 store %3, @side1Failed %4 = call zeroext i1 @__VERIFIER_nondet__Bool() %5 = zext i1 %4 to i8 store %5, @side2Failed %6 = call signext i8 @__VERIFIER_nondet_msg_t() store %6, @side1_written %7 = call signext i8 @__VERIFIER_nondet_msg_t() store %7, @side2_written %8 = call zeroext i1 @__VERIFIER_nondet__Bool() %9 = zext i1 %8 to i8 store %9, @side1Failed_History_0 %10 = call zeroext i1 @__VERIFIER_nondet__Bool() %11 = zext i1 %10 to i8 store %11, @side1Failed_History_1 %12 = call zeroext i1 @__VERIFIER_nondet__Bool() %13 = zext i1 %12 to i8 store %13, @side1Failed_History_2 %14 = call zeroext i1 @__VERIFIER_nondet__Bool() %15 = zext i1 %14 to i8 store %15, @side2Failed_History_0 %16 = call zeroext i1 @__VERIFIER_nondet__Bool() %17 = zext i1 %16 to i8 store %17, @side2Failed_History_1 %18 = call zeroext i1 @__VERIFIER_nondet__Bool() %19 = zext i1 %18 to i8 store %19, @side2Failed_History_2 %20 = call signext i8 @__VERIFIER_nondet_int8_t() store %20, @active_side_History_0 %21 = call signext i8 @__VERIFIER_nondet_int8_t() store %21, @active_side_History_1 %22 = call signext i8 @__VERIFIER_nondet_int8_t() store %22, @active_side_History_2 %23 = call signext i8 @__VERIFIER_nondet_msg_t() store %23, @manual_selection_History_0 %24 = call signext i8 @__VERIFIER_nondet_msg_t() store %24, @manual_selection_History_1 %25 = call signext i8 @__VERIFIER_nondet_msg_t() store %25, @manual_selection_History_2 %26 = call i32 @init() store %26, %i2 %27 = load %i2 %28 = icmp ne %27 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %28) %29 = load @nomsg store %29, @cs1_old %30 = load @nomsg store %30, @cs1_new %31 = load @nomsg store %31, @cs2_old %32 = load @nomsg store %32, @cs2_new %33 = load @nomsg store %33, @s1s2_old %34 = load @nomsg store %34, @s1s2_new %35 = load @nomsg store %35, @s1s1_old %36 = load @nomsg store %36, @s1s1_new %37 = load @nomsg store %37, @s2s1_old %38 = load @nomsg store %38, @s2s1_new %39 = load @nomsg store %39, @s2s2_old %40 = load @nomsg store %40, @s2s2_new %41 = load @nomsg store %41, @s1p_old %42 = load @nomsg store %42, @s1p_new %43 = load @nomsg store %43, @s2p_old %44 = load @nomsg store %44, @s2p_new store 0, %i2 br %45 45: %46 = load %i2 %47 = icmp slt %46 10 br %47, %48, %70 48: Unnamed Call-Instruction = call BasicVoidType @Console_task_each_pals_period() Unnamed Call-Instruction = call BasicVoidType @Side1_activestandby_task_each_pals_period() Unnamed Call-Instruction = call BasicVoidType @Side2_activestandby_task_each_pals_period() Unnamed Call-Instruction = call BasicVoidType @Pendulum_prism_task_each_pals_period() %49 = load @cs1_new store %49, @cs1_old %50 = load @nomsg store %50, @cs1_new %51 = load @cs2_new store %51, @cs2_old %52 = load @nomsg store %52, @cs2_new %53 = load @s1s2_new store %53, @s1s2_old %54 = load @nomsg store %54, @s1s2_new %55 = load @s1s1_new store %55, @s1s1_old %56 = load @nomsg store %56, @s1s1_new %57 = load @s2s1_new store %57, @s2s1_old %58 = load @nomsg store %58, @s2s1_new %59 = load @s2s2_new store %59, @s2s2_old %60 = load @nomsg store %60, @s2s2_new %61 = load @s1p_new store %61, @s1p_old %62 = load @nomsg store %62, @s1p_new %63 = load @s2p_new store %63, @s2p_old %64 = load @nomsg store %64, @s2p_new %65 = call i32 @check() store %65, %c1 %66 = load %c1 %67 = icmp ne %66 0 Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext %67) %68 = load %i2 %69 = add %68 1 store %69, %i2 br %45 70: %71 = load %1 ret %71 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 16 dependent lassos. ---------------------------------------- (11) Complex Obligation (AND) ---------------------------------------- (12) Obligation: Lasso ---------------------------------------- (13) Obligation: Lasso ---------------------------------------- (14) Obligation: Lasso ---------------------------------------- (15) Obligation: Lasso ---------------------------------------- (16) Obligation: Lasso ---------------------------------------- (17) Obligation: Lasso ---------------------------------------- (18) Obligation: Lasso ---------------------------------------- (19) Obligation: Lasso ---------------------------------------- (20) Obligation: Lasso ---------------------------------------- (21) Obligation: Lasso ---------------------------------------- (22) Obligation: Lasso ---------------------------------------- (23) Obligation: Lasso ---------------------------------------- (24) Obligation: Lasso ---------------------------------------- (25) Obligation: Lasso ---------------------------------------- (26) Obligation: Lasso ---------------------------------------- (27) Obligation: Lasso