10.63/3.91 YES 10.63/3.92 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 10.63/3.92 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.63/3.92 10.63/3.92 10.63/3.92 Termination of the given C Problem could be proven: 10.63/3.92 10.63/3.92 (0) C Problem 10.63/3.92 (1) CToLLVMProof [EQUIVALENT, 169 ms] 10.63/3.92 (2) LLVM problem 10.63/3.92 (3) LLVMToTerminationGraphProof [EQUIVALENT, 874 ms] 10.63/3.92 (4) LLVM Symbolic Execution Graph 10.63/3.92 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 10.63/3.92 (6) LLVM Symbolic Execution SCC 10.63/3.92 (7) SCC2IRS [SOUND, 0 ms] 10.63/3.92 (8) IntTRS 10.63/3.92 (9) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.63/3.92 (10) IntTRS 10.63/3.92 (11) RankingReductionPairProof [EQUIVALENT, 0 ms] 10.63/3.92 (12) YES 10.63/3.92 10.63/3.92 10.63/3.92 ---------------------------------------- 10.63/3.92 10.63/3.92 (0) 10.63/3.92 Obligation: 10.63/3.92 c file /export/starexec/sandbox/benchmark/theBenchmark.c 10.63/3.92 ---------------------------------------- 10.63/3.92 10.63/3.92 (1) CToLLVMProof (EQUIVALENT) 10.63/3.92 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 10.63/3.92 ---------------------------------------- 10.63/3.92 10.63/3.92 (2) 10.63/3.92 Obligation: 10.63/3.92 LLVM Problem 10.63/3.92 10.63/3.92 Aliases: 10.63/3.92 10.63/3.92 Data layout: 10.63/3.92 10.63/3.92 "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.63/3.93 10.63/3.93 Machine: 10.63/3.93 10.63/3.93 "x86_64-pc-linux-gnu" 10.63/3.93 10.63/3.93 Type definitions: 10.63/3.93 10.63/3.93 Global variables: 10.63/3.93 10.63/3.93 Function declarations and definitions: 10.63/3.93 10.63/3.93 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 10.63/3.93 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 10.63/3.93 0: 10.63/3.93 %1 = alloca i32, align 4 10.63/3.93 %k = alloca i32, align 4 10.63/3.93 %a = alloca [1048 x i32], align 16 10.63/3.93 %x = alloca i32, align 4 10.63/3.93 store 0, %1 10.63/3.93 %2 = call i32 @__VERIFIER_nondet_int() 10.63/3.93 store %2, %k 10.63/3.93 %3 = load %k 10.63/3.93 %4 = icmp sge %3 0 10.63/3.93 br %4, %5, %29 10.63/3.93 5: 10.63/3.93 %6 = load %k 10.63/3.93 %7 = icmp slt %6 1048 10.63/3.93 br %7, %8, %29 10.63/3.93 8: 10.63/3.93 %9 = getelementptr %a, 0, 0 10.63/3.93 %10 = load %9 10.63/3.93 %11 = icmp eq %10 23 10.63/3.93 br %11, %12, %28 10.63/3.93 12: 10.63/3.93 %13 = load %k 10.63/3.93 %14 = sext i32 %13 to i64 10.63/3.93 %15 = getelementptr %a, 0, %14 10.63/3.93 %16 = load %15 10.63/3.93 %17 = icmp eq %16 42 10.63/3.93 br %17, %18, %28 10.63/3.93 18: 10.63/3.93 %19 = call i32 @__VERIFIER_nondet_int() 10.63/3.93 store %19, %x 10.63/3.93 br %20 10.63/3.93 20: 10.63/3.93 %21 = load %x 10.63/3.93 %22 = icmp sge %21 0 10.63/3.93 br %22, %23, %27 10.63/3.93 23: 10.63/3.93 %24 = load %x 10.63/3.93 %25 = load %k 10.63/3.93 %26 = sub %24 %25 10.63/3.93 store %26, %x 10.63/3.93 br %20 10.63/3.93 27: 10.63/3.93 br %28 10.63/3.93 28: 10.63/3.93 br %29 10.63/3.93 29: 10.63/3.93 ret 0 10.63/3.93 10.63/3.93 10.63/3.93 Analyze Termination of all function calls matching the pattern: 10.63/3.93 main() 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (3) LLVMToTerminationGraphProof (EQUIVALENT) 10.63/3.93 Constructed symbolic execution graph for LLVM program and proved memory safety. 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (4) 10.63/3.93 Obligation: 10.63/3.93 SE Graph 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (5) SymbolicExecutionGraphToSCCProof (SOUND) 10.63/3.93 Splitted symbolic execution graph to 1 SCC. 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (6) 10.63/3.93 Obligation: 10.63/3.93 SCC 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (7) SCC2IRS (SOUND) 10.63/3.93 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 10.63/3.93 Generated rules. Obtained 10 rulesP rules: 10.63/3.93 f_188(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_189(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: 0 <= v124 && 1 <= v123 10.63/3.93 f_189(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_191(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: 0 = 0 10.63/3.93 f_191(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_193(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: TRUE 10.63/3.93 f_193(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_195(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: 0 = 0 10.63/3.93 f_195(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_197(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: 0 = 0 10.63/3.93 f_197(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_199(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v177, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: v177 + v117 = v124 && 0 <= 1047 + v177 10.63/3.93 f_199(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v177, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_200(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v177, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: TRUE 10.63/3.93 f_200(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v177, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_201(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v177, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: TRUE 10.63/3.93 f_201(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v177, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_187(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v177, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: 1 <= v113 && 1 <= v114 && 1 <= v115 && 1 <= v116 && 1 <= v117 && v117 <= 1047 && 5 <= v120 && 0 <= v122 && 0 <= v124 && 0 <= 1047 + v177 && 4 <= v125 && 4 <= v126 && 4192 <= v127 && 4 <= v128 && v113 <= v125 && v114 <= v126 && v115 <= v127 && v116 <= v128 10.63/3.93 f_187(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v123, v124, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) -> f_188(v113, v114, v115, v116, v117, 1, 23, v120, 42, v122, v124, v123, v125, v126, v127, v128, 0, 3, 4191, 4, 1047, 5, 4192) :|: 0 = 0 10.63/3.93 Combined rules. Obtained 1 rulesP rules: 10.63/3.93 f_188(v113:0, v114:0, v115:0, v116:0, v117:0, 1, 23, v120:0, 42, v122:0, v177:0 + v117:0, v123:0, v125:0, v126:0, v127:0, v128:0, 0, 3, 4191, 4, 1047, 5, 4192) -> f_188(v113:0, v114:0, v115:0, v116:0, v117:0, 1, 23, v120:0, 42, v122:0, v177:0, v177:0 + v117:0, v125:0, v126:0, v127:0, v128:0, 0, 3, 4191, 4, 1047, 5, 4192) :|: v114:0 > 0 && v113:0 > 0 && v115:0 > 0 && v116:0 > 0 && v117:0 > 0 && v117:0 < 1048 && v120:0 > 4 && v122:0 > -1 && v177:0 + v117:0 > -1 && v177:0 > -1048 && v125:0 > 3 && v123:0 > 0 && v126:0 > 3 && v127:0 > 4191 && v128:0 > 3 && v125:0 >= v113:0 && v126:0 >= v114:0 && v128:0 >= v116:0 && v127:0 >= v115:0 10.63/3.93 Filtered unneeded arguments: 10.63/3.93 f_188(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23) -> f_188(x1, x2, x3, x4, x5, x8, x10, x11, x12, x13, x14, x15, x16) 10.63/3.93 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 10.63/3.93 f_188(v113:0, v114:0, v115:0, v116:0, v117:0, v120:0, v122:0, sum~v177:0~v117:0, v123:0, v125:0, v126:0, v127:0, v128:0) -> f_188(v113:0, v114:0, v115:0, v116:0, v117:0, v120:0, v122:0, v177:0, v177:0 + v117:0, v125:0, v126:0, v127:0, v128:0) :|: v113:0 > 0 && v114:0 > 0 && v115:0 > 0 && v116:0 > 0 && v117:0 > 0 && v117:0 < 1048 && v120:0 > 4 && v122:0 > -1 && v177:0 + v117:0 > -1 && v177:0 > -1048 && v125:0 > 3 && v123:0 > 0 && v126:0 > 3 && v127:0 > 4191 && v128:0 > 3 && v125:0 >= v113:0 && v126:0 >= v114:0 && v127:0 >= v115:0 && v128:0 >= v116:0 && sum~v177:0~v117:0 = v177:0 + v117:0 10.63/3.93 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (8) 10.63/3.93 Obligation: 10.63/3.93 Rules: 10.63/3.93 f_188(v113:0, v114:0, v115:0, v116:0, v117:0, v120:0, v122:0, sum~v177:0~v117:0, v123:0, v125:0, v126:0, v127:0, v128:0) -> f_188(v113:0, v114:0, v115:0, v116:0, v117:0, v120:0, v122:0, v177:0, v177:0 + v117:0, v125:0, v126:0, v127:0, v128:0) :|: v113:0 > 0 && v114:0 > 0 && v115:0 > 0 && v116:0 > 0 && v117:0 > 0 && v117:0 < 1048 && v120:0 > 4 && v122:0 > -1 && v177:0 + v117:0 > -1 && v177:0 > -1048 && v125:0 > 3 && v123:0 > 0 && v126:0 > 3 && v127:0 > 4191 && v128:0 > 3 && v125:0 >= v113:0 && v126:0 >= v114:0 && v127:0 >= v115:0 && v128:0 >= v116:0 && sum~v177:0~v117:0 = v177:0 + v117:0 10.63/3.93 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (9) IntTRSCompressionProof (EQUIVALENT) 10.63/3.93 Compressed rules. 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (10) 10.63/3.93 Obligation: 10.63/3.93 Rules: 10.63/3.93 f_188(v113:0:0, v114:0:0, v115:0:0, v116:0:0, v117:0:0, v120:0:0, v122:0:0, sum~v177:0:0~v117:0:0, v123:0:0, v125:0:0, v126:0:0, v127:0:0, v128:0:0) -> f_188(v113:0:0, v114:0:0, v115:0:0, v116:0:0, v117:0:0, v120:0:0, v122:0:0, v177:0:0, v177:0:0 + v117:0:0, v125:0:0, v126:0:0, v127:0:0, v128:0:0) :|: v127:0:0 >= v115:0:0 && v128:0:0 >= v116:0:0 && v126:0:0 >= v114:0:0 && v125:0:0 >= v113:0:0 && v128:0:0 > 3 && v127:0:0 > 4191 && v126:0:0 > 3 && v123:0:0 > 0 && v125:0:0 > 3 && v177:0:0 > -1048 && v177:0:0 + v117:0:0 > -1 && v122:0:0 > -1 && v120:0:0 > 4 && v117:0:0 < 1048 && v117:0:0 > 0 && v116:0:0 > 0 && v115:0:0 > 0 && v114:0:0 > 0 && v113:0:0 > 0 && sum~v177:0:0~v117:0:0 = v177:0:0 + v117:0:0 10.63/3.93 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (11) RankingReductionPairProof (EQUIVALENT) 10.63/3.93 Interpretation: 10.63/3.93 [ f_188 ] = f_188_8 10.63/3.93 10.63/3.93 The following rules are decreasing: 10.63/3.93 f_188(v113:0:0, v114:0:0, v115:0:0, v116:0:0, v117:0:0, v120:0:0, v122:0:0, sum~v177:0:0~v117:0:0, v123:0:0, v125:0:0, v126:0:0, v127:0:0, v128:0:0) -> f_188(v113:0:0, v114:0:0, v115:0:0, v116:0:0, v117:0:0, v120:0:0, v122:0:0, v177:0:0, v177:0:0 + v117:0:0, v125:0:0, v126:0:0, v127:0:0, v128:0:0) :|: v127:0:0 >= v115:0:0 && v128:0:0 >= v116:0:0 && v126:0:0 >= v114:0:0 && v125:0:0 >= v113:0:0 && v128:0:0 > 3 && v127:0:0 > 4191 && v126:0:0 > 3 && v123:0:0 > 0 && v125:0:0 > 3 && v177:0:0 > -1048 && v177:0:0 + v117:0:0 > -1 && v122:0:0 > -1 && v120:0:0 > 4 && v117:0:0 < 1048 && v117:0:0 > 0 && v116:0:0 > 0 && v115:0:0 > 0 && v114:0:0 > 0 && v113:0:0 > 0 && sum~v177:0:0~v117:0:0 = v177:0:0 + v117:0:0 10.63/3.93 10.63/3.93 The following rules are bounded: 10.63/3.93 f_188(v113:0:0, v114:0:0, v115:0:0, v116:0:0, v117:0:0, v120:0:0, v122:0:0, sum~v177:0:0~v117:0:0, v123:0:0, v125:0:0, v126:0:0, v127:0:0, v128:0:0) -> f_188(v113:0:0, v114:0:0, v115:0:0, v116:0:0, v117:0:0, v120:0:0, v122:0:0, v177:0:0, v177:0:0 + v117:0:0, v125:0:0, v126:0:0, v127:0:0, v128:0:0) :|: v127:0:0 >= v115:0:0 && v128:0:0 >= v116:0:0 && v126:0:0 >= v114:0:0 && v125:0:0 >= v113:0:0 && v128:0:0 > 3 && v127:0:0 > 4191 && v126:0:0 > 3 && v123:0:0 > 0 && v125:0:0 > 3 && v177:0:0 > -1048 && v177:0:0 + v117:0:0 > -1 && v122:0:0 > -1 && v120:0:0 > 4 && v117:0:0 < 1048 && v117:0:0 > 0 && v116:0:0 > 0 && v115:0:0 > 0 && v114:0:0 > 0 && v113:0:0 > 0 && sum~v177:0:0~v117:0:0 = v177:0:0 + v117:0:0 10.63/3.93 10.63/3.93 10.63/3.93 ---------------------------------------- 10.63/3.93 10.63/3.93 (12) 10.63/3.93 YES 11.03/3.95 EOF