/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/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, 180 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 3716 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 69 ms] (9) IntTRS (10) IntTRSCompressionProof [EQUIVALENT, 2 ms] (11) IntTRS (12) RankingReductionPairProof [EQUIVALENT, 24 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 80 ms] (16) IntTRS (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IntTRS (19) RankingReductionPairProof [EQUIVALENT, 6 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 44 ms] (23) IntTRS (24) RankingReductionPairProof [EQUIVALENT, 5 ms] (25) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/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 %c = alloca i32, align 4 store %x, %1 store %y, %2 store %z, %3 store 0, %c br %4 4: %5 = load %1 %6 = load %2 %7 = icmp slt %5 %6 br %7, %8, %21 8: %9 = load %1 %10 = load %3 %11 = icmp slt %9 %10 br %11, %12, %15 12: %13 = load %1 %14 = add %13 1 store %14, %1 br %18 15: %16 = load %3 %17 = add %16 1 store %17, %3 br %18 18: %19 = load %c %20 = add %19 1 store %20, %c br %4 21: %22 = load %c ret %22 *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 35 rulesP rules: f_571(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4) -> f_572(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: v1458 = 1 + v1450 && 2 <= v1458 f_572(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_573(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: TRUE f_573(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_574(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: TRUE f_574(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_575(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: 0 = 0 f_575(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_576(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: 0 = 0 f_576(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_577(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: 0 = 0 f_577(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_578(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: TRUE f_578(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_579(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: 0 = 0 f_579(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1458, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_580(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, 0, v1448, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) :|: 0 = 0 f_580(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, 0, v1448, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4, 2) -> f_581(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1448, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) :|: 0 = 0 f_581(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1448, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) -> f_582(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1448, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) :|: TRUE f_582(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1448, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) -> f_583(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) :|: 0 = 0 f_583(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) -> f_584(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) :|: v1451 = 1 + v1445 f_584(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) -> f_585(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) :|: TRUE f_585(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) -> f_586(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) :|: TRUE f_586(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4, 2) -> f_587(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, v1451, v1450, v1458, v1452, v1453, v1454, v1455, v1456, v1457, 0, 3, 4) :|: TRUE f_587(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1575, v1576, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4) -> f_588(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4) :|: 0 = 0 f_588(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4) -> f_589(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: v1617 = 1 + v1576 && 2 <= v1617 f_589(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_590(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: TRUE f_590(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_591(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: TRUE f_591(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, 1, v1574, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_592(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: 0 = 0 f_592(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_593(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: 0 = 0 f_593(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_594(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: v1574 < v1566 f_594(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_596(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: 0 = 0 f_596(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_598(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: TRUE f_598(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_600(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: 0 = 0 f_600(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_602(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) :|: 0 = 0 f_602(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 0, 3, 4, 2) -> f_604(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) :|: 0 = 0 f_604(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) -> f_605(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) :|: TRUE f_605(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1572, v1576, v1617, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) -> f_606(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) :|: 0 = 0 f_606(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) -> f_607(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1712, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) :|: v1712 = 1 + v1574 f_607(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1712, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) -> f_608(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1712, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) :|: TRUE f_608(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1712, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) -> f_609(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1712, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) :|: TRUE f_609(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1712, v1576, v1617, v1572, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4, 2) -> f_570(v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1574, 1, 0, v1572, v1576, v1617, v1712, v1577, v1578, v1579, v1580, v1581, v1582, 3, 4) :|: TRUE f_570(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1449, v1450, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4) -> f_571(v1438, v1439, v1440, v1441, v1442, v1443, v1444, v1445, 1, 0, v1448, v1450, v1451, v1452, v1453, v1454, v1455, v1456, v1457, 3, 4) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_571(v1438:0, v1439:0, v1440:0, v1441:0, v1442:0, v1443:0, v1444:0, v1445:0, 1, 0, v1448:0, v1450:0, 1 + v1445:0, v1452:0, v1453:0, v1454:0, v1455:0, v1456:0, v1457:0, 3, 4) -> f_571(v1438:0, v1439:0, v1440:0, v1441:0, v1442:0, v1443:0, v1444:0, 1 + v1445:0, 1, 0, v1445:0, 1 + (1 + v1450:0), 1 + (1 + v1445:0), v1452:0, v1453:0, v1454:0, v1455:0, v1456:0, v1457:0, 3, 4) :|: v1439:0 > 1 + v1445:0 && v1450:0 > 0 Filtered unneeded arguments: f_571(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_571(x2, x8, x12, x13) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_571(v1439:0, v1445:0, v1450:0, sum~cons_1~v1445:0) -> f_571(v1439:0, 1 + v1445:0, 1 + (1 + v1450:0), 1 + (1 + v1445:0)) :|: v1439:0 > 1 + v1445:0 && v1450:0 > 0 && sum~cons_1~v1445:0 = 1 + v1445:0 ---------------------------------------- (9) Obligation: Rules: f_571(v1439:0, v1445:0, v1450:0, sum~cons_1~v1445:0) -> f_571(v1439:0, 1 + v1445:0, 1 + (1 + v1450:0), 1 + (1 + v1445:0)) :|: v1439:0 > 1 + v1445:0 && v1450:0 > 0 && sum~cons_1~v1445:0 = 1 + v1445:0 ---------------------------------------- (10) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (11) Obligation: Rules: f_571(v1439:0:0, v1445:0:0, v1450:0:0, sum~cons_1~v1445:0:0) -> f_571(v1439:0:0, 1 + v1445:0:0, 1 + (1 + v1450:0:0), 1 + (1 + v1445:0:0)) :|: v1439:0:0 > 1 + v1445:0:0 && v1450:0:0 > 0 && sum~cons_1~v1445:0:0 = 1 + v1445:0:0 ---------------------------------------- (12) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_571 ] = f_571_1 + -1*f_571_2 The following rules are decreasing: f_571(v1439:0:0, v1445:0:0, v1450:0:0, sum~cons_1~v1445:0:0) -> f_571(v1439:0:0, 1 + v1445:0:0, 1 + (1 + v1450:0:0), 1 + (1 + v1445:0:0)) :|: v1439:0:0 > 1 + v1445:0:0 && v1450:0:0 > 0 && sum~cons_1~v1445:0:0 = 1 + v1445:0:0 The following rules are bounded: f_571(v1439:0:0, v1445:0:0, v1450:0:0, sum~cons_1~v1445:0:0) -> f_571(v1439:0:0, 1 + v1445:0:0, 1 + (1 + v1450:0:0), 1 + (1 + v1445:0:0)) :|: v1439:0:0 > 1 + v1445:0:0 && v1450:0:0 > 0 && sum~cons_1~v1445:0:0 = 1 + v1445:0:0 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 19 rulesP rules: f_488(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_490(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 f_490(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_493(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: v1023 < v1015 f_493(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_497(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 f_497(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_501(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: TRUE f_501(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_505(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 f_505(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_509(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 f_509(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_513(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: v1023 < v1016 f_513(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_517(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 f_517(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_521(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: TRUE f_521(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_525(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 f_525(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_529(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: v1101 = 1 + v1023 f_529(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_533(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: TRUE f_533(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_536(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: TRUE f_536(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_539(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 f_539(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_543(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1222, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4, 2) :|: v1222 = 1 + v1025 && 2 <= v1222 f_543(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1222, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4, 2) -> f_547(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1222, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4, 2) :|: TRUE f_547(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1222, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4, 2) -> f_551(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1222, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4, 2) :|: TRUE f_551(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1222, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4, 2) -> f_486(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1101, v1025, v1222, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: TRUE f_486(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1021, 1, v1023, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) -> f_488(v1014, v1015, v1016, v1017, v1018, v1019, v1020, v1023, 1, v1021, v1024, v1025, v1026, v1027, v1028, v1029, v1030, v1031, 0, 3, 4) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_488(v1014:0, v1015:0, v1016:0, v1017:0, v1018:0, v1019:0, v1020:0, v1023:0, 1, v1021:0, v1024:0, v1025:0, v1026:0, v1027:0, v1028:0, v1029:0, v1030:0, v1031:0, 0, 3, 4) -> f_488(v1014:0, v1015:0, v1016:0, v1017:0, v1018:0, v1019:0, v1020:0, 1 + v1023:0, 1, v1023:0, v1025:0, 1 + v1025:0, v1026:0, v1027:0, v1028:0, v1029:0, v1030:0, v1031:0, 0, 3, 4) :|: v1023:0 < v1015:0 && v1025:0 > 0 && v1023:0 < v1016:0 Filtered unneeded arguments: f_488(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_488(x2, x3, x8, x12) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_488(v1015:0, v1016:0, v1023:0, v1025:0) -> f_488(v1015:0, v1016:0, 1 + v1023:0, 1 + v1025:0) :|: v1025:0 > 0 && v1023:0 < v1016:0 && v1023:0 < v1015:0 ---------------------------------------- (16) Obligation: Rules: f_488(v1015:0, v1016:0, v1023:0, v1025:0) -> f_488(v1015:0, v1016:0, 1 + v1023:0, 1 + v1025:0) :|: v1025:0 > 0 && v1023:0 < v1016:0 && v1023:0 < v1015:0 ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: f_488(v1015:0:0, v1016:0:0, v1023:0:0, v1025:0:0) -> f_488(v1015:0:0, v1016:0:0, 1 + v1023:0:0, 1 + v1025:0:0) :|: v1025:0:0 > 0 && v1023:0:0 < v1016:0:0 && v1023:0:0 < v1015:0:0 ---------------------------------------- (19) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_488 ] = -1*f_488_3 + f_488_1 The following rules are decreasing: f_488(v1015:0:0, v1016:0:0, v1023:0:0, v1025:0:0) -> f_488(v1015:0:0, v1016:0:0, 1 + v1023:0:0, 1 + v1025:0:0) :|: v1025:0:0 > 0 && v1023:0:0 < v1016:0:0 && v1023:0:0 < v1015:0:0 The following rules are bounded: f_488(v1015:0:0, v1016:0:0, v1023:0:0, v1025:0:0) -> f_488(v1015:0:0, v1016:0:0, 1 + v1023:0:0, 1 + v1025:0:0) :|: v1025:0:0 > 0 && v1023:0:0 < v1016:0:0 && v1023:0:0 < v1015:0:0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 18 rulesP rules: f_475(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_478(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 f_478(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_481(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 f_481(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_484(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: TRUE f_484(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_487(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 f_487(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_489(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 f_489(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_492(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: v946 <= v936 f_492(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_496(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 f_496(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_500(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: TRUE f_500(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v944, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_504(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 f_504(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_508(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: v1051 = 1 + v946 f_508(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_512(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: TRUE f_512(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_516(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: TRUE f_516(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_520(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 f_520(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_524(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v1098, v949, v950, v951, v952, v953, v954, 3, 4, 2) :|: v1098 = 1 + v948 && 2 <= v1098 f_524(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v1098, v949, v950, v951, v952, v953, v954, 3, 4, 2) -> f_528(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v1098, v949, v950, v951, v952, v953, v954, 3, 4, 2) :|: TRUE f_528(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v1098, v949, v950, v951, v952, v953, v954, 3, 4, 2) -> f_532(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v1098, v949, v950, v951, v952, v953, v954, 3, 4, 2) :|: TRUE f_532(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v1098, v949, v950, v951, v952, v953, v954, 3, 4, 2) -> f_472(v936, v937, v938, v939, v940, v941, v942, 1, v946, 0, v1051, v948, v1098, v949, v950, v951, v952, v953, v954, 3, 4) :|: TRUE f_472(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) -> f_475(v936, v937, v938, v939, v940, v941, v942, 1, v944, 0, v946, v947, v948, v949, v950, v951, v952, v953, v954, 3, 4) :|: 0 = 0 Combined rules. Obtained 1 rulesP rules: f_475(v936:0, v937:0, v938:0, v939:0, v940:0, v941:0, v942:0, 1, v944:0, 0, v946:0, v947:0, v948:0, v949:0, v950:0, v951:0, v952:0, v953:0, v954:0, 3, 4) -> f_475(v936:0, v937:0, v938:0, v939:0, v940:0, v941:0, v942:0, 1, v946:0, 0, 1 + v946:0, v948:0, 1 + v948:0, v949:0, v950:0, v951:0, v952:0, v953:0, v954:0, 3, 4) :|: v948:0 > 0 && v946:0 <= v936:0 Filtered unneeded arguments: f_475(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_475(x1, x11, x13) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: f_475(v936:0, v946:0, v948:0) -> f_475(v936:0, 1 + v946:0, 1 + v948:0) :|: v948:0 > 0 && v946:0 <= v936:0 ---------------------------------------- (23) Obligation: Rules: f_475(v936:0, v946:0, v948:0) -> f_475(v936:0, 1 + v946:0, 1 + v948:0) :|: v948:0 > 0 && v946:0 <= v936:0 ---------------------------------------- (24) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_475 ] = -1*f_475_2 + f_475_1 The following rules are decreasing: f_475(v936:0, v946:0, v948:0) -> f_475(v936:0, 1 + v946:0, 1 + v948:0) :|: v948:0 > 0 && v946:0 <= v936:0 The following rules are bounded: f_475(v936:0, v946:0, v948:0) -> f_475(v936:0, 1 + v946:0, 1 + v948:0) :|: v948:0 > 0 && v946:0 <= v936:0 ---------------------------------------- (25) YES