15.08/4.89 YES 16.88/6.85 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 16.88/6.85 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 16.88/6.85 16.88/6.85 16.88/6.85 Termination of the given C Problem could be proven: 16.88/6.85 16.88/6.85 (0) C Problem 16.88/6.85 (1) CToLLVMProof [EQUIVALENT, 175 ms] 16.88/6.85 (2) LLVM problem 16.88/6.85 (3) LLVMToTerminationGraphProof [EQUIVALENT, 877 ms] 16.88/6.85 (4) LLVM Symbolic Execution Graph 16.88/6.85 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 16.88/6.85 (6) AND 16.88/6.85 (7) LLVM Symbolic Execution SCC 16.88/6.85 (8) SCC2IRS [SOUND, 59 ms] 16.88/6.85 (9) IntTRS 16.88/6.85 (10) IntTRSCompressionProof [EQUIVALENT, 0 ms] 16.88/6.85 (11) IntTRS 16.88/6.85 (12) PolynomialOrderProcessor [EQUIVALENT, 7 ms] 16.88/6.85 (13) YES 16.88/6.85 (14) LLVM Symbolic Execution SCC 16.88/6.85 (15) SCC2IRS [SOUND, 67 ms] 16.88/6.85 (16) IntTRS 16.88/6.85 (17) IRS2T2 [EQUIVALENT, 0 ms] 16.88/6.85 (18) T2IntSys 16.88/6.85 (19) T2 [EQUIVALENT, 893 ms] 16.88/6.85 (20) YES 16.88/6.85 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (0) 16.88/6.85 Obligation: 16.88/6.85 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (1) CToLLVMProof (EQUIVALENT) 16.88/6.85 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (2) 16.88/6.85 Obligation: 16.88/6.85 LLVM Problem 16.88/6.85 16.88/6.85 Aliases: 16.88/6.85 16.88/6.85 Data layout: 16.88/6.85 16.88/6.85 "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" 16.88/6.85 16.88/6.85 Machine: 16.88/6.85 16.88/6.85 "x86_64-pc-linux-gnu" 16.88/6.85 16.88/6.85 Type definitions: 16.88/6.85 16.88/6.85 Global variables: 16.88/6.85 16.88/6.85 Function declarations and definitions: 16.88/6.85 16.88/6.85 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 16.88/6.85 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 16.88/6.85 0: 16.88/6.85 %1 = alloca i32, align 4 16.88/6.85 %q = alloca i32, align 4 16.88/6.85 %p = alloca i32, align 4 16.88/6.85 store 0, %1 16.88/6.85 %2 = call i32 @__VERIFIER_nondet_int() 16.88/6.85 store %2, %q 16.88/6.85 %3 = call i32 @__VERIFIER_nondet_int() 16.88/6.85 store %3, %p 16.88/6.85 br %4 16.88/6.85 4: 16.88/6.85 %5 = load %q 16.88/6.85 %6 = icmp sgt %5 0 16.88/6.85 br %6, %7, %10 16.88/6.85 7: 16.88/6.85 %8 = load %p 16.88/6.85 %9 = icmp sgt %8 0 16.88/6.85 br %10 16.88/6.85 10: 16.88/6.85 %11 = phi [0, %4], [%9, %7] 16.88/6.85 br %11, %12, %29 16.88/6.85 12: 16.88/6.85 %13 = load %q 16.88/6.85 %14 = load %p 16.88/6.85 %15 = icmp slt %13 %14 16.88/6.85 br %15, %16, %19 16.88/6.85 16: 16.88/6.85 %17 = load %q 16.88/6.85 %18 = sub %17 1 16.88/6.85 store %18, %q 16.88/6.85 br %28 16.88/6.85 19: 16.88/6.85 %20 = load %p 16.88/6.85 %21 = load %q 16.88/6.85 %22 = icmp slt %20 %21 16.88/6.85 br %22, %23, %26 16.88/6.85 23: 16.88/6.85 %24 = load %p 16.88/6.85 %25 = sub %24 1 16.88/6.85 store %25, %p 16.88/6.85 br %27 16.88/6.85 26: 16.88/6.85 br %29 16.88/6.85 27: 16.88/6.85 br %28 16.88/6.85 28: 16.88/6.85 br %4 16.88/6.85 29: 16.88/6.85 ret 0 16.88/6.85 16.88/6.85 16.88/6.85 Analyze Termination of all function calls matching the pattern: 16.88/6.85 main() 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (3) LLVMToTerminationGraphProof (EQUIVALENT) 16.88/6.85 Constructed symbolic execution graph for LLVM program and proved memory safety. 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (4) 16.88/6.85 Obligation: 16.88/6.85 SE Graph 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (5) SymbolicExecutionGraphToSCCProof (SOUND) 16.88/6.85 Splitted symbolic execution graph to 2 SCCs. 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (6) 16.88/6.85 Complex Obligation (AND) 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (7) 16.88/6.85 Obligation: 16.88/6.85 SCC 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (8) SCC2IRS (SOUND) 16.88/6.85 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 16.88/6.85 Generated rules. Obtained 23 rulesP rules: 16.88/6.85 f_286(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) -> f_288(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_288(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) -> f_289(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_289(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) -> f_290(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_290(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) -> f_291(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_291(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) -> f_292(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) :|: 0 < v382 && 2 <= v380 && 3 <= v377 && 2 <= v378 16.88/6.85 f_292(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) -> f_294(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_294(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) -> f_296(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_296(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) -> f_298(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_298(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) -> f_300(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_300(v374, v375, v376, v377, v378, 1, v382, v380, 0, v383, v384, v385, 3, 2, 4) -> f_301(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_301(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) -> f_302(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_302(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) -> f_303(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_303(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) -> f_304(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_304(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) -> f_305(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_305(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) -> f_306(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_306(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) -> f_307(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_307(v374, v375, v376, v377, v378, 1, v382, 0, v380, v383, v384, v385, 3, 2, 4) -> f_308(v374, v375, v376, v377, v378, 1, v382, 0, v383, v384, v385, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_308(v374, v375, v376, v377, v378, 1, v382, 0, v383, v384, v385, 3, 2, 4) -> f_309(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) :|: 1 + v474 = v382 && 0 <= v474 16.88/6.85 f_309(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) -> f_310(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_310(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) -> f_311(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_311(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) -> f_312(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_312(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) -> f_284(v374, v375, v376, v377, v378, 1, v382, 0, v474, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 f_284(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) -> f_286(v374, v375, v376, v377, v378, 1, v380, 0, v382, v383, v384, v385, 3, 2, 4) :|: TRUE 16.88/6.85 Combined rules. Obtained 1 rulesP rules: 16.88/6.85 f_286(v374:0, v375:0, v376:0, v377:0, v378:0, 1, v380:0, 0, 1 + v474:0, v383:0, v384:0, v385:0, 3, 2, 4) -> f_286(v374:0, v375:0, v376:0, v377:0, v378:0, 1, 1 + v474:0, 0, v474:0, v383:0, v384:0, v385:0, 3, 2, 4) :|: v380:0 > 1 && v474:0 > -1 && v377:0 > 2 && v378:0 > 1 16.88/6.85 Filtered unneeded arguments: 16.88/6.85 f_286(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_286(x4, x5, x7, x9) 16.88/6.85 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 16.88/6.85 f_286(v377:0, v378:0, v380:0, sum~cons_1~v474:0) -> f_286(v377:0, v378:0, 1 + v474:0, v474:0) :|: v474:0 > -1 && v380:0 > 1 && v378:0 > 1 && v377:0 > 2 && sum~cons_1~v474:0 = 1 + v474:0 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (9) 16.88/6.85 Obligation: 16.88/6.85 Rules: 16.88/6.85 f_286(v377:0, v378:0, v380:0, sum~cons_1~v474:0) -> f_286(v377:0, v378:0, 1 + v474:0, v474:0) :|: v474:0 > -1 && v380:0 > 1 && v378:0 > 1 && v377:0 > 2 && sum~cons_1~v474:0 = 1 + v474:0 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (10) IntTRSCompressionProof (EQUIVALENT) 16.88/6.85 Compressed rules. 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (11) 16.88/6.85 Obligation: 16.88/6.85 Rules: 16.88/6.85 f_286(v377:0:0, v378:0:0, v380:0:0, sum~cons_1~v474:0:0) -> f_286(v377:0:0, v378:0:0, 1 + v474:0:0, v474:0:0) :|: v378:0:0 > 1 && v377:0:0 > 2 && v380:0:0 > 1 && v474:0:0 > -1 && sum~cons_1~v474:0:0 = 1 + v474:0:0 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (12) PolynomialOrderProcessor (EQUIVALENT) 16.88/6.85 Found the following polynomial interpretation: 16.88/6.85 [f_286(x, x1, x2, x3)] = x3 16.88/6.85 16.88/6.85 The following rules are decreasing: 16.88/6.85 f_286(v377:0:0, v378:0:0, v380:0:0, sum~cons_1~v474:0:0) -> f_286(v377:0:0, v378:0:0, 1 + v474:0:0, v474:0:0) :|: v378:0:0 > 1 && v377:0:0 > 2 && v380:0:0 > 1 && v474:0:0 > -1 && sum~cons_1~v474:0:0 = 1 + v474:0:0 16.88/6.85 The following rules are bounded: 16.88/6.85 f_286(v377:0:0, v378:0:0, v380:0:0, sum~cons_1~v474:0:0) -> f_286(v377:0:0, v378:0:0, 1 + v474:0:0, v474:0:0) :|: v378:0:0 > 1 && v377:0:0 > 2 && v380:0:0 > 1 && v474:0:0 > -1 && sum~cons_1~v474:0:0 = 1 + v474:0:0 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (13) 16.88/6.85 YES 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (14) 16.88/6.85 Obligation: 16.88/6.85 SCC 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (15) SCC2IRS (SOUND) 16.88/6.85 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 16.88/6.85 Generated rules. Obtained 18 rulesP rules: 16.88/6.85 f_248(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_251(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 < v269 && 2 <= v267 && 3 <= v266 && 2 <= v265 16.88/6.85 f_251(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_255(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_255(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_258(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: TRUE 16.88/6.85 f_258(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_261(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_261(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_264(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_264(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_266(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_266(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_268(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: TRUE 16.88/6.85 f_268(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_270(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_270(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_272(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_272(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_274(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_274(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_276(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: TRUE 16.88/6.85 f_276(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) -> f_278(v262, v263, v264, v265, v266, v269, 1, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 f_278(v262, v263, v264, v265, v266, v269, 1, v270, v271, v272, 0, 3, 2, 4) -> f_280(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) :|: 1 + v372 = v269 && 0 <= v372 16.88/6.85 f_280(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) -> f_282(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) :|: TRUE 16.88/6.85 f_282(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) -> f_285(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) :|: TRUE 16.88/6.85 f_285(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) -> f_287(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) :|: TRUE 16.88/6.85 f_287(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) -> f_245(v262, v263, v264, v265, v266, v269, 1, v372, v270, v271, v272, 0, 3, 2, 4) :|: TRUE 16.88/6.85 f_245(v262, v263, v264, v265, v266, v267, 1, v269, v270, v271, v272, 0, 3, 2, 4) -> f_248(v262, v263, v264, v265, v266, v269, 1, v267, v270, v271, v272, 0, 3, 2, 4) :|: 0 = 0 16.88/6.85 Combined rules. Obtained 1 rulesP rules: 16.88/6.85 f_248(v262:0, v263:0, v264:0, v265:0, v266:0, 1 + v372:0, 1, v267:0, v270:0, v271:0, v272:0, 0, 3, 2, 4) -> f_248(v262:0, v263:0, v264:0, v265:0, v266:0, v372:0, 1, 1 + v372:0, v270:0, v271:0, v272:0, 0, 3, 2, 4) :|: v267:0 > 1 && v372:0 > -1 && v266:0 > 2 && v265:0 > 1 16.88/6.85 Filtered unneeded arguments: 16.88/6.85 f_248(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) -> f_248(x4, x5, x6, x8) 16.88/6.85 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 16.88/6.85 f_248(v265:0, v266:0, sum~cons_1~v372:0, v267:0) -> f_248(v265:0, v266:0, v372:0, 1 + v372:0) :|: v372:0 > -1 && v267:0 > 1 && v265:0 > 1 && v266:0 > 2 && sum~cons_1~v372:0 = 1 + v372:0 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (16) 16.88/6.85 Obligation: 16.88/6.85 Rules: 16.88/6.85 f_248(v265:0, v266:0, sum~cons_1~v372:0, v267:0) -> f_248(v265:0, v266:0, v372:0, 1 + v372:0) :|: v372:0 > -1 && v267:0 > 1 && v265:0 > 1 && v266:0 > 2 && sum~cons_1~v372:0 = 1 + v372:0 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (17) IRS2T2 (EQUIVALENT) 16.88/6.85 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 16.88/6.85 16.88/6.85 (f_248_4,1) 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (18) 16.88/6.85 Obligation: 16.88/6.85 START: 0; 16.88/6.85 16.88/6.85 FROM: 0; 16.88/6.85 TO: 1; 16.88/6.85 16.88/6.85 FROM: 1; 16.88/6.85 oldX0 := x0; 16.88/6.85 oldX1 := x1; 16.88/6.85 oldX2 := x2; 16.88/6.85 oldX3 := x3; 16.88/6.85 oldX4 := oldX2 - 1; 16.88/6.85 assume(oldX4 > -1 && oldX3 > 1 && oldX0 > 1 && oldX1 > 2 && oldX2 = 1 + oldX4); 16.88/6.85 x0 := oldX0; 16.88/6.85 x1 := oldX1; 16.88/6.85 x2 := oldX2 - 1; 16.88/6.85 x3 := 1 + oldX4; 16.88/6.85 TO: 1; 16.88/6.85 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (19) T2 (EQUIVALENT) 16.88/6.85 Initially, performed program simplifications using lexicographic rank functions: 16.88/6.85 * Removed transitions 1, 3, 4 using the following rank functions: 16.88/6.85 - Rank function 1: 16.88/6.85 RF for loc. 5: 1+2*x2 16.88/6.85 RF for loc. 6: 2*x2 16.88/6.85 Bound for (chained) transitions 3: 2 16.88/6.85 Bound for (chained) transitions 4: 2 16.88/6.85 - Rank function 2: 16.88/6.85 RF for loc. 5: 0 16.88/6.85 RF for loc. 6: -1 16.88/6.85 Bound for (chained) transitions 1: 0 16.88/6.85 16.88/6.85 ---------------------------------------- 16.88/6.85 16.88/6.85 (20) 16.88/6.85 YES 16.91/7.89 EOF