29.51/8.39 YES 29.51/8.40 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 29.51/8.40 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 29.51/8.40 29.51/8.40 29.51/8.40 Termination of the given C Problem could be proven: 29.51/8.40 29.51/8.40 (0) C Problem 29.51/8.40 (1) CToLLVMProof [EQUIVALENT, 162 ms] 29.51/8.40 (2) LLVM problem 29.51/8.40 (3) LLVMToTerminationGraphProof [EQUIVALENT, 1606 ms] 29.51/8.40 (4) LLVM Symbolic Execution Graph 29.51/8.40 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 29.51/8.40 (6) AND 29.51/8.40 (7) LLVM Symbolic Execution SCC 29.51/8.40 (8) SCC2IRS [SOUND, 45 ms] 29.51/8.40 (9) IntTRS 29.51/8.40 (10) IRS2T2 [EQUIVALENT, 0 ms] 29.51/8.40 (11) T2IntSys 29.51/8.40 (12) T2 [EQUIVALENT, 754 ms] 29.51/8.40 (13) YES 29.51/8.40 (14) LLVM Symbolic Execution SCC 29.51/8.40 (15) SCC2IRS [SOUND, 0 ms] 29.51/8.40 (16) IntTRS 29.51/8.40 (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] 29.51/8.40 (18) IntTRS 29.51/8.40 (19) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 29.51/8.40 (20) YES 29.51/8.40 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (0) 29.51/8.40 Obligation: 29.51/8.40 c file /export/starexec/sandbox/benchmark/theBenchmark.c 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (1) CToLLVMProof (EQUIVALENT) 29.51/8.40 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (2) 29.51/8.40 Obligation: 29.51/8.40 LLVM Problem 29.51/8.40 29.51/8.40 Aliases: 29.51/8.40 29.51/8.40 Data layout: 29.51/8.40 29.51/8.40 "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" 29.51/8.40 29.51/8.40 Machine: 29.51/8.40 29.51/8.40 "x86_64-pc-linux-gnu" 29.51/8.40 29.51/8.40 Type definitions: 29.51/8.40 29.51/8.40 Global variables: 29.51/8.40 29.51/8.40 Function declarations and definitions: 29.51/8.40 29.51/8.40 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 29.51/8.40 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 29.51/8.40 0: 29.51/8.40 %1 = alloca i32, align 4 29.51/8.40 %x = alloca i32, align 4 29.51/8.40 %y = alloca i32, align 4 29.51/8.40 %oldx = alloca i32, align 4 29.51/8.40 store 0, %1 29.51/8.40 %2 = call i32 @__VERIFIER_nondet_int() 29.51/8.40 store %2, %x 29.51/8.40 %3 = call i32 @__VERIFIER_nondet_int() 29.51/8.40 store %3, %y 29.51/8.40 br %4 29.51/8.40 4: 29.51/8.40 %5 = load %x 29.51/8.40 %6 = icmp sge %5 0 29.51/8.40 br %6, %10, %7 29.51/8.40 7: 29.51/8.40 %8 = load %y 29.51/8.40 %9 = icmp sge %8 0 29.51/8.40 br %10 29.51/8.40 10: 29.51/8.40 %11 = phi [1, %4], [%9, %7] 29.51/8.40 br %11, %12, %18 29.51/8.40 12: 29.51/8.40 %13 = load %x 29.51/8.40 store %13, %oldx 29.51/8.40 %14 = load %y 29.51/8.40 %15 = sub %14 1 29.51/8.40 store %15, %x 29.51/8.40 %16 = load %oldx 29.51/8.40 %17 = sub %16 1 29.51/8.40 store %17, %y 29.51/8.40 br %4 29.51/8.40 18: 29.51/8.40 ret 0 29.51/8.40 29.51/8.40 29.51/8.40 Analyze Termination of all function calls matching the pattern: 29.51/8.40 main() 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (3) LLVMToTerminationGraphProof (EQUIVALENT) 29.51/8.40 Constructed symbolic execution graph for LLVM program and proved memory safety. 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (4) 29.51/8.40 Obligation: 29.51/8.40 SE Graph 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (5) SymbolicExecutionGraphToSCCProof (SOUND) 29.51/8.40 Splitted symbolic execution graph to 2 SCCs. 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (6) 29.51/8.40 Complex Obligation (AND) 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (7) 29.51/8.40 Obligation: 29.51/8.40 SCC 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (8) SCC2IRS (SOUND) 29.51/8.40 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.51/8.40 Generated rules. Obtained 33 rulesP rules: 29.51/8.40 f_224(v405, v406, v407, v408, v409, v410, v411, 0, 1, v414, v415, v416, v417, v418, v419, v420, 3, 4) -> f_227(v405, v406, v407, v408, v409, v410, v411, 0, 1, v415, v414, v416, v417, v418, v419, v420, 3, 4) :|: 0 = 0 29.51/8.40 f_227(v405, v406, v407, v408, v409, v410, v411, 0, 1, v415, v414, v416, v417, v418, v419, v420, 3, 4) -> f_229(v405, v406, v407, v408, v409, v410, v411, 0, 1, v415, v414, v416, v417, v418, v419, v420, 3, 4) :|: TRUE 29.51/8.40 f_229(v405, v406, v407, v408, v409, v410, v411, 0, 1, v415, v414, v416, v417, v418, v419, v420, 3, 4) -> f_230(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v414, v417, v418, v419, v420, 3, 4) :|: 0 = 0 29.51/8.40 f_230(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v414, v417, v418, v419, v420, 3, 4) -> f_231(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v414, v417, v418, v419, v420, 3, 4) :|: 1 + v556 = v416 && 0 <= 1 + v556 29.51/8.40 f_231(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v414, v417, v418, v419, v420, 3, 4) -> f_232(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v414, v417, v418, v419, v420, 3, 4) :|: TRUE 29.51/8.40 f_232(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v414, v417, v418, v419, v420, 3, 4) -> f_233(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v417, v418, v419, v420, 3, 4) :|: 0 = 0 29.51/8.40 f_233(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v417, v418, v419, v420, 3, 4) -> f_234(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v558, v417, v418, v419, v420, 3, 4, 2) :|: 1 + v558 = v411 && 2 + v558 <= 0 29.51/8.40 f_234(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v558, v417, v418, v419, v420, 3, 4, 2) -> f_235(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v558, v417, v418, v419, v420, 3, 4, 2) :|: TRUE 29.51/8.40 f_235(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v558, v417, v418, v419, v420, 3, 4, 2) -> f_236(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v558, v417, v418, v419, v420, 3, 4, 2) :|: TRUE 29.51/8.40 f_236(v405, v406, v407, v408, v409, v410, v411, 0, 1, v416, v556, v558, v417, v418, v419, v420, 3, 4, 2) -> f_237(v405, v406, v407, v408, v409, v410, v411, 0, v416, 1, v556, v558, v417, v418, v419, v420, 3, 2, 4) :|: TRUE 29.51/8.40 f_237(v560, v561, v562, v563, v564, v565, v566, 0, v568, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) -> f_238(v560, v561, v562, v563, v564, v565, v570, 0, v568, 1, v566, v571, v572, v573, v574, v575, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_238(v560, v561, v562, v563, v564, v565, v570, 0, v568, 1, v566, v571, v572, v573, v574, v575, 3, 2, 4) -> f_239(v560, v561, v562, v563, v564, v565, v570, 0, v568, 1, v566, v571, v572, v573, v574, v575, 3, 2, 4) :|: 0 <= v570 && 1 <= v568 29.51/8.40 f_239(v560, v561, v562, v563, v564, v565, v570, 0, v568, 1, v566, v571, v572, v573, v574, v575, 3, 2, 4) -> f_241(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_241(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) -> f_243(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_243(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) -> f_245(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) :|: TRUE 29.51/8.40 f_245(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) -> f_247(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_247(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) -> f_249(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) :|: TRUE 29.51/8.40 f_249(v560, v561, v562, v563, v564, v565, v570, 1, v568, v566, v571, v572, v573, v574, v575, 0, 3, 2, 4) -> f_252(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v566, v572, v573, v574, v575, 0, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_252(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v566, v572, v573, v574, v575, 0, 3, 2, 4) -> f_254(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v566, v572, v573, v574, v575, 0, 3, 2, 4) :|: 1 + v714 = v571 && 3 + v714 <= 0 29.51/8.40 f_254(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v566, v572, v573, v574, v575, 0, 3, 2, 4) -> f_255(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v566, v572, v573, v574, v575, 0, 3, 2, 4) :|: TRUE 29.51/8.40 f_255(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v566, v572, v573, v574, v575, 0, 3, 2, 4) -> f_256(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v572, v573, v574, v575, 0, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_256(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v572, v573, v574, v575, 0, 3, 2, 4) -> f_257(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v716, v572, v573, v574, v575, 0, 3, 2, 4) :|: 1 + v716 = v570 && 0 <= 1 + v716 29.51/8.40 f_257(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v716, v572, v573, v574, v575, 0, 3, 2, 4) -> f_258(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v716, v572, v573, v574, v575, 0, 3, 2, 4) :|: TRUE 29.51/8.40 f_258(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v716, v572, v573, v574, v575, 0, 3, 2, 4) -> f_259(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v716, v572, v573, v574, v575, 0, 3, 2, 4) :|: TRUE 29.51/8.40 f_259(v560, v561, v562, v563, v564, v565, v570, 1, v568, v571, v714, v716, v572, v573, v574, v575, 0, 3, 2, 4) -> f_260(v560, v561, v562, v563, v564, v565, v714, 1, v568, v570, v571, v716, v572, v573, v574, v575, 0, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_260(v560, v561, v562, v563, v564, v565, v714, 1, v568, v570, v571, v716, v572, v573, v574, v575, 0, 3, 2, 4) -> f_261(v560, v561, v562, v563, v564, v565, v714, 0, v568, 1, v570, v571, v716, v572, v573, v574, v575, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_261(v560, v561, v562, v563, v564, v565, v714, 0, v568, 1, v570, v571, v716, v572, v573, v574, v575, 3, 2, 4) -> f_262(v560, v561, v562, v563, v564, v565, v714, 0, v568, 1, v570, v571, v716, v572, v573, v574, v575, 3, 2, 4) :|: TRUE 29.51/8.40 f_262(v560, v561, v562, v563, v564, v565, v714, 0, v568, 1, v570, v571, v716, v572, v573, v574, v575, 3, 2, 4) -> f_263(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_263(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) -> f_264(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) :|: 0 <= v716 && 1 <= v570 29.51/8.40 f_264(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) -> f_266(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_266(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) -> f_268(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) :|: 0 = 0 29.51/8.40 f_268(v560, v561, v562, v563, v564, v565, v714, 0, v716, 1, v570, v571, v572, v573, v574, v575, 3, 2, 4) -> f_220(v560, v561, v562, v563, v564, v565, v714, 0, 1, v570, v571, v716, v572, v573, v574, v575, 3, 4) :|: TRUE 29.51/8.40 f_220(v405, v406, v407, v408, v409, v410, v411, 0, 1, v414, v415, v416, v417, v418, v419, v420, 3, 4) -> f_224(v405, v406, v407, v408, v409, v410, v411, 0, 1, v414, v415, v416, v417, v418, v419, v420, 3, 4) :|: TRUE 29.51/8.40 Combined rules. Obtained 1 rulesP rules: 29.51/8.40 f_224(v405:0, v406:0, v407:0, v408:0, v409:0, v410:0, 1 + (1 + v714:0), 0, 1, v414:0, v415:0, 1 + (1 + v716:0), v417:0, v418:0, v419:0, v420:0, 3, 4) -> f_224(v405:0, v406:0, v407:0, v408:0, v409:0, v410:0, v714:0, 0, 1, 1 + v716:0, 1 + v714:0, v716:0, v417:0, v418:0, v419:0, v420:0, 3, 4) :|: v716:0 > -1 && v714:0 < -2 29.51/8.40 Filtered unneeded arguments: 29.51/8.40 f_224(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) -> f_224(x7, x12) 29.51/8.40 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 29.51/8.40 f_224(sum~cons_1~sum~cons_1~v714:0, sum~cons_1~sum~cons_1~v716:0) -> f_224(v714:0, v716:0) :|: v716:0 > -1 && v714:0 < -2 && sum~cons_1~sum~cons_1~v714:0 = 1 + (1 + v714:0) && sum~cons_1~sum~cons_1~v716:0 = 1 + (1 + v716:0) 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (9) 29.51/8.40 Obligation: 29.51/8.40 Rules: 29.51/8.40 f_224(sum~cons_1~sum~cons_1~v714:0, sum~cons_1~sum~cons_1~v716:0) -> f_224(v714:0, v716:0) :|: v716:0 > -1 && v714:0 < -2 && sum~cons_1~sum~cons_1~v714:0 = 1 + (1 + v714:0) && sum~cons_1~sum~cons_1~v716:0 = 1 + (1 + v716:0) 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (10) IRS2T2 (EQUIVALENT) 29.51/8.40 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 29.51/8.40 29.51/8.40 (f_224_2,1) 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (11) 29.51/8.40 Obligation: 29.51/8.40 START: 0; 29.51/8.40 29.51/8.40 FROM: 0; 29.51/8.40 TO: 1; 29.51/8.40 29.51/8.40 FROM: 1; 29.51/8.40 oldX0 := x0; 29.51/8.40 oldX1 := x1; 29.51/8.40 oldX2 := oldX0 - 2; 29.51/8.40 oldX3 := oldX1 - 2; 29.51/8.40 assume(oldX3 > -1 && oldX2 < -2 && oldX0 = 1 + (1 + oldX2) && oldX1 = 1 + (1 + oldX3)); 29.51/8.40 x0 := oldX0 - 2; 29.51/8.40 x1 := oldX1 - 2; 29.51/8.40 TO: 1; 29.51/8.40 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (12) T2 (EQUIVALENT) 29.51/8.40 Initially, performed program simplifications using lexicographic rank functions: 29.51/8.40 * Removed transitions 1, 3, 4 using the following rank functions: 29.51/8.40 - Rank function 1: 29.51/8.40 RF for loc. 5: 1+x1 29.51/8.40 RF for loc. 6: x1 29.51/8.40 Bound for (chained) transitions 3: 2 29.51/8.40 Bound for (chained) transitions 4: 2 29.51/8.40 - Rank function 2: 29.51/8.40 RF for loc. 5: 0 29.51/8.40 RF for loc. 6: -1 29.51/8.40 Bound for (chained) transitions 1: 0 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (13) 29.51/8.40 YES 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (14) 29.51/8.40 Obligation: 29.51/8.40 SCC 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (15) SCC2IRS (SOUND) 29.51/8.40 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 29.51/8.40 Generated rules. Obtained 15 rulesP rules: 29.51/8.40 f_182(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) -> f_184(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) :|: 0 <= v218 && 1 <= v217 29.51/8.40 f_184(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) -> f_187(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) :|: 0 = 0 29.51/8.40 f_187(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) -> f_190(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) :|: 0 = 0 29.51/8.40 f_190(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) -> f_193(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) :|: TRUE 29.51/8.40 f_193(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) -> f_196(v209, v210, v211, v212, v213, v214, v218, 1, v217, v215, v219, v220, v221, v222, v223, 0, 3, 4) :|: 0 = 0 29.51/8.40 f_196(v209, v210, v211, v212, v213, v214, v218, 1, v217, v215, v219, v220, v221, v222, v223, 0, 3, 4) -> f_200(v209, v210, v211, v212, v213, v214, v218, 1, v217, v215, v219, v220, v221, v222, v223, 0, 3, 4) :|: TRUE 29.51/8.40 f_200(v209, v210, v211, v212, v213, v214, v218, 1, v217, v215, v219, v220, v221, v222, v223, 0, 3, 4) -> f_204(v209, v210, v211, v212, v213, v214, v218, 1, v219, v215, v220, v221, v222, v223, 0, 3, 4) :|: 0 = 0 29.51/8.40 f_204(v209, v210, v211, v212, v213, v214, v218, 1, v219, v215, v220, v221, v222, v223, 0, 3, 4) -> f_208(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v215, v220, v221, v222, v223, 0, 3, 4, 2) :|: 1 + v343 = v219 && 0 <= 2 + v343 29.51/8.40 f_208(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v215, v220, v221, v222, v223, 0, 3, 4, 2) -> f_213(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v215, v220, v221, v222, v223, 0, 3, 4, 2) :|: TRUE 29.51/8.40 f_213(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v215, v220, v221, v222, v223, 0, 3, 4, 2) -> f_217(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v220, v221, v222, v223, 0, 3, 4, 2) :|: 0 = 0 29.51/8.40 f_217(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v220, v221, v222, v223, 0, 3, 4, 2) -> f_223(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v498, v220, v221, v222, v223, 0, 3, 4, 2) :|: 1 + v498 = v218 && 0 <= 1 + v498 29.51/8.40 f_223(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v498, v220, v221, v222, v223, 0, 3, 4, 2) -> f_226(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v498, v220, v221, v222, v223, 0, 3, 4, 2) :|: TRUE 29.51/8.40 f_226(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v498, v220, v221, v222, v223, 0, 3, 4, 2) -> f_228(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v498, v220, v221, v222, v223, 0, 3, 4, 2) :|: TRUE 29.51/8.40 f_228(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v498, v220, v221, v222, v223, 0, 3, 4, 2) -> f_180(v209, v210, v211, v212, v213, v214, v218, 1, v219, v343, v498, v220, v221, v222, v223, 0, 3, 4) :|: TRUE 29.51/8.40 f_180(v209, v210, v211, v212, v213, v214, v215, 1, v217, v218, v219, v220, v221, v222, v223, 0, 3, 4) -> f_182(v209, v210, v211, v212, v213, v214, v218, 1, v215, v217, v219, v220, v221, v222, v223, 0, 3, 4) :|: 0 = 0 29.51/8.40 Combined rules. Obtained 1 rulesP rules: 29.51/8.40 f_182(v209:0, v210:0, v211:0, v212:0, v213:0, v214:0, 1 + v498:0, 1, v215:0, v217:0, 1 + v343:0, v220:0, v221:0, v222:0, v223:0, 0, 3, 4) -> f_182(v209:0, v210:0, v211:0, v212:0, v213:0, v214:0, v343:0, 1, 1 + v498:0, 1 + v343:0, v498:0, v220:0, v221:0, v222:0, v223:0, 0, 3, 4) :|: v217:0 > 0 && v498:0 > -2 && v343:0 > -3 29.51/8.40 Filtered unneeded arguments: 29.51/8.40 f_182(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) -> f_182(x7, x10, x11) 29.51/8.40 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 29.51/8.40 f_182(sum~cons_1~v498:0, v217:0, sum~cons_1~v343:0) -> f_182(v343:0, 1 + v343:0, v498:0) :|: v498:0 > -2 && v343:0 > -3 && v217:0 > 0 && sum~cons_1~v498:0 = 1 + v498:0 && sum~cons_1~v343:0 = 1 + v343:0 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (16) 29.51/8.40 Obligation: 29.51/8.40 Rules: 29.51/8.40 f_182(sum~cons_1~v498:0, v217:0, sum~cons_1~v343:0) -> f_182(v343:0, 1 + v343:0, v498:0) :|: v498:0 > -2 && v343:0 > -3 && v217:0 > 0 && sum~cons_1~v498:0 = 1 + v498:0 && sum~cons_1~v343:0 = 1 + v343:0 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (17) IntTRSCompressionProof (EQUIVALENT) 29.51/8.40 Compressed rules. 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (18) 29.51/8.40 Obligation: 29.51/8.40 Rules: 29.51/8.40 f_182(sum~cons_1~v498:0:0, v217:0:0, sum~cons_1~v343:0:0) -> f_182(v343:0:0, 1 + v343:0:0, v498:0:0) :|: v498:0:0 > -2 && v343:0:0 > -3 && v217:0:0 > 0 && sum~cons_1~v498:0:0 = 1 + v498:0:0 && sum~cons_1~v343:0:0 = 1 + v343:0:0 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (19) PolynomialOrderProcessor (EQUIVALENT) 29.51/8.40 Found the following polynomial interpretation: 29.51/8.40 [f_182(x, x1, x2)] = 2 + x + x2 29.51/8.40 29.51/8.40 The following rules are decreasing: 29.51/8.40 f_182(sum~cons_1~v498:0:0, v217:0:0, sum~cons_1~v343:0:0) -> f_182(v343:0:0, 1 + v343:0:0, v498:0:0) :|: v498:0:0 > -2 && v343:0:0 > -3 && v217:0:0 > 0 && sum~cons_1~v498:0:0 = 1 + v498:0:0 && sum~cons_1~v343:0:0 = 1 + v343:0:0 29.51/8.40 The following rules are bounded: 29.51/8.40 f_182(sum~cons_1~v498:0:0, v217:0:0, sum~cons_1~v343:0:0) -> f_182(v343:0:0, 1 + v343:0:0, v498:0:0) :|: v498:0:0 > -2 && v343:0:0 > -3 && v217:0:0 > 0 && sum~cons_1~v498:0:0 = 1 + v498:0:0 && sum~cons_1~v343:0:0 = 1 + v343:0:0 29.51/8.40 29.51/8.40 ---------------------------------------- 29.51/8.40 29.51/8.40 (20) 29.51/8.40 YES 29.85/8.49 EOF