63.47/22.59 YES 63.47/22.61 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 63.47/22.61 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 63.47/22.61 63.47/22.61 63.47/22.61 Termination of the given C Problem could be proven: 63.47/22.61 63.47/22.61 (0) C Problem 63.47/22.61 (1) CToLLVMProof [EQUIVALENT, 174 ms] 63.47/22.61 (2) LLVM problem 63.47/22.61 (3) LLVMToTerminationGraphProof [EQUIVALENT, 13.6 s] 63.47/22.61 (4) LLVM Symbolic Execution Graph 63.47/22.61 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 63.47/22.61 (6) AND 63.47/22.61 (7) LLVM Symbolic Execution SCC 63.47/22.61 (8) SCC2IRS [SOUND, 95 ms] 63.47/22.61 (9) IntTRS 63.47/22.61 (10) IRS2T2 [EQUIVALENT, 0 ms] 63.47/22.61 (11) T2IntSys 63.47/22.61 (12) T2 [EQUIVALENT, 594 ms] 63.47/22.61 (13) YES 63.47/22.61 (14) LLVM Symbolic Execution SCC 63.47/22.61 (15) SCC2IRS [SOUND, 105 ms] 63.47/22.61 (16) IntTRS 63.47/22.61 (17) IRS2T2 [EQUIVALENT, 0 ms] 63.47/22.61 (18) T2IntSys 63.47/22.61 (19) T2 [EQUIVALENT, 392 ms] 63.47/22.61 (20) YES 63.47/22.61 (21) LLVM Symbolic Execution SCC 63.47/22.61 (22) SCC2IRS [SOUND, 32 ms] 63.47/22.61 (23) IntTRS 63.47/22.61 (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] 63.47/22.61 (25) IntTRS 63.47/22.61 (26) RankingReductionPairProof [EQUIVALENT, 19 ms] 63.47/22.61 (27) YES 63.47/22.61 (28) LLVM Symbolic Execution SCC 63.47/22.61 (29) SCC2IRS [SOUND, 42 ms] 63.47/22.61 (30) IntTRS 63.47/22.61 (31) IntTRSCompressionProof [EQUIVALENT, 0 ms] 63.47/22.61 (32) IntTRS 63.47/22.61 (33) RankingReductionPairProof [EQUIVALENT, 3 ms] 63.47/22.61 (34) YES 63.47/22.61 (35) LLVM Symbolic Execution SCC 63.47/22.61 (36) SCC2IRS [SOUND, 34 ms] 63.47/22.61 (37) IntTRS 63.47/22.61 (38) IntTRSCompressionProof [EQUIVALENT, 0 ms] 63.47/22.61 (39) IntTRS 63.47/22.61 (40) RankingReductionPairProof [EQUIVALENT, 3 ms] 63.47/22.61 (41) YES 63.47/22.61 (42) LLVM Symbolic Execution SCC 63.47/22.61 (43) SCC2IRS [SOUND, 0 ms] 63.47/22.61 (44) IntTRS 63.47/22.61 (45) IRS2T2 [EQUIVALENT, 1 ms] 63.47/22.61 (46) T2IntSys 63.47/22.61 (47) T2 [EQUIVALENT, 565 ms] 63.47/22.61 (48) YES 63.47/22.61 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (0) 63.47/22.61 Obligation: 63.47/22.61 c file /export/starexec/sandbox/benchmark/theBenchmark.c 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (1) CToLLVMProof (EQUIVALENT) 63.47/22.61 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (2) 63.47/22.61 Obligation: 63.47/22.61 LLVM Problem 63.47/22.61 63.47/22.61 Aliases: 63.47/22.61 63.47/22.61 Data layout: 63.47/22.61 63.47/22.61 "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" 63.47/22.61 63.47/22.61 Machine: 63.47/22.61 63.47/22.61 "x86_64-pc-linux-gnu" 63.47/22.61 63.47/22.61 Type definitions: 63.47/22.61 63.47/22.61 Global variables: 63.47/22.61 63.47/22.61 Function declarations and definitions: 63.47/22.61 63.47/22.61 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 63.47/22.61 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 63.47/22.61 0: 63.47/22.61 %1 = alloca i32, align 4 63.47/22.61 %i = alloca i32, align 4 63.47/22.61 %j = alloca i32, align 4 63.47/22.61 %k = alloca i32, align 4 63.47/22.61 %n = alloca i32, align 4 63.47/22.61 %m = alloca i32, align 4 63.47/22.61 %N = alloca i32, align 4 63.47/22.61 store 0, %1 63.47/22.61 %2 = call i32 @__VERIFIER_nondet_int() 63.47/22.61 store %2, %i 63.47/22.61 %3 = call i32 @__VERIFIER_nondet_int() 63.47/22.61 store %3, %j 63.47/22.61 %4 = call i32 @__VERIFIER_nondet_int() 63.47/22.61 store %4, %k 63.47/22.61 %5 = call i32 @__VERIFIER_nondet_int() 63.47/22.61 store %5, %n 63.47/22.61 %6 = call i32 @__VERIFIER_nondet_int() 63.47/22.61 store %6, %m 63.47/22.61 %7 = call i32 @__VERIFIER_nondet_int() 63.47/22.61 store %7, %N 63.47/22.61 %8 = load %n 63.47/22.61 %9 = icmp sle 0 %8 63.47/22.61 br %9, %10, %43 63.47/22.61 10: 63.47/22.61 %11 = load %m 63.47/22.61 %12 = icmp sle 0 %11 63.47/22.61 br %12, %13, %43 63.47/22.61 13: 63.47/22.61 %14 = load %N 63.47/22.61 %15 = icmp sle 0 %14 63.47/22.61 br %15, %16, %43 63.47/22.61 16: 63.47/22.61 store 0, %i 63.47/22.61 br %17 63.47/22.61 17: 63.47/22.61 %18 = load %i 63.47/22.61 %19 = load %n 63.47/22.61 %20 = icmp slt %18 %19 63.47/22.61 br %20, %21, %42 63.47/22.61 21: 63.47/22.61 store 0, %j 63.47/22.61 br %22 63.47/22.61 22: 63.47/22.61 %23 = load %j 63.47/22.61 %24 = load %m 63.47/22.61 %25 = icmp slt %23 %24 63.47/22.61 br %25, %26, %39 63.47/22.61 26: 63.47/22.61 %27 = load %j 63.47/22.61 %28 = add %27 1 63.47/22.61 store %28, %j 63.47/22.61 %29 = load %i 63.47/22.61 store %29, %k 63.47/22.61 br %30 63.47/22.61 30: 63.47/22.61 %31 = load %k 63.47/22.61 %32 = load %N 63.47/22.61 %33 = icmp slt %31 %32 63.47/22.61 br %33, %34, %37 63.47/22.61 34: 63.47/22.61 %35 = load %k 63.47/22.61 %36 = add %35 1 63.47/22.61 store %36, %k 63.47/22.61 br %30 63.47/22.61 37: 63.47/22.61 %38 = load %k 63.47/22.61 store %38, %i 63.47/22.61 br %22 63.47/22.61 39: 63.47/22.61 %40 = load %i 63.47/22.61 %41 = add %40 1 63.47/22.61 store %41, %i 63.47/22.61 br %17 63.47/22.61 42: 63.47/22.61 br %43 63.47/22.61 43: 63.47/22.61 ret 0 63.47/22.61 63.47/22.61 63.47/22.61 Analyze Termination of all function calls matching the pattern: 63.47/22.61 main() 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (3) LLVMToTerminationGraphProof (EQUIVALENT) 63.47/22.61 Constructed symbolic execution graph for LLVM program and proved memory safety. 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (4) 63.47/22.61 Obligation: 63.47/22.61 SE Graph 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (5) SymbolicExecutionGraphToSCCProof (SOUND) 63.47/22.61 Splitted symbolic execution graph to 6 SCCs. 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (6) 63.47/22.61 Complex Obligation (AND) 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (7) 63.47/22.61 Obligation: 63.47/22.61 SCC 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (8) SCC2IRS (SOUND) 63.47/22.61 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 63.47/22.61 Generated rules. Obtained 39 rulesP rules: 63.47/22.61 f_1518(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) -> f_1519(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1519(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) -> f_1520(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1520(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) -> f_1521(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) :|: TRUE 63.47/22.61 f_1521(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) -> f_1522(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, 0, v12407, v12403, v12408, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) :|: TRUE 63.47/22.61 f_1522(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12509, v12510, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1523(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12510, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1523(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12510, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1524(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: v12520 = 1 + v12508 && 1 <= v12520 63.47/22.61 f_1524(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1525(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1525(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1526(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1526(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1527(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1527(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1528(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1528(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1529(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1529(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1530(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1530(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1531(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1531(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1532(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1532(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12511, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1533(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1533(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1534(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1534(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1535(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1535(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12508, v12520, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1536(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1536(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1537(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1537(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1538(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: v12520 < v12504 && 2 <= v12504 63.47/22.61 f_1537(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1539(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: v12504 <= v12520 && v12504 = v12520 63.47/22.61 f_1538(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1540(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1540(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1542(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1542(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1522(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12504, 0, 1, v12507, v12520, v12508, v12520, v12507, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1539(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1541(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1541(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1543(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1543(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12512, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1544(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1544(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1545(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12847, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: v12847 = 1 + v12507 && 2 <= v12847 63.47/22.61 f_1545(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12847, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1546(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12847, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1546(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12847, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1547(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12847, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1547(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12507, v12508, v12847, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1548(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1548(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1549(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1549(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) -> f_1550(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) :|: v12847 < v12503 && 3 <= v12503 63.47/22.61 f_1550(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) -> f_1552(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) :|: 0 = 0 63.47/22.61 f_1552(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) -> f_1554(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) :|: TRUE 63.47/22.61 f_1554(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) -> f_1556(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) :|: TRUE 63.47/22.61 f_1556(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) -> f_1558(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) :|: TRUE 63.47/22.61 f_1558(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 4, 2) -> f_1517(v12493, v12494, v12495, v12496, v12497, v12498, v12499, v12500, v12501, v12502, v12503, v12520, 0, 1, v12847, v12508, v12507, v12513, v12514, v12515, v12516, v12517, v12518, v12519, 3, 2, 4) :|: TRUE 63.47/22.61 f_1517(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) -> f_1518(v12392, v12393, v12394, v12395, v12396, v12397, v12398, v12399, v12400, v12401, v12402, v12403, 0, 1, v12406, v12407, v12408, v12409, v12410, v12411, v12412, v12413, v12414, v12415, 3, 2, 4) :|: 0 = 0 63.47/22.61 Combined rules. Obtained 2 rulesP rules: 63.47/22.61 f_1537(v12493:0, v12494:0, v12495:0, v12496:0, v12497:0, v12498:0, v12499:0, v12500:0, v12501:0, v12502:0, v12503:0, v12504:0, 0, 1, v12507:0, v12504:0, v12508:0, v12512:0, v12513:0, v12514:0, v12515:0, v12516:0, v12517:0, v12518:0, v12519:0, 3, 2, 4) -> f_1537(v12493:0, v12494:0, v12495:0, v12496:0, v12497:0, v12498:0, v12499:0, v12500:0, v12501:0, v12502:0, v12503:0, v12504:0, 0, 1, 1 + v12507:0, 1, 0, v12507:0, v12513:0, v12514:0, v12515:0, v12516:0, v12517:0, v12518:0, v12519:0, 3, 2, 4) :|: v12507:0 > 0 && v12503:0 > 1 + v12507:0 && v12503:0 > 2 63.47/22.61 f_1537(v12493:0, v12494:0, v12495:0, v12496:0, v12497:0, v12498:0, v12499:0, v12500:0, v12501:0, v12502:0, v12503:0, v12504:0, 0, 1, v12507:0, v12520:0, v12508:0, v12512:0, v12513:0, v12514:0, v12515:0, v12516:0, v12517:0, v12518:0, v12519:0, 3, 2, 4) -> f_1537(v12493:0, v12494:0, v12495:0, v12496:0, v12497:0, v12498:0, v12499:0, v12500:0, v12501:0, v12502:0, v12503:0, v12504:0, 0, 1, v12507:0, 1 + v12520:0, v12520:0, v12512:0, v12513:0, v12514:0, v12515:0, v12516:0, v12517:0, v12518:0, v12519:0, 3, 2, 4) :|: v12520:0 > -1 && v12520:0 < v12504:0 && v12504:0 > 1 63.47/22.61 Filtered unneeded arguments: 63.47/22.61 f_1537(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) -> f_1537(x11, x12, x15, x16) 63.47/22.61 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 63.47/22.61 f_1537(v12503:0, v12504:0, v12507:0, v12504:01) -> f_1537(v12503:0, v12504:0, 1 + v12507:0, 1) :|: v12503:0 > 1 + v12507:0 && v12503:0 > 2 && v12507:0 > 0 && v12504:0 = v12504:01 63.47/22.61 f_1537(v12503:0, v12504:0, v12507:0, v12520:0) -> f_1537(v12503:0, v12504:0, v12507:0, 1 + v12520:0) :|: v12520:0 < v12504:0 && v12504:0 > 1 && v12520:0 > -1 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (9) 63.47/22.61 Obligation: 63.47/22.61 Rules: 63.47/22.61 f_1537(v12503:0, v12504:0, v12507:0, v12504:01) -> f_1537(v12503:0, v12504:0, 1 + v12507:0, 1) :|: v12503:0 > 1 + v12507:0 && v12503:0 > 2 && v12507:0 > 0 && v12504:0 = v12504:01 63.47/22.61 f_1537(x, x1, x2, x3) -> f_1537(x, x1, x2, 1 + x3) :|: x3 < x1 && x1 > 1 && x3 > -1 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (10) IRS2T2 (EQUIVALENT) 63.47/22.61 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 63.47/22.61 63.47/22.61 (f_1537_4,1) 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (11) 63.47/22.61 Obligation: 63.47/22.61 START: 0; 63.47/22.61 63.47/22.61 FROM: 0; 63.47/22.61 TO: 1; 63.47/22.61 63.47/22.61 FROM: 1; 63.47/22.61 oldX0 := x0; 63.47/22.61 oldX1 := x1; 63.47/22.61 oldX2 := x2; 63.47/22.61 oldX3 := x3; 63.47/22.61 assume(oldX0 > 1 + oldX2 && oldX0 > 2 && oldX2 > 0 && oldX1 = oldX3); 63.47/22.61 x0 := oldX0; 63.47/22.61 x1 := oldX1; 63.47/22.61 x2 := 1 + oldX2; 63.47/22.61 x3 := 1; 63.47/22.61 TO: 1; 63.47/22.61 63.47/22.61 FROM: 1; 63.47/22.61 oldX0 := x0; 63.47/22.61 oldX1 := x1; 63.47/22.61 oldX2 := x2; 63.47/22.61 oldX3 := x3; 63.47/22.61 assume(oldX3 < oldX1 && oldX1 > 1 && oldX3 > -1); 63.47/22.61 x0 := oldX0; 63.47/22.61 x1 := oldX1; 63.47/22.61 x2 := oldX2; 63.47/22.61 x3 := 1 + oldX3; 63.47/22.61 TO: 1; 63.47/22.61 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (12) T2 (EQUIVALENT) 63.47/22.61 Initially, performed program simplifications using lexicographic rank functions: 63.47/22.61 * Removed transitions 1, 4, 5 using the following rank functions: 63.47/22.61 - Rank function 1: 63.47/22.61 RF for loc. 5: 2*x0-2*x2 63.47/22.61 RF for loc. 6: 2*x0-2*x2 63.47/22.61 Bound for (chained) transitions 4: 4 63.47/22.61 - Rank function 2: 63.47/22.61 RF for loc. 5: 2*x1-2*x3 63.47/22.61 RF for loc. 6: -1+2*x1-2*x3 63.47/22.61 Bound for (chained) transitions 5: 1 63.47/22.61 - Rank function 3: 63.47/22.61 RF for loc. 5: 0 63.47/22.61 RF for loc. 6: -1 63.47/22.61 Bound for (chained) transitions 1: 0 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (13) 63.47/22.61 YES 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (14) 63.47/22.61 Obligation: 63.47/22.61 SCC 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (15) SCC2IRS (SOUND) 63.47/22.61 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 63.47/22.61 Generated rules. Obtained 39 rulesP rules: 63.47/22.61 f_1317(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9029, v9030, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1319(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9030, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: v9065 = 1 + v9027 && 1 <= v9065 63.47/22.61 f_1319(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9030, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1321(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9030, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1321(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9030, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1323(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1323(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1325(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1325(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1327(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1327(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1329(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1329(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1331(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1331(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1333(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1333(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1335(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1335(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9031, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1337(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1337(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1339(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1339(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1341(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1341(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9065, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1344(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1344(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1347(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1347(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1350(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: v9065 < v9023 && 2 <= v9023 63.47/22.61 f_1347(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1351(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: v9023 <= v9065 && v9023 = v9065 63.47/22.61 f_1350(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1353(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1353(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1356(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1356(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1315(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9065, v9027, v9065, v9026, v9026, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1315(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9028, v9029, v9030, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1317(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9023, v9024, 1, v9026, v9027, v9029, v9030, v9031, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1351(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, v9027, 0, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1354(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1354(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1357(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1357(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9034, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1359(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1359(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1361(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9715, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: v9715 = 1 + v9026 && 3 <= v9715 63.47/22.61 f_1361(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9715, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1363(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9715, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1363(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9715, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1365(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9715, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1365(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9026, 0, v9027, v9033, v9715, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1368(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1368(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1371(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1371(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) -> f_1374(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) :|: v9715 < v9022 && 4 <= v9022 63.47/22.61 f_1374(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) -> f_1378(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) :|: 0 = 0 63.47/22.61 f_1378(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) -> f_1382(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) :|: TRUE 63.47/22.61 f_1382(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) -> f_1385(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) :|: TRUE 63.47/22.61 f_1385(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) -> f_1388(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) :|: TRUE 63.47/22.61 f_1388(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 4, 2) -> f_1389(v9012, v9013, v9014, v9015, v9016, v9017, v9018, v9019, v9020, v9021, v9022, v9065, v9024, 1, v9715, 0, v9027, v9026, v9026, v9033, v9035, v9036, v9037, v9038, v9039, v9040, v9041, 3, 2, 4) :|: TRUE 63.47/22.61 f_1389(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) -> f_1391(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1391(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) -> f_1394(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1394(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) -> f_1396(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_1396(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) -> f_1398(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) :|: TRUE 63.47/22.61 f_1398(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10283, v10284, v10285, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) -> f_1315(v10266, v10267, v10268, v10269, v10270, v10271, v10272, v10273, v10274, v10275, v10276, v10277, v10278, 1, v10280, 0, v10282, v10277, v10283, v10284, 0, v10285, v10284, v10286, v10287, v10288, v10289, v10290, v10291, v10292, 3, 2, 4) :|: TRUE 63.47/22.61 Combined rules. Obtained 2 rulesP rules: 63.47/22.61 f_1317(v9012:0, v9013:0, v9014:0, v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, v9020:0, v9021:0, v9022:0, v9023:0, v9024:0, 1, v9026:0, v9027:0, v9029:0, v9030:0, v9031:0, 0, v9033:0, v9034:0, v9035:0, v9036:0, v9037:0, v9038:0, v9039:0, v9040:0, v9041:0, 3, 2, 4) -> f_1317(v9012:0, v9013:0, v9014:0, v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, v9020:0, v9021:0, v9022:0, v9023:0, v9024:0, 1, v9026:0, 1 + v9027:0, 1 + v9027:0, v9026:0, v9026:0, 0, v9033:0, v9034:0, v9035:0, v9036:0, v9037:0, v9038:0, v9039:0, v9040:0, v9041:0, 3, 2, 4) :|: v9027:0 > -1 && v9023:0 > 1 + v9027:0 && v9023:0 > 1 63.47/22.61 f_1317(v9012:0, v9013:0, v9014:0, v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, v9020:0, v9021:0, v9022:0, 1 + v9027:0, v9024:0, 1, v9026:0, v9027:0, v9029:0, v9030:0, v9031:0, 0, v9033:0, v9034:0, v9035:0, v9036:0, v9037:0, v9038:0, v9039:0, v9040:0, v9041:0, 3, 2, 4) -> f_1317(v9012:0, v9013:0, v9014:0, v9015:0, v9016:0, v9017:0, v9018:0, v9019:0, v9020:0, v9021:0, v9022:0, 1 + v9027:0, v9024:0, 1, 1 + v9026:0, 0, 1 + v9027:0, v9026:0, v9026:0, 0, v9033:0, v9026:0, v9035:0, v9036:0, v9037:0, v9038:0, v9039:0, v9040:0, v9041:0, 3, 2, 4) :|: v9027:0 > -1 && v9026:0 > 1 && v9022:0 > 1 + v9026:0 && v9022:0 > 3 63.47/22.61 Filtered unneeded arguments: 63.47/22.61 f_1317(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) -> f_1317(x11, x12, x15, x16) 63.47/22.61 Removed division, modulo operations, cleaned up constraints. Obtained 2 rules.P rules: 63.47/22.61 f_1317(v9022:0, v9023:0, v9026:0, v9027:0) -> f_1317(v9022:0, v9023:0, v9026:0, 1 + v9027:0) :|: v9023:0 > 1 + v9027:0 && v9023:0 > 1 && v9027:0 > -1 63.47/22.61 f_1317(v9022:0, sum~cons_1~v9027:0, v9026:0, v9027:0) -> f_1317(v9022:0, 1 + v9027:0, 1 + v9026:0, 0) :|: v9026:0 > 1 && v9027:0 > -1 && v9022:0 > 3 && v9022:0 > 1 + v9026:0 && sum~cons_1~v9027:0 = 1 + v9027:0 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (16) 63.47/22.61 Obligation: 63.47/22.61 Rules: 63.47/22.61 f_1317(v9022:0, v9023:0, v9026:0, v9027:0) -> f_1317(v9022:0, v9023:0, v9026:0, 1 + v9027:0) :|: v9023:0 > 1 + v9027:0 && v9023:0 > 1 && v9027:0 > -1 63.47/22.61 f_1317(x, x1, x2, x3) -> f_1317(x, 1 + x3, 1 + x2, 0) :|: x2 > 1 && x3 > -1 && x > 3 && x > 1 + x2 && x1 = 1 + x3 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (17) IRS2T2 (EQUIVALENT) 63.47/22.61 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 63.47/22.61 63.47/22.61 (f_1317_4,1) 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (18) 63.47/22.61 Obligation: 63.47/22.61 START: 0; 63.47/22.61 63.47/22.61 FROM: 0; 63.47/22.61 TO: 1; 63.47/22.61 63.47/22.61 FROM: 1; 63.47/22.61 oldX0 := x0; 63.47/22.61 oldX1 := x1; 63.47/22.61 oldX2 := x2; 63.47/22.61 oldX3 := x3; 63.47/22.61 assume(oldX1 > 1 + oldX3 && oldX1 > 1 && oldX3 > -1); 63.47/22.61 x0 := oldX0; 63.47/22.61 x1 := oldX1; 63.47/22.61 x2 := oldX2; 63.47/22.61 x3 := 1 + oldX3; 63.47/22.61 TO: 1; 63.47/22.61 63.47/22.61 FROM: 1; 63.47/22.61 oldX0 := x0; 63.47/22.61 oldX1 := x1; 63.47/22.61 oldX2 := x2; 63.47/22.61 oldX3 := x3; 63.47/22.61 assume(oldX2 > 1 && oldX3 > -1 && oldX0 > 3 && oldX0 > 1 + oldX2 && oldX1 = 1 + oldX3); 63.47/22.61 x0 := oldX0; 63.47/22.61 x1 := 1 + oldX3; 63.47/22.61 x2 := 1 + oldX2; 63.47/22.61 x3 := 0; 63.47/22.61 TO: 1; 63.47/22.61 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (19) T2 (EQUIVALENT) 63.47/22.61 Initially, performed program simplifications using lexicographic rank functions: 63.47/22.61 * Removed transitions 1, 4, 5 using the following rank functions: 63.47/22.61 - Rank function 1: 63.47/22.61 RF for loc. 5: 2*x0-2*x2 63.47/22.61 RF for loc. 6: 2*x0-2*x2 63.47/22.61 Bound for (chained) transitions 5: 4 63.47/22.61 - Rank function 2: 63.47/22.61 RF for loc. 5: x1-x3 63.47/22.61 RF for loc. 6: x1-x3 63.47/22.61 Bound for (chained) transitions 4: 2 63.47/22.61 - Rank function 3: 63.47/22.61 RF for loc. 5: 1 63.47/22.61 RF for loc. 6: 0 63.47/22.61 Bound for (chained) transitions 1: 1 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (20) 63.47/22.61 YES 63.47/22.61 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (21) 63.47/22.61 Obligation: 63.47/22.61 SCC 63.47/22.61 ---------------------------------------- 63.47/22.61 63.47/22.61 (22) SCC2IRS (SOUND) 63.47/22.61 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 63.47/22.61 Generated rules. Obtained 19 rulesP rules: 63.47/22.61 f_955(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 4) -> f_958(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 4) :|: 0 = 0 63.47/22.61 f_958(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 4) -> f_961(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: v4290 < v4285 && 2 <= v4285 63.47/22.61 f_961(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_964(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_964(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_967(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: TRUE 63.47/22.61 f_967(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_970(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_970(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_973(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: v4423 = 1 + v4290 && 2 <= v4423 63.47/22.61 f_973(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_976(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: TRUE 63.47/22.61 f_976(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_979(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: 0 = 0 63.47/22.61 f_979(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_982(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: TRUE 63.47/22.61 f_982(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_985(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: TRUE 63.47/22.61 f_985(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_988(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_988(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_992(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_992(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_996(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_996(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_1000(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: TRUE 63.47/22.62 f_1000(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_1004(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_1004(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_1007(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: TRUE 63.47/22.62 f_1007(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_1010(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) :|: TRUE 63.47/22.62 f_1010(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 2, 4) -> f_952(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4423, v4286, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 4) :|: TRUE 63.47/22.62 f_952(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4289, v4290, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 4) -> f_955(v4274, v4275, v4276, v4277, v4278, v4279, v4280, v4281, v4282, v4283, v4284, v4285, v4286, 1, 0, v4290, v4289, v4291, v4292, v4293, v4294, v4295, v4296, v4297, v4298, v4299, 3, 4) :|: 0 = 0 63.47/22.62 Combined rules. Obtained 1 rulesP rules: 63.47/22.62 f_955(v4274:0, v4275:0, v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, v4281:0, v4282:0, v4283:0, v4284:0, v4285:0, v4286:0, 1, 0, v4290:0, v4289:0, v4291:0, v4292:0, v4293:0, v4294:0, v4295:0, v4296:0, v4297:0, v4298:0, v4299:0, 3, 4) -> f_955(v4274:0, v4275:0, v4276:0, v4277:0, v4278:0, v4279:0, v4280:0, v4281:0, v4282:0, v4283:0, v4284:0, v4285:0, v4286:0, 1, 0, 1 + v4290:0, v4290:0, v4286:0, v4292:0, v4293:0, v4294:0, v4295:0, v4296:0, v4297:0, v4298:0, v4299:0, 3, 4) :|: v4285:0 > 1 && v4290:0 > 0 && v4290:0 < v4285:0 63.47/22.62 Filtered unneeded arguments: 63.47/22.62 f_955(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) -> f_955(x12, x16) 63.47/22.62 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 63.47/22.62 f_955(v4285:0, v4290:0) -> f_955(v4285:0, 1 + v4290:0) :|: v4290:0 > 0 && v4290:0 < v4285:0 && v4285:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (23) 63.47/22.62 Obligation: 63.47/22.62 Rules: 63.47/22.62 f_955(v4285:0, v4290:0) -> f_955(v4285:0, 1 + v4290:0) :|: v4290:0 > 0 && v4290:0 < v4285:0 && v4285:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (24) IntTRSCompressionProof (EQUIVALENT) 63.47/22.62 Compressed rules. 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (25) 63.47/22.62 Obligation: 63.47/22.62 Rules: 63.47/22.62 f_955(v4285:0:0, v4290:0:0) -> f_955(v4285:0:0, 1 + v4290:0:0) :|: v4290:0:0 > 0 && v4290:0:0 < v4285:0:0 && v4285:0:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (26) RankingReductionPairProof (EQUIVALENT) 63.47/22.62 Interpretation: 63.47/22.62 [ f_955 ] = -1*f_955_2 + f_955_1 63.47/22.62 63.47/22.62 The following rules are decreasing: 63.47/22.62 f_955(v4285:0:0, v4290:0:0) -> f_955(v4285:0:0, 1 + v4290:0:0) :|: v4290:0:0 > 0 && v4290:0:0 < v4285:0:0 && v4285:0:0 > 1 63.47/22.62 63.47/22.62 The following rules are bounded: 63.47/22.62 f_955(v4285:0:0, v4290:0:0) -> f_955(v4285:0:0, 1 + v4290:0:0) :|: v4290:0:0 > 0 && v4290:0:0 < v4285:0:0 && v4285:0:0 > 1 63.47/22.62 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (27) 63.47/22.62 YES 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (28) 63.47/22.62 Obligation: 63.47/22.62 SCC 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (29) SCC2IRS (SOUND) 63.47/22.62 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 63.47/22.62 Generated rules. Obtained 19 rulesP rules: 63.47/22.62 f_764(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 4) -> f_766(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 4) :|: 0 = 0 63.47/22.62 f_766(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 4) -> f_769(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: v2524 < v2520 && 2 <= v2520 63.47/22.62 f_769(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_773(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_773(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_777(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: TRUE 63.47/22.62 f_777(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_781(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_781(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_785(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: v2627 = 1 + v2524 && 2 <= v2627 63.47/22.62 f_785(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_789(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: TRUE 63.47/22.62 f_789(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_793(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_793(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_797(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: TRUE 63.47/22.62 f_797(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_801(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: TRUE 63.47/22.62 f_801(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_806(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_806(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_812(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_812(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_818(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_818(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_824(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: TRUE 63.47/22.62 f_824(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_829(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_829(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_833(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: TRUE 63.47/22.62 f_833(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_837(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) :|: TRUE 63.47/22.62 f_837(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 2, 4) -> f_762(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2627, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 4) :|: TRUE 63.47/22.62 f_762(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2523, v2524, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 4) -> f_764(v2509, v2510, v2511, v2512, v2513, v2514, v2515, v2516, v2517, v2518, v2519, v2520, 0, 1, v2524, v2523, v2525, v2526, v2527, v2528, v2529, v2530, v2531, 3, 4) :|: 0 = 0 63.47/22.62 Combined rules. Obtained 1 rulesP rules: 63.47/22.62 f_764(v2509:0, v2510:0, v2511:0, v2512:0, v2513:0, v2514:0, v2515:0, v2516:0, v2517:0, v2518:0, v2519:0, v2520:0, 0, 1, v2524:0, v2523:0, v2525:0, v2526:0, v2527:0, v2528:0, v2529:0, v2530:0, v2531:0, 3, 4) -> f_764(v2509:0, v2510:0, v2511:0, v2512:0, v2513:0, v2514:0, v2515:0, v2516:0, v2517:0, v2518:0, v2519:0, v2520:0, 0, 1, 1 + v2524:0, v2524:0, v2525:0, v2526:0, v2527:0, v2528:0, v2529:0, v2530:0, v2531:0, 3, 4) :|: v2520:0 > 1 && v2524:0 > 0 && v2524:0 < v2520:0 63.47/22.62 Filtered unneeded arguments: 63.47/22.62 f_764(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) -> f_764(x12, x15) 63.47/22.62 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 63.47/22.62 f_764(v2520:0, v2524:0) -> f_764(v2520:0, 1 + v2524:0) :|: v2524:0 > 0 && v2524:0 < v2520:0 && v2520:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (30) 63.47/22.62 Obligation: 63.47/22.62 Rules: 63.47/22.62 f_764(v2520:0, v2524:0) -> f_764(v2520:0, 1 + v2524:0) :|: v2524:0 > 0 && v2524:0 < v2520:0 && v2520:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (31) IntTRSCompressionProof (EQUIVALENT) 63.47/22.62 Compressed rules. 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (32) 63.47/22.62 Obligation: 63.47/22.62 Rules: 63.47/22.62 f_764(v2520:0:0, v2524:0:0) -> f_764(v2520:0:0, 1 + v2524:0:0) :|: v2524:0:0 > 0 && v2524:0:0 < v2520:0:0 && v2520:0:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (33) RankingReductionPairProof (EQUIVALENT) 63.47/22.62 Interpretation: 63.47/22.62 [ f_764 ] = -1*f_764_2 + f_764_1 63.47/22.62 63.47/22.62 The following rules are decreasing: 63.47/22.62 f_764(v2520:0:0, v2524:0:0) -> f_764(v2520:0:0, 1 + v2524:0:0) :|: v2524:0:0 > 0 && v2524:0:0 < v2520:0:0 && v2520:0:0 > 1 63.47/22.62 63.47/22.62 The following rules are bounded: 63.47/22.62 f_764(v2520:0:0, v2524:0:0) -> f_764(v2520:0:0, 1 + v2524:0:0) :|: v2524:0:0 > 0 && v2524:0:0 < v2520:0:0 && v2520:0:0 > 1 63.47/22.62 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (34) 63.47/22.62 YES 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (35) 63.47/22.62 Obligation: 63.47/22.62 SCC 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (36) SCC2IRS (SOUND) 63.47/22.62 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 63.47/22.62 Generated rules. Obtained 16 rulesP rules: 63.47/22.62 f_638(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 4) -> f_645(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 4) :|: 0 = 0 63.47/22.62 f_645(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 4) -> f_652(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: v1440 < v1435 && 2 <= v1435 63.47/22.62 f_652(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_660(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_660(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_666(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: TRUE 63.47/22.62 f_666(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_672(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: TRUE 63.47/22.62 f_672(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_678(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: TRUE 63.47/22.62 f_678(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_681(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_681(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_684(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_684(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_689(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_689(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_694(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: TRUE 63.47/22.62 f_694(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_699(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_699(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_704(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1995, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: v1995 = 1 + v1440 && 2 <= v1995 63.47/22.62 f_704(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1995, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_709(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1995, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: TRUE 63.47/22.62 f_709(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1995, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_714(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1995, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) :|: TRUE 63.47/22.62 f_714(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1995, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 2, 4) -> f_631(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1995, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 4) :|: TRUE 63.47/22.62 f_631(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1439, v1440, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 4) -> f_638(v1425, v1426, v1427, v1428, v1429, v1430, v1431, v1432, v1433, v1434, v1435, 0, v1437, 1, v1440, v1439, v1441, v1442, v1443, v1444, v1445, v1446, v1447, 3, 4) :|: 0 = 0 63.47/22.62 Combined rules. Obtained 1 rulesP rules: 63.47/22.62 f_638(v1425:0, v1426:0, v1427:0, v1428:0, v1429:0, v1430:0, v1431:0, v1432:0, v1433:0, v1434:0, v1435:0, 0, v1437:0, 1, v1440:0, v1439:0, v1441:0, v1442:0, v1443:0, v1444:0, v1445:0, v1446:0, v1447:0, 3, 4) -> f_638(v1425:0, v1426:0, v1427:0, v1428:0, v1429:0, v1430:0, v1431:0, v1432:0, v1433:0, v1434:0, v1435:0, 0, v1437:0, 1, 1 + v1440:0, v1440:0, v1441:0, v1442:0, v1443:0, v1444:0, v1445:0, v1446:0, v1447:0, 3, 4) :|: v1435:0 > 1 && v1440:0 > 0 && v1440:0 < v1435:0 63.47/22.62 Filtered unneeded arguments: 63.47/22.62 f_638(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) -> f_638(x11, x15) 63.47/22.62 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 63.47/22.62 f_638(v1435:0, v1440:0) -> f_638(v1435:0, 1 + v1440:0) :|: v1440:0 > 0 && v1440:0 < v1435:0 && v1435:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (37) 63.47/22.62 Obligation: 63.47/22.62 Rules: 63.47/22.62 f_638(v1435:0, v1440:0) -> f_638(v1435:0, 1 + v1440:0) :|: v1440:0 > 0 && v1440:0 < v1435:0 && v1435:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (38) IntTRSCompressionProof (EQUIVALENT) 63.47/22.62 Compressed rules. 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (39) 63.47/22.62 Obligation: 63.47/22.62 Rules: 63.47/22.62 f_638(v1435:0:0, v1440:0:0) -> f_638(v1435:0:0, 1 + v1440:0:0) :|: v1440:0:0 > 0 && v1440:0:0 < v1435:0:0 && v1435:0:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (40) RankingReductionPairProof (EQUIVALENT) 63.47/22.62 Interpretation: 63.47/22.62 [ f_638 ] = -1*f_638_2 + f_638_1 63.47/22.62 63.47/22.62 The following rules are decreasing: 63.47/22.62 f_638(v1435:0:0, v1440:0:0) -> f_638(v1435:0:0, 1 + v1440:0:0) :|: v1440:0:0 > 0 && v1440:0:0 < v1435:0:0 && v1435:0:0 > 1 63.47/22.62 63.47/22.62 The following rules are bounded: 63.47/22.62 f_638(v1435:0:0, v1440:0:0) -> f_638(v1435:0:0, 1 + v1440:0:0) :|: v1440:0:0 > 0 && v1440:0:0 < v1435:0:0 && v1435:0:0 > 1 63.47/22.62 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (41) 63.47/22.62 YES 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (42) 63.47/22.62 Obligation: 63.47/22.62 SCC 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (43) SCC2IRS (SOUND) 63.47/22.62 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 63.47/22.62 Generated rules. Obtained 10 rulesP rules: 63.47/22.62 f_532(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 4) -> f_536(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 4) :|: 0 = 0 63.47/22.62 f_536(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 4) -> f_541(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) :|: v989 < v985 && 2 <= v985 63.47/22.62 f_541(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) -> f_547(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_547(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) -> f_554(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) :|: TRUE 63.47/22.62 f_554(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) -> f_560(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) :|: 0 = 0 63.47/22.62 f_560(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) -> f_565(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v1144, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) :|: v1144 = 1 + v989 && 2 <= v1144 63.47/22.62 f_565(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v1144, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) -> f_571(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v1144, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) :|: TRUE 63.47/22.62 f_571(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v1144, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) -> f_577(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v1144, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) :|: TRUE 63.47/22.62 f_577(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v1144, v990, v991, v992, v993, v994, v995, v996, 3, 2, 4) -> f_528(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v1144, v990, v991, v992, v993, v994, v995, v996, 3, 4) :|: TRUE 63.47/22.62 f_528(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v988, v989, v990, v991, v992, v993, v994, v995, v996, 3, 4) -> f_532(v973, v974, v975, v976, v977, v978, v979, v980, v981, v982, v983, v984, v985, 1, 0, v989, v988, v990, v991, v992, v993, v994, v995, v996, 3, 4) :|: 0 = 0 63.47/22.62 Combined rules. Obtained 1 rulesP rules: 63.47/22.62 f_532(v973:0, v974:0, v975:0, v976:0, v977:0, v978:0, v979:0, v980:0, v981:0, v982:0, v983:0, v984:0, v985:0, 1, 0, v989:0, v988:0, v990:0, v991:0, v992:0, v993:0, v994:0, v995:0, v996:0, 3, 4) -> f_532(v973:0, v974:0, v975:0, v976:0, v977:0, v978:0, v979:0, v980:0, v981:0, v982:0, v983:0, v984:0, v985:0, 1, 0, 1 + v989:0, v989:0, v990:0, v991:0, v992:0, v993:0, v994:0, v995:0, v996:0, 3, 4) :|: v985:0 > 1 && v989:0 > 0 && v989:0 < v985:0 63.47/22.62 Filtered unneeded arguments: 63.47/22.62 f_532(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) -> f_532(x13, x16) 63.47/22.62 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 63.47/22.62 f_532(v985:0, v989:0) -> f_532(v985:0, 1 + v989:0) :|: v989:0 > 0 && v989:0 < v985:0 && v985:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (44) 63.47/22.62 Obligation: 63.47/22.62 Rules: 63.47/22.62 f_532(v985:0, v989:0) -> f_532(v985:0, 1 + v989:0) :|: v989:0 > 0 && v989:0 < v985:0 && v985:0 > 1 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (45) IRS2T2 (EQUIVALENT) 63.47/22.62 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 63.47/22.62 63.47/22.62 (f_532_2,1) 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (46) 63.47/22.62 Obligation: 63.47/22.62 START: 0; 63.47/22.62 63.47/22.62 FROM: 0; 63.47/22.62 TO: 1; 63.47/22.62 63.47/22.62 FROM: 1; 63.47/22.62 oldX0 := x0; 63.47/22.62 oldX1 := x1; 63.47/22.62 assume(oldX1 > 0 && oldX1 < oldX0 && oldX0 > 1); 63.47/22.62 x0 := oldX0; 63.47/22.62 x1 := 1 + oldX1; 63.47/22.62 TO: 1; 63.47/22.62 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (47) T2 (EQUIVALENT) 63.47/22.62 Initially, performed program simplifications using lexicographic rank functions: 63.47/22.62 * Removed transitions 1, 3, 4 using the following rank functions: 63.47/22.62 - Rank function 1: 63.47/22.62 RF for loc. 5: x0-x1 63.47/22.62 RF for loc. 6: x0-x1 63.47/22.62 Bound for (chained) transitions 3: 1 63.47/22.62 Bound for (chained) transitions 4: 1 63.47/22.62 - Rank function 2: 63.47/22.62 RF for loc. 5: 0 63.47/22.62 RF for loc. 6: -1 63.47/22.62 Bound for (chained) transitions 1: 0 63.47/22.62 63.47/22.62 ---------------------------------------- 63.47/22.62 63.47/22.62 (48) 63.47/22.62 YES 63.73/22.68 EOF