15.14/4.94 YES 15.14/4.95 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 15.14/4.95 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 15.14/4.95 15.14/4.95 15.14/4.95 Termination of the given C Problem could be proven: 15.14/4.95 15.14/4.95 (0) C Problem 15.14/4.95 (1) CToLLVMProof [EQUIVALENT, 174 ms] 15.14/4.95 (2) LLVM problem 15.14/4.95 (3) LLVMToTerminationGraphProof [EQUIVALENT, 1385 ms] 15.14/4.95 (4) LLVM Symbolic Execution Graph 15.14/4.95 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 15.14/4.95 (6) AND 15.14/4.95 (7) LLVM Symbolic Execution SCC 15.14/4.95 (8) SCC2IRS [SOUND, 75 ms] 15.14/4.95 (9) IntTRS 15.14/4.95 (10) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.14/4.95 (11) IntTRS 15.14/4.95 (12) RankingReductionPairProof [EQUIVALENT, 0 ms] 15.14/4.95 (13) YES 15.14/4.95 (14) LLVM Symbolic Execution SCC 15.14/4.95 (15) SCC2IRS [SOUND, 50 ms] 15.14/4.95 (16) IntTRS 15.14/4.95 (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] 15.14/4.95 (18) IntTRS 15.14/4.95 (19) RankingReductionPairProof [EQUIVALENT, 12 ms] 15.14/4.95 (20) YES 15.14/4.95 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (0) 15.14/4.95 Obligation: 15.14/4.95 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (1) CToLLVMProof (EQUIVALENT) 15.14/4.95 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (2) 15.14/4.95 Obligation: 15.14/4.95 LLVM Problem 15.14/4.95 15.14/4.95 Aliases: 15.14/4.95 15.14/4.95 Data layout: 15.14/4.95 15.14/4.95 "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" 15.14/4.95 15.14/4.95 Machine: 15.14/4.95 15.14/4.95 "x86_64-pc-linux-gnu" 15.14/4.95 15.14/4.95 Type definitions: 15.14/4.95 15.14/4.95 Global variables: 15.14/4.95 15.14/4.95 Function declarations and definitions: 15.14/4.95 15.14/4.95 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 15.14/4.95 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 15.14/4.95 0: 15.14/4.95 %1 = alloca i32, align 4 15.14/4.95 %y = alloca i32, align 4 15.14/4.95 %z = alloca i32, align 4 15.14/4.95 %x = alloca i32, align 4 15.14/4.95 store 0, %1 15.14/4.95 %2 = call i32 @__VERIFIER_nondet_int() 15.14/4.95 store %2, %y 15.14/4.95 %3 = call i32 @__VERIFIER_nondet_int() 15.14/4.95 store %3, %z 15.14/4.95 %4 = call i32 @__VERIFIER_nondet_int() 15.14/4.95 %5 = icmp ne %4 0 15.14/4.95 br %5, %6, %7 15.14/4.95 6: 15.14/4.95 store 1, %x 15.14/4.95 br %8 15.14/4.95 7: 15.14/4.95 store -1, %x 15.14/4.95 br %8 15.14/4.95 8: 15.14/4.95 br %9 15.14/4.95 9: 15.14/4.95 %10 = load %y 15.14/4.95 %11 = icmp slt %10 100 15.14/4.95 br %11, %12, %15 15.14/4.95 12: 15.14/4.95 %13 = load %z 15.14/4.95 %14 = icmp slt %13 100 15.14/4.95 br %15 15.14/4.95 15: 15.14/4.95 %16 = phi [0, %9], [%14, %12] 15.14/4.95 br %16, %17, %24 15.14/4.95 17: 15.14/4.95 %18 = load %y 15.14/4.95 %19 = load %x 15.14/4.95 %20 = add %18 %19 15.14/4.95 store %20, %y 15.14/4.95 %21 = load %z 15.14/4.95 %22 = load %x 15.14/4.95 %23 = sub %21 %22 15.14/4.95 store %23, %z 15.14/4.95 br %9 15.14/4.95 24: 15.14/4.95 ret 0 15.14/4.95 15.14/4.95 15.14/4.95 Analyze Termination of all function calls matching the pattern: 15.14/4.95 main() 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (3) LLVMToTerminationGraphProof (EQUIVALENT) 15.14/4.95 Constructed symbolic execution graph for LLVM program and proved memory safety. 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (4) 15.14/4.95 Obligation: 15.14/4.95 SE Graph 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (5) SymbolicExecutionGraphToSCCProof (SOUND) 15.14/4.95 Splitted symbolic execution graph to 2 SCCs. 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (6) 15.14/4.95 Complex Obligation (AND) 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (7) 15.14/4.95 Obligation: 15.14/4.95 SCC 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (8) SCC2IRS (SOUND) 15.14/4.95 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 15.14/4.95 Generated rules. Obtained 18 rulesP rules: 15.14/4.95 f_272(v715, v716, v717, v718, v719, v720, 0, v726, 1, v724, v722, -1, v727, v728, v729, v730, v731, 3, 99, 98, 100, 4) -> f_275(v715, v716, v717, v718, v719, v720, 0, v726, 1, v724, v722, -1, v727, v728, v729, v730, v731, 3, 99, 98, 100, 4) :|: 0 = 0 15.14/4.95 f_275(v715, v716, v717, v718, v719, v720, 0, v726, 1, v724, v722, -1, v727, v728, v729, v730, v731, 3, 99, 98, 100, 4) -> f_278(v715, v716, v717, v718, v719, v720, 0, v726, 1, v724, v722, -1, v727, v728, v729, v730, v731, 3, 99, 98, 100, 4) :|: TRUE 15.14/4.95 f_278(v715, v716, v717, v718, v719, v720, 0, v726, 1, v724, v722, -1, v727, v728, v729, v730, v731, 3, 99, 98, 100, 4) -> f_281(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 100, 4) :|: 0 = 0 15.14/4.95 f_281(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 100, 4) -> f_284(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) :|: v727 < 100 && v724 <= 98 && v720 <= 98 15.14/4.95 f_284(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) -> f_287(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) :|: 0 = 0 15.14/4.95 f_287(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) -> f_290(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) :|: 0 = 0 15.14/4.95 f_290(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) -> f_293(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) :|: TRUE 15.14/4.95 f_293(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, v722, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) -> f_296(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) :|: 0 = 0 15.14/4.95 f_296(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) -> f_298(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) :|: 0 = 0 15.14/4.95 f_298(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v724, v728, v729, v730, v731, 3, 99, 98, 4) -> f_300(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v724, v728, v729, v730, v731, 3, 99, 98, 4, 97) :|: 1 + v958 = v726 && v958 <= 97 15.14/4.95 f_300(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v724, v728, v729, v730, v731, 3, 99, 98, 4, 97) -> f_302(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v724, v728, v729, v730, v731, 3, 99, 98, 4, 97) :|: TRUE 15.14/4.95 f_302(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v724, v728, v729, v730, v731, 3, 99, 98, 4, 97) -> f_304(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v728, v729, v730, v731, 3, 99, 98, 4, 97) :|: 0 = 0 15.14/4.95 f_304(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v728, v729, v730, v731, 3, 99, 98, 4, 97) -> f_306(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v728, v729, v730, v731, 3, 99, 98, 4, 97) :|: 0 = 0 15.14/4.95 f_306(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v728, v729, v730, v731, 3, 99, 98, 4, 97) -> f_308(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v962, v728, v729, v730, v731, 3, 99, 98, 4, 97, 100) :|: v962 = 1 + v727 && v962 <= 100 15.14/4.95 f_308(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v962, v728, v729, v730, v731, 3, 99, 98, 4, 97, 100) -> f_310(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v962, v728, v729, v730, v731, 3, 99, 98, 4, 97, 100) :|: TRUE 15.14/4.95 f_310(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v962, v728, v729, v730, v731, 3, 99, 98, 4, 97, 100) -> f_312(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v962, v728, v729, v730, v731, 3, 99, 98, 4, 97, 100) :|: TRUE 15.14/4.95 f_312(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v962, v728, v729, v730, v731, 3, 99, 98, 4, 97, 100) -> f_270(v715, v716, v717, v718, v719, v720, 0, v726, 1, v727, -1, v958, v962, v728, v729, v730, v731, 3, 99, 98, 100, 4) :|: TRUE 15.14/4.95 f_270(v715, v716, v717, v718, v719, v720, 0, v722, 1, v724, -1, v726, v727, v728, v729, v730, v731, 3, 99, 98, 100, 4) -> f_272(v715, v716, v717, v718, v719, v720, 0, v726, 1, v724, v722, -1, v727, v728, v729, v730, v731, 3, 99, 98, 100, 4) :|: 0 = 0 15.14/4.95 Combined rules. Obtained 1 rulesP rules: 15.14/4.95 f_272(v715:0, v716:0, v717:0, v718:0, v719:0, v720:0, 0, 1 + v958:0, 1, v724:0, v722:0, -1, v727:0, v728:0, v729:0, v730:0, v731:0, 3, 99, 98, 100, 4) -> f_272(v715:0, v716:0, v717:0, v718:0, v719:0, v720:0, 0, v958:0, 1, v727:0, 1 + v958:0, -1, 1 + v727:0, v728:0, v729:0, v730:0, v731:0, 3, 99, 98, 100, 4) :|: v724:0 < 99 && v727:0 < 100 && v720:0 < 99 && v958:0 < 98 15.14/4.95 Filtered unneeded arguments: 15.14/4.95 f_272(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22) -> f_272(x6, x8, x10, x13) 15.14/4.95 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 15.14/4.95 f_272(v720:0, sum~cons_1~v958:0, v724:0, v727:0) -> f_272(v720:0, v958:0, v727:0, 1 + v727:0) :|: v727:0 < 100 && v724:0 < 99 && v958:0 < 98 && v720:0 < 99 && sum~cons_1~v958:0 = 1 + v958:0 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (9) 15.14/4.95 Obligation: 15.14/4.95 Rules: 15.14/4.95 f_272(v720:0, sum~cons_1~v958:0, v724:0, v727:0) -> f_272(v720:0, v958:0, v727:0, 1 + v727:0) :|: v727:0 < 100 && v724:0 < 99 && v958:0 < 98 && v720:0 < 99 && sum~cons_1~v958:0 = 1 + v958:0 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (10) IntTRSCompressionProof (EQUIVALENT) 15.14/4.95 Compressed rules. 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (11) 15.14/4.95 Obligation: 15.14/4.95 Rules: 15.14/4.95 f_272(v720:0:0, sum~cons_1~v958:0:0, v724:0:0, v727:0:0) -> f_272(v720:0:0, v958:0:0, v727:0:0, 1 + v727:0:0) :|: v958:0:0 < 98 && v720:0:0 < 99 && v724:0:0 < 99 && v727:0:0 < 100 && sum~cons_1~v958:0:0 = 1 + v958:0:0 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (12) RankingReductionPairProof (EQUIVALENT) 15.14/4.95 Interpretation: 15.14/4.95 [ f_272 ] = -1*f_272_4 15.14/4.95 15.14/4.95 The following rules are decreasing: 15.14/4.95 f_272(v720:0:0, sum~cons_1~v958:0:0, v724:0:0, v727:0:0) -> f_272(v720:0:0, v958:0:0, v727:0:0, 1 + v727:0:0) :|: v958:0:0 < 98 && v720:0:0 < 99 && v724:0:0 < 99 && v727:0:0 < 100 && sum~cons_1~v958:0:0 = 1 + v958:0:0 15.14/4.95 15.14/4.95 The following rules are bounded: 15.14/4.95 f_272(v720:0:0, sum~cons_1~v958:0:0, v724:0:0, v727:0:0) -> f_272(v720:0:0, v958:0:0, v727:0:0, 1 + v727:0:0) :|: v958:0:0 < 98 && v720:0:0 < 99 && v724:0:0 < 99 && v727:0:0 < 100 && sum~cons_1~v958:0:0 = 1 + v958:0:0 15.14/4.95 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (13) 15.14/4.95 YES 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (14) 15.14/4.95 Obligation: 15.14/4.95 SCC 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (15) SCC2IRS (SOUND) 15.14/4.95 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 15.14/4.95 Generated rules. Obtained 18 rulesP rules: 15.14/4.95 f_271(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 99, 100, 98, 4) -> f_273(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: v694 < 100 && v692 <= 98 && v688 <= 98 15.14/4.95 f_273(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_276(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: 0 = 0 15.14/4.95 f_276(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_279(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: TRUE 15.14/4.95 f_279(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_282(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: 0 = 0 15.14/4.95 f_282(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_286(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: 0 = 0 15.14/4.95 f_286(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_289(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: 0 = 0 15.14/4.95 f_289(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_292(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: TRUE 15.14/4.95 f_292(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v692, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_295(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: 0 = 0 15.14/4.95 f_295(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_297(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) :|: 0 = 0 15.14/4.95 f_297(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4) -> f_299(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) :|: v957 = 1 + v694 && v957 <= 100 15.14/4.95 f_299(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) -> f_301(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) :|: TRUE 15.14/4.95 f_301(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v693, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) -> f_303(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) :|: 0 = 0 15.14/4.95 f_303(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) -> f_305(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) :|: 0 = 0 15.14/4.95 f_305(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100) -> f_307(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v961, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100, 97) :|: 1 + v961 = v695 && v961 <= 97 15.14/4.95 f_307(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v961, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100, 97) -> f_309(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v961, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100, 97) :|: TRUE 15.14/4.95 f_309(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v961, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100, 97) -> f_311(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v961, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100, 97) :|: TRUE 15.14/4.95 f_311(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v961, v696, v697, v698, v699, 0, 3, 98, 99, 4, 100, 97) -> f_268(v684, v685, v686, v687, v688, v689, v690, 1, v694, v695, v957, v961, v696, v697, v698, v699, 0, 3, 99, 100, 98, 4) :|: TRUE 15.14/4.95 f_268(v684, v685, v686, v687, v688, v689, v690, 1, v692, v693, v694, v695, v696, v697, v698, v699, 0, 3, 99, 100, 98, 4) -> f_271(v684, v685, v686, v687, v688, v689, v690, 1, v694, v693, v692, v695, v696, v697, v698, v699, 0, 3, 99, 100, 98, 4) :|: 0 = 0 15.14/4.95 Combined rules. Obtained 1 rulesP rules: 15.14/4.95 f_271(v684:0, v685:0, v686:0, v687:0, v688:0, v689:0, v690:0, 1, v694:0, v693:0, v692:0, 1 + v961:0, v696:0, v697:0, v698:0, v699:0, 0, 3, 99, 100, 98, 4) -> f_271(v684:0, v685:0, v686:0, v687:0, v688:0, v689:0, v690:0, 1, 1 + v694:0, 1 + v961:0, v694:0, v961:0, v696:0, v697:0, v698:0, v699:0, 0, 3, 99, 100, 98, 4) :|: v692:0 < 99 && v694:0 < 100 && v688:0 < 99 && v961:0 < 98 15.14/4.95 Filtered unneeded arguments: 15.14/4.95 f_271(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22) -> f_271(x5, x9, x11, x12) 15.14/4.95 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 15.14/4.95 f_271(v688:0, v694:0, v692:0, sum~cons_1~v961:0) -> f_271(v688:0, 1 + v694:0, v694:0, v961:0) :|: v694:0 < 100 && v692:0 < 99 && v961:0 < 98 && v688:0 < 99 && sum~cons_1~v961:0 = 1 + v961:0 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (16) 15.14/4.95 Obligation: 15.14/4.95 Rules: 15.14/4.95 f_271(v688:0, v694:0, v692:0, sum~cons_1~v961:0) -> f_271(v688:0, 1 + v694:0, v694:0, v961:0) :|: v694:0 < 100 && v692:0 < 99 && v961:0 < 98 && v688:0 < 99 && sum~cons_1~v961:0 = 1 + v961:0 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (17) IntTRSCompressionProof (EQUIVALENT) 15.14/4.95 Compressed rules. 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (18) 15.14/4.95 Obligation: 15.14/4.95 Rules: 15.14/4.95 f_271(v688:0:0, v694:0:0, v692:0:0, sum~cons_1~v961:0:0) -> f_271(v688:0:0, 1 + v694:0:0, v694:0:0, v961:0:0) :|: v961:0:0 < 98 && v688:0:0 < 99 && v692:0:0 < 99 && v694:0:0 < 100 && sum~cons_1~v961:0:0 = 1 + v961:0:0 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (19) RankingReductionPairProof (EQUIVALENT) 15.14/4.95 Interpretation: 15.14/4.95 [ f_271 ] = -1*f_271_2 15.14/4.95 15.14/4.95 The following rules are decreasing: 15.14/4.95 f_271(v688:0:0, v694:0:0, v692:0:0, sum~cons_1~v961:0:0) -> f_271(v688:0:0, 1 + v694:0:0, v694:0:0, v961:0:0) :|: v961:0:0 < 98 && v688:0:0 < 99 && v692:0:0 < 99 && v694:0:0 < 100 && sum~cons_1~v961:0:0 = 1 + v961:0:0 15.14/4.95 15.14/4.95 The following rules are bounded: 15.14/4.95 f_271(v688:0:0, v694:0:0, v692:0:0, sum~cons_1~v961:0:0) -> f_271(v688:0:0, 1 + v694:0:0, v694:0:0, v961:0:0) :|: v961:0:0 < 98 && v688:0:0 < 99 && v692:0:0 < 99 && v694:0:0 < 100 && sum~cons_1~v961:0:0 = 1 + v961:0:0 15.14/4.95 15.14/4.95 15.14/4.95 ---------------------------------------- 15.14/4.95 15.14/4.95 (20) 15.14/4.95 YES 15.34/5.00 EOF