/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, 178 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 13.0 s] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 87 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 8 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 382 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 77 ms] (16) IntTRS (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IntTRS (19) RankingReductionPairProof [EQUIVALENT, 8 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 61 ms] (23) IntTRS (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] (25) IntTRS (26) RankingReductionPairProof [EQUIVALENT, 0 ms] (27) 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: "test_fun" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: (x i32, y i32, z i32) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %3 = alloca i32, align 4 %x_ref = alloca *i32, align 8 %y_ref = alloca *i32, align 8 %z_ref = alloca *i32, align 8 %c = alloca *i32, align 8 store %x, %1 store %y, %2 store %z, %3 %4 = alloca i8, numElementsLit: 4 %5 = bitcast *i8 %4 to *i32 store %5, %x_ref %6 = alloca i8, numElementsLit: 4 %7 = bitcast *i8 %6 to *i32 store %7, %y_ref %8 = alloca i8, numElementsLit: 4 %9 = bitcast *i8 %8 to *i32 store %9, %z_ref %10 = alloca i8, numElementsLit: 4 %11 = bitcast *i8 %10 to *i32 store %11, %c %12 = load %1 %13 = load %x_ref store %12, %13 %14 = load %2 %15 = load %y_ref store %14, %15 %16 = load %3 %17 = load %z_ref store %16, %17 %18 = load %c store 0, %18 br %19 19: %20 = load %x_ref %21 = load %20 %22 = load %z_ref %23 = load %22 %24 = icmp sgt %21 %23 br %24, %25, %50 25: br %26 26: %27 = load %y_ref %28 = load %27 %29 = load %z_ref %30 = load %29 %31 = icmp sgt %28 %30 br %31, %32, %41 32: %33 = load %y_ref %34 = load %33 %35 = sub %34 1 %36 = load %y_ref store %35, %36 %37 = load %c %38 = load %37 %39 = add %38 1 %40 = load %c store %39, %40 br %26 41: %42 = load %c %43 = load %42 %44 = add %43 1 %45 = load %c store %44, %45 %46 = load %x_ref %47 = load %46 %48 = sub %47 1 %49 = load %x_ref store %48, %49 br %19 50: %51 = load %c %52 = load %51 ret %52 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() %3 = call i32 @__VERIFIER_nondet_int() %4 = call i32 @__VERIFIER_nondet_int() %5 = call i32 @test_fun(i32 %2, i32 %3, i32 %4) ret %5 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 3 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 26 rulesP rules: f_839(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1259, 1, 0, v1262, v1263, v1264, v1265, v1266, v1267, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_840(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_840(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_841(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_841(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_842(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_842(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_843(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: v1247 < v1267 f_843(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_845(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_845(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_847(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: TRUE f_847(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_849(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: TRUE f_849(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_851(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_851(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_853(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_853(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_855(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_855(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_856(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_856(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_857(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_857(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_858(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: TRUE f_858(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_859(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_859(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1265, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_860(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_860(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_861(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: v1378 = 1 + v1266 && 3 <= v1378 f_861(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_862(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_862(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_863(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: TRUE f_863(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_864(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_864(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1259, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_865(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_865(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_866(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 1 + v1380 = v1267 f_866(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_867(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 f_867(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_868(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: TRUE f_868(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_869(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: TRUE f_869(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_838(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1267, 1, 0, v1262, v1263, v1264, v1266, v1378, v1380, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: TRUE f_838(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1259, 1, 0, v1262, v1263, v1264, v1265, v1266, v1267, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) -> f_839(v1245, v1246, v1247, v1248, v1249, v1250, v1251, v1252, v1253, v1254, v1255, v1256, v1257, v1258, v1259, 1, 0, v1262, v1263, v1264, v1265, v1266, v1267, v1268, v1269, v1270, v1271, v1272, v1273, v1274, v1275, v1276, v1277, v1278, v1279, v1280, 3, 7, 2, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_839(v1245:0, v1246:0, v1247:0, v1248:0, v1249:0, v1250:0, v1251:0, v1252:0, v1253:0, v1254:0, v1255:0, v1256:0, v1257:0, v1258:0, v1259:0, 1, 0, v1262:0, v1263:0, v1264:0, v1265:0, v1266:0, 1 + v1380:0, v1268:0, v1269:0, v1270:0, v1271:0, v1272:0, v1273:0, v1274:0, v1275:0, v1276:0, v1277:0, v1278:0, v1279:0, v1280:0, 3, 7, 2, 4, 8) -> f_839(v1245:0, v1246:0, v1247:0, v1248:0, v1249:0, v1250:0, v1251:0, v1252:0, v1253:0, v1254:0, v1255:0, v1256:0, v1257:0, v1258:0, 1 + v1380:0, 1, 0, v1262:0, v1263:0, v1264:0, v1266:0, 1 + v1266:0, v1380:0, v1268:0, v1269:0, v1270:0, v1271:0, v1272:0, v1273:0, v1274:0, v1275:0, v1276:0, v1277:0, v1278:0, v1279:0, v1280:0, 3, 7, 2, 4, 8) :|: v1266:0 > 1 && v1247:0 < 1 + v1380:0 Filtered unneeded arguments: f_839(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) -> f_839(x3, x22, x23) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_839(v1247:0, v1266:0, sum~cons_1~v1380:0) -> f_839(v1247:0, 1 + v1266:0, v1380:0) :|: v1266:0 > 1 && v1247:0 < 1 + v1380:0 && sum~cons_1~v1380:0 = 1 + v1380:0 ---------------------------------------- (9) Obligation: Rules: f_839(v1247:0, v1266:0, sum~cons_1~v1380:0) -> f_839(v1247:0, 1 + v1266:0, v1380:0) :|: v1266:0 > 1 && v1247:0 < 1 + v1380:0 && sum~cons_1~v1380:0 = 1 + v1380:0 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_839_3,1) ---------------------------------------- (11) Obligation: START: 0; FROM: 0; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := oldX2 - 1; assume(oldX1 > 1 && oldX0 < 1 + oldX3 && oldX2 = 1 + oldX3); x0 := oldX0; x1 := 1 + oldX1; x2 := oldX2 - 1; TO: 1; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 1, 3, 4 using the following rank functions: - Rank function 1: RF for loc. 5: -x0+x2 RF for loc. 6: -x0+x2 Bound for (chained) transitions 3: 1 - Rank function 2: RF for loc. 5: -x0+x2 RF for loc. 6: -x0+x2 Bound for (chained) transitions 4: 1 - Rank function 3: RF for loc. 5: 0 RF for loc. 6: -1 Bound for (chained) transitions 1: 0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 26 rulesP rules: f_776(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v945, 1, 0, v948, v949, v950, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_778(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_778(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_780(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_780(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_782(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_782(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_784(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: v933 < v950 f_784(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_788(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_788(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_792(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: TRUE f_792(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_796(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: TRUE f_796(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_800(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_800(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_804(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_804(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_808(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_808(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_810(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_810(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_812(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_812(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_814(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: TRUE f_814(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_816(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_816(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v948, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_818(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 f_818(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_820(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: v1166 = 1 + v949 && 2 <= v1166 f_820(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_822(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: 0 = 0 f_822(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_824(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: TRUE f_824(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_826(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: 0 = 0 f_826(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v945, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_828(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: 0 = 0 f_828(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_830(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: 1 + v1170 = v950 f_830(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_832(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: 0 = 0 f_832(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_834(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: TRUE f_834(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_836(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) :|: TRUE f_836(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8, 2) -> f_773(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v950, 1, 0, v949, v1166, v1170, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: TRUE f_773(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v945, 1, 0, v948, v949, v950, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) -> f_776(v931, v932, v933, v934, v935, v936, v937, v938, v939, v940, v941, v942, v943, v944, v945, 1, 0, v948, v949, v950, v951, v952, v953, v954, v955, v956, v957, v958, v959, v960, v961, v962, v963, 3, 7, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_776(v931:0, v932:0, v933:0, v934:0, v935:0, v936:0, v937:0, v938:0, v939:0, v940:0, v941:0, v942:0, v943:0, v944:0, v945:0, 1, 0, v948:0, v949:0, 1 + v1170:0, v951:0, v952:0, v953:0, v954:0, v955:0, v956:0, v957:0, v958:0, v959:0, v960:0, v961:0, v962:0, v963:0, 3, 7, 4, 8) -> f_776(v931:0, v932:0, v933:0, v934:0, v935:0, v936:0, v937:0, v938:0, v939:0, v940:0, v941:0, v942:0, v943:0, v944:0, 1 + v1170:0, 1, 0, v949:0, 1 + v949:0, v1170:0, v951:0, v952:0, v953:0, v954:0, v955:0, v956:0, v957:0, v958:0, v959:0, v960:0, v961:0, v962:0, v963:0, 3, 7, 4, 8) :|: v949:0 > 0 && v933:0 < 1 + v1170:0 Filtered unneeded arguments: f_776(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) -> f_776(x3, x19, x20) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_776(v933:0, v949:0, sum~cons_1~v1170:0) -> f_776(v933:0, 1 + v949:0, v1170:0) :|: v949:0 > 0 && v933:0 < 1 + v1170:0 && sum~cons_1~v1170:0 = 1 + v1170:0 ---------------------------------------- (16) Obligation: Rules: f_776(v933:0, v949:0, sum~cons_1~v1170:0) -> f_776(v933:0, 1 + v949:0, v1170:0) :|: v949:0 > 0 && v933:0 < 1 + v1170:0 && sum~cons_1~v1170:0 = 1 + v1170:0 ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: f_776(v933:0:0, v949:0:0, sum~cons_1~v1170:0:0) -> f_776(v933:0:0, 1 + v949:0:0, v1170:0:0) :|: v949:0:0 > 0 && v933:0:0 < 1 + v1170:0:0 && sum~cons_1~v1170:0:0 = 1 + v1170:0:0 ---------------------------------------- (19) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_776 ] = -1*f_776_1 + f_776_3 The following rules are decreasing: f_776(v933:0:0, v949:0:0, sum~cons_1~v1170:0:0) -> f_776(v933:0:0, 1 + v949:0:0, v1170:0:0) :|: v949:0:0 > 0 && v933:0:0 < 1 + v1170:0:0 && sum~cons_1~v1170:0:0 = 1 + v1170:0:0 The following rules are bounded: f_776(v933:0:0, v949:0:0, sum~cons_1~v1170:0:0) -> f_776(v933:0:0, 1 + v949:0:0, v1170:0:0) :|: v949:0:0 > 0 && v933:0:0 < 1 + v1170:0:0 && sum~cons_1~v1170:0:0 = 1 + v1170:0:0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 19 rulesP rules: f_660(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v636, v637, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_663(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_663(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_666(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_666(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_668(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_668(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_670(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: v623 < v637 f_670(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_673(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_673(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_676(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: TRUE f_676(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_679(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_679(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v636, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_682(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_682(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_685(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 1 + v687 = v637 f_685(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_688(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_688(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_691(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: TRUE f_691(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_694(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_694(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_697(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 f_697(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_700(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) :|: v693 = 1 + v639 && 2 <= v693 f_700(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) -> f_703(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) :|: 0 = 0 f_703(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) -> f_706(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) :|: TRUE f_706(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) -> f_710(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) :|: TRUE f_710(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8, 2) -> f_657(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v637, v687, v639, v693, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: TRUE f_657(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v636, v637, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) -> f_660(v621, v622, v623, v624, v625, v626, v627, v628, v629, v630, v631, v632, v633, v634, 1, v636, v637, v638, v639, v640, v641, v642, v643, v644, v645, v646, v647, v648, v649, v650, v651, v652, 0, 3, 7, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_660(v621:0, v622:0, v623:0, v624:0, v625:0, v626:0, v627:0, v628:0, v629:0, v630:0, v631:0, v632:0, v633:0, v634:0, 1, v636:0, 1 + v687:0, v638:0, v639:0, v640:0, v641:0, v642:0, v643:0, v644:0, v645:0, v646:0, v647:0, v648:0, v649:0, v650:0, v651:0, v652:0, 0, 3, 7, 4, 8) -> f_660(v621:0, v622:0, v623:0, v624:0, v625:0, v626:0, v627:0, v628:0, v629:0, v630:0, v631:0, v632:0, v633:0, v634:0, 1, 1 + v687:0, v687:0, v639:0, 1 + v639:0, v640:0, v641:0, v642:0, v643:0, v644:0, v645:0, v646:0, v647:0, v648:0, v649:0, v650:0, v651:0, v652:0, 0, 3, 7, 4, 8) :|: v639:0 > 0 && v623:0 < 1 + v687:0 Filtered unneeded arguments: f_660(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) -> f_660(x3, x17, x19) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_660(v623:0, sum~cons_1~v687:0, v639:0) -> f_660(v623:0, v687:0, 1 + v639:0) :|: v639:0 > 0 && v623:0 < 1 + v687:0 && sum~cons_1~v687:0 = 1 + v687:0 ---------------------------------------- (23) Obligation: Rules: f_660(v623:0, sum~cons_1~v687:0, v639:0) -> f_660(v623:0, v687:0, 1 + v639:0) :|: v639:0 > 0 && v623:0 < 1 + v687:0 && sum~cons_1~v687:0 = 1 + v687:0 ---------------------------------------- (24) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (25) Obligation: Rules: f_660(v623:0:0, sum~cons_1~v687:0:0, v639:0:0) -> f_660(v623:0:0, v687:0:0, 1 + v639:0:0) :|: v639:0:0 > 0 && v623:0:0 < 1 + v687:0:0 && sum~cons_1~v687:0:0 = 1 + v687:0:0 ---------------------------------------- (26) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_660 ] = -1*f_660_1 + f_660_2 The following rules are decreasing: f_660(v623:0:0, sum~cons_1~v687:0:0, v639:0:0) -> f_660(v623:0:0, v687:0:0, 1 + v639:0:0) :|: v639:0:0 > 0 && v623:0:0 < 1 + v687:0:0 && sum~cons_1~v687:0:0 = 1 + v687:0:0 The following rules are bounded: f_660(v623:0:0, sum~cons_1~v687:0:0, v639:0:0) -> f_660(v623:0:0, v687:0:0, 1 + v639:0:0) :|: v639:0:0 > 0 && v623:0:0 < 1 + v687:0:0 && sum~cons_1~v687:0:0 = 1 + v687:0:0 ---------------------------------------- (27) YES