36.25/10.89 YES 38.29/12.40 proof of /export/starexec/sandbox2/benchmark/theBenchmark.c 38.29/12.40 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 38.29/12.40 38.29/12.40 38.29/12.40 Termination of the given C Problem could be proven: 38.29/12.40 38.29/12.40 (0) C Problem 38.29/12.40 (1) CToLLVMProof [EQUIVALENT, 172 ms] 38.29/12.40 (2) LLVM problem 38.29/12.40 (3) LLVMToTerminationGraphProof [EQUIVALENT, 3897 ms] 38.29/12.40 (4) LLVM Symbolic Execution Graph 38.29/12.40 (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] 38.29/12.40 (6) AND 38.29/12.40 (7) LLVM Symbolic Execution SCC 38.29/12.40 (8) SCC2IRS [SOUND, 81 ms] 38.29/12.40 (9) IntTRS 38.29/12.40 (10) IRS2T2 [EQUIVALENT, 0 ms] 38.29/12.40 (11) T2IntSys 38.29/12.40 (12) T2 [EQUIVALENT, 893 ms] 38.29/12.40 (13) YES 38.29/12.40 (14) LLVM Symbolic Execution SCC 38.29/12.40 (15) SCC2IRS [SOUND, 33 ms] 38.29/12.40 (16) IntTRS 38.29/12.40 (17) IRS2T2 [EQUIVALENT, 0 ms] 38.29/12.40 (18) T2IntSys 38.29/12.40 (19) T2 [EQUIVALENT, 692 ms] 38.29/12.40 (20) YES 38.29/12.40 (21) LLVM Symbolic Execution SCC 38.29/12.40 (22) SCC2IRS [SOUND, 67 ms] 38.29/12.40 (23) IntTRS 38.29/12.40 (24) IRS2T2 [EQUIVALENT, 0 ms] 38.29/12.40 (25) T2IntSys 38.29/12.40 (26) T2 [EQUIVALENT, 892 ms] 38.29/12.40 (27) YES 38.29/12.40 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (0) 38.29/12.40 Obligation: 38.29/12.40 c file /export/starexec/sandbox2/benchmark/theBenchmark.c 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (1) CToLLVMProof (EQUIVALENT) 38.29/12.40 Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (2) 38.29/12.40 Obligation: 38.29/12.40 LLVM Problem 38.29/12.40 38.29/12.40 Aliases: 38.29/12.40 38.29/12.40 Data layout: 38.29/12.40 38.29/12.40 "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" 38.29/12.40 38.29/12.40 Machine: 38.29/12.40 38.29/12.40 "x86_64-pc-linux-gnu" 38.29/12.40 38.29/12.40 Type definitions: 38.29/12.40 38.29/12.40 Global variables: 38.29/12.40 38.29/12.40 Function declarations and definitions: 38.29/12.40 38.29/12.40 *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 38.29/12.40 *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 38.29/12.40 0: 38.29/12.40 %1 = alloca i32, align 4 38.29/12.40 %a = alloca i32, align 4 38.29/12.40 %x = alloca i32, align 4 38.29/12.40 %max = alloca i32, align 4 38.29/12.40 store 0, %1 38.29/12.40 %2 = call i32 @__VERIFIER_nondet_int() 38.29/12.40 store %2, %max 38.29/12.40 %3 = load %max 38.29/12.40 %4 = icmp sgt %3 0 38.29/12.40 br %4, %5, %23 38.29/12.40 5: 38.29/12.40 store 0, %a 38.29/12.40 store 1, %x 38.29/12.40 br %6 38.29/12.40 6: 38.29/12.40 %7 = load %x 38.29/12.40 %8 = load %max 38.29/12.40 %9 = icmp sle %7 %8 38.29/12.40 br %9, %10, %22 38.29/12.40 10: 38.29/12.40 %11 = call i32 @__VERIFIER_nondet_int() 38.29/12.40 %12 = icmp ne %11 0 38.29/12.40 br %12, %13, %16 38.29/12.40 13: 38.29/12.40 %14 = load %a 38.29/12.40 %15 = add %14 1 38.29/12.40 store %15, %a 38.29/12.40 br %19 38.29/12.40 16: 38.29/12.40 %17 = load %a 38.29/12.40 %18 = sub %17 1 38.29/12.40 store %18, %a 38.29/12.40 br %19 38.29/12.40 19: 38.29/12.40 %20 = load %x 38.29/12.40 %21 = add %20 1 38.29/12.40 store %21, %x 38.29/12.40 br %6 38.29/12.40 22: 38.29/12.40 br %23 38.29/12.40 23: 38.29/12.40 ret 0 38.29/12.40 38.29/12.40 38.29/12.40 Analyze Termination of all function calls matching the pattern: 38.29/12.40 main() 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (3) LLVMToTerminationGraphProof (EQUIVALENT) 38.29/12.40 Constructed symbolic execution graph for LLVM program and proved memory safety. 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (4) 38.29/12.40 Obligation: 38.29/12.40 SE Graph 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (5) SymbolicExecutionGraphToSCCProof (SOUND) 38.29/12.40 Splitted symbolic execution graph to 3 SCCs. 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (6) 38.29/12.40 Complex Obligation (AND) 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (7) 38.29/12.40 Obligation: 38.29/12.40 SCC 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (8) SCC2IRS (SOUND) 38.29/12.40 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 38.29/12.40 Generated rules. Obtained 46 rulesP rules: 38.29/12.40 f_582(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_584(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1631, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: v1631 = 1 + v1565 && 3 <= v1631 38.29/12.40 f_584(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1631, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_586(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1631, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_586(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1631, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_588(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1631, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_588(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1631, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_590(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_590(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_592(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_592(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_594(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: v1631 <= v1563 && 3 <= v1563 38.29/12.40 f_594(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_598(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_598(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_602(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_602(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1566, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_606(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_606(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_610(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: v1750 != 0 38.29/12.40 f_606(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_611(v1559, v1560, v1561, v1562, v1563, 1, v1631, 0, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 3, 2, 4) :|: v1750 = 0 38.29/12.40 f_610(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_614(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_614(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_618(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_618(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_656(v1559, v1560, v1561, v1562, v1563, 1, v1631, v1750, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 0, v1571, 3, 2, 4) :|: TRUE 38.29/12.40 f_656(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2150, v2151, v2152, v2153, v2154, v2155, 0, v2157, 3, 2, 4) -> f_659(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2151, v2152, v2153, v2154, v2155, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_659(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2151, v2152, v2153, v2154, v2155, 0, 3, 2, 4) -> f_661(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2198, v2152, v2153, v2154, v2155, 0, 3, 2, 4) :|: v2198 = 1 + v2157 38.29/12.40 f_661(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2198, v2152, v2153, v2154, v2155, 0, 3, 2, 4) -> f_663(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2198, v2152, v2153, v2154, v2155, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_663(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2198, v2152, v2153, v2154, v2155, 0, 3, 2, 4) -> f_665(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2198, v2152, v2153, v2154, v2155, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_665(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2198, v2152, v2153, v2154, v2155, 0, 3, 2, 4) -> f_579(v2139, v2140, v2141, v2142, v2143, 1, v2145, v2146, v2147, v2148, v2149, v2157, v2198, v2152, v2153, v2154, v2155, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_579(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1569, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) -> f_582(v1559, v1560, v1561, v1562, v1563, 1, v1565, v1566, v1567, v1568, v1570, v1571, v1572, v1573, v1574, v1575, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_611(v1559, v1560, v1561, v1562, v1563, 1, v1631, 0, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 3, 2, 4) -> f_615(v1559, v1560, v1561, v1562, v1563, 1, v1631, 0, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_615(v1559, v1560, v1561, v1562, v1563, 1, v1631, 0, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 3, 2, 4) -> f_619(v1559, v1560, v1561, v1562, v1563, 1, v1631, 0, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 3, 2, 4) :|: TRUE 38.29/12.40 f_619(v1559, v1560, v1561, v1562, v1563, 1, v1631, 0, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, 3, 2, 4) -> f_658(v1559, v1560, v1561, v1562, v1563, 1, v1631, 0, v1567, v1568, v1565, v1570, v1571, v1572, v1573, v1574, v1575, v1571, 3, 2, 4) :|: TRUE 38.29/12.40 f_658(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2188, v2189, v2190, v2191, v2192, v2193, v2194, v2195, v2196, v2197, 3, 2, 4) -> f_660(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2189, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_660(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2189, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) -> f_662(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2199, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) :|: 1 + v2199 = v2197 38.29/12.40 f_662(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2199, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) -> f_664(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2199, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) :|: TRUE 38.29/12.40 f_664(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2199, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) -> f_666(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2199, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) :|: TRUE 38.29/12.40 f_666(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2197, v2199, v2190, v2191, v2192, v2193, v2194, v2195, v2196, 3, 2, 4) -> f_636(v2180, v2181, v2182, v2183, v2184, 1, v2186, 0, v2191, v2192, v2190, v2197, v2199, v2193, v2194, v2195, v2196, 3, 2, 4) :|: TRUE 38.29/12.40 f_636(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2005, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_637(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_637(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_638(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2012, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: v2012 = 1 + v2001 && 3 <= v2012 38.29/12.40 f_638(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2012, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_639(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2012, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: TRUE 38.29/12.40 f_639(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2012, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_640(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2012, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: TRUE 38.29/12.40 f_640(v1995, v1996, v1997, v1998, v1999, 1, v2001, 0, v2003, v2004, v2012, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_641(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_641(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_642(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_642(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_643(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: v2012 <= v1999 && 3 <= v1999 38.29/12.40 f_643(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_645(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_645(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_647(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: TRUE 38.29/12.40 f_647(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_649(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: TRUE 38.29/12.40 f_649(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_651(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: v2092 != 0 38.29/12.40 f_649(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_652(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: v2092 = 0 38.29/12.40 f_651(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_653(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_653(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 0, 3, 2, 4) -> f_655(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_655(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 0, 3, 2, 4) -> f_656(v1995, v1996, v1997, v1998, v1999, 1, v2012, v2092, v2006, v2007, v2001, v2003, v2004, v2008, v2009, v2010, v2011, 0, v2007, 3, 2, 4) :|: TRUE 38.29/12.40 f_652(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_654(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_654(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_657(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) :|: TRUE 38.29/12.40 f_657(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2003, v2004, v2001, v2006, v2007, v2008, v2009, v2010, v2011, 3, 2, 4) -> f_658(v1995, v1996, v1997, v1998, v1999, 1, v2012, 0, v2006, v2007, v2001, v2003, v2004, v2008, v2009, v2010, v2011, v2007, 3, 2, 4) :|: TRUE 38.29/12.40 Combined rules. Obtained 6 rulesP rules: 38.29/12.40 f_582(v1559:0, v1560:0, v1561:0, v1562:0, v1563:0, 1, v1565:0, v1566:0, v1567:0, v1568:0, v1570:0, 1 + v2199:0, v1572:0, v1573:0, v1574:0, v1575:0, 0, 3, 2, 4) -> f_649(v1559:0, v1560:0, v1561:0, v1562:0, v1563:0, 1, 1 + (1 + v1565:0), v2092:0, 0, v1570:0, 1 + v2199:0, 1 + v1565:0, 1 + v2199:0, v2199:0, v1572:0, v1573:0, v1574:0, v1575:0, 3, 2, 4) :|: v1565:0 > 1 && v1563:0 > 2 && v1563:0 >= 1 + v1565:0 && v1563:0 >= 1 + (1 + v1565:0) 38.29/12.40 f_649(v1995:0, v1996:0, v1997:0, v1998:0, v1999:0, 1, v2012:0, 0, 0, v2003:0, v2004:0, v2001:0, v2006:0, 1 + v2199:0, v2008:0, v2009:0, v2010:0, v2011:0, 3, 2, 4) -> f_649(v1995:0, v1996:0, v1997:0, v1998:0, v1999:0, 1, 1 + v2012:0, v2092:1, 0, v2003:0, v2004:0, v2012:0, 1 + v2199:0, v2199:0, v2008:0, v2009:0, v2010:0, v2011:0, 3, 2, 4) :|: v2012:0 > 1 && v1999:0 >= 1 + v2012:0 && v1999:0 > 2 38.29/12.40 f_649(v1995:0, v1996:0, v1997:0, v1998:0, v1999:0, 1, v2012:0, v2092:0, 0, v2003:0, v2004:0, v2001:0, v2006:0, v2007:0, v2008:0, v2009:0, v2010:0, v2011:0, 3, 2, 4) -> f_582(v1995:0, v1996:0, v1997:0, v1998:0, v1999:0, 1, v2012:0, v2092:0, v2006:0, v2007:0, v2007:0, 1 + v2007:0, v2008:0, v2009:0, v2010:0, v2011:0, 0, 3, 2, 4) :|: v2092:0 < 0 38.29/12.40 f_649(v1995:0, v1996:0, v1997:0, v1998:0, v1999:0, 1, v2012:0, v2092:0, 0, v2003:0, v2004:0, v2001:0, v2006:0, v2007:0, v2008:0, v2009:0, v2010:0, v2011:0, 3, 2, 4) -> f_582(v1995:0, v1996:0, v1997:0, v1998:0, v1999:0, 1, v2012:0, v2092:0, v2006:0, v2007:0, v2007:0, 1 + v2007:0, v2008:0, v2009:0, v2010:0, v2011:0, 0, 3, 2, 4) :|: v2092:0 > 0 38.29/12.40 f_582(v1559:0, v1560:0, v1561:0, v1562:0, v1563:0, 1, v1565:0, v1566:0, v1567:0, v1568:0, v1570:0, v1571:0, v1572:0, v1573:0, v1574:0, v1575:0, 0, 3, 2, 4) -> f_582(v1559:0, v1560:0, v1561:0, v1562:0, v1563:0, 1, 1 + v1565:0, v1750:0, v1567:0, v1568:0, v1571:0, 1 + v1571:0, v1572:0, v1573:0, v1574:0, v1575:0, 0, 3, 2, 4) :|: v1565:0 > 1 && v1563:0 > 2 && v1750:0 < 0 && v1563:0 >= 1 + v1565:0 38.29/12.40 f_582(v1559:0, v1560:0, v1561:0, v1562:0, v1563:0, 1, v1565:0, v1566:0, v1567:0, v1568:0, v1570:0, v1571:0, v1572:0, v1573:0, v1574:0, v1575:0, 0, 3, 2, 4) -> f_582(v1559:0, v1560:0, v1561:0, v1562:0, v1563:0, 1, 1 + v1565:0, v1750:0, v1567:0, v1568:0, v1571:0, 1 + v1571:0, v1572:0, v1573:0, v1574:0, v1575:0, 0, 3, 2, 4) :|: v1565:0 > 1 && v1563:0 > 2 && v1750:0 > 0 && v1563:0 >= 1 + v1565:0 38.29/12.40 Filtered unneeded arguments: 38.29/12.40 f_582(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) -> f_582(x5, x7, x12) 38.29/12.40 f_649(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) -> f_649(x5, x7, x8, x14) 38.29/12.40 Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 38.29/12.40 f_582(v1563:0, v1565:0, sum~cons_1~v2199:0) -> f_649(v1563:0, 1 + (1 + v1565:0), v2092:0, v2199:0) :|: v1563:0 > 2 && v1565:0 > 1 && v1563:0 >= 1 + (1 + v1565:0) && v1563:0 >= 1 + v1565:0 && sum~cons_1~v2199:0 = 1 + v2199:0 38.29/12.40 f_649(v1999:0, v2012:0, cons_0, sum~cons_1~v2199:0) -> f_649(v1999:0, 1 + v2012:0, v2092:1, v2199:0) :|: v1999:0 >= 1 + v2012:0 && v1999:0 > 2 && v2012:0 > 1 && cons_0 = 0 && sum~cons_1~v2199:0 = 1 + v2199:0 38.29/12.40 f_649(v1999:0, v2012:0, v2092:0, v2007:0) -> f_582(v1999:0, v2012:0, 1 + v2007:0) :|: v2092:0 < 0 38.29/12.40 f_649(v1999:0, v2012:0, v2092:0, v2007:0) -> f_582(v1999:0, v2012:0, 1 + v2007:0) :|: v2092:0 > 0 38.29/12.40 f_582(v1563:0, v1565:0, v1571:0) -> f_582(v1563:0, 1 + v1565:0, 1 + v1571:0) :|: v1563:0 > 2 && v1563:0 >= 1 + v1565:0 && v1565:0 > 1 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (9) 38.29/12.40 Obligation: 38.29/12.40 Rules: 38.29/12.40 f_582(v1563:0, v1565:0, sum~cons_1~v2199:0) -> f_649(v1563:0, 1 + (1 + v1565:0), v2092:0, v2199:0) :|: v1563:0 > 2 && v1565:0 > 1 && v1563:0 >= 1 + (1 + v1565:0) && v1563:0 >= 1 + v1565:0 && sum~cons_1~v2199:0 = 1 + v2199:0 38.29/12.40 f_649(x, x1, x2, x3) -> f_649(x, 1 + x1, x4, x5) :|: x >= 1 + x1 && x > 2 && x1 > 1 && x2 = 0 && x3 = 1 + x5 38.29/12.40 f_649(x6, x7, x8, x9) -> f_582(x6, x7, 1 + x9) :|: x8 < 0 38.29/12.40 f_649(x10, x11, x12, x13) -> f_582(x10, x11, 1 + x13) :|: x12 > 0 38.29/12.40 f_582(x14, x15, x16) -> f_582(x14, 1 + x15, 1 + x16) :|: x14 > 2 && x14 >= 1 + x15 && x15 > 1 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (10) IRS2T2 (EQUIVALENT) 38.29/12.40 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 38.29/12.40 38.29/12.40 (f_582_4,1) 38.29/12.40 (f_649_4,2) 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (11) 38.29/12.40 Obligation: 38.29/12.40 START: 0; 38.29/12.40 38.29/12.40 FROM: 0; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 FROM: 0; 38.29/12.40 TO: 2; 38.29/12.40 38.29/12.40 FROM: 1; 38.29/12.40 oldX0 := x0; 38.29/12.40 oldX1 := x1; 38.29/12.40 oldX2 := x2; 38.29/12.40 oldX3 := x3; 38.29/12.40 oldX5 := oldX2 - 1; 38.29/12.40 oldX4 := nondet(); 38.29/12.40 assume(oldX0 > 2 && oldX1 > 1 && oldX0 >= 1 + (1 + oldX1) && oldX0 >= 1 + oldX1 && oldX2 = 1 + oldX5); 38.29/12.40 x0 := oldX0; 38.29/12.40 x1 := 1 + (1 + oldX1); 38.29/12.40 x2 := oldX4; 38.29/12.40 x3 := oldX2 - 1; 38.29/12.40 TO: 2; 38.29/12.40 38.29/12.40 FROM: 2; 38.29/12.40 oldX0 := x0; 38.29/12.40 oldX1 := x1; 38.29/12.40 oldX2 := x2; 38.29/12.40 oldX3 := x3; 38.29/12.40 oldX5 := oldX3 - 1; 38.29/12.40 oldX4 := nondet(); 38.29/12.40 assume(oldX0 >= 1 + oldX1 && oldX0 > 2 && oldX1 > 1 && oldX2 = 0 && oldX3 = 1 + oldX5); 38.29/12.40 x0 := oldX0; 38.29/12.40 x1 := 1 + oldX1; 38.29/12.40 x2 := oldX4; 38.29/12.40 x3 := oldX3 - 1; 38.29/12.40 TO: 2; 38.29/12.40 38.29/12.40 FROM: 2; 38.29/12.40 oldX0 := x0; 38.29/12.40 oldX1 := x1; 38.29/12.40 oldX2 := x2; 38.29/12.40 oldX3 := x3; 38.29/12.40 oldX4 := nondet(); 38.29/12.40 assume(oldX2 < 0); 38.29/12.40 x0 := oldX0; 38.29/12.40 x1 := oldX1; 38.29/12.40 x2 := 1 + oldX3; 38.29/12.40 x3 := oldX4; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 FROM: 2; 38.29/12.40 oldX0 := x0; 38.29/12.40 oldX1 := x1; 38.29/12.40 oldX2 := x2; 38.29/12.40 oldX3 := x3; 38.29/12.40 oldX4 := nondet(); 38.29/12.40 assume(oldX2 > 0); 38.29/12.40 x0 := oldX0; 38.29/12.40 x1 := oldX1; 38.29/12.40 x2 := 1 + oldX3; 38.29/12.40 x3 := oldX4; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 FROM: 1; 38.29/12.40 oldX0 := x0; 38.29/12.40 oldX1 := x1; 38.29/12.40 oldX2 := x2; 38.29/12.40 oldX3 := x3; 38.29/12.40 oldX4 := nondet(); 38.29/12.40 assume(oldX0 > 2 && oldX0 >= 1 + oldX1 && oldX1 > 1); 38.29/12.40 x0 := oldX0; 38.29/12.40 x1 := 1 + oldX1; 38.29/12.40 x2 := 1 + oldX2; 38.29/12.40 x3 := oldX4; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (12) T2 (EQUIVALENT) 38.29/12.40 Initially, performed program simplifications using lexicographic rank functions: 38.29/12.40 * Removed transitions 2, 5, 6, 14, 17, 18, 19 using the following rank functions: 38.29/12.40 - Rank function 1: 38.29/12.40 RF for loc. 6: -1+3*x0-3*x1 38.29/12.40 RF for loc. 7: 1+3*x0-3*x1 38.29/12.40 RF for loc. 8: -4+3*x0-3*x1 38.29/12.40 RF for loc. 12: 3*x0-3*x1 38.29/12.40 Bound for (chained) transitions 5: -1 38.29/12.40 Bound for (chained) transitions 17: 3 38.29/12.40 - Rank function 2: 38.29/12.40 RF for loc. 6: 2*x0-2*x1 38.29/12.40 RF for loc. 7: 2+2*x0-2*x1 38.29/12.40 RF for loc. 8: -1+2*x0-2*x1 38.29/12.40 RF for loc. 12: 1+2*x0-2*x1 38.29/12.40 Bound for (chained) transitions 6: 1 38.29/12.40 - Rank function 3: 38.29/12.40 RF for loc. 6: -1 38.29/12.40 RF for loc. 7: 1 38.29/12.40 RF for loc. 8: -2 38.29/12.40 RF for loc. 12: 0 38.29/12.40 Bound for (chained) transitions 2: -1 38.29/12.40 Bound for (chained) transitions 14: 1 38.29/12.40 Bound for (chained) transitions 19: 0 38.29/12.40 - Rank function 4: 38.29/12.40 RF for loc. 6: 0 38.29/12.40 RF for loc. 12: -x2 38.29/12.40 Bound for (chained) transitions 18: 1 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (13) 38.29/12.40 YES 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (14) 38.29/12.40 Obligation: 38.29/12.40 SCC 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (15) SCC2IRS (SOUND) 38.29/12.40 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 38.29/12.40 Generated rules. Obtained 18 rulesP rules: 38.29/12.40 f_474(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_476(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_476(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_478(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: v918 <= v913 && 2 <= v913 38.29/12.40 f_478(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_482(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_482(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_486(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_486(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_490(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_490(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_494(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: v1031 != 0 38.29/12.40 f_494(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_498(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_498(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_502(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_502(v909, v910, v911, v912, v913, 1, v918, v1031, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_506(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_506(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_510(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: v918 = 1 + v915 38.29/12.40 f_510(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_514(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_514(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_518(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_518(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_522(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_522(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v919, v920, v921, v922, 0, 3, 2, 4) -> f_525(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v1225, v919, v920, v921, v922, 0, 3, 2, 4) :|: v1225 = 1 + v918 && 3 <= v1225 38.29/12.40 f_525(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v1225, v919, v920, v921, v922, 0, 3, 2, 4) -> f_528(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v1225, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_528(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v1225, v919, v920, v921, v922, 0, 3, 2, 4) -> f_531(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v1225, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_531(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v1225, v919, v920, v921, v922, 0, 3, 2, 4) -> f_471(v909, v910, v911, v912, v913, 1, v918, v1031, v915, v1225, v919, v920, v921, v922, 0, 3, 2, 4) :|: TRUE 38.29/12.40 f_471(v909, v910, v911, v912, v913, 1, v915, v916, v917, v918, v919, v920, v921, v922, 0, 3, 2, 4) -> f_474(v909, v910, v911, v912, v913, 1, v918, v916, v917, v915, v919, v920, v921, v922, 0, 3, 2, 4) :|: 0 = 0 38.29/12.40 Combined rules. Obtained 2 rulesP rules: 38.29/12.40 f_474(v909:0, v910:0, v911:0, v912:0, v913:0, 1, 1 + v915:0, v916:0, v917:0, v915:0, v919:0, v920:0, v921:0, v922:0, 0, 3, 2, 4) -> f_474(v909:0, v910:0, v911:0, v912:0, v913:0, 1, 1 + (1 + v915:0), v1031:0, v915:0, 1 + v915:0, v919:0, v920:0, v921:0, v922:0, 0, 3, 2, 4) :|: v913:0 > 1 && v913:0 >= 1 + v915:0 && v915:0 > 0 && v1031:0 < 0 38.29/12.40 f_474(v909:0, v910:0, v911:0, v912:0, v913:0, 1, 1 + v915:0, v916:0, v917:0, v915:0, v919:0, v920:0, v921:0, v922:0, 0, 3, 2, 4) -> f_474(v909:0, v910:0, v911:0, v912:0, v913:0, 1, 1 + (1 + v915:0), v1031:0, v915:0, 1 + v915:0, v919:0, v920:0, v921:0, v922:0, 0, 3, 2, 4) :|: v913:0 > 1 && v913:0 >= 1 + v915:0 && v915:0 > 0 && v1031:0 > 0 38.29/12.40 Filtered unneeded arguments: 38.29/12.40 f_474(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) -> f_474(x5, x7, x10) 38.29/12.40 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 38.29/12.40 f_474(v913:0, sum~cons_1~v915:0, v915:0) -> f_474(v913:0, 1 + (1 + v915:0), 1 + v915:0) :|: v913:0 >= 1 + v915:0 && v915:0 > 0 && v913:0 > 1 && sum~cons_1~v915:0 = 1 + v915:0 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (16) 38.29/12.40 Obligation: 38.29/12.40 Rules: 38.29/12.40 f_474(v913:0, sum~cons_1~v915:0, v915:0) -> f_474(v913:0, 1 + (1 + v915:0), 1 + v915:0) :|: v913:0 >= 1 + v915:0 && v915:0 > 0 && v913:0 > 1 && sum~cons_1~v915:0 = 1 + v915:0 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (17) IRS2T2 (EQUIVALENT) 38.29/12.40 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 38.29/12.40 38.29/12.40 (f_474_3,1) 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (18) 38.29/12.40 Obligation: 38.29/12.40 START: 0; 38.29/12.40 38.29/12.40 FROM: 0; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 FROM: 1; 38.29/12.40 oldX0 := x0; 38.29/12.40 oldX1 := x1; 38.29/12.40 oldX2 := x2; 38.29/12.40 assume(oldX0 >= 1 + oldX2 && oldX2 > 0 && oldX0 > 1 && oldX1 = 1 + oldX2); 38.29/12.40 x0 := oldX0; 38.29/12.40 x1 := 1 + (1 + oldX2); 38.29/12.40 x2 := 1 + oldX2; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (19) T2 (EQUIVALENT) 38.29/12.40 Initially, performed program simplifications using lexicographic rank functions: 38.29/12.40 * Removed transitions 1, 3, 4 using the following rank functions: 38.29/12.40 - Rank function 1: 38.29/12.40 RF for loc. 5: 1+2*x0-x1-x2 38.29/12.40 RF for loc. 6: 2*x0-x1-x2 38.29/12.40 Bound for (chained) transitions 3: 1 38.29/12.40 Bound for (chained) transitions 4: 1 38.29/12.40 - Rank function 2: 38.29/12.40 RF for loc. 5: 0 38.29/12.40 RF for loc. 6: -1 38.29/12.40 Bound for (chained) transitions 1: 0 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (20) 38.29/12.40 YES 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (21) 38.29/12.40 Obligation: 38.29/12.40 SCC 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (22) SCC2IRS (SOUND) 38.29/12.40 Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: 38.29/12.40 Generated rules. Obtained 18 rulesP rules: 38.29/12.40 f_411(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_413(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_413(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_416(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: v766 <= v760 && 2 <= v760 38.29/12.40 f_416(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_420(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_420(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_424(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_424(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_428(v756, v757, v758, v759, v760, 1, v766, v803, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_428(v756, v757, v758, v759, v760, 1, v766, v803, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_433(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: v803 = 0 38.29/12.40 f_433(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_437(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_437(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_441(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_441(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_445(v756, v757, v758, v759, v760, 1, v766, 0, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_445(v756, v757, v758, v759, v760, 1, v766, 0, v765, v762, v767, v768, v769, v770, 3, 2, 4) -> f_449(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v762, v767, v768, v769, v770, 3, 2, 4) :|: 1 + v828 = v765 && 2 + v828 <= 0 38.29/12.40 f_449(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v762, v767, v768, v769, v770, 3, 2, 4) -> f_453(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v762, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_453(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v762, v767, v768, v769, v770, 3, 2, 4) -> f_457(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v762, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_457(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v762, v767, v768, v769, v770, 3, 2, 4) -> f_461(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v767, v768, v769, v770, 3, 2, 4) :|: 0 = 0 38.29/12.40 f_461(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v767, v768, v769, v770, 3, 2, 4) -> f_465(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v904, v767, v768, v769, v770, 3, 2, 4) :|: v904 = 1 + v766 && 3 <= v904 38.29/12.40 f_465(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v904, v767, v768, v769, v770, 3, 2, 4) -> f_469(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v904, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_469(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v904, v767, v768, v769, v770, 3, 2, 4) -> f_473(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v904, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_473(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v904, v767, v768, v769, v770, 3, 2, 4) -> f_409(v756, v757, v758, v759, v760, 1, v766, 0, v765, v828, v904, v767, v768, v769, v770, 3, 2, 4) :|: TRUE 38.29/12.40 f_409(v756, v757, v758, v759, v760, 1, v762, 0, v764, v765, v766, v767, v768, v769, v770, 3, 2, 4) -> f_411(v756, v757, v758, v759, v760, 1, v766, 0, v764, v765, v762, v767, v768, v769, v770, 3, 2, 4) :|: 0 = 0 38.29/12.40 Combined rules. Obtained 1 rulesP rules: 38.29/12.40 f_411(v756:0, v757:0, v758:0, v759:0, v760:0, 1, v766:0, 0, v764:0, 1 + v828:0, v762:0, v767:0, v768:0, v769:0, v770:0, 3, 2, 4) -> f_411(v756:0, v757:0, v758:0, v759:0, v760:0, 1, 1 + v766:0, 0, 1 + v828:0, v828:0, v766:0, v767:0, v768:0, v769:0, v770:0, 3, 2, 4) :|: v760:0 > 1 && v766:0 <= v760:0 && v766:0 > 1 && v828:0 < -1 38.29/12.40 Filtered unneeded arguments: 38.29/12.40 f_411(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) -> f_411(x5, x7, x10) 38.29/12.40 Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 38.29/12.40 f_411(v760:0, v766:0, sum~cons_1~v828:0) -> f_411(v760:0, 1 + v766:0, v828:0) :|: v766:0 <= v760:0 && v760:0 > 1 && v828:0 < -1 && v766:0 > 1 && sum~cons_1~v828:0 = 1 + v828:0 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (23) 38.29/12.40 Obligation: 38.29/12.40 Rules: 38.29/12.40 f_411(v760:0, v766:0, sum~cons_1~v828:0) -> f_411(v760:0, 1 + v766:0, v828:0) :|: v766:0 <= v760:0 && v760:0 > 1 && v828:0 < -1 && v766:0 > 1 && sum~cons_1~v828:0 = 1 + v828:0 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (24) IRS2T2 (EQUIVALENT) 38.29/12.40 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 38.29/12.40 38.29/12.40 (f_411_3,1) 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (25) 38.29/12.40 Obligation: 38.29/12.40 START: 0; 38.29/12.40 38.29/12.40 FROM: 0; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 FROM: 1; 38.29/12.40 oldX0 := x0; 38.29/12.40 oldX1 := x1; 38.29/12.40 oldX2 := x2; 38.29/12.40 oldX3 := oldX2 - 1; 38.29/12.40 assume(oldX1 <= oldX0 && oldX0 > 1 && oldX3 < -1 && oldX1 > 1 && oldX2 = 1 + oldX3); 38.29/12.40 x0 := oldX0; 38.29/12.40 x1 := 1 + oldX1; 38.29/12.40 x2 := oldX2 - 1; 38.29/12.40 TO: 1; 38.29/12.40 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (26) T2 (EQUIVALENT) 38.29/12.40 Initially, performed program simplifications using lexicographic rank functions: 38.29/12.40 * Removed transitions 1, 3, 4 using the following rank functions: 38.29/12.40 - Rank function 1: 38.29/12.40 RF for loc. 5: 1+2*x0-2*x1 38.29/12.40 RF for loc. 6: 2*x0-2*x1 38.29/12.40 Bound for (chained) transitions 3: 0 38.29/12.40 Bound for (chained) transitions 4: 0 38.29/12.40 - Rank function 2: 38.29/12.40 RF for loc. 5: 1 38.29/12.40 RF for loc. 6: 0 38.29/12.40 Bound for (chained) transitions 1: 1 38.29/12.40 38.29/12.40 ---------------------------------------- 38.29/12.40 38.29/12.40 (27) 38.29/12.40 YES 38.42/12.44 EOF