/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, 12.5 s] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) LLVM Symbolic Execution SCC (7) SCC2IRS [SOUND, 207 ms] (8) IntTRS (9) IntTRSCompressionProof [EQUIVALENT, 0 ms] (10) IntTRS (11) RankingReductionPairProof [EQUIVALENT, 35 ms] (12) 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: "cstrncmp" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (s1 *i8, s2 *i8, n i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca *i8, align 8 %3 = alloca *i8, align 8 %4 = alloca i64, align 8 store %s1, %2 store %s2, %3 store %n, %4 %5 = load %4 %6 = icmp eq %5 0 br %6, %7, %8 7: store 0, %1 br %40 8: br %9 9: %10 = load %2 %11 = load %10 %12 = sext i8 %11 to i32 %13 = load %3 %14 = getelementptr %13, 1 store %14, %3 %15 = load %13 %16 = sext i8 %15 to i32 %17 = icmp ne %12 %16 br %17, %18, %27 18: %19 = load %2 %20 = load %19 %21 = zext i8 %20 to i32 %22 = load %3 %23 = getelementptr %22, -1 store %23, %3 %24 = load %23 %25 = zext i8 %24 to i32 %26 = sub %21 %25 store %26, %1 br %40 27: %28 = load %2 %29 = getelementptr %28, 1 store %29, %2 %30 = load %28 %31 = sext i8 %30 to i32 %32 = icmp eq %31 0 br %32, %33, %34 33: br %39 34: br %35 35: %36 = load %4 %37 = add %36 -1 store %37, %4 %38 = icmp ne %37 0 br %38, %9, %39 39: store 0, %1 br %40 40: %41 = load %1 ret %41 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %length1 = alloca i32, align 4 %length2 = alloca i32, align 4 %nondetString1 = alloca *i8, align 8 %nondetString2 = alloca *i8, align 8 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %length1 %3 = call i32 @__VERIFIER_nondet_int() store %3, %length2 %4 = load %length1 %5 = icmp slt %4 1 br %5, %6, %7 6: store 1, %length1 br %7 7: %8 = load %length2 %9 = icmp slt %8 1 br %9, %10, %11 10: store 1, %length2 br %11 11: %12 = load %length1 %13 = sext i32 %12 to i64 %14 = mul %13 1 %15 = alloca i8, numElementsLit: %14 store %15, %nondetString1 %16 = load %length2 %17 = sext i32 %16 to i64 %18 = mul %17 1 %19 = alloca i8, numElementsLit: %18 store %19, %nondetString2 %20 = load %length1 %21 = sub %20 1 %22 = sext i32 %21 to i64 %23 = load %nondetString1 %24 = getelementptr %23, %22 store 0, %24 %25 = load %length2 %26 = sub %25 1 %27 = sext i32 %26 to i64 %28 = load %nondetString2 %29 = getelementptr %28, %27 store 0, %29 %30 = load %nondetString1 %31 = load %nondetString2 %32 = call i32 @__VERIFIER_nondet_int() %33 = sext i32 %32 to i64 %34 = call i32 @cstrncmp(*i8 %30, *i8 %31, i64 %33) ret %34 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 1 SCC. ---------------------------------------- (6) Obligation: SCC ---------------------------------------- (7) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 27 rulesP rules: f_847(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2292, v2293, v2294, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_848(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2292, v2293, v2294, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_848(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2292, v2293, v2294, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_849(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2293, v2294, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_849(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2293, v2294, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_850(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_850(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_851(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: v2325 = 1 + v2294 && 4 <= v2325 f_851(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_852(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_852(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_853(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2327, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_853(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2327, v2292, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_854(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2327, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_854(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2323, v2294, v2325, v2327, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_856(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: v2323 = v2327 f_856(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_858(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_858(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_860(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_860(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2291, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_862(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_862(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_864(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: v2402 = 1 + v2295 && 4 <= v2402 f_864(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_866(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_866(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_868(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_868(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2292, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_870(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_870(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_873(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: v2327 != 0 && v2295 < v2307 && v2294 < v2309 && 4 <= v2307 && 4 <= v2309 f_873(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_876(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_876(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_879(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_879(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_882(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_882(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_885(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_885(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_888(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 1 + v2733 = v2297 f_888(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_891(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_891(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_894(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: v2733 != 0 f_894(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_896(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 f_896(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_898(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_898(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2291, v2292, v2293, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_846(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2327, v2294, v2325, v2402, v2297, v2733, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: TRUE f_846(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2291, v2292, v2293, v2294, v2295, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) -> f_847(v2283, v2284, v2285, v2286, v2287, v2288, v2289, 0, v2295, v2292, v2293, v2294, v2291, v2296, v2297, 1, v2299, v2310, v2300, v2311, v2301, v2312, v2302, v2313, v2303, v2314, v2307, v2309, v2315, v2316, v2317, v2318, v2321, v2304, v2305, v2319, v2322, v2320, v2306, v2308, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 4 rulesP rules: f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, v2295:0, v2292:0, v2293:0, v2294:0, v2291:0, v2296:0, 1 + v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) -> f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, 1 + v2295:0, v2323:0, v2294:0, 1 + v2294:0, v2295:0, 1 + v2733:0, v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) :|: v2294:0 > 2 && v2295:0 > 2 && v2307:0 > v2295:0 && v2323:0 < 0 && v2309:0 > v2294:0 && v2307:0 > 3 && v2733:0 < 0 && v2309:0 > 3 f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, v2295:0, v2292:0, v2293:0, v2294:0, v2291:0, v2296:0, 1 + v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) -> f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, 1 + v2295:0, v2323:0, v2294:0, 1 + v2294:0, v2295:0, 1 + v2733:0, v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) :|: v2294:0 > 2 && v2295:0 > 2 && v2307:0 > v2295:0 && v2323:0 < 0 && v2309:0 > v2294:0 && v2307:0 > 3 && v2733:0 > 0 && v2309:0 > 3 f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, v2295:0, v2292:0, v2293:0, v2294:0, v2291:0, v2296:0, 1 + v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) -> f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, 1 + v2295:0, v2323:0, v2294:0, 1 + v2294:0, v2295:0, 1 + v2733:0, v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) :|: v2294:0 > 2 && v2295:0 > 2 && v2307:0 > v2295:0 && v2323:0 > 0 && v2309:0 > v2294:0 && v2307:0 > 3 && v2733:0 < 0 && v2309:0 > 3 f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, v2295:0, v2292:0, v2293:0, v2294:0, v2291:0, v2296:0, 1 + v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) -> f_847(v2283:0, v2284:0, v2285:0, v2286:0, v2287:0, v2288:0, v2289:0, 0, 1 + v2295:0, v2323:0, v2294:0, 1 + v2294:0, v2295:0, 1 + v2733:0, v2733:0, 1, v2299:0, v2310:0, v2300:0, v2311:0, v2301:0, v2312:0, v2302:0, v2313:0, v2303:0, v2314:0, v2307:0, v2309:0, v2315:0, v2316:0, v2317:0, v2318:0, v2321:0, v2304:0, v2305:0, v2319:0, v2322:0, v2320:0, v2306:0, v2308:0, 3, 7, 2, 4, 8) :|: v2294:0 > 2 && v2295:0 > 2 && v2307:0 > v2295:0 && v2323:0 > 0 && v2309:0 > v2294:0 && v2307:0 > 3 && v2733:0 > 0 && v2309:0 > 3 Filtered unneeded arguments: f_847(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, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45) -> f_847(x9, x12, x15, x27, x28) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_847(v2295:0, v2294:0, sum~cons_1~v2733:0, v2307:0, v2309:0) -> f_847(1 + v2295:0, 1 + v2294:0, v2733:0, v2307:0, v2309:0) :|: v2295:0 > 2 && v2294:0 > 2 && v2307:0 > v2295:0 && v2309:0 > v2294:0 && v2307:0 > 3 && v2309:0 > 3 && v2733:0 < 0 && sum~cons_1~v2733:0 = 1 + v2733:0 f_847(v2295:0, v2294:0, sum~cons_1~v2733:0, v2307:0, v2309:0) -> f_847(1 + v2295:0, 1 + v2294:0, v2733:0, v2307:0, v2309:0) :|: v2295:0 > 2 && v2294:0 > 2 && v2307:0 > v2295:0 && v2309:0 > v2294:0 && v2307:0 > 3 && v2309:0 > 3 && v2733:0 > 0 && sum~cons_1~v2733:0 = 1 + v2733:0 ---------------------------------------- (8) Obligation: Rules: f_847(v2295:0, v2294:0, sum~cons_1~v2733:0, v2307:0, v2309:0) -> f_847(1 + v2295:0, 1 + v2294:0, v2733:0, v2307:0, v2309:0) :|: v2295:0 > 2 && v2294:0 > 2 && v2307:0 > v2295:0 && v2309:0 > v2294:0 && v2307:0 > 3 && v2309:0 > 3 && v2733:0 < 0 && sum~cons_1~v2733:0 = 1 + v2733:0 f_847(x, x1, x2, x3, x4) -> f_847(1 + x, 1 + x1, x5, x3, x4) :|: x > 2 && x1 > 2 && x3 > x && x4 > x1 && x3 > 3 && x4 > 3 && x5 > 0 && x2 = 1 + x5 ---------------------------------------- (9) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (10) Obligation: Rules: f_847(x:0, x1:0, sum~cons_1~x5:0, x3:0, x4:0) -> f_847(1 + x:0, 1 + x1:0, x5:0, x3:0, x4:0) :|: x4:0 > 3 && x5:0 > 0 && x3:0 > 3 && x4:0 > x1:0 && x:0 < x3:0 && x1:0 > 2 && x:0 > 2 && sum~cons_1~x5:0 = 1 + x5:0 f_847(v2295:0:0, v2294:0:0, sum~cons_1~v2733:0:0, v2307:0:0, v2309:0:0) -> f_847(1 + v2295:0:0, 1 + v2294:0:0, v2733:0:0, v2307:0:0, v2309:0:0) :|: v2309:0:0 > 3 && v2733:0:0 < 0 && v2307:0:0 > 3 && v2309:0:0 > v2294:0:0 && v2307:0:0 > v2295:0:0 && v2294:0:0 > 2 && v2295:0:0 > 2 && sum~cons_1~v2733:0:0 = 1 + v2733:0:0 ---------------------------------------- (11) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_847 ] = f_847_4 + -1*f_847_1 The following rules are decreasing: f_847(x:0, x1:0, sum~cons_1~x5:0, x3:0, x4:0) -> f_847(1 + x:0, 1 + x1:0, x5:0, x3:0, x4:0) :|: x4:0 > 3 && x5:0 > 0 && x3:0 > 3 && x4:0 > x1:0 && x:0 < x3:0 && x1:0 > 2 && x:0 > 2 && sum~cons_1~x5:0 = 1 + x5:0 f_847(v2295:0:0, v2294:0:0, sum~cons_1~v2733:0:0, v2307:0:0, v2309:0:0) -> f_847(1 + v2295:0:0, 1 + v2294:0:0, v2733:0:0, v2307:0:0, v2309:0:0) :|: v2309:0:0 > 3 && v2733:0:0 < 0 && v2307:0:0 > 3 && v2309:0:0 > v2294:0:0 && v2307:0:0 > v2295:0:0 && v2294:0:0 > 2 && v2295:0:0 > 2 && sum~cons_1~v2733:0:0 = 1 + v2733:0:0 The following rules are bounded: f_847(x:0, x1:0, sum~cons_1~x5:0, x3:0, x4:0) -> f_847(1 + x:0, 1 + x1:0, x5:0, x3:0, x4:0) :|: x4:0 > 3 && x5:0 > 0 && x3:0 > 3 && x4:0 > x1:0 && x:0 < x3:0 && x1:0 > 2 && x:0 > 2 && sum~cons_1~x5:0 = 1 + x5:0 f_847(v2295:0:0, v2294:0:0, sum~cons_1~v2733:0:0, v2307:0:0, v2309:0:0) -> f_847(1 + v2295:0:0, 1 + v2294:0:0, v2733:0:0, v2307:0:0, v2309:0:0) :|: v2309:0:0 > 3 && v2733:0:0 < 0 && v2307:0:0 > 3 && v2309:0:0 > v2294:0:0 && v2307:0:0 > v2295:0:0 && v2294:0:0 > 2 && v2295:0:0 > 2 && sum~cons_1~v2733:0:0 = 1 + v2733:0:0 ---------------------------------------- (12) YES