129.72/85.69 MAYBE 129.72/85.70 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 129.72/85.70 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 129.72/85.70 129.72/85.70 129.72/85.70 Termination of the given C Problem could not be shown: 129.72/85.70 129.72/85.70 (0) C Problem 129.72/85.70 (1) CToLLVMProof [EQUIVALENT, 168 ms] 129.72/85.70 (2) LLVM problem 129.72/85.70 129.72/85.70 129.72/85.70 ---------------------------------------- 129.72/85.70 129.72/85.70 (0) 129.72/85.70 Obligation: 129.72/85.70 c file /export/starexec/sandbox/benchmark/theBenchmark.c 129.72/85.70 ---------------------------------------- 129.72/85.70 129.72/85.70 (1) CToLLVMProof (EQUIVALENT) 129.72/85.70 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 129.72/85.70 ---------------------------------------- 129.72/85.70 129.72/85.70 (2) 129.72/85.70 Obligation: 129.72/85.70 LLVM Problem 129.72/85.70 129.72/85.70 Aliases: 129.72/85.70 129.72/85.70 Data layout: 129.72/85.70 129.72/85.70 "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" 129.72/85.70 129.72/85.70 Machine: 129.72/85.70 129.72/85.70 "x86_64-pc-linux-gnu" 129.72/85.70 129.72/85.70 Type definitions: 129.72/85.70 129.72/85.70 Global variables: 129.72/85.70 129.72/85.70 Function declarations and definitions: 129.72/85.70 129.72/85.70 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 129.72/85.70 *BasicFunctionTypename: "lis" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (a *i32, N i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 129.72/85.70 0: 129.72/85.70 %1 = alloca *i32, align 8 129.72/85.70 %2 = alloca i32, align 4 129.72/85.70 %best = alloca *i32, align 8 129.72/85.70 %prev = alloca *i32, align 8 129.72/85.70 %i = alloca i32, align 4 129.72/85.70 %j = alloca i32, align 4 129.72/85.70 %max = alloca i32, align 4 129.72/85.70 store %a, %1 129.72/85.70 store %N, %2 129.72/85.70 store 0, %max 129.72/85.70 %3 = load %2 129.72/85.70 %4 = sext i32 %3 to i64 129.72/85.70 %5 = mul 4 %4 129.72/85.70 %6 = alloca i8, numElementsLit: %5 129.72/85.70 %7 = bitcast *i8 %6 to *i32 129.72/85.70 store %7, %best 129.72/85.70 %8 = load %2 129.72/85.70 %9 = sext i32 %8 to i64 129.72/85.70 %10 = mul 4 %9 129.72/85.70 %11 = alloca i8, numElementsLit: %10 129.72/85.70 %12 = bitcast *i8 %11 to *i32 129.72/85.70 store %12, %prev 129.72/85.70 store 0, %i 129.72/85.70 br %13 129.72/85.70 13: 129.72/85.70 %14 = load %i 129.72/85.70 %15 = load %2 129.72/85.70 %16 = icmp slt %14 %15 129.72/85.70 br %16, %17, %30 129.72/85.70 17: 129.72/85.70 %18 = load %i 129.72/85.70 %19 = sext i32 %18 to i64 129.72/85.70 %20 = load %best 129.72/85.70 %21 = getelementptr %20, %19 129.72/85.70 store 1, %21 129.72/85.70 %22 = load %i 129.72/85.70 %23 = load %i 129.72/85.70 %24 = sext i32 %23 to i64 129.72/85.70 %25 = load %prev 129.72/85.70 %26 = getelementptr %25, %24 129.72/85.70 store %22, %26 129.72/85.70 br %27 129.72/85.70 27: 129.72/85.70 %28 = load %i 129.72/85.70 %29 = add %28 1 129.72/85.70 store %29, %i 129.72/85.70 br %13 129.72/85.70 30: 129.72/85.70 store 1, %i 129.72/85.70 br %31 129.72/85.70 31: 129.72/85.70 %32 = load %i 129.72/85.70 %33 = load %2 129.72/85.70 %34 = icmp slt %32 %33 129.72/85.70 br %34, %35, %89 129.72/85.70 35: 129.72/85.70 store 0, %j 129.72/85.70 br %36 129.72/85.70 36: 129.72/85.70 %37 = load %j 129.72/85.70 %38 = load %i 129.72/85.70 %39 = icmp slt %37 %38 129.72/85.70 br %39, %40, %85 129.72/85.70 40: 129.72/85.70 %41 = load %i 129.72/85.70 %42 = sext i32 %41 to i64 129.72/85.70 %43 = load %1 129.72/85.70 %44 = getelementptr %43, %42 129.72/85.70 %45 = load %44 129.72/85.70 %46 = load %j 129.72/85.70 %47 = sext i32 %46 to i64 129.72/85.70 %48 = load %1 129.72/85.70 %49 = getelementptr %48, %47 129.72/85.70 %50 = load %49 129.72/85.70 %51 = icmp sgt %45 %50 129.72/85.70 br %51, %52, %81 129.72/85.70 52: 129.72/85.70 %53 = load %i 129.72/85.70 %54 = sext i32 %53 to i64 129.72/85.70 %55 = load %best 129.72/85.70 %56 = getelementptr %55, %54 129.72/85.70 %57 = load %56 129.72/85.70 %58 = load %j 129.72/85.70 %59 = sext i32 %58 to i64 129.72/85.70 %60 = load %best 129.72/85.70 %61 = getelementptr %60, %59 129.72/85.70 %62 = load %61 129.72/85.70 %63 = add %62 1 129.72/85.70 %64 = icmp slt %57 %63 129.72/85.70 br %64, %65, %81 129.72/85.70 65: 129.72/85.70 %66 = load %j 129.72/85.70 %67 = sext i32 %66 to i64 129.72/85.70 %68 = load %best 129.72/85.70 %69 = getelementptr %68, %67 129.72/85.70 %70 = load %69 129.72/85.70 %71 = add %70 1 129.72/85.70 %72 = load %i 129.72/85.70 %73 = sext i32 %72 to i64 129.72/85.70 %74 = load %best 129.72/85.70 %75 = getelementptr %74, %73 129.72/85.70 store %71, %75 129.72/85.70 %76 = load %j 129.72/85.70 %77 = load %i 129.72/85.70 %78 = sext i32 %77 to i64 129.72/85.70 %79 = load %prev 129.72/85.70 %80 = getelementptr %79, %78 129.72/85.70 store %76, %80 129.72/85.70 br %81 129.72/85.70 81: 129.72/85.70 br %82 129.72/85.70 82: 129.72/85.70 %83 = load %j 129.72/85.70 %84 = add %83 1 129.72/85.70 store %84, %j 129.72/85.70 br %36 129.72/85.70 85: 129.72/85.70 br %86 129.72/85.70 86: 129.72/85.70 %87 = load %i 129.72/85.70 %88 = add %87 1 129.72/85.70 store %88, %i 129.72/85.70 br %31 129.72/85.70 89: 129.72/85.70 store 0, %i 129.72/85.70 br %90 129.72/85.70 90: 129.72/85.70 %91 = load %i 129.72/85.70 %92 = load %2 129.72/85.70 %93 = icmp slt %91 %92 129.72/85.70 br %93, %94, %112 129.72/85.70 94: 129.72/85.70 %95 = load %max 129.72/85.70 %96 = load %i 129.72/85.70 %97 = sext i32 %96 to i64 129.72/85.70 %98 = load %best 129.72/85.70 %99 = getelementptr %98, %97 129.72/85.70 %100 = load %99 129.72/85.70 %101 = icmp slt %95 %100 129.72/85.70 br %101, %102, %108 129.72/85.70 102: 129.72/85.70 %103 = load %i 129.72/85.70 %104 = sext i32 %103 to i64 129.72/85.70 %105 = load %best 129.72/85.70 %106 = getelementptr %105, %104 129.72/85.70 %107 = load %106 129.72/85.70 store %107, %max 129.72/85.70 br %108 129.72/85.70 108: 129.72/85.70 br %109 129.72/85.70 109: 129.72/85.70 %110 = load %i 129.72/85.70 %111 = add %110 1 129.72/85.70 store %111, %i 129.72/85.70 br %90 129.72/85.70 112: 129.72/85.70 %113 = load %max 129.72/85.70 ret %113 129.72/85.70 129.72/85.70 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 129.72/85.70 0: 129.72/85.70 %1 = alloca i32, align 4 129.72/85.70 %array_size = alloca i32, align 4 129.72/85.70 %numbers = alloca *i32, align 8 129.72/85.70 store 0, %1 129.72/85.70 %2 = call i32 @__VERIFIER_nondet_int() 129.72/85.70 store %2, %array_size 129.72/85.70 %3 = load %array_size 129.72/85.70 %4 = icmp slt %3 1 129.72/85.70 br %4, %5, %6 129.72/85.70 5: 129.72/85.70 store 1, %array_size 129.72/85.70 br %6 129.72/85.70 6: 129.72/85.70 %7 = load %array_size 129.72/85.70 %8 = sext i32 %7 to i64 129.72/85.70 %9 = mul %8 4 129.72/85.70 %10 = alloca i8, numElementsLit: %9 129.72/85.70 %11 = bitcast *i8 %10 to *i32 129.72/85.70 store %11, %numbers 129.72/85.70 %12 = load %numbers 129.72/85.70 %13 = load %array_size 129.72/85.70 %14 = call i32 @lis(*i32 %12, i32 %13) 129.72/85.70 ret %14 129.72/85.70 129.72/85.70 129.72/85.70 Analyze Termination of all function calls matching the pattern: 129.72/85.70 main() 129.83/85.72 EOF