/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 176 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 1591 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 78 ms] (9) IntTRS (10) IntTRSCompressionProof [EQUIVALENT, 0 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 2 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 74 ms] (16) IntTRS (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IntTRS (19) PolynomialOrderProcessor [EQUIVALENT, 11 ms] (20) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "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" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %y = alloca i32, align 4 %z = alloca i32, align 4 %x = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %y %3 = call i32 @__VERIFIER_nondet_int() store %3, %z %4 = call i32 @__VERIFIER_nondet_int() %5 = icmp ne %4 0 br %5, %6, %7 6: store 1, %x br %8 7: store -1, %x br %8 8: %9 = load %x %10 = icmp sgt %9 0 br %10, %11, %14 11: %12 = load %x %13 = add %12 1 store %13, %x br %17 14: %15 = load %x %16 = add %15 -1 store %16, %x br %17 17: %18 = load %x %19 = icmp sgt %18 0 br %19, %20, %23 20: %21 = load %x %22 = add %21 1 store %22, %x br %26 23: %24 = load %x %25 = add %24 -1 store %25, %x br %26 26: %27 = load %x %28 = icmp sgt %27 0 br %28, %29, %32 29: %30 = load %x %31 = add %30 1 store %31, %x br %35 32: %33 = load %x %34 = add %33 -1 store %34, %x br %35 35: %36 = load %x %37 = icmp sgt %36 0 br %37, %38, %41 38: %39 = load %x %40 = add %39 1 store %40, %x br %44 41: %42 = load %x %43 = add %42 -1 store %43, %x br %44 44: %45 = load %x %46 = icmp sgt %45 0 br %46, %47, %50 47: %48 = load %x %49 = add %48 1 store %49, %x br %53 50: %51 = load %x %52 = add %51 -1 store %52, %x br %53 53: %54 = load %x %55 = icmp sgt %54 0 br %55, %56, %59 56: %57 = load %x %58 = add %57 1 store %58, %x br %62 59: %60 = load %x %61 = add %60 -1 store %61, %x br %62 62: %63 = load %x %64 = icmp sgt %63 0 br %64, %65, %68 65: %66 = load %x %67 = add %66 1 store %67, %x br %71 68: %69 = load %x %70 = add %69 -1 store %70, %x br %71 71: %72 = load %x %73 = icmp sgt %72 0 br %73, %74, %77 74: %75 = load %x %76 = add %75 1 store %76, %x br %80 77: %78 = load %x %79 = add %78 -1 store %79, %x br %80 80: br %81 81: %82 = load %y %83 = icmp slt %82 100 br %83, %84, %87 84: %85 = load %z %86 = icmp slt %85 100 br %87 87: %88 = phi [0, %81], [%86, %84] br %88, %89, %96 89: %90 = load %y %91 = load %x %92 = add %90 %91 store %92, %y %93 = load %z %94 = load %x %95 = sub %93 %94 store %95, %z br %81 96: ret 0 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 2 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 18 rulesP rules: f_648(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v957, v955, v959, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) -> f_651(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v957, v955, v959, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) :|: 0 = 0 f_651(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v957, v955, v959, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) -> f_654(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v957, v955, v959, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) :|: TRUE f_654(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v957, v955, v959, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) -> f_657(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) :|: 0 = 0 f_657(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) -> f_660(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) :|: v959 < 100 && v957 <= 90 f_660(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) -> f_663(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) :|: 0 = 0 f_663(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) -> f_666(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) :|: 0 = 0 f_666(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) -> f_669(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) :|: TRUE f_669(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v955, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) -> f_672(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) :|: 0 = 0 f_672(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) -> f_674(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) :|: 0 = 0 f_674(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4) -> f_676(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) :|: 9 + v1269 = v958 && v1269 <= 81 f_676(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) -> f_678(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) :|: TRUE f_678(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v957, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) -> f_680(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) :|: 0 = 0 f_680(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) -> f_682(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) :|: 0 = 0 f_682(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81) -> f_684(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v1273, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81, 108) :|: v1273 = 9 + v959 && v1273 <= 108 f_684(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v1273, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81, 108) -> f_686(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v1273, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81, 108) :|: TRUE f_686(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v1273, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81, 108) -> f_688(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v1273, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81, 108) :|: TRUE f_688(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v1273, v960, v961, v962, v963, 3, 9, 99, 90, 4, 81, 108) -> f_646(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v959, v1269, v1273, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) :|: TRUE f_646(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v955, 1, v957, v958, v959, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) -> f_648(v939, v940, v941, v942, v943, v944, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v958, 1, v957, v955, v959, v960, v961, v962, v963, 3, 9, 99, 90, 108, 4) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_648(v939:0, v940:0, v941:0, v942:0, v943:0, v944:0, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, 9 + v1269:0, 1, v957:0, v955:0, v959:0, v960:0, v961:0, v962:0, v963:0, 3, 9, 99, 90, 108, 4) -> f_648(v939:0, v940:0, v941:0, v942:0, v943:0, v944:0, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, v1269:0, 1, v959:0, 9 + v1269:0, 9 + v959:0, v960:0, v961:0, v962:0, v963:0, 3, 9, 99, 90, 108, 4) :|: v957:0 < 91 && v959:0 < 100 && v1269:0 < 82 Filtered unneeded arguments: f_648(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31) -> f_648(x17, x19, x21) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_648(sum~cons_9~v1269:0, v957:0, v959:0) -> f_648(v1269:0, v959:0, 9 + v959:0) :|: v959:0 < 100 && v1269:0 < 82 && v957:0 < 91 && sum~cons_9~v1269:0 = 9 + v1269:0 ---------------------------------------- (9) Obligation: Rules: f_648(sum~cons_9~v1269:0, v957:0, v959:0) -> f_648(v1269:0, v959:0, 9 + v959:0) :|: v959:0 < 100 && v1269:0 < 82 && v957:0 < 91 && sum~cons_9~v1269:0 = 9 + v1269:0 ---------------------------------------- (10) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (11) Obligation: Rules: f_648(sum~cons_9~v1269:0:0, v957:0:0, v959:0:0) -> f_648(v1269:0:0, v959:0:0, 9 + v959:0:0) :|: v959:0:0 < 100 && v1269:0:0 < 82 && v957:0:0 < 91 && sum~cons_9~v1269:0:0 = 9 + v1269:0:0 ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_648 ] = -1/9*f_648_3 The following rules are decreasing: f_648(sum~cons_9~v1269:0:0, v957:0:0, v959:0:0) -> f_648(v1269:0:0, v959:0:0, 9 + v959:0:0) :|: v959:0:0 < 100 && v1269:0:0 < 82 && v957:0:0 < 91 && sum~cons_9~v1269:0:0 = 9 + v1269:0:0 The following rules are bounded: f_648(sum~cons_9~v1269:0:0, v957:0:0, v959:0:0) -> f_648(v1269:0:0, v959:0:0, 9 + v959:0:0) :|: v959:0:0 < 100 && v1269:0:0 < 82 && v957:0:0 < 91 && sum~cons_9~v1269:0:0 = 9 + v1269:0:0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 18 rulesP rules: f_647(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 108, 90) -> f_649(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 90) :|: v909 < 100 && v907 <= 90 f_649(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 90) -> f_652(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 90) :|: 0 = 0 f_652(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 90) -> f_655(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 90) :|: TRUE f_655(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 90) -> f_658(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) :|: 0 = 0 f_658(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) -> f_662(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) :|: 0 = 0 f_662(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) -> f_665(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) :|: 0 = 0 f_665(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) -> f_668(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) :|: TRUE f_668(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v907, v908, v911, v912, v913, v914, 0, 99, 90) -> f_671(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v908, v911, v912, v913, v914, 0, 99, 90) :|: 0 = 0 f_671(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v908, v911, v912, v913, v914, 0, 99, 90) -> f_673(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v908, v911, v912, v913, v914, 0, 99, 90) :|: 0 = 0 f_673(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v908, v911, v912, v913, v914, 0, 99, 90) -> f_675(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v908, v911, v912, v913, v914, 0, 99, 90, 108) :|: v1268 = 9 + v909 && v1268 <= 108 f_675(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v908, v911, v912, v913, v914, 0, 99, 90, 108) -> f_677(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v908, v911, v912, v913, v914, 0, 99, 90, 108) :|: TRUE f_677(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v908, v911, v912, v913, v914, 0, 99, 90, 108) -> f_679(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v911, v912, v913, v914, 0, 99, 90, 108) :|: 0 = 0 f_679(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v911, v912, v913, v914, 0, 99, 90, 108) -> f_681(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v911, v912, v913, v914, 0, 99, 90, 108) :|: 0 = 0 f_681(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v911, v912, v913, v914, 0, 99, 90, 108) -> f_683(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v1272, v911, v912, v913, v914, 0, 99, 90, 108, 81) :|: 9 + v1272 = v910 && v1272 <= 81 f_683(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v1272, v911, v912, v913, v914, 0, 99, 90, 108, 81) -> f_685(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v1272, v911, v912, v913, v914, 0, 99, 90, 108, 81) :|: TRUE f_685(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v1272, v911, v912, v913, v914, 0, 99, 90, 108, 81) -> f_687(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v1272, v911, v912, v913, v914, 0, 99, 90, 108, 81) :|: TRUE f_687(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v1272, v911, v912, v913, v914, 0, 99, 90, 108, 81) -> f_644(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v910, v1268, v1272, v911, v912, v913, v914, 0, 99, 108, 90) :|: TRUE f_644(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v907, v908, v909, v910, v911, v912, v913, v914, 0, 99, 108, 90) -> f_647(v891, v892, v893, v894, v895, v896, v897, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909, v908, v907, v910, v911, v912, v913, v914, 0, 99, 108, 90) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_647(v891:0, v892:0, v893:0, v894:0, v895:0, v896:0, v897:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, v909:0, v908:0, v907:0, 9 + v1272:0, v911:0, v912:0, v913:0, v914:0, 0, 99, 108, 90) -> f_647(v891:0, v892:0, v893:0, v894:0, v895:0, v896:0, v897:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9 + v909:0, 9 + v1272:0, v909:0, v1272:0, v911:0, v912:0, v913:0, v914:0, 0, 99, 108, 90) :|: v907:0 < 91 && v909:0 < 100 && v1272:0 < 82 Filtered unneeded arguments: f_647(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28) -> f_647(x17, x19, x20) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_647(v909:0, v907:0, sum~cons_9~v1272:0) -> f_647(9 + v909:0, v909:0, v1272:0) :|: v909:0 < 100 && v1272:0 < 82 && v907:0 < 91 && sum~cons_9~v1272:0 = 9 + v1272:0 ---------------------------------------- (16) Obligation: Rules: f_647(v909:0, v907:0, sum~cons_9~v1272:0) -> f_647(9 + v909:0, v909:0, v1272:0) :|: v909:0 < 100 && v1272:0 < 82 && v907:0 < 91 && sum~cons_9~v1272:0 = 9 + v1272:0 ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: f_647(v909:0:0, v907:0:0, sum~cons_9~v1272:0:0) -> f_647(9 + v909:0:0, v909:0:0, v1272:0:0) :|: v909:0:0 < 100 && v1272:0:0 < 82 && v907:0:0 < 91 && sum~cons_9~v1272:0:0 = 9 + v1272:0:0 ---------------------------------------- (19) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f_647(x, x1, x2)] = 288 - 2*x - x2 The following rules are decreasing: f_647(v909:0:0, v907:0:0, sum~cons_9~v1272:0:0) -> f_647(9 + v909:0:0, v909:0:0, v1272:0:0) :|: v909:0:0 < 100 && v1272:0:0 < 82 && v907:0:0 < 91 && sum~cons_9~v1272:0:0 = 9 + v1272:0:0 The following rules are bounded: f_647(v909:0:0, v907:0:0, sum~cons_9~v1272:0:0) -> f_647(9 + v909:0:0, v909:0:0, v1272:0:0) :|: v909:0:0 < 100 && v1272:0:0 < 82 && v907:0:0 < 91 && sum~cons_9~v1272:0:0 = 9 + v1272:0:0 ---------------------------------------- (20) YES