42.90/14.40 YES 43.20/14.42 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 43.20/14.42 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 43.20/14.42 43.20/14.42 43.20/14.42 Termination of the given C Problem could be proven: 43.20/14.42 43.20/14.42 (0) C Problem 43.20/14.42 (1) CToLLVMProof [EQUIVALENT, 171 ms] 43.20/14.42 (2) LLVM problem 43.20/14.42 (3) LLVMToTerminationGraphProof [EQUIVALENT, 11.0 s] 43.20/14.42 (4) LLVM Symbolic Execution Graph 43.20/14.42 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 43.20/14.42 (6) LLVM Symbolic Execution SCC 43.20/14.42 (7) SCC2IRS [SOUND, 167 ms] 43.20/14.42 (8) IntTRS 43.20/14.42 (9) IntTRSCompressionProof [EQUIVALENT, 0 ms] 43.20/14.42 (10) IntTRS 43.20/14.42 (11) PolynomialOrderProcessor [EQUIVALENT, 16 ms] 43.20/14.42 (12) YES 43.20/14.42 43.20/14.42 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (0) 43.20/14.42 Obligation: 43.20/14.42 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (1) CToLLVMProof (EQUIVALENT) 43.20/14.42 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (2) 43.20/14.42 Obligation: 43.20/14.42 LLVM Problem 43.20/14.42 43.20/14.42 Aliases: 43.20/14.42 43.20/14.42 Data layout: 43.20/14.42 43.20/14.42 "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" 43.20/14.42 43.20/14.42 Machine: 43.20/14.42 43.20/14.42 "x86_64-pc-linux-gnu" 43.20/14.42 43.20/14.42 Type definitions: 43.20/14.42 43.20/14.42 Global variables: 43.20/14.42 43.20/14.42 Function declarations and definitions: 43.20/14.42 43.20/14.42 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 43.20/14.42 *BasicFunctionTypename: "cstrncmp" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (s1 *i8, s2 *i8, n i64) variableLength: false visibilityType: DEFAULT callingConvention: ccc 43.20/14.42 0: 43.20/14.42 %1 = alloca i32, align 4 43.20/14.42 %2 = alloca *i8, align 8 43.20/14.42 %3 = alloca *i8, align 8 43.20/14.42 %4 = alloca i64, align 8 43.20/14.42 store %s1, %2 43.20/14.42 store %s2, %3 43.20/14.42 store %n, %4 43.20/14.42 %5 = load %4 43.20/14.42 %6 = icmp eq %5 0 43.20/14.42 br %6, %7, %8 43.20/14.42 7: 43.20/14.42 store 0, %1 43.20/14.42 br %40 43.20/14.42 8: 43.20/14.42 br %9 43.20/14.42 9: 43.20/14.42 %10 = load %2 43.20/14.42 %11 = load %10 43.20/14.42 %12 = sext i8 %11 to i32 43.20/14.42 %13 = load %3 43.20/14.42 %14 = getelementptr %13, 1 43.20/14.42 store %14, %3 43.20/14.42 %15 = load %13 43.20/14.42 %16 = sext i8 %15 to i32 43.20/14.42 %17 = icmp ne %12 %16 43.20/14.42 br %17, %18, %27 43.20/14.42 18: 43.20/14.42 %19 = load %2 43.20/14.42 %20 = load %19 43.20/14.42 %21 = zext i8 %20 to i32 43.20/14.42 %22 = load %3 43.20/14.42 %23 = getelementptr %22, -1 43.20/14.42 store %23, %3 43.20/14.42 %24 = load %23 43.20/14.42 %25 = zext i8 %24 to i32 43.20/14.42 %26 = sub %21 %25 43.20/14.42 store %26, %1 43.20/14.42 br %40 43.20/14.42 27: 43.20/14.42 %28 = load %2 43.20/14.42 %29 = getelementptr %28, 1 43.20/14.42 store %29, %2 43.20/14.42 %30 = load %28 43.20/14.42 %31 = sext i8 %30 to i32 43.20/14.42 %32 = icmp eq %31 0 43.20/14.42 br %32, %33, %34 43.20/14.42 33: 43.20/14.42 br %39 43.20/14.42 34: 43.20/14.42 br %35 43.20/14.42 35: 43.20/14.42 %36 = load %4 43.20/14.42 %37 = add %36 -1 43.20/14.42 store %37, %4 43.20/14.42 %38 = icmp ne %37 0 43.20/14.42 br %38, %9, %39 43.20/14.42 39: 43.20/14.42 store 0, %1 43.20/14.42 br %40 43.20/14.42 40: 43.20/14.42 %41 = load %1 43.20/14.42 ret %41 43.20/14.42 43.20/14.42 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 43.20/14.42 0: 43.20/14.42 %1 = alloca i32, align 4 43.20/14.42 %length1 = alloca i32, align 4 43.20/14.42 %length2 = alloca i32, align 4 43.20/14.42 %nondetString1 = alloca *i8, align 8 43.20/14.42 %nondetString2 = alloca *i8, align 8 43.20/14.42 store 0, %1 43.20/14.42 %2 = call i32 @__VERIFIER_nondet_int() 43.20/14.42 store %2, %length1 43.20/14.42 %3 = call i32 @__VERIFIER_nondet_int() 43.20/14.42 store %3, %length2 43.20/14.42 %4 = load %length1 43.20/14.42 %5 = icmp slt %4 1 43.20/14.42 br %5, %6, %7 43.20/14.42 6: 43.20/14.42 store 1, %length1 43.20/14.42 br %7 43.20/14.42 7: 43.20/14.42 %8 = load %length2 43.20/14.42 %9 = icmp slt %8 1 43.20/14.42 br %9, %10, %11 43.20/14.42 10: 43.20/14.42 store 1, %length2 43.20/14.42 br %11 43.20/14.42 11: 43.20/14.42 %12 = load %length1 43.20/14.42 %13 = sext i32 %12 to i64 43.20/14.42 %14 = mul %13 1 43.20/14.42 %15 = alloca i8, numElementsLit: %14 43.20/14.42 store %15, %nondetString1 43.20/14.42 %16 = load %length2 43.20/14.42 %17 = sext i32 %16 to i64 43.20/14.42 %18 = mul %17 1 43.20/14.42 %19 = alloca i8, numElementsLit: %18 43.20/14.42 store %19, %nondetString2 43.20/14.42 %20 = load %length1 43.20/14.42 %21 = sub %20 1 43.20/14.42 %22 = sext i32 %21 to i64 43.20/14.42 %23 = load %nondetString1 43.20/14.42 %24 = getelementptr %23, %22 43.20/14.42 store 0, %24 43.20/14.42 %25 = load %length2 43.20/14.42 %26 = sub %25 1 43.20/14.42 %27 = sext i32 %26 to i64 43.20/14.42 %28 = load %nondetString2 43.20/14.42 %29 = getelementptr %28, %27 43.20/14.42 store 0, %29 43.20/14.42 %30 = load %nondetString1 43.20/14.42 %31 = load %nondetString2 43.20/14.42 %32 = call i32 @__VERIFIER_nondet_int() 43.20/14.42 %33 = sext i32 %32 to i64 43.20/14.42 %34 = call i32 @cstrncmp(*i8 %30, *i8 %31, i64 %33) 43.20/14.42 ret %34 43.20/14.42 43.20/14.42 43.20/14.42 Analyze Termination of all function calls matching the pattern: 43.20/14.42 main() 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (3) LLVMToTerminationGraphProof (EQUIVALENT) 43.20/14.42 Constructed symbolic execution graph for LLVM program and proved memory safety. 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (4) 43.20/14.42 Obligation: 43.20/14.42 SE Graph 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (5) SymbolicExecutionGraphToSCCProof (SOUND) 43.20/14.42 Splitted symbolic execution graph to 1 SCC. 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (6) 43.20/14.42 Obligation: 43.20/14.42 SCC 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (7) SCC2IRS (SOUND) 43.20/14.42 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 43.20/14.42 Generated rules. Obtained 27 rulesP rules: 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 Combined rules. Obtained 4 rulesP rules: 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 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 43.20/14.42 Filtered unneeded arguments: 43.20/14.42 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) 43.20/14.42 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 43.20/14.42 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 43.20/14.42 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 43.20/14.42 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (8) 43.20/14.42 Obligation: 43.20/14.42 Rules: 43.20/14.42 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 43.20/14.42 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 43.20/14.42 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (9) IntTRSCompressionProof (EQUIVALENT) 43.20/14.42 Compressed rules. 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (10) 43.20/14.42 Obligation: 43.20/14.42 Rules: 43.20/14.42 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 43.20/14.42 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 43.20/14.42 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (11) PolynomialOrderProcessor (EQUIVALENT) 43.20/14.42 Found the following polynomial interpretation: 43.20/14.42 [f_847(x, x1, x2, x3, x4)] = -x + x3 43.20/14.42 43.20/14.42 The following rules are decreasing: 43.20/14.42 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 43.20/14.42 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 43.20/14.42 The following rules are bounded: 43.20/14.42 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 43.20/14.42 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 43.20/14.42 43.20/14.42 ---------------------------------------- 43.20/14.42 43.20/14.42 (12) 43.20/14.42 YES 43.35/14.49 EOF