6.60/2.83 MAYBE 6.60/2.84 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 6.60/2.84 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.60/2.84 6.60/2.84 6.60/2.84 Termination of the given C Problem could not be shown: 6.60/2.84 6.60/2.84 (0) C Problem 6.60/2.84 (1) CToLLVMProof [EQUIVALENT, 175 ms] 6.60/2.84 (2) LLVM problem 6.60/2.84 6.60/2.84 6.60/2.84 ---------------------------------------- 6.60/2.84 6.60/2.84 (0) 6.60/2.84 Obligation: 6.60/2.84 c file /export/starexec/sandbox/benchmark/theBenchmark.c 6.60/2.84 ---------------------------------------- 6.60/2.84 6.60/2.84 (1) CToLLVMProof (EQUIVALENT) 6.60/2.84 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 6.60/2.84 ---------------------------------------- 6.60/2.84 6.60/2.84 (2) 6.60/2.84 Obligation: 6.60/2.84 LLVM Problem 6.60/2.84 6.60/2.84 Aliases: 6.60/2.84 6.60/2.84 Data layout: 6.60/2.84 6.60/2.84 "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" 6.60/2.84 6.60/2.84 Machine: 6.60/2.84 6.60/2.84 "x86_64-pc-linux-gnu" 6.60/2.84 6.60/2.84 Type definitions: 6.60/2.84 6.60/2.84 Global variables: 6.60/2.84 6.60/2.84 Function declarations and definitions: 6.60/2.84 6.60/2.84 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.60/2.84 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 6.60/2.84 0: 6.60/2.84 %1 = alloca i32, align 4 6.60/2.84 %i = alloca i32, align 4 6.60/2.84 %j = alloca i32, align 4 6.60/2.84 %tmp = alloca i32, align 4 6.60/2.84 %length = alloca i32, align 4 6.60/2.84 %arr = alloca *i32, align 8 6.60/2.84 %a = alloca *i32, align 8 6.60/2.84 %b = alloca *i32, align 8 6.60/2.84 store 0, %1 6.60/2.84 %2 = call i32 @__VERIFIER_nondet_int() 6.60/2.84 store %2, %length 6.60/2.84 %3 = load %length 6.60/2.84 %4 = icmp slt %3 1 6.60/2.84 br %4, %5, %6 6.60/2.84 5: 6.60/2.84 store 1, %length 6.60/2.84 br %6 6.60/2.84 6: 6.60/2.84 %7 = load %length 6.60/2.84 %8 = srem %7 2 6.60/2.84 %9 = icmp eq %8 0 6.60/2.84 br %9, %10, %13 6.60/2.84 10: 6.60/2.84 %11 = load %length 6.60/2.84 %12 = add %11 1 6.60/2.84 store %12, %length 6.60/2.84 br %13 6.60/2.84 13: 6.60/2.84 %14 = load %length 6.60/2.84 %15 = sext i32 %14 to i64 6.60/2.84 %16 = alloca i8, numElementsLit: %15 6.60/2.84 %17 = bitcast *i8 %16 to *i32 6.60/2.84 store %17, %arr 6.60/2.84 store 0, %i 6.60/2.84 br %18 6.60/2.84 18: 6.60/2.84 %19 = load %i 6.60/2.84 %20 = load %length 6.60/2.84 %21 = icmp slt %19 %20 6.60/2.84 br %21, %22, %40 6.60/2.84 22: 6.60/2.84 %23 = load %i 6.60/2.84 %24 = sext i32 %23 to i64 6.60/2.84 %25 = load %arr 6.60/2.84 %26 = getelementptr %25, %24 6.60/2.84 %27 = load %26 6.60/2.84 %28 = icmp eq %27 0 6.60/2.84 br %28, %29, %36 6.60/2.84 29: 6.60/2.84 %30 = load %i 6.60/2.84 %31 = sext i32 %30 to i64 6.60/2.84 %32 = load %arr 6.60/2.84 %33 = getelementptr %32, %31 6.60/2.84 %34 = load %33 6.60/2.84 %35 = add %34 1 6.60/2.84 store %35, %33 6.60/2.84 br %36 6.60/2.84 36: 6.60/2.84 br %37 6.60/2.84 37: 6.60/2.84 %38 = load %i 6.60/2.84 %39 = add %38 1 6.60/2.84 store %39, %i 6.60/2.84 br %18 6.60/2.84 40: 6.60/2.84 %41 = load %length 6.60/2.84 %42 = sdiv %41 2 6.60/2.84 %43 = add %42 1 6.60/2.84 %44 = sext i32 %43 to i64 6.60/2.84 %45 = load %arr 6.60/2.84 %46 = getelementptr %45, %44 6.60/2.84 store 0, %46 6.60/2.84 %47 = load %arr 6.60/2.84 store %47, %a 6.60/2.84 %48 = load %arr 6.60/2.84 %49 = load %length 6.60/2.84 %50 = sext i32 %49 to i64 6.60/2.84 %51 = getelementptr %48, %50 6.60/2.84 %52 = getelementptr %51, -1 6.60/2.84 store %52, %b 6.60/2.84 br %53 6.60/2.84 53: 6.60/2.84 %54 = load %a 6.60/2.84 %55 = load %54 6.60/2.84 %56 = icmp ne %55 0 6.60/2.84 br %56, %57, %61 6.60/2.84 57: 6.60/2.84 %58 = load %b 6.60/2.84 %59 = load %58 6.60/2.84 %60 = icmp ne %59 0 6.60/2.84 br %61 6.60/2.84 61: 6.60/2.84 %62 = phi [0, %53], [%60, %57] 6.60/2.84 br %62, %63, %75 6.60/2.84 63: 6.60/2.84 %64 = load %a 6.60/2.84 %65 = load %64 6.60/2.84 store %65, %tmp 6.60/2.84 %66 = load %b 6.60/2.84 %67 = load %66 6.60/2.84 %68 = load %a 6.60/2.84 store %67, %68 6.60/2.84 %69 = load %tmp 6.60/2.84 %70 = load %b 6.60/2.84 store %69, %70 6.60/2.84 %71 = load %a 6.60/2.84 %72 = getelementptr %71, 1 6.60/2.84 store %72, %a 6.60/2.84 %73 = load %b 6.60/2.84 %74 = getelementptr %73, -1 6.60/2.84 store %74, %b 6.60/2.84 br %53 6.60/2.84 75: 6.60/2.84 ret 0 6.60/2.84 6.60/2.84 6.60/2.84 Analyze Termination of all function calls matching the pattern: 6.60/2.84 main() 6.73/5.70 EOF