44.99/14.82 YES 45.16/14.83 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 45.16/14.83 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 45.16/14.83 45.16/14.83 45.16/14.83 Termination of the given C Problem could be proven: 45.16/14.83 45.16/14.83 (0) C Problem 45.16/14.83 (1) CToLLVMProof [EQUIVALENT, 176 ms] 45.16/14.83 (2) LLVM problem 45.16/14.83 (3) LLVMToTerminationGraphProof [EQUIVALENT, 4895 ms] 45.16/14.83 (4) LLVM Symbolic Execution Graph 45.16/14.83 (5) SymbolicExecutionGraphToLassoProof [EQUIVALENT, 0 ms] 45.16/14.83 (6) LLVM Symbolic Execution Lasso 45.16/14.83 (7) Lasso2IRS [SOUND, 92 ms] 45.16/14.83 (8) IntTRS 45.16/14.83 (9) IRS2T2 [EQUIVALENT, 0 ms] 45.16/14.83 (10) T2IntSys 45.16/14.83 (11) T2 [EQUIVALENT, 7446 ms] 45.16/14.83 (12) YES 45.16/14.83 45.16/14.83 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (0) 45.16/14.83 Obligation: 45.16/14.83 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (1) CToLLVMProof (EQUIVALENT) 45.16/14.83 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (2) 45.16/14.83 Obligation: 45.16/14.83 LLVM Problem 45.16/14.83 45.16/14.83 Aliases: 45.16/14.83 45.16/14.83 Data layout: 45.16/14.83 45.16/14.83 "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" 45.16/14.83 45.16/14.83 Machine: 45.16/14.83 45.16/14.83 "x86_64-pc-linux-gnu" 45.16/14.83 45.16/14.83 Type definitions: 45.16/14.83 45.16/14.83 Global variables: 45.16/14.83 45.16/14.83 Function declarations and definitions: 45.16/14.83 45.16/14.83 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 45.16/14.83 *BasicFunctionTypename: "p" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (m i32, n i32, r i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 45.16/14.83 0: 45.16/14.83 %1 = alloca i32, align 4 45.16/14.83 %2 = alloca i32, align 4 45.16/14.83 %3 = alloca i32, align 4 45.16/14.83 %4 = alloca i32, align 4 45.16/14.83 store %m, %2 45.16/14.83 store %n, %3 45.16/14.83 store %r, %4 45.16/14.83 %5 = load %4 45.16/14.83 %6 = icmp sgt %5 0 45.16/14.83 br %6, %7, %13 45.16/14.83 7: 45.16/14.83 %8 = load %2 45.16/14.83 %9 = load %4 45.16/14.83 %10 = sub %9 1 45.16/14.83 %11 = load %3 45.16/14.83 %12 = call i32 @p(i32 %8, i32 %10, i32 %11) 45.16/14.83 store %12, %1 45.16/14.83 br %24 45.16/14.83 13: 45.16/14.83 %14 = load %3 45.16/14.83 %15 = icmp sgt %14 0 45.16/14.83 br %15, %16, %22 45.16/14.83 16: 45.16/14.83 %17 = load %4 45.16/14.83 %18 = load %3 45.16/14.83 %19 = sub %18 1 45.16/14.83 %20 = load %2 45.16/14.83 %21 = call i32 @p(i32 %17, i32 %19, i32 %20) 45.16/14.83 store %21, %1 45.16/14.83 br %24 45.16/14.83 22: 45.16/14.83 %23 = load %2 45.16/14.83 store %23, %1 45.16/14.83 br %24 45.16/14.83 24: 45.16/14.83 %25 = load %1 45.16/14.83 ret %25 45.16/14.83 45.16/14.83 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 45.16/14.83 0: 45.16/14.83 %1 = alloca i32, align 4 45.16/14.83 %m = alloca i32, align 4 45.16/14.83 %n = alloca i32, align 4 45.16/14.83 %r = alloca i32, align 4 45.16/14.83 store 0, %1 45.16/14.83 %2 = call i32 @__VERIFIER_nondet_int() 45.16/14.83 store %2, %m 45.16/14.83 %3 = call i32 @__VERIFIER_nondet_int() 45.16/14.83 store %3, %n 45.16/14.83 %4 = call i32 @__VERIFIER_nondet_int() 45.16/14.83 store %4, %r 45.16/14.83 %5 = load %m 45.16/14.83 %6 = icmp sge %5 0 45.16/14.83 br %6, %7, %18 45.16/14.83 7: 45.16/14.83 %8 = load %n 45.16/14.83 %9 = icmp sge %8 0 45.16/14.83 br %9, %10, %18 45.16/14.83 10: 45.16/14.83 %11 = load %r 45.16/14.83 %12 = icmp sge %11 0 45.16/14.83 br %12, %13, %18 45.16/14.83 13: 45.16/14.83 %14 = load %m 45.16/14.83 %15 = load %n 45.16/14.83 %16 = load %r 45.16/14.83 %17 = call i32 @p(i32 %14, i32 %15, i32 %16) 45.16/14.83 br %18 45.16/14.83 18: 45.16/14.83 ret 0 45.16/14.83 45.16/14.83 45.16/14.83 Analyze Termination of all function calls matching the pattern: 45.16/14.83 main() 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (3) LLVMToTerminationGraphProof (EQUIVALENT) 45.16/14.83 Constructed symbolic execution graph for LLVM program and proved memory safety. 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (4) 45.16/14.83 Obligation: 45.16/14.83 SE Graph 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (5) SymbolicExecutionGraphToLassoProof (EQUIVALENT) 45.16/14.83 Converted SEGraph to 1 independent lasso. 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (6) 45.16/14.83 Obligation: 45.16/14.83 Lasso 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (7) Lasso2IRS (SOUND) 45.16/14.83 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 45.16/14.83 Generated rules. Obtained 62 rulesP rules: 45.16/14.83 f_294(v114, v115, v116, v141, v117, v118, v119, v120, v121, v122, v123, v124, v142, 0, v126, v127, v128, 3, 1, 4) -> f_295(v114, v115, v116, v141, v143, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, 0, v126, v127, v128, 3, 1, 4) :|: 1 <= v143 && v144 = 3 + v143 && 4 <= v144 45.16/14.83 f_295(v114, v115, v116, v141, v143, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, 0, v126, v127, v128, 3, 1, 4) -> f_296(v114, v115, v116, v141, v143, v145, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, 0, v126, v127, v128, 3, 1, 4) :|: 1 <= v145 && v146 = 3 + v145 && 4 <= v146 45.16/14.83 f_296(v114, v115, v116, v141, v143, v145, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, 0, v126, v127, v128, 3, 1, 4) -> f_297(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) :|: 1 <= v147 && v148 = 3 + v147 && 4 <= v148 45.16/14.83 f_297(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) -> f_298(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) :|: TRUE 45.16/14.83 f_298(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) -> f_299(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) :|: TRUE 45.16/14.83 f_299(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) -> f_300(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) :|: TRUE 45.16/14.83 f_300(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) -> f_301(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) :|: 0 = 0 45.16/14.83 f_301(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) -> f_302(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) :|: 0 < v116 45.16/14.83 f_301(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) -> f_303(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) :|: v116 <= 0 45.16/14.83 f_302(v114, v115, v116, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 1, 4) -> f_304(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_304(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) -> f_306(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) :|: TRUE 45.16/14.83 f_306(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) -> f_308(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_308(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) -> f_310(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_310(v114, v115, v116, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) -> f_313(v114, v115, v116, v141, v143, v145, v147, 1, v152, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) :|: 1 + v152 = v116 && 0 <= v152 45.16/14.83 f_313(v114, v115, v116, v141, v143, v145, v147, 1, v152, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) -> f_316(v114, v115, v116, v141, v143, v145, v147, 1, v152, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_316(v114, v115, v116, v141, v143, v145, v147, 1, v152, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, 0, v126, v127, v128, 3, 4) -> f_319(v114, v152, v115, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, 0, v126, v127, v128, v116, 1, 3, 4) :|: 0 = 0 45.16/14.83 f_319(v114, v152, v115, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, 0, v126, v127, v128, v116, 1, 3, 4) -> f_322(v114, v152, v115, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, 0, v126, v127, v128, v116, 3, 1, 4) :|: TRUE 45.16/14.83 f_322(v114, v152, v115, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, 0, v126, v127, v128, v116, 3, 1, 4) -> f_291(v114, v152, v115, v117, v118, v119, v120, v121, v122, v123, v124, 0, v126, v127, v128, 3, 1, 4) :|: TRUE 45.16/14.83 f_291(v114, v115, v116, v117, v118, v119, v120, v121, v122, v123, v124, 0, v126, v127, v128, 3, 1, 4) -> f_294(v114, v115, v116, v141, v117, v118, v119, v120, v121, v122, v123, v124, v142, 0, v126, v127, v128, 3, 1, 4) :|: 1 <= v141 && v142 = 3 + v141 && 4 <= v142 45.16/14.83 f_303(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) -> f_305(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) :|: 0 = 0 45.16/14.83 f_305(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) -> f_307(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) :|: TRUE 45.16/14.83 f_307(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) -> f_309(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) :|: 0 = 0 45.16/14.83 f_309(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) -> f_311(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) :|: 0 < v115 45.16/14.83 f_311(v114, v115, 0, v141, v143, v145, v147, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 1, 4) -> f_314(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_314(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) -> f_317(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) :|: TRUE 45.16/14.83 f_317(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) -> f_320(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_320(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) -> f_323(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_323(v114, v115, 0, v141, v143, v145, v147, 1, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) -> f_325(v114, v115, 0, v141, v143, v145, v147, 1, v169, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) :|: 1 + v169 = v115 && 0 <= v169 45.16/14.83 f_325(v114, v115, 0, v141, v143, v145, v147, 1, v169, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) -> f_327(v114, v115, 0, v141, v143, v145, v147, 1, v169, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) :|: 0 = 0 45.16/14.83 f_327(v114, v115, 0, v141, v143, v145, v147, 1, v169, v117, v118, v119, v120, v121, v122, v123, v124, v142, v144, v146, v148, v126, v127, v128, 3, 4) -> f_329(0, v169, v114, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, v126, v127, v128, v115, 1, 3, 4) :|: 0 = 0 45.16/14.83 f_329(0, v169, v114, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, v126, v127, v128, v115, 1, 3, 4) -> f_332(0, v169, v114, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, v126, v127, v128, v115, 3, 1, 4) :|: TRUE 45.16/14.83 f_332(0, v169, v114, v117, v118, v119, v120, v121, v122, v123, v124, v141, v142, v143, v144, v145, v146, v147, v148, v126, v127, v128, v115, 3, 1, 4) -> f_291(0, v169, v114, v117, v118, v119, v120, v121, v122, v123, v124, 0, v126, v127, v128, 3, 1, 4) :|: TRUE 45.16/14.83 f_178 -> f_179(v1, v2, 3, 1, 4) :|: 1 <= v1 && v2 = 3 + v1 && 4 <= v2 45.16/14.83 f_179(v1, v2, 3, 1, 4) -> f_180(v1, v3, v2, v4, 3, 1, 4) :|: 1 <= v3 && v4 = 3 + v3 && 4 <= v4 45.16/14.83 f_180(v1, v3, v2, v4, 3, 1, 4) -> f_181(v1, v3, v5, v2, v4, v6, 3, 1, 4) :|: 1 <= v5 && v6 = 3 + v5 && 4 <= v6 45.16/14.83 f_181(v1, v3, v5, v2, v4, v6, 3, 1, 4) -> f_182(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) :|: 1 <= v7 && v8 = 3 + v7 && 4 <= v8 45.16/14.83 f_182(v1, v3, v5, v7, v2, v4, v6, v8, 3, 1, 4) -> f_183(v1, v3, v5, v7, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_183(v1, v3, v5, v7, v2, v4, v6, v8, 0, 3, 1, 4) -> f_184(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_184(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_185(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_185(v1, v3, v5, v7, v9, v2, v4, v6, v8, 0, 3, 1, 4) -> f_186(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_186(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_187(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_187(v1, v3, v5, v7, v9, v11, v2, v4, v6, v8, 0, 3, 1, 4) -> f_188(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_188(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) -> f_189(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_189(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) -> f_190(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) :|: 0 = 0 45.16/14.83 f_190(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) -> f_191(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) :|: 0 <= v9 45.16/14.83 f_191(v1, v3, v5, v7, v9, v11, v13, v2, v4, v6, v8, 0, 3, 1, 4) -> f_193(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_193(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_195(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: TRUE 45.16/14.83 f_195(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_197(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_197(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_198(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 <= v11 45.16/14.83 f_198(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_200(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_200(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_202(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: TRUE 45.16/14.83 f_202(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_204(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_204(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_205(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 <= v13 45.16/14.83 f_205(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_207(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_207(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_209(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: TRUE 45.16/14.83 f_209(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_211(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_211(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_212(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_212(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_213(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) :|: 0 = 0 45.16/14.83 f_213(v1, v3, v5, v7, v9, v11, v13, 1, v2, v4, v6, v8, 0, 3, 4) -> f_214(v9, v11, v13, v1, v2, v3, v4, v5, v6, v7, v8, 0, 1, 3, 4) :|: 0 = 0 45.16/14.83 f_214(v9, v11, v13, v1, v2, v3, v4, v5, v6, v7, v8, 0, 1, 3, 4) -> f_215(v9, v11, v13, v1, v2, v3, v4, v5, v6, v7, v8, 0, 3, 1, 4) :|: TRUE 45.16/14.83 f_215(v9, v11, v13, v1, v2, v3, v4, v5, v6, v7, v8, 0, 3, 1, 4) -> f_247(v9, v11, v13, v1, v2, v3, v4, v5, v6, v7, v8, 0, v11, v13, 3, 1, 4) :|: TRUE 45.16/14.83 f_247(v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, 0, v45, v46, 3, 1, 4) -> f_291(v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, 0, v33, v45, v46, 3, 1, 4) :|: TRUE 45.16/14.83 Combined rules. Obtained 3 rulesP rules: 45.16/14.83 f_294(v114:0, v115:0, 1 + v152:0, v141:0, v117:0, v118:0, v119:0, v120:0, v121:0, v122:0, v123:0, v124:0, v142:0, 0, v126:0, v127:0, v128:0, 3, 1, 4) -> f_294(v114:0, v152:0, v115:0, v141:1, v117:0, v118:0, v119:0, v120:0, v121:0, v122:0, v123:0, v124:0, 3 + v141:1, 0, v126:0, v127:0, v128:0, 3, 1, 4) :|: v145:0 > 0 && v143:0 > 0 && v147:0 > 0 && v152:0 > -1 && v141:1 > 0 45.16/14.83 f_294(v114:0, 1 + v169:0, v116:0, v141:0, v117:0, v118:0, v119:0, v120:0, v121:0, v122:0, v123:0, v124:0, v142:0, 0, v126:0, v127:0, v128:0, 3, 1, 4) -> f_294(0, v169:0, v114:0, v141:1, v117:0, v118:0, v119:0, v120:0, v121:0, v122:0, v123:0, v124:0, 3 + v141:1, 0, v126:0, v127:0, v128:0, 3, 1, 4) :|: v145:0 > 0 && v143:0 > 0 && v147:0 > 0 && v116:0 < 1 && v169:0 > -1 && v141:1 > 0 45.16/14.83 f_178 -> f_294(v9:0, v11:0, v13:0, v141:0, v1:0, 3 + v1:0, v3:0, 3 + v3:0, v5:0, 3 + v5:0, v7:0, 3 + v7:0, 3 + v141:0, 0, v9:0, v11:0, v13:0, 3, 1, 4) :|: v3:0 > 0 && v1:0 > 0 && v5:0 > 0 && v7:0 > 0 && v9:0 > -1 && v11:0 > -1 && v13:0 > -1 && v141:0 > 0 45.16/14.83 Filtered unneeded arguments: 45.16/14.83 f_294(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) -> f_294(x1, x2, x3) 45.16/14.83 Removed division, modulo operations, cleaned up constraints. Obtained 3 rules.P rules: 45.16/14.83 f_294(v114:0, v115:0, sum~cons_1~v152:0) -> f_294(v114:0, v152:0, v115:0) :|: v152:0 > -1 && sum~cons_1~v152:0 = 1 + v152:0 45.16/14.83 f_294(v114:0, sum~cons_1~v169:0, v116:0) -> f_294(0, v169:0, v114:0) :|: v116:0 < 1 && v169:0 > -1 && sum~cons_1~v169:0 = 1 + v169:0 45.16/14.83 f_178 -> f_294(v9:0, v11:0, v13:0) :|: v11:0 > -1 && v13:0 > -1 && v9:0 > -1 45.16/14.83 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (8) 45.16/14.83 Obligation: 45.16/14.83 Rules: 45.16/14.83 f_294(v114:0, v115:0, sum~cons_1~v152:0) -> f_294(v114:0, v152:0, v115:0) :|: v152:0 > -1 && sum~cons_1~v152:0 = 1 + v152:0 45.16/14.83 f_294(x, x1, x2) -> f_294(0, x3, x) :|: x2 < 1 && x3 > -1 && x1 = 1 + x3 45.16/14.83 f_178 -> f_294(v9:0, v11:0, v13:0) :|: v11:0 > -1 && v13:0 > -1 && v9:0 > -1 45.16/14.83 Start term: f_178 45.16/14.83 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (9) IRS2T2 (EQUIVALENT) 45.16/14.83 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 45.16/14.83 45.16/14.83 (f_294_3,1) 45.16/14.83 (f_178_3,2) 45.16/14.83 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (10) 45.16/14.83 Obligation: 45.16/14.83 START: 2; 45.16/14.83 45.16/14.83 FROM: 1; 45.16/14.83 oldX0 := x0; 45.16/14.83 oldX1 := x1; 45.16/14.83 oldX2 := x2; 45.16/14.83 oldX3 := oldX2 - 1; 45.16/14.83 assume(oldX3 > -1 && oldX2 = 1 + oldX3); 45.16/14.83 x0 := oldX0; 45.16/14.83 x1 := oldX2 - 1; 45.16/14.83 x2 := oldX1; 45.16/14.83 TO: 1; 45.16/14.83 45.16/14.83 FROM: 1; 45.16/14.83 oldX0 := x0; 45.16/14.83 oldX1 := x1; 45.16/14.83 oldX2 := x2; 45.16/14.83 oldX3 := oldX1 - 1; 45.16/14.83 assume(oldX2 < 1 && oldX3 > -1 && oldX1 = 1 + oldX3); 45.16/14.83 x0 := 0; 45.16/14.83 x1 := oldX1 - 1; 45.16/14.83 x2 := oldX0; 45.16/14.83 TO: 1; 45.16/14.83 45.16/14.83 FROM: 2; 45.16/14.83 oldX0 := x0; 45.16/14.83 oldX1 := x1; 45.16/14.83 oldX2 := x2; 45.16/14.83 oldX3 := nondet(); 45.16/14.83 oldX4 := nondet(); 45.16/14.83 oldX5 := nondet(); 45.16/14.83 assume(oldX4 > -1 && oldX5 > -1 && oldX3 > -1); 45.16/14.83 x0 := oldX3; 45.16/14.83 x1 := oldX4; 45.16/14.83 x2 := oldX5; 45.16/14.83 TO: 1; 45.16/14.83 45.16/14.83 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (11) T2 (EQUIVALENT) 45.16/14.83 Used the following cutpoint-specific lexicographic rank functions: 45.16/14.83 * For cutpoint 5, used the following rank functions/bounds (in descending priority order): 45.16/14.83 - RF x1, bound 1 45.16/14.83 45.16/14.83 ---------------------------------------- 45.16/14.83 45.16/14.83 (12) 45.16/14.83 YES 45.21/14.87 EOF