/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToLLVMProof [EQUIVALENT, 179 ms] (2) LLVM problem (3) LLVMToTerminationGraphProof [EQUIVALENT, 3914 ms] (4) LLVM Symbolic Execution Graph (5) SymbolicExecutionGraphToSCCProof [SOUND, 0 ms] (6) AND (7) LLVM Symbolic Execution SCC (8) SCC2IRS [SOUND, 116 ms] (9) IntTRS (10) IRS2T2 [EQUIVALENT, 0 ms] (11) T2IntSys (12) T2 [EQUIVALENT, 783 ms] (13) YES (14) LLVM Symbolic Execution SCC (15) SCC2IRS [SOUND, 45 ms] (16) IntTRS (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IntTRS (19) RankingReductionPairProof [EQUIVALENT, 4 ms] (20) YES (21) LLVM Symbolic Execution SCC (22) SCC2IRS [SOUND, 94 ms] (23) IntTRS (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] (25) IntTRS (26) RankingReductionPairProof [EQUIVALENT, 7 ms] (27) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox2/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (2) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %a = alloca i32, align 4 %x = alloca i32, align 4 %max = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %max %3 = load %max %4 = icmp sgt %3 0 br %4, %5, %23 5: store 0, %a store 1, %x br %6 6: %7 = load %x %8 = load %max %9 = icmp sle %7 %8 br %9, %10, %22 10: %11 = call i32 @__VERIFIER_nondet_int() %12 = icmp ne %11 0 br %12, %13, %16 13: %14 = load %a %15 = add %14 1 store %15, %a br %19 16: %17 = load %a %18 = sub %17 1 store %18, %a br %19 19: %20 = load %x %21 = add %20 1 store %21, %x br %6 22: br %23 23: ret 0 Analyze Termination of all function calls matching the pattern: main() ---------------------------------------- (3) LLVMToTerminationGraphProof (EQUIVALENT) Constructed symbolic execution graph for LLVM program and proved memory safety. ---------------------------------------- (4) Obligation: SE Graph ---------------------------------------- (5) SymbolicExecutionGraphToSCCProof (SOUND) Splitted symbolic execution graph to 3 SCCs. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC ---------------------------------------- (8) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 46 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 6 rulesP rules: 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) 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 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 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 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 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 Filtered unneeded arguments: 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) 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) Removed division, modulo operations, cleaned up constraints. Obtained 5 rules.P rules: 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 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 f_649(v1999:0, v2012:0, v2092:0, v2007:0) -> f_582(v1999:0, v2012:0, 1 + v2007:0) :|: v2092:0 < 0 f_649(v1999:0, v2012:0, v2092:0, v2007:0) -> f_582(v1999:0, v2012:0, 1 + v2007:0) :|: v2092:0 > 0 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 ---------------------------------------- (9) Obligation: Rules: 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 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 f_649(x6, x7, x8, x9) -> f_582(x6, x7, 1 + x9) :|: x8 < 0 f_649(x10, x11, x12, x13) -> f_582(x10, x11, 1 + x13) :|: x12 > 0 f_582(x14, x15, x16) -> f_582(x14, 1 + x15, 1 + x16) :|: x14 > 2 && x14 >= 1 + x15 && x15 > 1 ---------------------------------------- (10) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f_582_4,1) (f_649_4,2) ---------------------------------------- (11) Obligation: START: 0; FROM: 0; TO: 1; FROM: 0; TO: 2; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX5 := oldX2 - 1; oldX4 := nondet(); assume(oldX0 > 2 && oldX1 > 1 && oldX0 >= 1 + (1 + oldX1) && oldX0 >= 1 + oldX1 && oldX2 = 1 + oldX5); x0 := oldX0; x1 := 1 + (1 + oldX1); x2 := oldX4; x3 := oldX2 - 1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX5 := oldX3 - 1; oldX4 := nondet(); assume(oldX0 >= 1 + oldX1 && oldX0 > 2 && oldX1 > 1 && oldX2 = 0 && oldX3 = 1 + oldX5); x0 := oldX0; x1 := 1 + oldX1; x2 := oldX4; x3 := oldX3 - 1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(oldX2 < 0); x0 := oldX0; x1 := oldX1; x2 := 1 + oldX3; x3 := oldX4; TO: 1; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(oldX2 > 0); x0 := oldX0; x1 := oldX1; x2 := 1 + oldX3; x3 := oldX4; TO: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(oldX0 > 2 && oldX0 >= 1 + oldX1 && oldX1 > 1); x0 := oldX0; x1 := 1 + oldX1; x2 := 1 + oldX2; x3 := oldX4; TO: 1; ---------------------------------------- (12) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 2, 5, 6, 14, 17, 18, 19 using the following rank functions: - Rank function 1: RF for loc. 6: -1+3*x0-3*x1 RF for loc. 7: 1+3*x0-3*x1 RF for loc. 8: -4+3*x0-3*x1 RF for loc. 12: 3*x0-3*x1 Bound for (chained) transitions 5: -1 Bound for (chained) transitions 17: 3 - Rank function 2: RF for loc. 6: 2*x0-2*x1 RF for loc. 7: 2+2*x0-2*x1 RF for loc. 8: -1+2*x0-2*x1 RF for loc. 12: 1+2*x0-2*x1 Bound for (chained) transitions 6: 1 - Rank function 3: RF for loc. 6: -1 RF for loc. 7: 1 RF for loc. 8: -2 RF for loc. 12: 0 Bound for (chained) transitions 2: -1 Bound for (chained) transitions 14: 1 Bound for (chained) transitions 19: 0 - Rank function 4: RF for loc. 6: 0 RF for loc. 12: -x2 Bound for (chained) transitions 18: 1 ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: SCC ---------------------------------------- (15) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 18 rulesP rules: 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 2 rulesP rules: 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 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 Filtered unneeded arguments: 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) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 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 ---------------------------------------- (16) Obligation: Rules: 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 ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: f_474(v913:0:0, sum~cons_1~v915:0:0, v915:0:0) -> f_474(v913:0:0, 1 + (1 + v915:0:0), 1 + v915:0:0) :|: v913:0:0 >= 1 + v915:0:0 && v915:0:0 > 0 && v913:0:0 > 1 && sum~cons_1~v915:0:0 = 1 + v915:0:0 ---------------------------------------- (19) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_474 ] = f_474_1 + -1*f_474_3 The following rules are decreasing: f_474(v913:0:0, sum~cons_1~v915:0:0, v915:0:0) -> f_474(v913:0:0, 1 + (1 + v915:0:0), 1 + v915:0:0) :|: v913:0:0 >= 1 + v915:0:0 && v915:0:0 > 0 && v913:0:0 > 1 && sum~cons_1~v915:0:0 = 1 + v915:0:0 The following rules are bounded: f_474(v913:0:0, sum~cons_1~v915:0:0, v915:0:0) -> f_474(v913:0:0, 1 + (1 + v915:0:0), 1 + v915:0:0) :|: v913:0:0 >= 1 + v915:0:0 && v915:0:0 > 0 && v913:0:0 > 1 && sum~cons_1~v915:0:0 = 1 + v915:0:0 ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: SCC ---------------------------------------- (22) SCC2IRS (SOUND) Transformed LLVM symbolic execution graph SCC into a rewrite problem. Log: Generated rules. Obtained 18 rulesP rules: f_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Combined rules. Obtained 1 rulesP rules: 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 Filtered unneeded arguments: 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) Removed division, modulo operations, cleaned up constraints. Obtained 1 rules.P rules: 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 ---------------------------------------- (23) Obligation: Rules: 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 ---------------------------------------- (24) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (25) Obligation: Rules: f_411(v760:0:0, v766:0:0, sum~cons_1~v828:0:0) -> f_411(v760:0:0, 1 + v766:0:0, v828:0:0) :|: v828:0:0 < -1 && v766:0:0 > 1 && v760:0:0 > 1 && v766:0:0 <= v760:0:0 && sum~cons_1~v828:0:0 = 1 + v828:0:0 ---------------------------------------- (26) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f_411 ] = -1*f_411_2 + f_411_1 The following rules are decreasing: f_411(v760:0:0, v766:0:0, sum~cons_1~v828:0:0) -> f_411(v760:0:0, 1 + v766:0:0, v828:0:0) :|: v828:0:0 < -1 && v766:0:0 > 1 && v760:0:0 > 1 && v766:0:0 <= v760:0:0 && sum~cons_1~v828:0:0 = 1 + v828:0:0 The following rules are bounded: f_411(v760:0:0, v766:0:0, sum~cons_1~v828:0:0) -> f_411(v760:0:0, 1 + v766:0:0, v828:0:0) :|: v828:0:0 < -1 && v766:0:0 > 1 && v760:0:0 > 1 && v766:0:0 <= v760:0:0 && sum~cons_1~v828:0:0 = 1 + v828:0:0 ---------------------------------------- (27) YES