57.60/17.71 YES 58.01/17.75 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 58.01/17.75 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 58.01/17.75 58.01/17.75 58.01/17.75 Termination of the given C Problem could be proven: 58.01/17.75 58.01/17.75 (0) C Problem 58.01/17.75 (1) CToLLVMProof [EQUIVALENT, 178 ms] 58.01/17.75 (2) LLVM problem 58.01/17.75 (3) LLVMToTerminationGraphProof [EQUIVALENT, 9194 ms] 58.01/17.75 (4) LLVM Symbolic Execution Graph 58.01/17.75 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 58.01/17.75 (6) AND 58.01/17.75 (7) LLVM Symbolic Execution SCC 58.01/17.75 (8) SCC2IRS [SOUND, 62 ms] 58.01/17.75 (9) IntTRS 58.01/17.75 (10) IRS2T2 [EQUIVALENT, 0 ms] 58.01/17.75 (11) T2IntSys 58.01/17.75 (12) T2 [EQUIVALENT, 1632 ms] 58.01/17.75 (13) YES 58.01/17.75 (14) LLVM Symbolic Execution SCC 58.01/17.75 (15) SCC2IRS [SOUND, 82 ms] 58.01/17.75 (16) IntTRS 58.01/17.75 (17) IRS2T2 [EQUIVALENT, 0 ms] 58.01/17.75 (18) T2IntSys 58.01/17.75 (19) T2 [EQUIVALENT, 1032 ms] 58.01/17.75 (20) YES 58.01/17.75 (21) LLVM Symbolic Execution SCC 58.01/17.75 (22) SCC2IRS [SOUND, 65 ms] 58.01/17.75 (23) IntTRS 58.01/17.75 (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] 58.01/17.75 (25) IntTRS 58.01/17.75 (26) RankingReductionPairProof [EQUIVALENT, 0 ms] 58.01/17.75 (27) YES 58.01/17.75 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (0) 58.01/17.75 Obligation: 58.01/17.75 c file /export/starexec/sandbox/benchmark/theBenchmark.c 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (1) CToLLVMProof (EQUIVALENT) 58.01/17.75 Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (2) 58.01/17.75 Obligation: 58.01/17.75 LLVM Problem 58.01/17.75 58.01/17.75 Aliases: 58.01/17.75 58.01/17.75 Data layout: 58.01/17.75 58.01/17.75 "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" 58.01/17.75 58.01/17.75 Machine: 58.01/17.75 58.01/17.75 "x86_64-pc-linux-gnu" 58.01/17.75 58.01/17.75 Type definitions: 58.01/17.75 58.01/17.75 Global variables: 58.01/17.75 58.01/17.75 Function declarations and definitions: 58.01/17.75 58.01/17.75 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 58.01/17.75 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 58.01/17.75 0: 58.01/17.75 %1 = alloca i32, align 4 58.01/17.75 %x = alloca i32, align 4 58.01/17.75 %y = alloca i32, align 4 58.01/17.75 %z = alloca i32, align 4 58.01/17.75 store 0, %1 58.01/17.75 %2 = call i32 @__VERIFIER_nondet_int() 58.01/17.75 store %2, %x 58.01/17.75 %3 = call i32 @__VERIFIER_nondet_int() 58.01/17.75 store %3, %y 58.01/17.75 %4 = call i32 @__VERIFIER_nondet_int() 58.01/17.75 store %4, %z 58.01/17.75 %5 = load %x 58.01/17.75 %6 = icmp sgt %5 10000 58.01/17.75 br %6, %16, %7 58.01/17.75 7: 58.01/17.75 %8 = load %x 58.01/17.75 %9 = icmp slt %8 -10000 58.01/17.75 br %9, %16, %10 58.01/17.75 10: 58.01/17.75 %11 = load %y 58.01/17.75 %12 = icmp sgt %11 10000 58.01/17.75 br %12, %16, %13 58.01/17.75 13: 58.01/17.75 %14 = load %z 58.01/17.75 %15 = icmp sgt %14 10000 58.01/17.75 br %15, %16, %17 58.01/17.75 16: 58.01/17.75 store 0, %1 58.01/17.75 br %38 58.01/17.75 17: 58.01/17.75 br %18 58.01/17.75 18: 58.01/17.75 %19 = load %y 58.01/17.75 %20 = icmp sge %19 1 58.01/17.75 br %20, %21, %37 58.01/17.75 21: 58.01/17.75 %22 = load %x 58.01/17.75 %23 = add %22 -1 58.01/17.75 store %23, %x 58.01/17.75 br %24 58.01/17.75 24: 58.01/17.75 %25 = load %y 58.01/17.75 %26 = load %z 58.01/17.75 %27 = icmp slt %25 %26 58.01/17.75 br %27, %28, %33 58.01/17.75 28: 58.01/17.75 %29 = load %x 58.01/17.75 %30 = add %29 1 58.01/17.75 store %30, %x 58.01/17.75 %31 = load %z 58.01/17.75 %32 = add %31 -1 58.01/17.75 store %32, %z 58.01/17.75 br %24 58.01/17.75 33: 58.01/17.75 %34 = load %x 58.01/17.75 %35 = load %y 58.01/17.75 %36 = add %34 %35 58.01/17.75 store %36, %y 58.01/17.75 br %18 58.01/17.75 37: 58.01/17.75 store 0, %1 58.01/17.75 br %38 58.01/17.75 38: 58.01/17.75 %39 = load %1 58.01/17.75 ret %39 58.01/17.75 58.01/17.75 58.01/17.75 Analyze Termination of all function calls matching the pattern: 58.01/17.75 main() 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (3) LLVMToTerminationGraphProof (EQUIVALENT) 58.01/17.75 Constructed symbolic execution graph for LLVM program and proved memory safety. 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (4) 58.01/17.75 Obligation: 58.01/17.75 SE Graph 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (5) SymbolicExecutionGraphToSCCProof (SOUND) 58.01/17.75 Splitted symbolic execution graph to 3 SCCs. 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (6) 58.01/17.75 Complex Obligation (AND) 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (7) 58.01/17.75 Obligation: 58.01/17.75 SCC 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (8) SCC2IRS (SOUND) 58.01/17.75 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 58.01/17.75 Generated rules. Obtained 46 rulesP rules: 58.01/17.75 f_676(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_679(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 1 <= v1524 58.01/17.75 f_679(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_683(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_683(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_687(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_687(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_691(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1518, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_691(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1518, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_695(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 1 + v1624 = v1523 58.01/17.75 f_695(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_698(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_698(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_702(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_702(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1515, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_704(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_704(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_706(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_706(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_709(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 9997, 9998, 4, 9996) :|: v1524 < v1519 && v1524 <= 9998 && 2 <= v1519 && 3 <= v1522 && v1523 <= 9997 && v1624 <= 9996 && 3 <= v1513 58.01/17.75 f_706(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_710(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: v1519 <= v1524 58.01/17.75 f_709(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 9997, 9998, 4, 9996) -> f_713(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 9997, 9998, 4, 9996) :|: 0 = 0 58.01/17.75 f_713(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 9997, 9998, 4, 9996) -> f_717(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 9997, 9998, 4, 9996) :|: TRUE 58.01/17.75 f_717(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 9997, 9998, 4, 9996) -> f_752(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, v1624, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: TRUE 58.01/17.75 f_752(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2053, v2054, v2055, v2056, v2057, v2058, v2059, v2060, v2061, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_754(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2054, v2055, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_754(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2054, v2055, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_756(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2055, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: v2102 = 1 + v2061 58.01/17.75 f_756(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2055, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_758(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2055, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: TRUE 58.01/17.75 f_758(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2055, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_760(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_760(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_762(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2106, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: 1 + v2106 = v2052 && 1 <= v2106 && v2106 <= 9998 58.01/17.75 f_762(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2106, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_764(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2106, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: TRUE 58.01/17.75 f_764(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2106, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_765(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2106, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: TRUE 58.01/17.75 f_765(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2061, v2102, v2106, v2056, v2057, v2058, v2059, v2060, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_744(v2040, v2041, v2042, v2043, v2044, v2045, v2046, 0, v2048, 1, v2050, v2051, v2052, v2056, v2061, v2102, v2106, v2057, v2058, v2059, v2060, 3, 10000, 2, 9999, 9997, 9996, 4) :|: TRUE 58.01/17.75 f_744(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2001, v2002, v2003, v2004, v2005, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_745(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2001, v2002, v2003, v2004, v2005, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: 0 = 0 58.01/17.75 f_745(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2001, v2002, v2003, v2004, v2005, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_746(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: 0 = 0 58.01/17.75 f_746(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_747(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: v1997 < v2005 && v1997 <= 9998 && 2 <= v2005 && 3 <= v2001 && 3 <= v1995 58.01/17.75 f_746(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_748(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: v2005 <= v1997 && v2005 = v1997 58.01/17.75 f_747(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_749(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_749(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_751(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: TRUE 58.01/17.75 f_751(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) -> f_752(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2005, v2003, v2004, v2001, v2002, v2006, v2007, v2008, v2009, v2004, 3, 10000, 9998, 9997, 9996, 2, 9999, 4) :|: TRUE 58.01/17.75 f_748(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_750(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: 0 = 0 58.01/17.75 f_750(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_753(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: TRUE 58.01/17.75 f_753(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2002, v2003, v2004, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_755(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2002, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: 0 = 0 58.01/17.75 f_755(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2002, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_757(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: 0 = 0 58.01/17.75 f_757(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_759(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2104, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: v2104 = v2004 + v1997 58.01/17.75 f_759(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2104, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_761(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2104, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: TRUE 58.01/17.75 f_761(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2104, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_763(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2104, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) :|: TRUE 58.01/17.75 f_763(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v2004, v2104, v2003, v2001, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_673(v1989, v1990, v1991, v1992, v1993, v1994, v1995, 0, v1997, 1, v1999, v2000, v1997, v2003, v2004, v2001, v2004, v2104, v2006, v2007, v2008, v2009, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_673(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1515, 1, v1517, v1518, v1519, v1520, v1521, v1522, v1523, v1524, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_676(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1517, v1518, v1515, v1519, v1520, v1521, v1522, v1523, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_710(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_714(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_714(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_718(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_718(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_722(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_722(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1515, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_726(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: 0 = 0 58.01/17.75 f_726(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_730(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1802, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: v1802 = v1624 + v1524 58.01/17.75 f_730(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1802, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_734(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1802, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_734(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1802, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_738(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1802, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_738(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1802, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) -> f_673(v1507, v1508, v1509, v1510, v1511, v1512, v1513, 0, v1524, 1, v1523, v1624, v1519, v1520, v1521, v1522, v1624, v1802, v1525, v1526, v1527, v1528, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 Combined rules. Obtained 4 rulesP rules: 58.01/17.75 f_746(v1989:0, v1990:0, v1991:0, v1992:0, v1993:0, v1994:0, v1995:0, 0, v1997:0, 1, v1999:0, v2000:0, 1 + v2106:0, v2002:0, v2003:0, v2004:0, v2001:0, v2006:0, v2007:0, v2008:0, v2009:0, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_746(v1989:0, v1990:0, v1991:0, v1992:0, v1993:0, v1994:0, v1995:0, 0, v1997:0, 1, v1999:0, v2000:0, v2106:0, v2002:0, v2004:0, 1 + v2004:0, 1 + v2106:0, v2006:0, v2007:0, v2008:0, v2009:0, 3, 10000, 2, 9999, 9997, 9996, 4) :|: v2106:0 > 0 && v2106:0 < 9999 && v1997:0 < 9999 && v1997:0 < 1 + v2106:0 && v1995:0 > 2 && v2001:0 > 2 58.01/17.75 f_746(v1989:0, v1990:0, v1991:0, v1992:0, v1993:0, v1994:0, v1995:0, 0, v1997:0, 1, v1999:0, v2000:0, v1997:0, v2002:0, v2003:0, v2004:0, v2001:0, v2006:0, v2007:0, v2008:0, v2009:0, 3, 10000, 2, 9999, 9997, 9996, 4) -> f_676(v1989:0, v1990:0, v1991:0, v1992:0, v1993:0, v1994:0, v1995:0, 0, v2004:0 + v1997:0, 1, v1999:0, v2000:0, v1997:0, v1997:0, v2003:0, v2004:0, v2001:0, v2004:0, v2006:0, v2007:0, v2008:0, v2009:0, 3, 10000, 2, 9999, 4) :|: TRUE 58.01/17.75 f_676(v1507:0, v1508:0, v1509:0, v1510:0, v1511:0, v1512:0, v1513:0, 0, v1524:0, 1, v1517:0, v1518:0, v1515:0, 1 + v2106:0, v1520:0, v1521:0, v1522:0, 1 + v1624:0, v1525:0, v1526:0, v1527:0, v1528:0, 3, 10000, 2, 9999, 4) -> f_746(v1507:0, v1508:0, v1509:0, v1510:0, v1511:0, v1512:0, v1513:0, 0, v1524:0, 1, 1 + v1624:0, v1624:0, v2106:0, v1515:0, v1624:0, 1 + v1624:0, 1 + v2106:0, v1525:0, v1526:0, v1527:0, v1528:0, 3, 10000, 2, 9999, 9997, 9996, 4) :|: v1524:0 > 0 && v1524:0 < 9999 && v1524:0 < 1 + v2106:0 && v2106:0 > 0 && v1522:0 > 2 && v1624:0 < 9997 && v1513:0 > 2 && v2106:0 < 9999 58.01/17.75 f_676(v1507:0, v1508:0, v1509:0, v1510:0, v1511:0, v1512:0, v1513:0, 0, v1524:0, 1, v1517:0, v1518:0, v1515:0, v1519:0, v1520:0, v1521:0, v1522:0, 1 + v1624:0, v1525:0, v1526:0, v1527:0, v1528:0, 3, 10000, 2, 9999, 4) -> f_676(v1507:0, v1508:0, v1509:0, v1510:0, v1511:0, v1512:0, v1513:0, 0, v1624:0 + v1524:0, 1, 1 + v1624:0, v1624:0, v1524:0, v1519:0, v1520:0, v1521:0, v1522:0, v1624:0, v1525:0, v1526:0, v1527:0, v1528:0, 3, 10000, 2, 9999, 4) :|: v1524:0 >= v1519:0 && v1524:0 > 0 58.01/17.75 Filtered unneeded arguments: 58.01/17.75 f_746(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_746(x7, x9, x13, x16, x17) 58.01/17.75 f_676(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) -> f_676(x7, x9, x14, x17, x18) 58.01/17.75 Removed division, modulo operations, cleaned up constraints. Obtained 4 rules.P rules: 58.01/17.75 f_746(v1995:0, v1997:0, sum~cons_1~v2106:0, v2004:0, v2001:0) -> f_746(v1995:0, v1997:0, v2106:0, 1 + v2004:0, 1 + v2106:0) :|: v2106:0 < 9999 && v2106:0 > 0 && v1997:0 < 9999 && v1997:0 < 1 + v2106:0 && v2001:0 > 2 && v1995:0 > 2 && sum~cons_1~v2106:0 = 1 + v2106:0 58.01/17.75 f_746(v1995:0, v1997:0, v1997:01, v2004:0, v2001:0) -> f_676(v1995:0, v2004:0 + v1997:0, v1997:0, v2001:0, v2004:0) :|: TRUE && v1997:0 = v1997:01 58.01/17.75 f_676(v1513:0, v1524:0, sum~cons_1~v2106:0, v1522:0, sum~cons_1~v1624:0) -> f_746(v1513:0, v1524:0, v2106:0, 1 + v1624:0, 1 + v2106:0) :|: v1524:0 < 9999 && v1524:0 > 0 && v1524:0 < 1 + v2106:0 && v2106:0 > 0 && v1522:0 > 2 && v1624:0 < 9997 && v2106:0 < 9999 && v1513:0 > 2 && sum~cons_1~v2106:0 = 1 + v2106:0 && sum~cons_1~v1624:0 = 1 + v1624:0 58.01/17.75 f_676(v1513:0, v1524:0, v1519:0, v1522:0, sum~cons_1~v1624:0) -> f_676(v1513:0, v1624:0 + v1524:0, v1519:0, v1522:0, v1624:0) :|: v1524:0 >= v1519:0 && v1524:0 > 0 && sum~cons_1~v1624:0 = 1 + v1624:0 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (9) 58.01/17.75 Obligation: 58.01/17.75 Rules: 58.01/17.75 f_746(v1995:0, v1997:0, sum~cons_1~v2106:0, v2004:0, v2001:0) -> f_746(v1995:0, v1997:0, v2106:0, 1 + v2004:0, 1 + v2106:0) :|: v2106:0 < 9999 && v2106:0 > 0 && v1997:0 < 9999 && v1997:0 < 1 + v2106:0 && v2001:0 > 2 && v1995:0 > 2 && sum~cons_1~v2106:0 = 1 + v2106:0 58.01/17.75 f_746(x, x1, x2, x3, x4) -> f_676(x, x3 + x1, x1, x4, x3) :|: TRUE && x1 = x2 58.01/17.75 f_676(x5, x6, x7, x8, x9) -> f_746(x5, x6, x10, 1 + x11, 1 + x10) :|: x6 < 9999 && x6 > 0 && x6 < 1 + x10 && x10 > 0 && x8 > 2 && x11 < 9997 && x10 < 9999 && x5 > 2 && x7 = 1 + x10 && x9 = 1 + x11 58.01/17.75 f_676(v1513:0, v1524:0, v1519:0, v1522:0, sum~cons_1~v1624:0) -> f_676(v1513:0, v1624:0 + v1524:0, v1519:0, v1522:0, v1624:0) :|: v1524:0 >= v1519:0 && v1524:0 > 0 && sum~cons_1~v1624:0 = 1 + v1624:0 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (10) IRS2T2 (EQUIVALENT) 58.01/17.75 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 58.01/17.75 58.01/17.75 (f_746_5,1) 58.01/17.75 (f_676_5,2) 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (11) 58.01/17.75 Obligation: 58.01/17.75 START: 0; 58.01/17.75 58.01/17.75 FROM: 0; 58.01/17.75 TO: 1; 58.01/17.75 58.01/17.75 FROM: 0; 58.01/17.75 TO: 2; 58.01/17.75 58.01/17.75 FROM: 1; 58.01/17.75 oldX0 := x0; 58.01/17.75 oldX1 := x1; 58.01/17.75 oldX2 := x2; 58.01/17.75 oldX3 := x3; 58.01/17.75 oldX4 := x4; 58.01/17.75 oldX5 := oldX2 - 1; 58.01/17.75 assume(oldX5 < 9999 && oldX5 > 0 && oldX1 < 9999 && oldX1 < 1 + oldX5 && oldX4 > 2 && oldX0 > 2 && oldX2 = 1 + oldX5); 58.01/17.75 x0 := oldX0; 58.01/17.75 x1 := oldX1; 58.01/17.75 x2 := oldX2 - 1; 58.01/17.75 x3 := 1 + oldX3; 58.01/17.75 x4 := 1 + oldX5; 58.01/17.75 TO: 1; 58.01/17.75 58.01/17.75 FROM: 1; 58.01/17.75 oldX0 := x0; 58.01/17.75 oldX1 := x1; 58.01/17.75 oldX2 := x2; 58.01/17.75 oldX3 := x3; 58.01/17.75 oldX4 := x4; 58.01/17.75 assume(0 = 0 && oldX1 = oldX2); 58.01/17.75 x0 := oldX0; 58.01/17.75 x1 := oldX3 + oldX1; 58.01/17.75 x2 := oldX1; 58.01/17.75 x3 := oldX4; 58.01/17.75 x4 := oldX3; 58.01/17.75 TO: 2; 58.01/17.75 58.01/17.75 FROM: 2; 58.01/17.75 oldX0 := x0; 58.01/17.75 oldX1 := x1; 58.01/17.75 oldX2 := x2; 58.01/17.75 oldX3 := x3; 58.01/17.75 oldX4 := x4; 58.01/17.75 oldX5 := oldX2 - 1; 58.01/17.75 oldX6 := oldX4 - 1; 58.01/17.75 assume(oldX1 < 9999 && oldX1 > 0 && oldX1 < 1 + oldX5 && oldX5 > 0 && oldX3 > 2 && oldX6 < 9997 && oldX5 < 9999 && oldX0 > 2 && oldX2 = 1 + oldX5 && oldX4 = 1 + oldX6); 58.01/17.75 x0 := oldX0; 58.01/17.75 x1 := oldX1; 58.01/17.75 x2 := oldX2 - 1; 58.01/17.75 x3 := 1 + oldX6; 58.01/17.75 x4 := 1 + oldX5; 58.01/17.75 TO: 1; 58.01/17.75 58.01/17.75 FROM: 2; 58.01/17.75 oldX0 := x0; 58.01/17.75 oldX1 := x1; 58.01/17.75 oldX2 := x2; 58.01/17.75 oldX3 := x3; 58.01/17.75 oldX4 := x4; 58.01/17.75 oldX5 := oldX4 - 1; 58.01/17.75 assume(oldX1 >= oldX2 && oldX1 > 0 && oldX4 = 1 + oldX5); 58.01/17.75 x0 := oldX0; 58.01/17.75 x1 := oldX5 + oldX1; 58.01/17.75 x2 := oldX2; 58.01/17.75 x3 := oldX3; 58.01/17.75 x4 := oldX4 - 1; 58.01/17.75 TO: 2; 58.01/17.75 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (12) T2 (EQUIVALENT) 58.01/17.75 Initially, performed program simplifications using lexicographic rank functions: 58.01/17.75 * Removed transitions 2, 5, 6, 17 using the following rank functions: 58.01/17.75 - Rank function 1: 58.01/17.75 RF for loc. 6: 9998+19995*x2 58.01/17.75 RF for loc. 7: 19995*x2 58.01/17.75 RF for loc. 8: 9997+19995*x2 58.01/17.75 RF for loc. 12: 19995*x2 58.01/17.75 Bound for (chained) transitions 17: 39990 58.01/17.75 - Rank function 2: 58.01/17.75 RF for loc. 6: 2-3*x1+3*x2 58.01/17.75 RF for loc. 7: 0 58.01/17.75 RF for loc. 8: 1-3*x1+3*x2 58.01/17.75 RF for loc. 12: 0 58.01/17.75 Bound for (chained) transitions 5: -29987 58.01/17.75 Bound for (chained) transitions 6: 1 58.01/17.75 - Rank function 3: 58.01/17.75 RF for loc. 6: 1 58.01/17.75 RF for loc. 7: 1+2*x4 58.01/17.75 RF for loc. 8: 0 58.01/17.75 RF for loc. 12: 2*x4 58.01/17.75 Bound for (chained) transitions 2: 1 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (13) 58.01/17.75 YES 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (14) 58.01/17.75 Obligation: 58.01/17.75 SCC 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (15) SCC2IRS (SOUND) 58.01/17.75 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 58.01/17.75 Generated rules. Obtained 19 rulesP rules: 58.01/17.75 f_513(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) -> f_515(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) :|: 1 <= v691 58.01/17.75 f_515(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) -> f_518(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) :|: 0 = 0 58.01/17.75 f_518(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) -> f_521(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) :|: TRUE 58.01/17.75 f_521(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) -> f_525(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) :|: 0 = 0 58.01/17.75 f_525(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) -> f_529(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: 1 + v724 = v690 && v724 <= 9998 58.01/17.75 f_529(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_533(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: TRUE 58.01/17.75 f_533(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_537(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: TRUE 58.01/17.75 f_537(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_540(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: 0 = 0 58.01/17.75 f_540(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_543(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: 0 = 0 58.01/17.75 f_543(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_547(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: v685 <= v691 58.01/17.75 f_547(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_552(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: 0 = 0 58.01/17.75 f_552(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_555(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: TRUE 58.01/17.75 f_555(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_559(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: 0 = 0 58.01/17.75 f_559(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v687, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_563(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: 0 = 0 58.01/17.75 f_563(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_567(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v846, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: v846 = v724 + v691 58.01/17.75 f_567(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v846, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_571(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v846, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: TRUE 58.01/17.75 f_571(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v846, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_575(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v846, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) :|: TRUE 58.01/17.75 f_575(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v846, v692, v693, v694, v695, 3, 10000, 9999, 4, 9998) -> f_510(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v690, v724, v846, v692, v693, v694, v695, 3, 10000, 9999, 4) :|: TRUE 58.01/17.75 f_510(v679, v680, v681, v682, v683, v684, v685, 0, v687, 1, v689, v690, v691, v692, v693, v694, v695, 3, 10000, 9999, 4) -> f_513(v679, v680, v681, v682, v683, v684, v685, 0, v691, 1, v689, v690, v687, v692, v693, v694, v695, 3, 10000, 9999, 4) :|: 0 = 0 58.01/17.75 Combined rules. Obtained 1 rulesP rules: 58.01/17.75 f_513(v679:0, v680:0, v681:0, v682:0, v683:0, v684:0, v685:0, 0, v691:0, 1, v689:0, 1 + v724:0, v687:0, v692:0, v693:0, v694:0, v695:0, 3, 10000, 9999, 4) -> f_513(v679:0, v680:0, v681:0, v682:0, v683:0, v684:0, v685:0, 0, v724:0 + v691:0, 1, 1 + v724:0, v724:0, v691:0, v692:0, v693:0, v694:0, v695:0, 3, 10000, 9999, 4) :|: v691:0 > 0 && v691:0 >= v685:0 && v724:0 < 9999 58.01/17.75 Filtered unneeded arguments: 58.01/17.75 f_513(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_513(x7, x9, x12) 58.01/17.75 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 58.01/17.75 f_513(v685:0, v691:0, sum~cons_1~v724:0) -> f_513(v685:0, v724:0 + v691:0, v724:0) :|: v691:0 >= v685:0 && v724:0 < 9999 && v691:0 > 0 && sum~cons_1~v724:0 = 1 + v724:0 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (16) 58.01/17.75 Obligation: 58.01/17.75 Rules: 58.01/17.75 f_513(v685:0, v691:0, sum~cons_1~v724:0) -> f_513(v685:0, v724:0 + v691:0, v724:0) :|: v691:0 >= v685:0 && v724:0 < 9999 && v691:0 > 0 && sum~cons_1~v724:0 = 1 + v724:0 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (17) IRS2T2 (EQUIVALENT) 58.01/17.75 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 58.01/17.75 58.01/17.75 (f_513_3,1) 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (18) 58.01/17.75 Obligation: 58.01/17.75 START: 0; 58.01/17.75 58.01/17.75 FROM: 0; 58.01/17.75 TO: 1; 58.01/17.75 58.01/17.75 FROM: 1; 58.01/17.75 oldX0 := x0; 58.01/17.75 oldX1 := x1; 58.01/17.75 oldX2 := x2; 58.01/17.75 oldX3 := oldX2 - 1; 58.01/17.75 assume(oldX1 >= oldX0 && oldX3 < 9999 && oldX1 > 0 && oldX2 = 1 + oldX3); 58.01/17.75 x0 := oldX0; 58.01/17.75 x1 := oldX3 + oldX1; 58.01/17.75 x2 := oldX2 - 1; 58.01/17.75 TO: 1; 58.01/17.75 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (19) T2 (EQUIVALENT) 58.01/17.75 No proof given by T2 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (20) 58.01/17.75 YES 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (21) 58.01/17.75 Obligation: 58.01/17.75 SCC 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (22) SCC2IRS (SOUND) 58.01/17.75 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 58.01/17.75 Generated rules. Obtained 13 rulesP rules: 58.01/17.75 f_384(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v303, v304, v305, v306, v307, v308, v309, v310, 3, 10000, 9999, 2, 10001, 4) -> f_387(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9999, 2, 10001, 4) :|: 0 = 0 58.01/17.75 f_387(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9999, 2, 10001, 4) -> f_390(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: v298 < v306 && v298 <= 9998 && 2 <= v306 && 3 <= v303 && 3 <= v299 58.01/17.75 f_390(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_394(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: 0 = 0 58.01/17.75 f_394(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_398(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: TRUE 58.01/17.75 f_398(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v304, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_402(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: 0 = 0 58.01/17.75 f_402(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_405(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: v338 = 1 + v305 && 0 <= 9999 + v338 58.01/17.75 f_405(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_408(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: TRUE 58.01/17.75 f_408(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v303, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_411(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: 0 = 0 58.01/17.75 f_411(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_415(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v342, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: 1 + v342 = v306 && 1 <= v342 && v342 <= 9998 58.01/17.75 f_415(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v342, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_419(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v342, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: TRUE 58.01/17.75 f_419(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v342, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_423(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v342, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) :|: TRUE 58.01/17.75 f_423(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v342, v307, v308, v309, v310, 3, 10000, 9998, 10001, 9999, 2, 4) -> f_381(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v306, v305, v338, v342, v307, v308, v309, v310, 3, 10000, 9999, 2, 10001, 4) :|: TRUE 58.01/17.75 f_381(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v303, v304, v305, v306, v307, v308, v309, v310, 3, 10000, 9999, 2, 10001, 4) -> f_384(v293, v294, v295, v296, v297, v298, v299, 0, 1, v302, v303, v304, v305, v306, v307, v308, v309, v310, 3, 10000, 9999, 2, 10001, 4) :|: 0 = 0 58.01/17.75 Combined rules. Obtained 1 rulesP rules: 58.01/17.75 f_384(v293:0, v294:0, v295:0, v296:0, v297:0, v298:0, v299:0, 0, 1, v302:0, v303:0, v304:0, v305:0, 1 + v342:0, v307:0, v308:0, v309:0, v310:0, 3, 10000, 9999, 2, 10001, 4) -> f_384(v293:0, v294:0, v295:0, v296:0, v297:0, v298:0, v299:0, 0, 1, v302:0, 1 + v342:0, v305:0, 1 + v305:0, v342:0, v307:0, v308:0, v309:0, v310:0, 3, 10000, 9999, 2, 10001, 4) :|: v298:0 < 9999 && v298:0 < 1 + v342:0 && v342:0 > 0 && v303:0 > 2 && v299:0 > 2 && v305:0 > -10001 && v342:0 < 9999 58.01/17.75 Filtered unneeded arguments: 58.01/17.75 f_384(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24) -> f_384(x6, x7, x11, x13, x14) 58.01/17.75 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 58.01/17.75 f_384(v298:0, v299:0, v303:0, v305:0, sum~cons_1~v342:0) -> f_384(v298:0, v299:0, 1 + v342:0, 1 + v305:0, v342:0) :|: v298:0 < 1 + v342:0 && v298:0 < 9999 && v342:0 > 0 && v303:0 > 2 && v299:0 > 2 && v342:0 < 9999 && v305:0 > -10001 && sum~cons_1~v342:0 = 1 + v342:0 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (23) 58.01/17.75 Obligation: 58.01/17.75 Rules: 58.01/17.75 f_384(v298:0, v299:0, v303:0, v305:0, sum~cons_1~v342:0) -> f_384(v298:0, v299:0, 1 + v342:0, 1 + v305:0, v342:0) :|: v298:0 < 1 + v342:0 && v298:0 < 9999 && v342:0 > 0 && v303:0 > 2 && v299:0 > 2 && v342:0 < 9999 && v305:0 > -10001 && sum~cons_1~v342:0 = 1 + v342:0 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (24) IntTRSCompressionProof (EQUIVALENT) 58.01/17.75 Compressed rules. 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (25) 58.01/17.75 Obligation: 58.01/17.75 Rules: 58.01/17.75 f_384(v298:0:0, v299:0:0, v303:0:0, v305:0:0, sum~cons_1~v342:0:0) -> f_384(v298:0:0, v299:0:0, 1 + v342:0:0, 1 + v305:0:0, v342:0:0) :|: v342:0:0 < 9999 && v305:0:0 > -10001 && v299:0:0 > 2 && v303:0:0 > 2 && v342:0:0 > 0 && v298:0:0 < 9999 && v298:0:0 < 1 + v342:0:0 && sum~cons_1~v342:0:0 = 1 + v342:0:0 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (26) RankingReductionPairProof (EQUIVALENT) 58.01/17.75 Interpretation: 58.01/17.75 [ f_384 ] = f_384_5 58.01/17.75 58.01/17.75 The following rules are decreasing: 58.01/17.75 f_384(v298:0:0, v299:0:0, v303:0:0, v305:0:0, sum~cons_1~v342:0:0) -> f_384(v298:0:0, v299:0:0, 1 + v342:0:0, 1 + v305:0:0, v342:0:0) :|: v342:0:0 < 9999 && v305:0:0 > -10001 && v299:0:0 > 2 && v303:0:0 > 2 && v342:0:0 > 0 && v298:0:0 < 9999 && v298:0:0 < 1 + v342:0:0 && sum~cons_1~v342:0:0 = 1 + v342:0:0 58.01/17.75 58.01/17.75 The following rules are bounded: 58.01/17.75 f_384(v298:0:0, v299:0:0, v303:0:0, v305:0:0, sum~cons_1~v342:0:0) -> f_384(v298:0:0, v299:0:0, 1 + v342:0:0, 1 + v305:0:0, v342:0:0) :|: v342:0:0 < 9999 && v305:0:0 > -10001 && v299:0:0 > 2 && v303:0:0 > 2 && v342:0:0 > 0 && v298:0:0 < 9999 && v298:0:0 < 1 + v342:0:0 && sum~cons_1~v342:0:0 = 1 + v342:0:0 58.01/17.75 58.01/17.75 58.01/17.75 ---------------------------------------- 58.01/17.75 58.01/17.75 (27) 58.01/17.75 YES 58.09/17.81 EOF