/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, 179 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 11.0 s] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) LLVM Symbolic Execution SCC (7) SCC2IRS [SOUND, 202 ms] (8) IntTRS (9) IntTRSCompressionProof [EQUIVALENT, 0 ms] (10) IntTRS (11) PolynomialOrderProcessor [EQUIVALENT, 22 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 i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca *i8, align 8 %3 = alloca *i8, align 8 %4 = alloca i32, align 4 %uc1 = alloca i8, align 1 %uc2 = alloca i8, align 1 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 %57 8: br %9 9: %10 = load %4 %11 = add %10 -1 store %11, %4 %12 = icmp sgt %10 0 br %12, %13, %21 13: %14 = load %2 %15 = load %14 %16 = sext i8 %15 to i32 %17 = load %3 %18 = load %17 %19 = sext i8 %18 to i32 %20 = icmp eq %16 %19 br %21 21: %22 = phi [0, %9], [%20, %13] br %22, %23, %37 23: %24 = load %4 %25 = icmp eq %24 0 br %25, %31, %26 26: %27 = load %2 %28 = load %27 %29 = sext i8 %28 to i32 %30 = icmp eq %29 0 br %30, %31, %32 31: store 0, %1 br %57 32: %33 = load %2 %34 = getelementptr %33, 1 store %34, %2 %35 = load %3 %36 = getelementptr %35, 1 store %36, %3 br %9 37: %38 = load %2 %39 = load %38 store %39, %uc1 %40 = load %3 %41 = load %40 store %41, %uc2 %42 = load %uc1 %43 = zext i8 %42 to i32 %44 = load %uc2 %45 = zext i8 %44 to i32 %46 = icmp slt %43 %45 br %46, %47, %48 47: br %55 48: %49 = load %uc1 %50 = zext i8 %49 to i32 %51 = load %uc2 %52 = zext i8 %51 to i32 %53 = icmp sgt %50 %52 %54 = zext i1 %53 to i32 br %55 55: %56 = phi [-1, %47], [%54, %48] store %56, %1 br %57 57: %58 = load %1 ret %58 *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 = call i32 @cstrncmp(*i8 %30, *i8 %31, i32 %32) ret %33 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 33 rulesP rules: f_1197(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1198(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1198(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1200(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: v7658 != 0 && 2 <= v7657 f_1200(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1202(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1202(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1204(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1204(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1206(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7664, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1206(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7664, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1208(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7664, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1208(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7664, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1210(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1210(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1213(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: v7661 != 0 && v7660 < v7674 && v7662 < v7676 && 3 <= v7674 && 3 <= v7676 f_1213(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1215(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1215(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1217(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1217(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1219(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1219(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1221(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: v8321 = 1 + v7660 && 3 <= v8321 f_1221(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1223(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1223(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1225(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1225(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1226(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: v8323 = 1 + v7662 && 3 <= v8323 f_1226(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1227(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1227(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1228(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1228(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1229(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1229(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1230(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 1 + v8366 = v7658 && 0 <= v8366 f_1230(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1231(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1231(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1232(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1232(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1233(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1233(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v7660, v7661, v7662, v8321, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1234(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v7661, v7662, v7660, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1234(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v7661, v7662, v7660, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1235(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v7661, v7662, v7660, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1235(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v7661, v7662, v7660, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1236(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v7662, v7661, v7660, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1236(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v7662, v7661, v7660, v8323, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1237(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v8323, v7661, v7660, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1237(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v8323, v7661, v7660, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1238(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v8323, v8417, v7661, v7660, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1238(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v8323, v8417, v7661, v7660, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1239(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v8323, v8417, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1239(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8415, v8323, v8417, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1240(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8417, v8323, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: v8415 = v8417 f_1240(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8417, v8323, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1242(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8417, v8323, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1242(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8417, v8323, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1244(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8417, v8323, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: 0 = 0 f_1244(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8417, v8323, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7663, v7664, v7665, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1196(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7658, v8366, 1, v8321, v8417, v8323, v7660, v7661, v7662, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE f_1196(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) -> f_1197(v7647, v7648, v7649, v7650, v7651, v7652, v7653, v7654, v7655, 0, v7657, v7658, 1, v7660, v7661, v7662, v7663, v7664, v7665, v7666, v7677, v7667, v7678, v7668, v7679, v7669, v7680, v7670, v7681, v7674, v7676, v7682, v7683, v7684, v7685, v7686, v7671, v7672, v7673, v7675, 3, 7, 2, 4, 8) :|: TRUE Combined rules. Obtained 2 rulesP rules: f_1197(v7647:0, v7648:0, v7649:0, v7650:0, v7651:0, v7652:0, v7653:0, v7654:0, v7655:0, 0, v7657:0, 1 + v8366:0, 1, v7660:0, v7661:0, v7662:0, v7663:0, v7664:0, v7665:0, v7666:0, v7677:0, v7667:0, v7678:0, v7668:0, v7679:0, v7669:0, v7680:0, v7670:0, v7681:0, v7674:0, v7676:0, v7682:0, v7683:0, v7684:0, v7685:0, v7686:0, v7671:0, v7672:0, v7673:0, v7675:0, 3, 7, 2, 4, 8) -> f_1197(v7647:0, v7648:0, v7649:0, v7650:0, v7651:0, v7652:0, v7653:0, v7654:0, v7655:0, 0, 1 + v8366:0, v8366:0, 1, 1 + v7660:0, v8415:0, 1 + v7662:0, v7660:0, v7661:0, v7662:0, v7666:0, v7677:0, v7667:0, v7678:0, v7668:0, v7679:0, v7669:0, v7680:0, v7670:0, v7681:0, v7674:0, v7676:0, v7682:0, v7683:0, v7684:0, v7685:0, v7686:0, v7671:0, v7672:0, v7673:0, v7675:0, 3, 7, 2, 4, 8) :|: v7657:0 > 1 && v8366:0 > -1 && v7674:0 > v7660:0 && v7661:0 < 0 && v7676:0 > v7662:0 && v7674:0 > 2 && v7676:0 > 2 && v7660:0 > 1 && v7662:0 > 1 f_1197(v7647:0, v7648:0, v7649:0, v7650:0, v7651:0, v7652:0, v7653:0, v7654:0, v7655:0, 0, v7657:0, 1 + v8366:0, 1, v7660:0, v7661:0, v7662:0, v7663:0, v7664:0, v7665:0, v7666:0, v7677:0, v7667:0, v7678:0, v7668:0, v7679:0, v7669:0, v7680:0, v7670:0, v7681:0, v7674:0, v7676:0, v7682:0, v7683:0, v7684:0, v7685:0, v7686:0, v7671:0, v7672:0, v7673:0, v7675:0, 3, 7, 2, 4, 8) -> f_1197(v7647:0, v7648:0, v7649:0, v7650:0, v7651:0, v7652:0, v7653:0, v7654:0, v7655:0, 0, 1 + v8366:0, v8366:0, 1, 1 + v7660:0, v8415:0, 1 + v7662:0, v7660:0, v7661:0, v7662:0, v7666:0, v7677:0, v7667:0, v7678:0, v7668:0, v7679:0, v7669:0, v7680:0, v7670:0, v7681:0, v7674:0, v7676:0, v7682:0, v7683:0, v7684:0, v7685:0, v7686:0, v7671:0, v7672:0, v7673:0, v7675:0, 3, 7, 2, 4, 8) :|: v7657:0 > 1 && v8366:0 > -1 && v7674:0 > v7660:0 && v7661:0 > 0 && v7676:0 > v7662:0 && v7674:0 > 2 && v7676:0 > 2 && v7660:0 > 1 && v7662:0 > 1 Filtered unneeded arguments: f_1197(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_1197(x11, x12, x14, x15, x16, x30, x31) Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: f_1197(v7657:0, sum~cons_1~v8366:0, v7660:0, v7661:0, v7662:0, v7674:0, v7676:0) -> f_1197(1 + v8366:0, v8366:0, 1 + v7660:0, v8415:0, 1 + v7662:0, v7674:0, v7676:0) :|: v8366:0 > -1 && v7657:0 > 1 && v7674:0 > v7660:0 && v7661:0 < 0 && v7676:0 > v7662:0 && v7674:0 > 2 && v7676:0 > 2 && v7662:0 > 1 && v7660:0 > 1 && sum~cons_1~v8366:0 = 1 + v8366:0 f_1197(v7657:0, sum~cons_1~v8366:0, v7660:0, v7661:0, v7662:0, v7674:0, v7676:0) -> f_1197(1 + v8366:0, v8366:0, 1 + v7660:0, v8415:0, 1 + v7662:0, v7674:0, v7676:0) :|: v8366:0 > -1 && v7657:0 > 1 && v7674:0 > v7660:0 && v7661:0 > 0 && v7676:0 > v7662:0 && v7674:0 > 2 && v7676:0 > 2 && v7662:0 > 1 && v7660:0 > 1 && sum~cons_1~v8366:0 = 1 + v8366:0 ---------------------------------------- (8) Obligation: Rules: f_1197(v7657:0, sum~cons_1~v8366:0, v7660:0, v7661:0, v7662:0, v7674:0, v7676:0) -> f_1197(1 + v8366:0, v8366:0, 1 + v7660:0, v8415:0, 1 + v7662:0, v7674:0, v7676:0) :|: v8366:0 > -1 && v7657:0 > 1 && v7674:0 > v7660:0 && v7661:0 < 0 && v7676:0 > v7662:0 && v7674:0 > 2 && v7676:0 > 2 && v7662:0 > 1 && v7660:0 > 1 && sum~cons_1~v8366:0 = 1 + v8366:0 f_1197(x, x1, x2, x3, x4, x5, x6) -> f_1197(1 + x7, x7, 1 + x2, x8, 1 + x4, x5, x6) :|: x7 > -1 && x > 1 && x5 > x2 && x3 > 0 && x6 > x4 && x5 > 2 && x6 > 2 && x4 > 1 && x2 > 1 && x1 = 1 + x7 ---------------------------------------- (9) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (10) Obligation: Rules: f_1197(x:0, sum~cons_1~x7:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f_1197(1 + x7:0, x7:0, 1 + x2:0, x8:0, 1 + x4:0, x5:0, x6:0) :|: x4:0 > 1 && x2:0 > 1 && x6:0 > 2 && x5:0 > 2 && x6:0 > x4:0 && x3:0 > 0 && x5:0 > x2:0 && x:0 > 1 && x7:0 > -1 && sum~cons_1~x7:0 = 1 + x7:0 f_1197(v7657:0:0, sum~cons_1~v8366:0:0, v7660:0:0, v7661:0:0, v7662:0:0, v7674:0:0, v7676:0:0) -> f_1197(1 + v8366:0:0, v8366:0:0, 1 + v7660:0:0, v8415:0:0, 1 + v7662:0:0, v7674:0:0, v7676:0:0) :|: v7662:0:0 > 1 && v7660:0:0 > 1 && v7676:0:0 > 2 && v7674:0:0 > 2 && v7676:0:0 > v7662:0:0 && v7661:0:0 < 0 && v7674:0:0 > v7660:0:0 && v7657:0:0 > 1 && v8366:0:0 > -1 && sum~cons_1~v8366:0:0 = 1 + v8366:0:0 ---------------------------------------- (11) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f_1197(x, x1, x2, x3, x4, x5, x6)] = -1 - x2 + x5 The following rules are decreasing: f_1197(x:0, sum~cons_1~x7:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f_1197(1 + x7:0, x7:0, 1 + x2:0, x8:0, 1 + x4:0, x5:0, x6:0) :|: x4:0 > 1 && x2:0 > 1 && x6:0 > 2 && x5:0 > 2 && x6:0 > x4:0 && x3:0 > 0 && x5:0 > x2:0 && x:0 > 1 && x7:0 > -1 && sum~cons_1~x7:0 = 1 + x7:0 f_1197(v7657:0:0, sum~cons_1~v8366:0:0, v7660:0:0, v7661:0:0, v7662:0:0, v7674:0:0, v7676:0:0) -> f_1197(1 + v8366:0:0, v8366:0:0, 1 + v7660:0:0, v8415:0:0, 1 + v7662:0:0, v7674:0:0, v7676:0:0) :|: v7662:0:0 > 1 && v7660:0:0 > 1 && v7676:0:0 > 2 && v7674:0:0 > 2 && v7676:0:0 > v7662:0:0 && v7661:0:0 < 0 && v7674:0:0 > v7660:0:0 && v7657:0:0 > 1 && v8366:0:0 > -1 && sum~cons_1~v8366:0:0 = 1 + v8366:0:0 The following rules are bounded: f_1197(x:0, sum~cons_1~x7:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f_1197(1 + x7:0, x7:0, 1 + x2:0, x8:0, 1 + x4:0, x5:0, x6:0) :|: x4:0 > 1 && x2:0 > 1 && x6:0 > 2 && x5:0 > 2 && x6:0 > x4:0 && x3:0 > 0 && x5:0 > x2:0 && x:0 > 1 && x7:0 > -1 && sum~cons_1~x7:0 = 1 + x7:0 f_1197(v7657:0:0, sum~cons_1~v8366:0:0, v7660:0:0, v7661:0:0, v7662:0:0, v7674:0:0, v7676:0:0) -> f_1197(1 + v8366:0:0, v8366:0:0, 1 + v7660:0:0, v8415:0:0, 1 + v7662:0:0, v7674:0:0, v7676:0:0) :|: v7662:0:0 > 1 && v7660:0:0 > 1 && v7676:0:0 > 2 && v7674:0:0 > 2 && v7676:0:0 > v7662:0:0 && v7661:0:0 < 0 && v7674:0:0 > v7660:0:0 && v7657:0:0 > 1 && v8366:0:0 > -1 && sum~cons_1~v8366:0:0 = 1 + v8366:0:0 ---------------------------------------- (12) YES