/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 168 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 32.0 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, 2818 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 (28) LLVM Symbolic Execution Lasso (29) LLVM Symbolic Execution Lasso (30) LLVM Symbolic Execution Lasso (31) LLVM Symbolic Execution Lasso (32) LLVM Symbolic Execution Lasso (33) LLVM Symbolic Execution Lasso (34) LLVM Symbolic Execution Lasso (35) LLVM Symbolic Execution Lasso (36) LLVM Symbolic Execution Lasso (37) LLVM Symbolic Execution Lasso (38) LLVM Symbolic Execution Lasso (39) LLVM Symbolic Execution Lasso (40) LLVM Symbolic Execution Lasso (41) LLVM Symbolic Execution Lasso (42) LLVM Symbolic Execution Lasso (43) LLVM Symbolic Execution Lasso (44) LLVM Symbolic Execution Lasso (45) LLVM Symbolic Execution Lasso (46) LLVM Symbolic Execution Lasso (47) LLVM Symbolic Execution Lasso (48) LLVM Symbolic Execution Lasso (49) LLVM Symbolic Execution Lasso (50) LLVM Symbolic Execution Lasso (51) LLVM Symbolic Execution Lasso (52) LLVM Symbolic Execution Lasso (53) LLVM Symbolic Execution Lasso (54) LLVM Symbolic Execution Lasso (55) LLVM Symbolic Execution Lasso (56) LLVM Symbolic Execution Lasso (57) LLVM Symbolic Execution Lasso (58) LLVM Symbolic Execution Lasso (59) LLVM Symbolic Execution Lasso (60) LLVM Symbolic Execution Lasso (61) LLVM Symbolic Execution Lasso (62) LLVM Symbolic Execution Lasso (63) LLVM Symbolic Execution Lasso (64) LLVM Symbolic Execution Lasso (65) LLVM Symbolic Execution Lasso (66) LLVM Symbolic Execution Lasso (67) LLVM Symbolic Execution Lasso (68) LLVM Symbolic Execution Lasso (69) LLVM Symbolic Execution Lasso (70) LLVM Symbolic Execution Lasso (71) LLVM Symbolic Execution Lasso (72) LLVM Symbolic Execution Lasso (73) LLVM Symbolic Execution Lasso (74) LLVM Symbolic Execution Lasso (75) LLVM Symbolic Execution Lasso (76) LLVM Symbolic Execution Lasso (77) LLVM Symbolic Execution Lasso (78) LLVM Symbolic Execution Lasso (79) LLVM Symbolic Execution Lasso (80) LLVM Symbolic Execution Lasso (81) LLVM Symbolic Execution Lasso (82) LLVM Symbolic Execution Lasso (83) LLVM Symbolic Execution Lasso (84) LLVM Symbolic Execution Lasso (85) LLVM Symbolic Execution Lasso (86) LLVM Symbolic Execution Lasso (87) LLVM Symbolic Execution Lasso (88) LLVM Symbolic Execution Lasso (89) LLVM Symbolic Execution Lasso (90) LLVM Symbolic Execution Lasso (91) LLVM Symbolic Execution Lasso (92) LLVM Symbolic Execution Lasso (93) LLVM Symbolic Execution Lasso (94) LLVM Symbolic Execution Lasso (95) LLVM Symbolic Execution Lasso (96) LLVM Symbolic Execution Lasso (97) LLVM Symbolic Execution Lasso (98) LLVM Symbolic Execution Lasso (99) LLVM Symbolic Execution Lasso (100) LLVM Symbolic Execution Lasso (101) LLVM Symbolic Execution Lasso (102) LLVM Symbolic Execution Lasso (103) LLVM Symbolic Execution Lasso (104) LLVM Symbolic Execution Lasso (105) LLVM Symbolic Execution Lasso (106) LLVM Symbolic Execution Lasso (107) LLVM Symbolic Execution Lasso (108) LLVM Symbolic Execution Lasso (109) LLVM Symbolic Execution Lasso (110) LLVM Symbolic Execution Lasso (111) LLVM Symbolic Execution Lasso (112) LLVM Symbolic Execution Lasso (113) LLVM Symbolic Execution Lasso (114) LLVM Symbolic Execution Lasso (115) LLVM Symbolic Execution Lasso (116) LLVM Symbolic Execution Lasso (117) LLVM Symbolic Execution Lasso (118) LLVM Symbolic Execution Lasso (119) 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: votedValue_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: votedValue_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: votedValue_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate1Failed_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate1Failed_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate1Failed_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate2Failed_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate2Failed_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate2Failed_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate3Failed_History_0 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate3Failed_History_1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate3Failed_History_2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate1Failed initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate2Failed initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: gate3Failed initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: VALUE1 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: VALUE2 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: VALUE3 initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: g1v_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: g2v_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: g3v_new initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: g1v_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: g2v_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: g3v_old initVal: 0 type: i8 addrSpace: null alignment: 1 threadLocal: false constant: false linkageType: COMMON section: null Name: nodes initVal: (@gate1_each_pals_period,@gate2_each_pals_period,@gate3_each_pals_period,@voter) type: [4 x *BasicFunctionType varArgs: falsereturnType: BasicVoidTypeparamTypes: ()] addrSpace: null alignment: 16 threadLocal: false constant: false linkageType: null section: null Name: g1v initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: g2v initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Name: g3v initVal: 0 type: i32 addrSpace: null alignment: 4 threadLocal: false constant: false linkageType: COMMON section: null Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_bool" returnParam: i1 zeroext parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "__VERIFIER_nondet_int8_t" returnParam: i8 signext 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_error" returnParam: BasicVoidType parameters: () variableLength: true visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "add_history_type" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (history_id i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %ini_bool = alloca i8, align 1 %ini_int = alloca i8, align 1 %var = alloca i32, align 4 %tmp = alloca i32, align 4 %tmp___0 = alloca i32, align 4 %tmp___1 = alloca i32, align 4 %tmp___2 = alloca i32, align 4 store %history_id, %2 store 0, %ini_bool store -2, %ini_int store 0, %var br %3 3: %4 = load %var %5 = icmp slt %4 3 br %5, %6, %63 6: %7 = load %2 %8 = icmp eq %7 0 br %8, %9, %19 9: %10 = call zeroext i1 @read_history_bool(i32 0, i32 0) %11 = zext i1 %10 to i32 store %11, %tmp %12 = load %tmp %13 = load %ini_bool %14 = trunc i8 %13 to i1 %15 = zext i1 %14 to i32 %16 = icmp eq %12 %15 br %16, %18, %17 17: store 0, %1 br %64 18: br %60 19: %20 = load %2 %21 = icmp eq %20 1 br %21, %22, %32 22: %23 = call zeroext i1 @read_history_bool(i32 1, i32 0) %24 = zext i1 %23 to i32 store %24, %tmp___0 %25 = load %tmp___0 %26 = load %ini_bool %27 = trunc i8 %26 to i1 %28 = zext i1 %27 to i32 %29 = icmp eq %25 %28 br %29, %31, %30 30: store 0, %1 br %64 31: br %59 32: %33 = load %2 %34 = icmp eq %33 2 br %34, %35, %45 35: %36 = call zeroext i1 @read_history_bool(i32 2, i32 0) %37 = zext i1 %36 to i32 store %37, %tmp___1 %38 = load %tmp___1 %39 = load %ini_bool %40 = trunc i8 %39 to i1 %41 = zext i1 %40 to i32 %42 = icmp eq %38 %41 br %42, %44, %43 43: store 0, %1 br %64 44: br %58 45: %46 = load %2 %47 = icmp eq %46 3 br %47, %48, %57 48: %49 = call signext i8 @read_history_int8(i32 3, i32 0) %50 = sext i8 %49 to i32 store %50, %tmp___2 %51 = load %tmp___2 %52 = load %ini_int %53 = sext i8 %52 to i32 %54 = icmp eq %51 %53 br %54, %56, %55 55: store 0, %1 br %64 56: br %57 57: br %58 58: br %59 59: br %60 60: %61 = load %var %62 = add %61 1 store %62, %var br %3 63: store 1, %1 br %64 64: %65 = load %1 ret %65 *BasicFunctionTypename: "read_history_bool" linkageType: EXTERNALLY_VISIBLE returnParam: i1 zeroext parameters: (history_id i32, historyIndex i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i1, align 1 %2 = alloca i32, align 4 %3 = alloca i32, align 4 store %history_id, %2 store %historyIndex, %3 %4 = load %2 %5 = icmp eq %4 0 br %5, %6, %21 6: %7 = load %3 %8 = icmp eq %7 0 br %8, %9, %12 9: %10 = load @gate1Failed_History_0 %11 = trunc i8 %10 to i1 store %11, %1 br %61 12: %13 = load %3 %14 = icmp eq %13 1 br %14, %15, %18 15: %16 = load @gate1Failed_History_1 %17 = trunc i8 %16 to i1 store %17, %1 br %61 18: %19 = load @gate1Failed_History_2 %20 = trunc i8 %19 to i1 store %20, %1 br %61 21: %22 = load %2 %23 = icmp eq %22 1 br %23, %24, %39 24: %25 = load %3 %26 = icmp eq %25 0 br %26, %27, %30 27: %28 = load @gate2Failed_History_0 %29 = trunc i8 %28 to i1 store %29, %1 br %61 30: %31 = load %3 %32 = icmp eq %31 1 br %32, %33, %36 33: %34 = load @gate2Failed_History_1 %35 = trunc i8 %34 to i1 store %35, %1 br %61 36: %37 = load @gate2Failed_History_2 %38 = trunc i8 %37 to i1 store %38, %1 br %61 39: %40 = load %2 %41 = icmp eq %40 2 br %41, %42, %57 42: %43 = load %3 %44 = icmp eq %43 0 br %44, %45, %48 45: %46 = load @gate3Failed_History_0 %47 = trunc i8 %46 to i1 store %47, %1 br %61 48: %49 = load %3 %50 = icmp eq %49 1 br %50, %51, %54 51: %52 = load @gate3Failed_History_1 %53 = trunc i8 %52 to i1 store %53, %1 br %61 54: %55 = load @gate3Failed_History_2 %56 = trunc i8 %55 to i1 store %56, %1 br %61 57: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) br %58 58: br %59 59: br %60 60: store 0, %1 br %61 61: %62 = load %1 ret %62 *BasicFunctionTypename: "read_history_int8" linkageType: EXTERNALLY_VISIBLE returnParam: i8 signext parameters: (history_id i32, historyIndex i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i8, align 1 %2 = alloca i32, align 4 %3 = alloca i32, align 4 store %history_id, %2 store %historyIndex, %3 %4 = load %2 %5 = icmp eq %4 3 br %5, %6, %18 6: %7 = load %3 %8 = icmp eq %7 0 br %8, %9, %11 9: %10 = load @votedValue_History_0 store %10, %1 br %20 11: %12 = load %3 %13 = icmp eq %12 1 br %13, %14, %16 14: %15 = load @votedValue_History_1 store %15, %1 br %20 16: %17 = load @votedValue_History_2 store %17, %1 br %20 18: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) br %19 19: store -2, %1 br %20 20: %21 = load %1 ret %21 *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_history_int8" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (history_id i32, buf i8 signext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i8, align 1 store %history_id, %1 store %buf, %2 %3 = load %1 %4 = icmp eq %3 3 br %4, %5, %9 5: %6 = load @votedValue_History_1 store %6, @votedValue_History_2 %7 = load @votedValue_History_0 store %7, @votedValue_History_1 %8 = load %2 store %8, @votedValue_History_0 br %10 9: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) br %10 10: ret void *BasicFunctionTypename: "write_history_bool" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: (history_id i32, buf i1 zeroext) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i8, align 1 store %history_id, %1 %3 = zext i1 %buf to i8 store %3, %2 %4 = load %1 %5 = icmp eq %4 0 br %5, %6, %16 6: %7 = load @gate1Failed_History_1 %8 = trunc i8 %7 to i1 %9 = zext i1 %8 to i8 store %9, @gate1Failed_History_2 %10 = load @gate1Failed_History_0 %11 = trunc i8 %10 to i1 %12 = zext i1 %11 to i8 store %12, @gate1Failed_History_1 %13 = load %2 %14 = trunc i8 %13 to i1 %15 = zext i1 %14 to i8 store %15, @gate1Failed_History_0 br %45 16: %17 = load %1 %18 = icmp eq %17 1 br %18, %19, %29 19: %20 = load @gate2Failed_History_1 %21 = trunc i8 %20 to i1 %22 = zext i1 %21 to i8 store %22, @gate2Failed_History_2 %23 = load @gate2Failed_History_0 %24 = trunc i8 %23 to i1 %25 = zext i1 %24 to i8 store %25, @gate2Failed_History_1 %26 = load %2 %27 = trunc i8 %26 to i1 %28 = zext i1 %27 to i8 store %28, @gate2Failed_History_0 br %44 29: %30 = load %1 %31 = icmp eq %30 2 br %31, %32, %42 32: %33 = load @gate3Failed_History_1 %34 = trunc i8 %33 to i1 %35 = zext i1 %34 to i8 store %35, @gate3Failed_History_2 %36 = load @gate3Failed_History_0 %37 = trunc i8 %36 to i1 %38 = zext i1 %37 to i8 store %38, @gate3Failed_History_1 %39 = load %2 %40 = trunc i8 %39 to i1 %41 = zext i1 %40 to i8 store %41, @gate3Failed_History_0 br %43 42: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) br %43 43: br %44 44: br %45 45: ret void *BasicFunctionTypename: "init" 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 i32, align 4 %tmp___1 = alloca i32, align 4 %tmp___2 = alloca i32, align 4 %2 = call i32 @add_history_type(i32 0) store %2, %tmp %3 = load %tmp %4 = icmp ne %3 0 br %4, %6, %5 5: store 0, %1 br %22 6: %7 = call i32 @add_history_type(i32 1) store %7, %tmp___0 %8 = load %tmp___0 %9 = icmp ne %8 0 br %9, %11, %10 10: store 0, %1 br %22 11: %12 = call i32 @add_history_type(i32 2) store %12, %tmp___1 %13 = load %tmp___1 %14 = icmp ne %13 0 br %14, %16, %15 15: store 0, %1 br %22 16: %17 = call i32 @add_history_type(i32 3) store %17, %tmp___2 %18 = load %tmp___2 %19 = icmp ne %18 0 br %19, %21, %20 20: store 0, %1 br %22 21: store 1, %1 br %22 22: %23 = load %1 ret %23 *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 %temp_count = 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 %2 = load @gate1Failed %3 = trunc i8 %2 to i1 br %3, %5, %4 4: store 1, %tmp br %16 5: %6 = load @gate2Failed %7 = trunc i8 %6 to i1 br %7, %9, %8 8: store 1, %tmp br %15 9: %10 = load @gate3Failed %11 = trunc i8 %10 to i1 br %11, %13, %12 12: store 1, %tmp br %14 13: store 0, %tmp br %14 14: br %15 15: br %16 16: %17 = load %tmp %18 = icmp ne %17 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %18) %19 = call zeroext i1 @read_history_bool(i32 0, i32 1) %20 = zext i1 %19 to i8 store %20, %tmp___3 %21 = load %tmp___3 %22 = trunc i8 %21 to i1 br %22, %99, %23 23: %24 = call zeroext i1 @read_history_bool(i32 1, i32 1) %25 = zext i1 %24 to i8 store %25, %tmp___4 %26 = load %tmp___4 %27 = trunc i8 %26 to i1 br %27, %98, %28 28: %29 = call zeroext i1 @read_history_bool(i32 2, i32 1) %30 = zext i1 %29 to i8 store %30, %tmp___5 %31 = load %tmp___5 %32 = trunc i8 %31 to i1 br %32, %97, %33 33: store 0, %temp_count %34 = call signext i8 @read_history_int8(i32 3, i32 0) store %34, %tmp___0 %35 = load @VALUE1 %36 = sext i8 %35 to i32 %37 = load %tmp___0 %38 = sext i8 %37 to i32 %39 = icmp eq %36 %38 br %39, %40, %43 40: %41 = load %temp_count %42 = add %41 1 store %42, %temp_count br %43 43: %44 = call signext i8 @read_history_int8(i32 3, i32 0) store %44, %tmp___1 %45 = load @VALUE2 %46 = sext i8 %45 to i32 %47 = load %tmp___1 %48 = sext i8 %47 to i32 %49 = icmp eq %46 %48 br %49, %50, %53 50: %51 = load %temp_count %52 = add %51 1 store %52, %temp_count br %53 53: %54 = call signext i8 @read_history_int8(i32 3, i32 0) store %54, %tmp___2 %55 = load @VALUE3 %56 = sext i8 %55 to i32 %57 = load %tmp___2 %58 = sext i8 %57 to i32 %59 = icmp eq %56 %58 br %59, %60, %63 60: %61 = load %temp_count %62 = add %61 1 store %62, %temp_count br %63 63: %64 = load @VALUE1 %65 = sext i8 %64 to i32 %66 = load @VALUE2 %67 = sext i8 %66 to i32 %68 = icmp ne %65 %67 br %68, %69, %90 69: %70 = load @VALUE1 %71 = sext i8 %70 to i32 %72 = load @VALUE3 %73 = sext i8 %72 to i32 %74 = icmp ne %71 %73 br %74, %75, %88 75: %76 = load @VALUE2 %77 = sext i8 %76 to i32 %78 = load @VALUE3 %79 = sext i8 %78 to i32 %80 = icmp ne %77 %79 br %80, %81, %86 81: %82 = load %temp_count %83 = icmp eq %82 1 br %83, %85, %84 84: store 0, %1 br %166 85: br %87 86: br %91 87: br %89 88: br %91 89: br %96 90: br %91 91: %92 = load %temp_count %93 = icmp sgt %92 1 br %93, %95, %94 94: store 0, %1 br %166 95: br %96 96: br %97 97: br %98 98: br %99 99: %100 = call signext i8 @read_history_int8(i32 3, i32 1) store %100, %tmp___10 %101 = load %tmp___10 %102 = sext i8 %101 to i32 %103 = icmp sgt %102 -2 br %103, %104, %133 104: %105 = call signext i8 @read_history_int8(i32 3, i32 0) store %105, %tmp___6 %106 = load %tmp___6 %107 = sext i8 %106 to i32 %108 = load @nomsg %109 = sext i8 %108 to i32 %110 = icmp eq %107 %109 br %110, %111, %132 111: %112 = call zeroext i1 @read_history_bool(i32 0, i32 1) %113 = zext i1 %112 to i8 store %113, %tmp___7 %114 = load %tmp___7 %115 = trunc i8 %114 to i1 br %115, %116, %130 116: %117 = call zeroext i1 @read_history_bool(i32 1, i32 1) %118 = zext i1 %117 to i8 store %118, %tmp___8 %119 = load %tmp___8 %120 = trunc i8 %119 to i1 br %120, %121, %128 121: %122 = call zeroext i1 @read_history_bool(i32 2, i32 1) %123 = zext i1 %122 to i8 store %123, %tmp___9 %124 = load %tmp___9 %125 = trunc i8 %124 to i1 br %125, %127, %126 126: store 0, %1 br %166 127: br %129 128: store 0, %1 br %166 129: br %131 130: store 0, %1 br %166 131: br %132 132: br %133 133: %134 = call signext i8 @read_history_int8(i32 3, i32 0) store %134, %tmp___11 %135 = load %tmp___11 %136 = sext i8 %135 to i32 %137 = load @nomsg %138 = sext i8 %137 to i32 %139 = icmp ne %136 %138 br %139, %140, %165 140: %141 = call signext i8 @read_history_int8(i32 3, i32 0) store %141, %tmp___12 %142 = load @VALUE1 %143 = sext i8 %142 to i32 %144 = load %tmp___12 %145 = sext i8 %144 to i32 %146 = icmp eq %143 %145 br %146, %164, %147 147: %148 = call signext i8 @read_history_int8(i32 3, i32 0) store %148, %tmp___13 %149 = load @VALUE2 %150 = sext i8 %149 to i32 %151 = load %tmp___13 %152 = sext i8 %151 to i32 %153 = icmp eq %150 %152 br %153, %163, %154 154: %155 = call signext i8 @read_history_int8(i32 3, i32 0) store %155, %tmp___14 %156 = load @VALUE3 %157 = sext i8 %156 to i32 %158 = load %tmp___14 %159 = sext i8 %158 to i32 %160 = icmp eq %157 %159 br %160, %162, %161 161: store 0, %1 br %166 162: br %163 163: br %164 164: br %165 165: store 1, %1 br %166 166: %167 = load %1 ret %167 *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: "gate1_each_pals_period" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %next_state = alloca i8, align 1 %tmp = alloca i8, align 1 %tmp___0 = alloca i32, align 4 %1 = call zeroext i1 (...)* @__VERIFIER_nondet_bool() %2 = zext i1 %1 to i8 store %2, @gate1Failed %3 = load @gate1Failed %4 = trunc i8 %3 to i1 Unnamed Call-Instruction = call BasicVoidType @write_history_bool(i32 0, i1 zeroext %4) %5 = load @gate1Failed %6 = trunc i8 %5 to i1 br %6, %7, %28 7: %8 = load @nomsg %9 = sext i8 %8 to i32 %10 = load @nomsg %11 = sext i8 %10 to i32 %12 = icmp ne %9 %11 br %12, %13, %22 13: %14 = load @g1v_new %15 = sext i8 %14 to i32 %16 = load @nomsg %17 = sext i8 %16 to i32 %18 = icmp eq %15 %17 br %18, %19, %22 19: %20 = load @nomsg %21 = sext i8 %20 to i32 br %25 22: %23 = load @g1v_new %24 = sext i8 %23 to i32 br %25 25: %26 = phi [%21, %19], [%24, %22] %27 = trunc i32 %26 to i8 store %27, @g1v_new br %71 28: %29 = call signext i8 (...)* @__VERIFIER_nondet_int8_t() store %29, %tmp %30 = load %tmp store %30, %next_state %31 = load %next_state %32 = sext i8 %31 to i32 %33 = icmp eq %32 0 br %33, %34, %35 34: store 1, %tmp___0 br %48 35: %36 = load %next_state %37 = sext i8 %36 to i32 %38 = icmp eq %37 1 br %38, %39, %40 39: store 1, %tmp___0 br %47 40: %41 = load %next_state %42 = sext i8 %41 to i32 %43 = icmp eq %42 2 br %43, %44, %45 44: store 1, %tmp___0 br %46 45: store 0, %tmp___0 br %46 46: br %47 47: br %48 48: %49 = load %tmp___0 %50 = icmp ne %49 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %50) %51 = load %next_state %52 = sext i8 %51 to i32 %53 = load @nomsg %54 = sext i8 %53 to i32 %55 = icmp ne %52 %54 br %55, %56, %65 56: %57 = load @g1v_new %58 = sext i8 %57 to i32 %59 = load @nomsg %60 = sext i8 %59 to i32 %61 = icmp eq %58 %60 br %61, %62, %65 62: %63 = load %next_state %64 = sext i8 %63 to i32 br %68 65: %66 = load @g1v_new %67 = sext i8 %66 to i32 br %68 68: %69 = phi [%64, %62], [%67, %65] %70 = trunc i32 %69 to i8 store %70, @g1v_new br %71 71: ret void *BasicFunctionTypename: "gate2_each_pals_period" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %next_state = alloca i8, align 1 %tmp = alloca i8, align 1 %tmp___0 = alloca i32, align 4 %1 = call zeroext i1 (...)* @__VERIFIER_nondet_bool() %2 = zext i1 %1 to i8 store %2, @gate2Failed %3 = load @gate2Failed %4 = trunc i8 %3 to i1 Unnamed Call-Instruction = call BasicVoidType @write_history_bool(i32 1, i1 zeroext %4) %5 = load @gate2Failed %6 = trunc i8 %5 to i1 br %6, %7, %28 7: %8 = load @nomsg %9 = sext i8 %8 to i32 %10 = load @nomsg %11 = sext i8 %10 to i32 %12 = icmp ne %9 %11 br %12, %13, %22 13: %14 = load @g2v_new %15 = sext i8 %14 to i32 %16 = load @nomsg %17 = sext i8 %16 to i32 %18 = icmp eq %15 %17 br %18, %19, %22 19: %20 = load @nomsg %21 = sext i8 %20 to i32 br %25 22: %23 = load @g2v_new %24 = sext i8 %23 to i32 br %25 25: %26 = phi [%21, %19], [%24, %22] %27 = trunc i32 %26 to i8 store %27, @g2v_new br %71 28: %29 = call signext i8 (...)* @__VERIFIER_nondet_int8_t() store %29, %tmp %30 = load %tmp store %30, %next_state %31 = load %next_state %32 = sext i8 %31 to i32 %33 = icmp eq %32 0 br %33, %34, %35 34: store 1, %tmp___0 br %48 35: %36 = load %next_state %37 = sext i8 %36 to i32 %38 = icmp eq %37 1 br %38, %39, %40 39: store 1, %tmp___0 br %47 40: %41 = load %next_state %42 = sext i8 %41 to i32 %43 = icmp eq %42 2 br %43, %44, %45 44: store 1, %tmp___0 br %46 45: store 0, %tmp___0 br %46 46: br %47 47: br %48 48: %49 = load %tmp___0 %50 = icmp ne %49 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %50) %51 = load %next_state %52 = sext i8 %51 to i32 %53 = load @nomsg %54 = sext i8 %53 to i32 %55 = icmp ne %52 %54 br %55, %56, %65 56: %57 = load @g2v_new %58 = sext i8 %57 to i32 %59 = load @nomsg %60 = sext i8 %59 to i32 %61 = icmp eq %58 %60 br %61, %62, %65 62: %63 = load %next_state %64 = sext i8 %63 to i32 br %68 65: %66 = load @g2v_new %67 = sext i8 %66 to i32 br %68 68: %69 = phi [%64, %62], [%67, %65] %70 = trunc i32 %69 to i8 store %70, @g2v_new br %71 71: ret void *BasicFunctionTypename: "gate3_each_pals_period" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %next_state = alloca i8, align 1 %tmp = alloca i8, align 1 %tmp___0 = alloca i32, align 4 %1 = call zeroext i1 (...)* @__VERIFIER_nondet_bool() %2 = zext i1 %1 to i8 store %2, @gate3Failed %3 = load @gate3Failed %4 = trunc i8 %3 to i1 Unnamed Call-Instruction = call BasicVoidType @write_history_bool(i32 2, i1 zeroext %4) %5 = load @gate3Failed %6 = trunc i8 %5 to i1 br %6, %7, %28 7: %8 = load @nomsg %9 = sext i8 %8 to i32 %10 = load @nomsg %11 = sext i8 %10 to i32 %12 = icmp ne %9 %11 br %12, %13, %22 13: %14 = load @g3v_new %15 = sext i8 %14 to i32 %16 = load @nomsg %17 = sext i8 %16 to i32 %18 = icmp eq %15 %17 br %18, %19, %22 19: %20 = load @nomsg %21 = sext i8 %20 to i32 br %25 22: %23 = load @g3v_new %24 = sext i8 %23 to i32 br %25 25: %26 = phi [%21, %19], [%24, %22] %27 = trunc i32 %26 to i8 store %27, @g3v_new br %71 28: %29 = call signext i8 (...)* @__VERIFIER_nondet_int8_t() store %29, %tmp %30 = load %tmp store %30, %next_state %31 = load %next_state %32 = sext i8 %31 to i32 %33 = icmp eq %32 0 br %33, %34, %35 34: store 1, %tmp___0 br %48 35: %36 = load %next_state %37 = sext i8 %36 to i32 %38 = icmp eq %37 1 br %38, %39, %40 39: store 1, %tmp___0 br %47 40: %41 = load %next_state %42 = sext i8 %41 to i32 %43 = icmp eq %42 2 br %43, %44, %45 44: store 1, %tmp___0 br %46 45: store 0, %tmp___0 br %46 46: br %47 47: br %48 48: %49 = load %tmp___0 %50 = icmp ne %49 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %50) %51 = load %next_state %52 = sext i8 %51 to i32 %53 = load @nomsg %54 = sext i8 %53 to i32 %55 = icmp ne %52 %54 br %55, %56, %65 56: %57 = load @g3v_new %58 = sext i8 %57 to i32 %59 = load @nomsg %60 = sext i8 %59 to i32 %61 = icmp eq %58 %60 br %61, %62, %65 62: %63 = load %next_state %64 = sext i8 %63 to i32 br %68 65: %66 = load @g3v_new %67 = sext i8 %66 to i32 br %68 68: %69 = phi [%64, %62], [%67, %65] %70 = trunc i32 %69 to i8 store %70, @g3v_new br %71 71: ret void *BasicFunctionTypename: "voter" linkageType: EXTERNALLY_VISIBLE returnParam: BasicVoidType parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %voted_value = alloca i8, align 1 %1 = load @nomsg store %1, %voted_value %2 = load @g1v_old store %2, @VALUE1 %3 = load @nomsg store %3, @g1v_old %4 = load @g2v_old store %4, @VALUE2 %5 = load @nomsg store %5, @g2v_old %6 = load @g3v_old store %6, @VALUE3 %7 = load @nomsg store %7, @g3v_old %8 = load @VALUE1 %9 = sext i8 %8 to i32 %10 = load @VALUE2 %11 = sext i8 %10 to i32 %12 = icmp eq %9 %11 br %12, %13, %15 13: %14 = load @VALUE1 store %14, %voted_value br %80 15: %16 = load @VALUE1 %17 = sext i8 %16 to i32 %18 = load @VALUE3 %19 = sext i8 %18 to i32 %20 = icmp eq %17 %19 br %20, %21, %32 21: %22 = load @VALUE1 %23 = sext i8 %22 to i32 %24 = load @nomsg %25 = sext i8 %24 to i32 %26 = icmp eq %23 %25 br %26, %27, %29 27: %28 = load @VALUE2 store %28, %voted_value br %31 29: %30 = load @VALUE1 store %30, %voted_value br %31 31: br %79 32: %33 = load @VALUE2 %34 = sext i8 %33 to i32 %35 = load @VALUE3 %36 = sext i8 %35 to i32 %37 = icmp eq %34 %36 br %37, %38, %50 38: %39 = load @VALUE2 store %39, %voted_value %40 = load @VALUE2 %41 = sext i8 %40 to i32 %42 = load @nomsg %43 = sext i8 %42 to i32 %44 = icmp eq %41 %43 br %44, %45, %47 45: %46 = load @VALUE1 store %46, %voted_value br %49 47: %48 = load @VALUE2 store %48, %voted_value br %49 49: br %78 50: %51 = load @VALUE1 %52 = sext i8 %51 to i32 %53 = load @nomsg %54 = sext i8 %53 to i32 %55 = icmp ne %52 %54 br %55, %56, %58 56: %57 = load @VALUE1 store %57, %voted_value br %77 58: %59 = load @VALUE2 %60 = sext i8 %59 to i32 %61 = load @nomsg %62 = sext i8 %61 to i32 %63 = icmp ne %60 %62 br %63, %64, %66 64: %65 = load @VALUE2 store %65, %voted_value br %76 66: %67 = load @VALUE3 %68 = sext i8 %67 to i32 %69 = load @nomsg %70 = sext i8 %69 to i32 %71 = icmp ne %68 %70 br %71, %72, %74 72: %73 = load @VALUE3 store %73, %voted_value br %75 74: Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext 0) br %75 75: br %76 76: br %77 77: br %78 78: br %79 79: br %80 80: %81 = load %voted_value Unnamed Call-Instruction = call BasicVoidType @write_history_int8(i32 3, i8 signext %81) 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, @gate1Failed %4 = call zeroext i1 @__VERIFIER_nondet__Bool() %5 = zext i1 %4 to i8 store %5, @gate2Failed %6 = call zeroext i1 @__VERIFIER_nondet__Bool() %7 = zext i1 %6 to i8 store %7, @gate3Failed %8 = call signext i8 @__VERIFIER_nondet_msg_t() store %8, @VALUE1 %9 = call signext i8 @__VERIFIER_nondet_msg_t() store %9, @VALUE2 %10 = call signext i8 @__VERIFIER_nondet_msg_t() store %10, @VALUE3 %11 = call zeroext i1 @__VERIFIER_nondet__Bool() %12 = zext i1 %11 to i8 store %12, @gate1Failed_History_0 %13 = call zeroext i1 @__VERIFIER_nondet__Bool() %14 = zext i1 %13 to i8 store %14, @gate1Failed_History_1 %15 = call zeroext i1 @__VERIFIER_nondet__Bool() %16 = zext i1 %15 to i8 store %16, @gate1Failed_History_2 %17 = call zeroext i1 @__VERIFIER_nondet__Bool() %18 = zext i1 %17 to i8 store %18, @gate2Failed_History_0 %19 = call zeroext i1 @__VERIFIER_nondet__Bool() %20 = zext i1 %19 to i8 store %20, @gate2Failed_History_1 %21 = call zeroext i1 @__VERIFIER_nondet__Bool() %22 = zext i1 %21 to i8 store %22, @gate2Failed_History_2 %23 = call zeroext i1 @__VERIFIER_nondet__Bool() %24 = zext i1 %23 to i8 store %24, @gate3Failed_History_0 %25 = call zeroext i1 @__VERIFIER_nondet__Bool() %26 = zext i1 %25 to i8 store %26, @gate3Failed_History_1 %27 = call zeroext i1 @__VERIFIER_nondet__Bool() %28 = zext i1 %27 to i8 store %28, @gate3Failed_History_2 %29 = call signext i8 (...)* @__VERIFIER_nondet_int8_t() store %29, @votedValue_History_0 %30 = call signext i8 (...)* @__VERIFIER_nondet_int8_t() store %30, @votedValue_History_1 %31 = call signext i8 (...)* @__VERIFIER_nondet_int8_t() store %31, @votedValue_History_2 %32 = call i32 @init() store %32, %i2 %33 = load %i2 %34 = icmp ne %33 0 Unnamed Call-Instruction = call BasicVoidType @__VERIFIER_assume(i1 zeroext %34) %35 = load @nomsg store %35, @g1v_old %36 = load @nomsg store %36, @g1v_new %37 = load @nomsg store %37, @g2v_old %38 = load @nomsg store %38, @g2v_new %39 = load @nomsg store %39, @g3v_old %40 = load @nomsg store %40, @g3v_new store 0, %i2 br %41 41: %42 = load %i2 %43 = icmp slt %42 10 br %43, %44, %56 44: Unnamed Call-Instruction = call BasicVoidType @gate1_each_pals_period() Unnamed Call-Instruction = call BasicVoidType @gate2_each_pals_period() Unnamed Call-Instruction = call BasicVoidType @gate3_each_pals_period() Unnamed Call-Instruction = call BasicVoidType @voter() %45 = load @g1v_new store %45, @g1v_old %46 = load @nomsg store %46, @g1v_new %47 = load @g2v_new store %47, @g2v_old %48 = load @nomsg store %48, @g2v_new %49 = load @g3v_new store %49, @g3v_old %50 = load @nomsg store %50, @g3v_new %51 = call i32 @check() store %51, %c1 %52 = load %c1 %53 = icmp ne %52 0 Unnamed Call-Instruction = call BasicVoidType @assert(i1 zeroext %53) %54 = load %i2 %55 = add %54 1 store %55, %i2 br %41 56: %57 = load %1 ret %57 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 108 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 ---------------------------------------- (28) Obligation: Lasso ---------------------------------------- (29) Obligation: Lasso ---------------------------------------- (30) Obligation: Lasso ---------------------------------------- (31) Obligation: Lasso ---------------------------------------- (32) Obligation: Lasso ---------------------------------------- (33) Obligation: Lasso ---------------------------------------- (34) Obligation: Lasso ---------------------------------------- (35) Obligation: Lasso ---------------------------------------- (36) Obligation: Lasso ---------------------------------------- (37) Obligation: Lasso ---------------------------------------- (38) Obligation: Lasso ---------------------------------------- (39) Obligation: Lasso ---------------------------------------- (40) Obligation: Lasso ---------------------------------------- (41) Obligation: Lasso ---------------------------------------- (42) Obligation: Lasso ---------------------------------------- (43) Obligation: Lasso ---------------------------------------- (44) Obligation: Lasso ---------------------------------------- (45) Obligation: Lasso ---------------------------------------- (46) Obligation: Lasso ---------------------------------------- (47) Obligation: Lasso ---------------------------------------- (48) Obligation: Lasso ---------------------------------------- (49) Obligation: Lasso ---------------------------------------- (50) Obligation: Lasso ---------------------------------------- (51) Obligation: Lasso ---------------------------------------- (52) Obligation: Lasso ---------------------------------------- (53) Obligation: Lasso ---------------------------------------- (54) Obligation: Lasso ---------------------------------------- (55) Obligation: Lasso ---------------------------------------- (56) Obligation: Lasso ---------------------------------------- (57) Obligation: Lasso ---------------------------------------- (58) Obligation: Lasso ---------------------------------------- (59) Obligation: Lasso ---------------------------------------- (60) Obligation: Lasso ---------------------------------------- (61) Obligation: Lasso ---------------------------------------- (62) Obligation: Lasso ---------------------------------------- (63) Obligation: Lasso ---------------------------------------- (64) Obligation: Lasso ---------------------------------------- (65) Obligation: Lasso ---------------------------------------- (66) Obligation: Lasso ---------------------------------------- (67) Obligation: Lasso ---------------------------------------- (68) Obligation: Lasso ---------------------------------------- (69) Obligation: Lasso ---------------------------------------- (70) Obligation: Lasso ---------------------------------------- (71) Obligation: Lasso ---------------------------------------- (72) Obligation: Lasso ---------------------------------------- (73) Obligation: Lasso ---------------------------------------- (74) Obligation: Lasso ---------------------------------------- (75) Obligation: Lasso ---------------------------------------- (76) Obligation: Lasso ---------------------------------------- (77) Obligation: Lasso ---------------------------------------- (78) Obligation: Lasso ---------------------------------------- (79) Obligation: Lasso ---------------------------------------- (80) Obligation: Lasso ---------------------------------------- (81) Obligation: Lasso ---------------------------------------- (82) Obligation: Lasso ---------------------------------------- (83) Obligation: Lasso ---------------------------------------- (84) Obligation: Lasso ---------------------------------------- (85) Obligation: Lasso ---------------------------------------- (86) Obligation: Lasso ---------------------------------------- (87) Obligation: Lasso ---------------------------------------- (88) Obligation: Lasso ---------------------------------------- (89) Obligation: Lasso ---------------------------------------- (90) Obligation: Lasso ---------------------------------------- (91) Obligation: Lasso ---------------------------------------- (92) Obligation: Lasso ---------------------------------------- (93) Obligation: Lasso ---------------------------------------- (94) Obligation: Lasso ---------------------------------------- (95) Obligation: Lasso ---------------------------------------- (96) Obligation: Lasso ---------------------------------------- (97) Obligation: Lasso ---------------------------------------- (98) Obligation: Lasso ---------------------------------------- (99) Obligation: Lasso ---------------------------------------- (100) Obligation: Lasso ---------------------------------------- (101) Obligation: Lasso ---------------------------------------- (102) Obligation: Lasso ---------------------------------------- (103) Obligation: Lasso ---------------------------------------- (104) Obligation: Lasso ---------------------------------------- (105) Obligation: Lasso ---------------------------------------- (106) Obligation: Lasso ---------------------------------------- (107) Obligation: Lasso ---------------------------------------- (108) Obligation: Lasso ---------------------------------------- (109) Obligation: Lasso ---------------------------------------- (110) Obligation: Lasso ---------------------------------------- (111) Obligation: Lasso ---------------------------------------- (112) Obligation: Lasso ---------------------------------------- (113) Obligation: Lasso ---------------------------------------- (114) Obligation: Lasso ---------------------------------------- (115) Obligation: Lasso ---------------------------------------- (116) Obligation: Lasso ---------------------------------------- (117) Obligation: Lasso ---------------------------------------- (118) Obligation: Lasso ---------------------------------------- (119) Obligation: Lasso