10.45/3.46 NO 10.45/3.46 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 10.45/3.46 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.45/3.46 10.45/3.46 10.45/3.46 Termination of the given C Problem could be disproven: 10.45/3.46 10.45/3.46 (0) C Problem 10.45/3.46 (1) CToLLVMProof [EQUIVALENT, 155 ms] 10.45/3.46 (2) LLVM problem 10.45/3.46 (3) LLVMToTerminationGraphProof [EQUIVALENT, 565 ms] 10.45/3.46 (4) LLVM Symbolic Execution Graph 10.45/3.46 (5) LLVMNonterminationProof [COMPLETE, 296 ms] 10.45/3.46 (6) NO 10.45/3.46 10.45/3.46 10.45/3.46 ---------------------------------------- 10.45/3.46 10.45/3.46 (0) 10.45/3.46 Obligation: 10.45/3.46 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 10.45/3.46 ---------------------------------------- 10.45/3.46 10.45/3.46 (1) CToLLVMProof (EQUIVALENT) 10.45/3.46 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 10.45/3.46 ---------------------------------------- 10.45/3.46 10.45/3.46 (2) 10.45/3.46 Obligation: 10.45/3.46 LLVM Problem 10.45/3.46 10.45/3.46 Aliases: 10.45/3.46 10.45/3.46 Data layout: 10.45/3.46 10.45/3.46 "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" 10.45/3.46 10.45/3.46 Machine: 10.45/3.46 10.45/3.46 "x86_64-pc-linux-gnu" 10.45/3.46 10.45/3.46 Type definitions: 10.45/3.46 10.45/3.46 Global variables: 10.45/3.46 10.45/3.46 Function declarations and definitions: 10.45/3.46 10.45/3.46 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 10.45/3.46 0: 10.45/3.46 %1 = alloca i32, align 4 10.45/3.46 %choose = alloca i32, align 4 10.45/3.46 %life = alloca i32, align 4 10.45/3.46 %death = alloca i32, align 4 10.45/3.46 %temp = alloca i32, align 4 10.45/3.46 store 0, %1 10.45/3.46 store 2, %choose 10.45/3.46 store 13, %life 10.45/3.46 store 17, %death 10.45/3.46 br %2 10.45/3.46 2: 10.45/3.46 %3 = load %life 10.45/3.46 %4 = load %death 10.45/3.46 %5 = icmp slt %3 %4 10.45/3.46 br %5, %6, %21 10.45/3.46 6: 10.45/3.46 %7 = load %death 10.45/3.46 store %7, %temp 10.45/3.46 %8 = load %life 10.45/3.46 %9 = add %8 1 10.45/3.46 store %9, %death 10.45/3.46 %10 = load %temp 10.45/3.46 store %10, %life 10.45/3.46 %11 = load %choose 10.45/3.46 %12 = load %life 10.45/3.46 %13 = icmp slt %11 %12 10.45/3.46 br %13, %18, %14 10.45/3.46 14: 10.45/3.46 %15 = load %choose 10.45/3.46 %16 = load %death 10.45/3.46 %17 = icmp slt %15 %16 10.45/3.46 br %17, %18, %20 10.45/3.46 18: 10.45/3.46 %19 = load %choose 10.45/3.46 store %19, %life 10.45/3.46 br %20 10.45/3.46 20: 10.45/3.46 br %2 10.45/3.46 21: 10.45/3.46 ret 0 10.45/3.46 10.45/3.46 10.45/3.46 Analyze Termination of all function calls matching the pattern: 10.45/3.46 main() 10.45/3.46 ---------------------------------------- 10.45/3.46 10.45/3.46 (3) LLVMToTerminationGraphProof (EQUIVALENT) 10.45/3.46 Constructed symbolic execution graph for LLVM program and proved memory safety. 10.45/3.46 ---------------------------------------- 10.45/3.46 10.45/3.46 (4) 10.45/3.46 Obligation: 10.45/3.46 SE Graph 10.45/3.46 ---------------------------------------- 10.45/3.46 10.45/3.46 (5) LLVMNonterminationProof (COMPLETE) 10.45/3.46 Proved nontermination with the following witness: 10.45/3.46 10.45/3.46 State #104 with references set to {}. 10.45/3.46 Nondeterministic instruction %1 = alloca i32, align 4 in node #104 yields value 17. 10.45/3.46 Nondeterministic instruction %choose = alloca i32, align 4 in node #105 yields value 13. 10.45/3.46 Nondeterministic instruction %life = alloca i32, align 4 in node #106 yields value 1. 10.45/3.46 Nondeterministic instruction %death = alloca i32, align 4 in node #107 yields value 9. 10.45/3.46 Nondeterministic instruction %temp = alloca i32, align 4 in node #108 yields value 5. 10.45/3.46 10.45/3.46 ---------------------------------------- 10.45/3.46 10.45/3.46 (6) 10.45/3.46 NO 10.78/3.52 EOF