/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, 175 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 8155 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 102 ms] (9) IntTRS (10) IntTRSCompressionProof [EQUIVALENT, 1 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 0 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 88 ms] (16) IntTRS (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IntTRS (19) RankingReductionPairProof [EQUIVALENT, 0 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) variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %2 = alloca i32, align 4 %x_ref = alloca *i32, align 8 %y_ref = alloca *i32, align 8 %c = alloca *i32, align 8 store %x, %1 store %y, %2 %3 = alloca i8, numElementsLit: 4 %4 = bitcast *i8 %3 to *i32 store %4, %x_ref %5 = alloca i8, numElementsLit: 4 %6 = bitcast *i8 %5 to *i32 store %6, %y_ref %7 = alloca i8, numElementsLit: 4 %8 = bitcast *i8 %7 to *i32 store %8, %c %9 = load %1 %10 = load %x_ref store %9, %10 %11 = load %2 %12 = load %y_ref store %11, %12 %13 = load %c store 0, %13 br %14 14: %15 = load %x_ref %16 = load %15 %17 = icmp sgt %16 0 br %17, %22, %18 18: %19 = load %y_ref %20 = load %19 %21 = icmp sgt %20 0 br %22 22: %23 = phi [1, %14], [%21, %18] br %23, %24, %49 24: %25 = load %x_ref %26 = load %25 %27 = icmp sgt %26 0 br %27, %28, %33 28: %29 = load %x_ref %30 = load %29 %31 = sub %30 1 %32 = load %x_ref store %31, %32 br %44 33: %34 = load %y_ref %35 = load %34 %36 = icmp sgt %35 0 br %36, %37, %42 37: %38 = load %y_ref %39 = load %38 %40 = sub %39 1 %41 = load %y_ref store %40, %41 br %43 42: br %43 43: br %44 44: %45 = load %c %46 = load %45 %47 = add %46 1 %48 = load %c store %47, %48 br %14 49: %50 = load %c %51 = load %50 ret %51 *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 @test_fun(i32 %2, i32 %3) ret %4 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 32 rulesP rules: f_998(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1463, v1464, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) -> f_1000(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1463, v1464, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) :|: 0 = 0 f_1000(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1463, v1464, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) -> f_1002(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) :|: 0 = 0 f_1002(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) -> f_1004(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: v1490 = 1 + v1464 && 2 <= v1490 f_1004(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1006(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: 0 = 0 f_1006(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1008(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: TRUE f_1008(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1010(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: TRUE f_1010(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1012(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: 0 = 0 f_1012(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1014(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: 0 = 0 f_1014(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1015(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: 0 = 0 f_1015(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1016(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: TRUE f_1016(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1017(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: 0 = 0 f_1017(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1018(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) :|: 0 = 0 f_1018(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8, 2) -> f_1019(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 < v1466 && 2 <= v1465 && 2 <= v1452 f_1019(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1021(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1021(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1023(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1023(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1025(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: TRUE f_1025(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1027(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1027(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1029(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1029(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1031(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1031(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1033(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: TRUE f_1033(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1034(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1034(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1035(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1035(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1036(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1036(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1037(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: TRUE f_1037(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1038(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1038(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1465, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1039(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1039(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1040(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 1 + v1622 = v1466 && 0 <= v1622 f_1040(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1041(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: 0 = 0 f_1041(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1042(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: TRUE f_1042(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_1043(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) :|: TRUE f_1043(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 2, 4, 8) -> f_996(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1464, v1490, v1466, v1622, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) :|: TRUE f_996(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1463, v1464, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) -> f_998(v1451, v1452, v1453, v1454, v1455, v1456, v1457, v1458, v1459, v1460, 0, 1, v1463, v1464, v1465, v1466, v1467, v1468, v1469, v1470, v1471, v1472, v1473, v1474, v1475, v1476, 3, 7, 4, 8) :|: TRUE Combined rules. Obtained 1 rulesP rules: f_998(v1451:0, v1452:0, v1453:0, v1454:0, v1455:0, v1456:0, v1457:0, v1458:0, v1459:0, v1460:0, 0, 1, v1463:0, v1464:0, v1465:0, 1 + v1622:0, v1467:0, v1468:0, v1469:0, v1470:0, v1471:0, v1472:0, v1473:0, v1474:0, v1475:0, v1476:0, 3, 7, 4, 8) -> f_998(v1451:0, v1452:0, v1453:0, v1454:0, v1455:0, v1456:0, v1457:0, v1458:0, v1459:0, v1460:0, 0, 1, v1464:0, 1 + v1464:0, 1 + v1622:0, v1622:0, v1467:0, v1468:0, v1469:0, v1470:0, v1471:0, v1472:0, v1473:0, v1474:0, v1475:0, v1476:0, 3, 7, 4, 8) :|: v1464:0 > 0 && v1465:0 > 1 && v1622:0 > -1 && v1452:0 > 1 Filtered unneeded arguments: f_998(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) -> f_998(x2, x14, x15, x16) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_998(v1452:0, v1464:0, v1465:0, sum~cons_1~v1622:0) -> f_998(v1452:0, 1 + v1464:0, 1 + v1622:0, v1622:0) :|: v1465:0 > 1 && v1464:0 > 0 && v1452:0 > 1 && v1622:0 > -1 && sum~cons_1~v1622:0 = 1 + v1622:0 ---------------------------------------- (9) Obligation: Rules: f_998(v1452:0, v1464:0, v1465:0, sum~cons_1~v1622:0) -> f_998(v1452:0, 1 + v1464:0, 1 + v1622:0, v1622:0) :|: v1465:0 > 1 && v1464:0 > 0 && v1452:0 > 1 && v1622:0 > -1 && sum~cons_1~v1622:0 = 1 + v1622:0 ---------------------------------------- (10) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (11) Obligation: Rules: f_998(v1452:0:0, v1464:0:0, v1465:0:0, sum~cons_1~v1622:0:0) -> f_998(v1452:0:0, 1 + v1464:0:0, 1 + v1622:0:0, v1622:0:0) :|: v1452:0:0 > 1 && v1622:0:0 > -1 && v1464:0:0 > 0 && v1465:0:0 > 1 && sum~cons_1~v1622:0:0 = 1 + v1622:0:0 ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_998 ] = f_998_4 The following rules are decreasing: f_998(v1452:0:0, v1464:0:0, v1465:0:0, sum~cons_1~v1622:0:0) -> f_998(v1452:0:0, 1 + v1464:0:0, 1 + v1622:0:0, v1622:0:0) :|: v1452:0:0 > 1 && v1622:0:0 > -1 && v1464:0:0 > 0 && v1465:0:0 > 1 && sum~cons_1~v1622:0:0 = 1 + v1622:0:0 The following rules are bounded: f_998(v1452:0:0, v1464:0:0, v1465:0:0, sum~cons_1~v1622:0:0) -> f_998(v1452:0:0, 1 + v1464:0:0, 1 + v1622:0:0, v1622:0:0) :|: v1452:0:0 > 1 && v1622:0:0 > -1 && v1464:0:0 > 0 && v1465:0:0 > 1 && sum~cons_1~v1622:0:0 = 1 + v1622:0:0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 32 rulesP rules: f_938(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) -> f_940(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) :|: 0 = 0 f_940(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) -> f_942(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) :|: 0 = 0 f_942(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) -> f_944(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) :|: TRUE f_944(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) -> f_946(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) :|: 0 = 0 f_946(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) -> f_949(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) :|: 0 = 0 f_949(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) -> f_952(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 < v1303 && 2 <= v1301 && 2 <= v1291 f_952(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_956(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_956(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_960(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_960(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_964(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_964(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_968(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_968(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_972(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_972(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_975(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_975(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_978(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_978(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_980(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_980(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_982(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_982(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_984(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_984(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_986(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_986(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_988(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_988(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1301, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_990(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_990(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_992(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 1 + v1449 = v1303 && 0 <= v1449 f_992(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_994(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_994(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_997(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_997(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_999(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_999(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_1001(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_1001(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_1003(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_1003(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_1005(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_1005(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_1007(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: v1491 = 1 + v1305 && 2 <= v1491 f_1007(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_1009(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: 0 = 0 f_1009(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_1011(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_1011(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_1013(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) :|: TRUE f_1013(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 2, 4, 8) -> f_936(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1303, 1, v1449, v1305, v1491, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) :|: TRUE f_936(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) -> f_938(v1290, v1291, v1292, v1293, v1294, v1295, v1296, v1297, v1298, v1299, 0, v1301, 1, v1303, v1304, v1305, v1306, v1307, v1308, v1309, v1310, v1311, v1312, v1313, v1314, v1315, 3, 7, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_938(v1290:0, v1291:0, v1292:0, v1293:0, v1294:0, v1295:0, v1296:0, v1297:0, v1298:0, v1299:0, 0, v1301:0, 1, 1 + v1449:0, v1304:0, v1305:0, v1306:0, v1307:0, v1308:0, v1309:0, v1310:0, v1311:0, v1312:0, v1313:0, v1314:0, v1315:0, 3, 7, 4, 8) -> f_938(v1290:0, v1291:0, v1292:0, v1293:0, v1294:0, v1295:0, v1296:0, v1297:0, v1298:0, v1299:0, 0, 1 + v1449:0, 1, v1449:0, v1305:0, 1 + v1305:0, v1306:0, v1307:0, v1308:0, v1309:0, v1310:0, v1311:0, v1312:0, v1313:0, v1314:0, v1315:0, 3, 7, 4, 8) :|: v1301:0 > 1 && v1449:0 > -1 && v1291:0 > 1 && v1305:0 > 0 Filtered unneeded arguments: f_938(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) -> f_938(x2, x12, x14, x16) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_938(v1291:0, v1301:0, sum~cons_1~v1449:0, v1305:0) -> f_938(v1291:0, 1 + v1449:0, v1449:0, 1 + v1305:0) :|: v1449:0 > -1 && v1301:0 > 1 && v1305:0 > 0 && v1291:0 > 1 && sum~cons_1~v1449:0 = 1 + v1449:0 ---------------------------------------- (16) Obligation: Rules: f_938(v1291:0, v1301:0, sum~cons_1~v1449:0, v1305:0) -> f_938(v1291:0, 1 + v1449:0, v1449:0, 1 + v1305:0) :|: v1449:0 > -1 && v1301:0 > 1 && v1305:0 > 0 && v1291:0 > 1 && sum~cons_1~v1449:0 = 1 + v1449:0 ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: f_938(v1291:0:0, v1301:0:0, sum~cons_1~v1449:0:0, v1305:0:0) -> f_938(v1291:0:0, 1 + v1449:0:0, v1449:0:0, 1 + v1305:0:0) :|: v1305:0:0 > 0 && v1291:0:0 > 1 && v1301:0:0 > 1 && v1449:0:0 > -1 && sum~cons_1~v1449:0:0 = 1 + v1449:0:0 ---------------------------------------- (19) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_938 ] = f_938_3 The following rules are decreasing: f_938(v1291:0:0, v1301:0:0, sum~cons_1~v1449:0:0, v1305:0:0) -> f_938(v1291:0:0, 1 + v1449:0:0, v1449:0:0, 1 + v1305:0:0) :|: v1305:0:0 > 0 && v1291:0:0 > 1 && v1301:0:0 > 1 && v1449:0:0 > -1 && sum~cons_1~v1449:0:0 = 1 + v1449:0:0 The following rules are bounded: f_938(v1291:0:0, v1301:0:0, sum~cons_1~v1449:0:0, v1305:0:0) -> f_938(v1291:0:0, 1 + v1449:0:0, v1449:0:0, 1 + v1305:0:0) :|: v1305:0:0 > 0 && v1291:0:0 > 1 && v1301:0:0 > 1 && v1449:0:0 > -1 && sum~cons_1~v1449:0:0 = 1 + v1449:0:0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 23 rulesP rules: f_757(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v724, 1, v726, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 4, 8) -> f_759(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 4, 8) :|: 0 = 0 f_759(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 4, 8) -> f_762(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 < v726 && 2 <= v724 && 2 <= v714 f_762(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_765(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_765(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_768(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_768(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_771(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: TRUE f_771(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_774(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_774(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_777(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_777(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_781(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_781(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_786(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: TRUE f_786(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_791(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_791(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v724, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_796(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_796(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_801(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 1 + v817 = v726 && 0 <= v817 f_801(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_806(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_806(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_811(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: TRUE f_811(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_815(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: TRUE f_815(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_818(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_818(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_821(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_821(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_824(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: v819 = 1 + v728 && 2 <= v819 f_824(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_827(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: 0 = 0 f_827(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_830(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: TRUE f_830(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_833(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) :|: TRUE f_833(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 2, 4, 8) -> f_755(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v726, 1, v817, v728, v819, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 4, 8) :|: TRUE f_755(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v724, 1, v726, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 4, 8) -> f_757(v714, v715, v716, v717, v718, v719, v720, v721, v722, v723, v724, 1, v726, v727, v728, v729, v730, v731, v732, v733, v734, v735, v736, v737, v738, 0, 3, 7, 4, 8) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_757(v714:0, v715:0, v716:0, v717:0, v718:0, v719:0, v720:0, v721:0, v722:0, v723:0, v724:0, 1, 1 + v817:0, v727:0, v728:0, v729:0, v730:0, v731:0, v732:0, v733:0, v734:0, v735:0, v736:0, v737:0, v738:0, 0, 3, 7, 4, 8) -> f_757(v714:0, v715:0, v716:0, v717:0, v718:0, v719:0, v720:0, v721:0, v722:0, v723:0, 1 + v817:0, 1, v817:0, v728:0, 1 + v728:0, v729:0, v730:0, v731:0, v732:0, v733:0, v734:0, v735:0, v736:0, v737:0, v738:0, 0, 3, 7, 4, 8) :|: v724:0 > 1 && v817:0 > -1 && v714:0 > 1 && v728:0 > 0 Filtered unneeded arguments: f_757(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) -> f_757(x1, x11, x13, x15) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_757(v714:0, v724:0, sum~cons_1~v817:0, v728:0) -> f_757(v714:0, 1 + v817:0, v817:0, 1 + v728:0) :|: v817:0 > -1 && v724:0 > 1 && v728:0 > 0 && v714:0 > 1 && sum~cons_1~v817:0 = 1 + v817:0 ---------------------------------------- (23) Obligation: Rules: f_757(v714:0, v724:0, sum~cons_1~v817:0, v728:0) -> f_757(v714:0, 1 + v817:0, v817:0, 1 + v728:0) :|: v817:0 > -1 && v724:0 > 1 && v728:0 > 0 && v714:0 > 1 && sum~cons_1~v817:0 = 1 + v817:0 ---------------------------------------- (24) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (25) Obligation: Rules: f_757(v714:0:0, v724:0:0, sum~cons_1~v817:0:0, v728:0:0) -> f_757(v714:0:0, 1 + v817:0:0, v817:0:0, 1 + v728:0:0) :|: v728:0:0 > 0 && v714:0:0 > 1 && v724:0:0 > 1 && v817:0:0 > -1 && sum~cons_1~v817:0:0 = 1 + v817:0:0 ---------------------------------------- (26) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_757 ] = f_757_3 The following rules are decreasing: f_757(v714:0:0, v724:0:0, sum~cons_1~v817:0:0, v728:0:0) -> f_757(v714:0:0, 1 + v817:0:0, v817:0:0, 1 + v728:0:0) :|: v728:0:0 > 0 && v714:0:0 > 1 && v724:0:0 > 1 && v817:0:0 > -1 && sum~cons_1~v817:0:0 = 1 + v817:0:0 The following rules are bounded: f_757(v714:0:0, v724:0:0, sum~cons_1~v817:0:0, v728:0:0) -> f_757(v714:0:0, 1 + v817:0:0, v817:0:0, 1 + v728:0:0) :|: v728:0:0 > 0 && v714:0:0 > 1 && v724:0:0 > 1 && v817:0:0 > -1 && sum~cons_1~v817:0:0 = 1 + v817:0:0 ---------------------------------------- (27) YES