/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 562 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 9 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 51 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 26 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 175 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 442 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) FilterProof [EQUIVALENT, 0 ms] (30) IntTRS (31) IntTRSCompressionProof [EQUIVALENT, 0 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 29 ms] (34) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: /** * Parts of the below code have been adapted from * * http://www0.cs.ucl.ac.uk/staff/p.ohearn/Talks/SAStalk.pdf * * Based on the motivating example of the paper * * Automatic termination proofs for programs with shape-shifting heaps * Josh Berdine, Byron Cook, Dino Distefano, and Peter W. O’Hearn * In Proc. CAV'06, LNCS 4144, pp. 386 - 400, 2006. */ public class Kernel95 { /** * A reference to the next list element. */ private Kernel95 next; public static void main(String[] args) { int random1 = args[0].length(); int random2 = args[1].length(); //slide68(random1, random2); //slide88(random1, random2); //slide93(random1, random2); slide95(random1, random2); } /** * Create a new list element. * @param n a reference to the next element. */ public Kernel95(final Kernel95 n) { this.next = n; } /** * Create a new cyclical list of a length x. * @param x some length * @return cyclical list of length max(1, x) */ public static Kernel95 create(int x) { Kernel95 last, current; last = current = new Kernel95(null); while (--x > 0) current = new Kernel95(current); return last.next = current; } /** * Check if the last bit of x is > 0. */ private static boolean check(int x) { return x % 2 > 0; } public static void slide68(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; c = c.next; if (check(random2)) { // nondet() p.next = c; //dispose(o); o = null; // Java's garbage collector will notice that the object // previously referenced by o is not referenced any more // and will release it (of course, in the next loop iteration // this would happen anyway); obviously, this does not have // quite the impact of a proper "dispose" operation, which // also renders all other pointer invalid that happen to point // to the same address } else { p = o; } // get a fresh random bit to the end of random2 random2 = random2 / 2; } } public static void slide88(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel95 e = o.next; p.next = e; //dispose(o); o = null; // Java's garbage collector will notice that the object // previously referenced by o is not referenced any more // and will release it c = o; // for a faithful translation of the original C code, // let c point to whatever o points to -- the interesting // aspect is that dereferencing this memory location // henceforth is a very bad idea (in C, obviously, this would // not necessarily lead to a clean exception at runtime) } else { p = o; } c = c.next; // get a fresh random bit to the end of random2 random2 = random2 / 2; } } /** * Non-terminating. */ public static void slide93(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel95 e = o.next; p.next = e; o.next = o; } else { p = o; } c = c.next; // get a fresh random bit to the end of random2 random2 = random2 / 2; } } public static void slide95(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; c = c.next; if (check(random2)) { // nondet() Kernel95 e = o.next; p.next = e; o.next = o; } else { p = o; } // get a fresh random bit to the end of random2 random2 = random2 / 2; } } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: /** * Parts of the below code have been adapted from * * http://www0.cs.ucl.ac.uk/staff/p.ohearn/Talks/SAStalk.pdf * * Based on the motivating example of the paper * * Automatic termination proofs for programs with shape-shifting heaps * Josh Berdine, Byron Cook, Dino Distefano, and Peter W. O’Hearn * In Proc. CAV'06, LNCS 4144, pp. 386 - 400, 2006. */ public class Kernel95 { /** * A reference to the next list element. */ private Kernel95 next; public static void main(String[] args) { int random1 = args[0].length(); int random2 = args[1].length(); //slide68(random1, random2); //slide88(random1, random2); //slide93(random1, random2); slide95(random1, random2); } /** * Create a new list element. * @param n a reference to the next element. */ public Kernel95(final Kernel95 n) { this.next = n; } /** * Create a new cyclical list of a length x. * @param x some length * @return cyclical list of length max(1, x) */ public static Kernel95 create(int x) { Kernel95 last, current; last = current = new Kernel95(null); while (--x > 0) current = new Kernel95(current); return last.next = current; } /** * Check if the last bit of x is > 0. */ private static boolean check(int x) { return x % 2 > 0; } public static void slide68(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; c = c.next; if (check(random2)) { // nondet() p.next = c; //dispose(o); o = null; // Java's garbage collector will notice that the object // previously referenced by o is not referenced any more // and will release it (of course, in the next loop iteration // this would happen anyway); obviously, this does not have // quite the impact of a proper "dispose" operation, which // also renders all other pointer invalid that happen to point // to the same address } else { p = o; } // get a fresh random bit to the end of random2 random2 = random2 / 2; } } public static void slide88(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel95 e = o.next; p.next = e; //dispose(o); o = null; // Java's garbage collector will notice that the object // previously referenced by o is not referenced any more // and will release it c = o; // for a faithful translation of the original C code, // let c point to whatever o points to -- the interesting // aspect is that dereferencing this memory location // henceforth is a very bad idea (in C, obviously, this would // not necessarily lead to a clean exception at runtime) } else { p = o; } c = c.next; // get a fresh random bit to the end of random2 random2 = random2 / 2; } } /** * Non-terminating. */ public static void slide93(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel95 e = o.next; p.next = e; o.next = o; } else { p = o; } c = c.next; // get a fresh random bit to the end of random2 random2 = random2 / 2; } } public static void slide95(int random1, int random2) { Kernel95 h = create(random1); Kernel95 p = h; Kernel95 c = p.next; while (c != h) { Kernel95 o = c; c = c.next; if (check(random2)) { // nondet() Kernel95 e = o.next; p.next = e; o.next = o; } else { p = o; } // get a fresh random bit to the end of random2 random2 = random2 / 2; } } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Kernel95.main([Ljava/lang/String;)V: Graph of 202 nodes with 1 SCC. Kernel95.create(I)LKernel95;: Graph of 42 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 2 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Kernel95.create(I)LKernel95; SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 17 IRulesP rules: f809_0_create_Load(EOS(STATIC_809), i80, o73[Kernel95.next]o72) -> f812_0_create_LE(EOS(STATIC_812), i80, i80, o73[Kernel95.next]o72) :|: TRUE f812_0_create_LE(EOS(STATIC_812), i82, i82, o73[Kernel95.next]o72) -> f823_0_create_LE(EOS(STATIC_823), i82, i82, o73[Kernel95.next]o72) :|: TRUE f823_0_create_LE(EOS(STATIC_823), i82, i82, o73[Kernel95.next]o72) -> f831_0_create_New(EOS(STATIC_831), i82, o73[Kernel95.next]o72) :|: i82 > 0 f831_0_create_New(EOS(STATIC_831), i82, o73[Kernel95.next]o72) -> f837_0_create_Duplicate(EOS(STATIC_837), i82, o73[Kernel95.next]o72) :|: TRUE f837_0_create_Duplicate(EOS(STATIC_837), i82, o73[Kernel95.next]o72) -> f840_0_create_Load(EOS(STATIC_840), i82, o73[Kernel95.next]o72) :|: TRUE f840_0_create_Load(EOS(STATIC_840), i82, o73[Kernel95.next]o72) -> f842_0_create_InvokeMethod(EOS(STATIC_842), i82, o73[Kernel95.next]o72) :|: TRUE f842_0_create_InvokeMethod(EOS(STATIC_842), i82, o73[Kernel95.next]o72) -> f859_0__init__Load(EOS(STATIC_859), i82, o73[Kernel95.next]o72) :|: TRUE f859_0__init__Load(EOS(STATIC_859), i82, o73[Kernel95.next]o72) -> f888_0__init__InvokeMethod(EOS(STATIC_888), i82, o73[Kernel95.next]o72) :|: TRUE f888_0__init__InvokeMethod(EOS(STATIC_888), i82, o73[Kernel95.next]o72) -> f904_0__init__Load(EOS(STATIC_904), i82, o73[Kernel95.next]o72) :|: TRUE f904_0__init__Load(EOS(STATIC_904), i82, o73[Kernel95.next]o72) -> f934_0__init__Load(EOS(STATIC_934), i82, o73[Kernel95.next]o72) :|: TRUE f934_0__init__Load(EOS(STATIC_934), i82, o73[Kernel95.next]o72) -> f940_0__init__FieldAccess(EOS(STATIC_940), i82, o73[Kernel95.next]o72) :|: TRUE f940_0__init__FieldAccess(EOS(STATIC_940), i82, o73[Kernel95.next]o72) -> f949_0__init__Return(EOS(STATIC_949), i82, o73[Kernel95.next]o72) :|: TRUE f949_0__init__Return(EOS(STATIC_949), i82, o73[Kernel95.next]o72) -> f954_0_create_Store(EOS(STATIC_954), i82, o73[Kernel95.next]o72) :|: TRUE f954_0_create_Store(EOS(STATIC_954), i82, o73[Kernel95.next]o72) -> f957_0_create_JMP(EOS(STATIC_957), i82, o73[Kernel95.next]o72) :|: TRUE f957_0_create_JMP(EOS(STATIC_957), i82, o73[Kernel95.next]o72) -> f1032_0_create_Inc(EOS(STATIC_1032), i82, o73[Kernel95.next]o72) :|: TRUE f1032_0_create_Inc(EOS(STATIC_1032), i82, o73[Kernel95.next]o72) -> f803_0_create_Inc(EOS(STATIC_803), i82, o82[Kernel95.next]o72) :|: TRUE f803_0_create_Inc(EOS(STATIC_803), i53, o73[Kernel95.next]o72) -> f809_0_create_Load(EOS(STATIC_809), i53 + -1, o73[Kernel95.next]o72) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f809_0_create_Load(EOS(STATIC_809), i80:0, o73[Kernel95.next]o72:0) -> f809_0_create_Load(EOS(STATIC_809), i80:0 - 1, o82[Kernel95.next]o72:0) :|: i80:0 > 0 Filtered constant ground arguments: f809_0_create_Load(x1, x2, x3) -> f809_0_create_Load(x2, x3) EOS(x1) -> EOS Filtered unneeded arguments: f809_0_create_Load(x1, x2) -> f809_0_create_Load(x1) Finished conversion. Obtained 1 rules.P rules: f809_0_create_Load(i80:0) -> f809_0_create_Load(i80:0 - 1) :|: i80:0 > 0 ---------------------------------------- (9) Obligation: Rules: f809_0_create_Load(i80:0) -> f809_0_create_Load(i80:0 - 1) :|: i80:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f809_0_create_Load(i80:0) -> f809_0_create_Load(arith) :|: i80:0 > 0 && arith = i80:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f809_0_create_Load(i80:0) -> f809_0_create_Load(arith) :|: i80:0 > 0 && arith = i80:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f809_0_create_Load(i80:0) -> f809_0_create_Load(arith) :|: i80:0 > 0 && arith = i80:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f809_0_create_Load(i80:0:0) -> f809_0_create_Load(i80:0:0 - 1) :|: i80:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f809_0_create_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f809_0_create_Load(i80:0:0) -> f809_0_create_Load(c) :|: c = i80:0:0 - 1 && i80:0:0 > 0 ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f809_0_create_Load ] = f809_0_create_Load_1 The following rules are decreasing: f809_0_create_Load(i80:0:0) -> f809_0_create_Load(c) :|: c = i80:0:0 - 1 && i80:0:0 > 0 The following rules are bounded: f809_0_create_Load(i80:0:0) -> f809_0_create_Load(c) :|: c = i80:0:0 - 1 && i80:0:0 > 0 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Kernel95.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Kernel95: [next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 59 IRulesP rules: f2059_0_slide95_EQ(EOS(STATIC_2059), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) -> f2063_0_slide95_Load(EOS(STATIC_2063), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) :|: TRUE f2063_0_slide95_Load(EOS(STATIC_2063), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) -> f2065_0_slide95_Store(EOS(STATIC_2065), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) :|: TRUE f2065_0_slide95_Store(EOS(STATIC_2065), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) -> f2066_0_slide95_Load(EOS(STATIC_2066), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) :|: TRUE f2066_0_slide95_Load(EOS(STATIC_2066), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) -> f2068_0_slide95_FieldAccess(EOS(STATIC_2068), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) :|: TRUE f2068_0_slide95_FieldAccess(EOS(STATIC_2068), i179, o498[Kernel95.next]o498, o539[Kernel95.next]o499, o539[Kernel95.next]o498, o539[Kernel95.next]o497) -> f2074_0_slide95_FieldAccess(EOS(STATIC_2074), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: o540[Kernel95.next]o499 < o539[Kernel95.next]o499 && o539[Kernel95.next]o499 >= 0 && o540[Kernel95.next]o497 < o539[Kernel95.next]o497 && o539[Kernel95.next]o497 >= 0 f2074_0_slide95_FieldAccess(EOS(STATIC_2074), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2077_0_slide95_Store(EOS(STATIC_2077), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2077_0_slide95_Store(EOS(STATIC_2077), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2080_0_slide95_Load(EOS(STATIC_2080), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2080_0_slide95_Load(EOS(STATIC_2080), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2083_0_slide95_InvokeMethod(EOS(STATIC_2083), i179, i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2083_0_slide95_InvokeMethod(EOS(STATIC_2083), i179, i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2085_0_check_Load(EOS(STATIC_2085), i179, i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2085_0_check_Load(EOS(STATIC_2085), i179, i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2086_0_check_ConstantStackPush(EOS(STATIC_2086), i179, i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2086_0_check_ConstantStackPush(EOS(STATIC_2086), i179, i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2087_0_check_IntArithmetic(EOS(STATIC_2087), i179, i179, 2, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2087_0_check_IntArithmetic(EOS(STATIC_2087), i179, i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2089_0_check_LE(EOS(STATIC_2089), i179, i179 % 2, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE && matching1 = 2 f2089_0_check_LE(EOS(STATIC_2089), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2091_0_check_LE(EOS(STATIC_2091), i179, 0, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE && matching1 = 0 f2089_0_check_LE(EOS(STATIC_2089), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2092_0_check_LE(EOS(STATIC_2092), i179, 1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE && matching1 = 1 f2091_0_check_LE(EOS(STATIC_2091), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2094_0_check_ConstantStackPush(EOS(STATIC_2094), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: 0 <= 0 && matching1 = 0 f2094_0_check_ConstantStackPush(EOS(STATIC_2094), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2099_0_check_Return(EOS(STATIC_2099), i179, 0, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2099_0_check_Return(EOS(STATIC_2099), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2121_0_slide95_EQ(EOS(STATIC_2121), i179, 0, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE && matching1 = 0 f2121_0_slide95_EQ(EOS(STATIC_2121), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2123_0_slide95_Load(EOS(STATIC_2123), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o539) :|: o540[Kernel95.next]o539 > o540[Kernel95.next]o499 && o540[Kernel95.next]o499 >= 0 && matching1 = 0 f2123_0_slide95_Load(EOS(STATIC_2123), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o539) -> f2139_0_slide95_Store(EOS(STATIC_2139), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o539) :|: TRUE f2139_0_slide95_Store(EOS(STATIC_2139), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o539) -> f2143_0_slide95_Load(EOS(STATIC_2143), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o539) :|: TRUE f2143_0_slide95_Load(EOS(STATIC_2143), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o539) -> f2279_0_slide95_Load(EOS(STATIC_2279), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o539) :|: TRUE f2279_0_slide95_Load(EOS(STATIC_2279), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2286_0_slide95_ConstantStackPush(EOS(STATIC_2286), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2286_0_slide95_ConstantStackPush(EOS(STATIC_2286), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2288_0_slide95_IntArithmetic(EOS(STATIC_2288), i179, 2, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2288_0_slide95_IntArithmetic(EOS(STATIC_2288), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2299_0_slide95_Store(EOS(STATIC_2299), i212, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: i212 = i179 / 2 && i212 <= i179 && matching1 = 2 f2299_0_slide95_Store(EOS(STATIC_2299), i212, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2306_0_slide95_JMP(EOS(STATIC_2306), i212, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2306_0_slide95_JMP(EOS(STATIC_2306), i212, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2339_0_slide95_Load(EOS(STATIC_2339), i212, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2339_0_slide95_Load(EOS(STATIC_2339), i212, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2000_0_slide95_Load(EOS(STATIC_2000), i212, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499, o540[Kernel95.next]o498) :|: TRUE f2000_0_slide95_Load(EOS(STATIC_2000), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o497, o500[Kernel95.next]o499, o500[Kernel95.next]o498) -> f2006_0_slide95_Load(EOS(STATIC_2006), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o497, o500[Kernel95.next]o499, o500[Kernel95.next]o498) :|: TRUE f2006_0_slide95_Load(EOS(STATIC_2006), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o497, o500[Kernel95.next]o499, o500[Kernel95.next]o498) -> f2035_0_slide95_EQ(EOS(STATIC_2035), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o497, o500[Kernel95.next]o499, o500[Kernel95.next]o498) :|: TRUE f2035_0_slide95_EQ(EOS(STATIC_2035), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o497, o500[Kernel95.next]o499, o500[Kernel95.next]o498) -> f2059_0_slide95_EQ(EOS(STATIC_2059), i179, o498[Kernel95.next]o498, o500[Kernel95.next]o499, o500[Kernel95.next]o498, o500[Kernel95.next]o497) :|: o500[Kernel95.next]o497 > 0 f2092_0_check_LE(EOS(STATIC_2092), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2096_0_check_ConstantStackPush(EOS(STATIC_2096), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: 1 > 0 && matching1 = 1 f2096_0_check_ConstantStackPush(EOS(STATIC_2096), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2103_0_check_JMP(EOS(STATIC_2103), i179, 1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2103_0_check_JMP(EOS(STATIC_2103), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2122_0_check_Return(EOS(STATIC_2122), i179, 1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE && matching1 = 1 f2122_0_check_Return(EOS(STATIC_2122), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2124_0_slide95_EQ(EOS(STATIC_2124), i179, 1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE && matching1 = 1 f2124_0_slide95_EQ(EOS(STATIC_2124), i179, matching1, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2142_0_slide95_Load(EOS(STATIC_2142), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: 1 > 0 && matching1 = 1 f2142_0_slide95_Load(EOS(STATIC_2142), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2163_0_slide95_FieldAccess(EOS(STATIC_2163), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2163_0_slide95_FieldAccess(EOS(STATIC_2163), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2165_0_slide95_Store(EOS(STATIC_2165), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2165_0_slide95_Store(EOS(STATIC_2165), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2167_0_slide95_Load(EOS(STATIC_2167), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2167_0_slide95_Load(EOS(STATIC_2167), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2169_0_slide95_Load(EOS(STATIC_2169), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2169_0_slide95_Load(EOS(STATIC_2169), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2171_0_slide95_FieldAccess(EOS(STATIC_2171), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) :|: TRUE f2171_0_slide95_FieldAccess(EOS(STATIC_2171), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o499, o540[Kernel95.next]o497) -> f2227_0_slide95_FieldAccess(EOS(STATIC_2227), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: o540[Kernel95.next]o499 > 0 f2227_0_slide95_FieldAccess(EOS(STATIC_2227), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2239_0_slide95_FieldAccess(EOS(STATIC_2239), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2227_0_slide95_FieldAccess(EOS(STATIC_2227), i179, o559[Kernel95.next]o559, o540[Kernel95.next]o556, o540[Kernel95.next]o556) -> f2240_0_slide95_FieldAccess(EOS(STATIC_2240), i179, o540[Kernel95.next]o556) :|: TRUE f2239_0_slide95_FieldAccess(EOS(STATIC_2239), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2254_0_slide95_Load(EOS(STATIC_2254), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497new, o540[Kernel95.next]o499) :|: o540[Kernel95.next]o497new <= o540[Kernel95.next]o497 && o540[Kernel95.next]o497 >= 0 f2254_0_slide95_Load(EOS(STATIC_2254), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2260_0_slide95_Load(EOS(STATIC_2260), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2260_0_slide95_Load(EOS(STATIC_2260), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2268_0_slide95_FieldAccess(EOS(STATIC_2268), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2268_0_slide95_FieldAccess(EOS(STATIC_2268), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2270_0_slide95_JMP(EOS(STATIC_2270), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2270_0_slide95_JMP(EOS(STATIC_2270), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) -> f2279_0_slide95_Load(EOS(STATIC_2279), i179, o498[Kernel95.next]o498, o540[Kernel95.next]o497, o540[Kernel95.next]o499) :|: TRUE f2240_0_slide95_FieldAccess(EOS(STATIC_2240), i179, o540[Kernel95.next]o556) -> f2257_0_slide95_Load(EOS(STATIC_2257), i179, o540[Kernel95.next]o556) :|: TRUE f2257_0_slide95_Load(EOS(STATIC_2257), i179, o540[Kernel95.next]o556) -> f2265_0_slide95_Load(EOS(STATIC_2265), i179, o540[Kernel95.next]o556) :|: TRUE f2265_0_slide95_Load(EOS(STATIC_2265), i179, o540[Kernel95.next]o556) -> f2269_0_slide95_FieldAccess(EOS(STATIC_2269), i179, o540[Kernel95.next]o556) :|: TRUE f2269_0_slide95_FieldAccess(EOS(STATIC_2269), i179, o540[Kernel95.next]o556) -> f2278_0_slide95_JMP(EOS(STATIC_2278), i179, o540[Kernel95.next]o556) :|: TRUE f2278_0_slide95_JMP(EOS(STATIC_2278), i179, o540[Kernel95.next]o556) -> f2280_0_slide95_Load(EOS(STATIC_2280), i179, o540[Kernel95.next]o556) :|: TRUE f2280_0_slide95_Load(EOS(STATIC_2280), i179, o540[Kernel95.next]o556) -> f2287_0_slide95_ConstantStackPush(EOS(STATIC_2287), i179, o540[Kernel95.next]o556) :|: TRUE f2287_0_slide95_ConstantStackPush(EOS(STATIC_2287), i179, o540[Kernel95.next]o556) -> f2296_0_slide95_IntArithmetic(EOS(STATIC_2296), i179, 2, o540[Kernel95.next]o556) :|: TRUE f2296_0_slide95_IntArithmetic(EOS(STATIC_2296), i179, matching1, o540[Kernel95.next]o556) -> f2304_0_slide95_Store(EOS(STATIC_2304), i213, o540[Kernel95.next]o556) :|: i213 = i179 / 2 && i213 <= i179 && matching1 = 2 f2304_0_slide95_Store(EOS(STATIC_2304), i213, o540[Kernel95.next]o556) -> f2311_0_slide95_JMP(EOS(STATIC_2311), i213, o540[Kernel95.next]o556) :|: TRUE f2311_0_slide95_JMP(EOS(STATIC_2311), i213, o540[Kernel95.next]o556) -> f2356_0_slide95_Load(EOS(STATIC_2356), i213, o540[Kernel95.next]o556) :|: TRUE f2356_0_slide95_Load(EOS(STATIC_2356), i213, o540[Kernel95.next]o556) -> f2000_0_slide95_Load(EOS(STATIC_2000), i213, o540[Kernel95.next]o540, o540[Kernel95.next]o556, o540[Kernel95.next]o556, o540[Kernel95.next]o540) :|: o540[Kernel95.next]o540 = 0 Combined rules. Obtained 6 IRulesP rules: f2059_0_slide95_EQ(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ'(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) :|: o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && i179:0 >= div1 && o540[Kernel95.next]o499:0 > 0 && o540[Kernel95.next]o497:0 > -1 && o540[Kernel95.next]o497new:0 > 0 && o540[Kernel95.next]o497new:0 <= o540[Kernel95.next]o497:0 f2059_0_slide95_EQ'(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ(EOS(STATIC_2059), div1, o498[Kernel95.next]o498:0, o540[Kernel95.next]o499:0, o540[Kernel95.next]o498:0, o540[Kernel95.next]o497new:0) :|: o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && i179:0 >= div1 && o540[Kernel95.next]o499:0 > 0 && o540[Kernel95.next]o497:0 > -1 && o540[Kernel95.next]o497new:0 <= o540[Kernel95.next]o497:0 && o540[Kernel95.next]o497new:0 > 0 && i179:0 - 2 * div > -2 && i179:0 - 2 * div < 2 && i179:0 - 2 * div1 < 2 && i179:0 - 2 * div1 > -2 f2059_0_slide95_EQ(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ'(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) :|: o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o499:0 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && o540[Kernel95.next]o497:0 > 0 && i179:0 >= div1 f2059_0_slide95_EQ'(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ(EOS(STATIC_2059), div1, 0, o540[Kernel95.next]o497:0, 0, o540[Kernel95.next]o497:0) :|: o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o499:0 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && o540[Kernel95.next]o497:0 > 0 && i179:0 >= div1 && i179:0 - 2 * div > -2 && i179:0 - 2 * div < 2 && i179:0 - 2 * div1 < 2 && i179:0 - 2 * div1 > -2 f2059_0_slide95_EQ(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ'(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) :|: o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 0 && o540[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o539:0 > o540[Kernel95.next]o499:0 && o540[Kernel95.next]o497:0 > 0 && i179:0 >= div1 f2059_0_slide95_EQ'(EOS(STATIC_2059), i179:0, o498[Kernel95.next]o498:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o498:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ(EOS(STATIC_2059), div1, o498[Kernel95.next]o498:0, o540[Kernel95.next]o539:0, o540[Kernel95.next]o498:0, o540[Kernel95.next]o497:0) :|: o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 0 && o540[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o539:0 > o540[Kernel95.next]o499:0 && i179:0 >= div1 && o540[Kernel95.next]o497:0 > 0 && i179:0 - 2 * div > -2 && i179:0 - 2 * div < 2 && i179:0 - 2 * div1 < 2 && i179:0 - 2 * div1 > -2 Filtered constant ground arguments: f2059_0_slide95_EQ(x1, x2, x3, x4, x5, x6) -> f2059_0_slide95_EQ(x2, x3, x4, x5, x6) f2059_0_slide95_EQ'(x1, x2, x3, x4, x5, x6) -> f2059_0_slide95_EQ'(x2, x3, x4, x5, x6) EOS(x1) -> EOS Filtered unneeded arguments: f2059_0_slide95_EQ(x1, x2, x3, x4, x5) -> f2059_0_slide95_EQ(x1, x3, x5) f2059_0_slide95_EQ'(x1, x2, x3, x4, x5) -> f2059_0_slide95_EQ'(x1, x3, x5) Finished conversion. Obtained 6 rules.P rules: f2059_0_slide95_EQ(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ'(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) :|: o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && i179:0 >= div1 && o540[Kernel95.next]o499:0 > 0 && o540[Kernel95.next]o497:0 > -1 && o540[Kernel95.next]o497new:0 <= o540[Kernel95.next]o497:0 && o540[Kernel95.next]o497new:0 > 0 f2059_0_slide95_EQ'(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ(div1, o540[Kernel95.next]o499:0, o540[Kernel95.next]o497new:0) :|: o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && i179:0 >= div1 && o540[Kernel95.next]o499:0 > 0 && o540[Kernel95.next]o497:0 > -1 && o540[Kernel95.next]o497new:0 <= o540[Kernel95.next]o497:0 && o540[Kernel95.next]o497new:0 > 0 && i179:0 - 2 * div > -2 && i179:0 - 2 * div < 2 && i179:0 - 2 * div1 > -2 && i179:0 - 2 * div1 < 2 f2059_0_slide95_EQ(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ'(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) :|: o540[Kernel95.next]o497:0 < o500[Kernel95.next]o499:0 && o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && i179:0 >= div1 && o540[Kernel95.next]o497:0 > 0 f2059_0_slide95_EQ'(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ(div1, o540[Kernel95.next]o497:0, o540[Kernel95.next]o497:0) :|: o540[Kernel95.next]o497:0 < o500[Kernel95.next]o499:0 && o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 1 && o540[Kernel95.next]o497:0 > 0 && i179:0 >= div1 && i179:0 - 2 * div > -2 && i179:0 - 2 * div < 2 && i179:0 - 2 * div1 > -2 && i179:0 - 2 * div1 < 2 f2059_0_slide95_EQ(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ'(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) :|: o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 0 && o540[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o539:0 > o540[Kernel95.next]o499:0 && i179:0 >= div1 && o540[Kernel95.next]o497:0 > 0 f2059_0_slide95_EQ'(i179:0, o500[Kernel95.next]o499:0, o500[Kernel95.next]o497:0) -> f2059_0_slide95_EQ(div1, o540[Kernel95.next]o539:0, o540[Kernel95.next]o497:0) :|: o540[Kernel95.next]o499:0 < o500[Kernel95.next]o499:0 && o500[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o497:0 < o500[Kernel95.next]o497:0 && o500[Kernel95.next]o497:0 > -1 && i179:0 - 2 * div = 0 && o540[Kernel95.next]o499:0 > -1 && o540[Kernel95.next]o539:0 > o540[Kernel95.next]o499:0 && i179:0 >= div1 && o540[Kernel95.next]o497:0 > 0 && i179:0 - 2 * div > -2 && i179:0 - 2 * div < 2 && i179:0 - 2 * div1 > -2 && i179:0 - 2 * div1 < 2 ---------------------------------------- (22) Obligation: Rules: f2059_0_slide95_EQ(x, x1, x2) -> f2059_0_slide95_EQ'(x, x1, x2) :|: x3 < x1 && x1 > -1 && x4 < x2 && x2 > -1 && x - 2 * x5 = 1 && x >= x6 && x3 > 0 && x4 > -1 && x7 <= x4 && x7 > 0 f2059_0_slide95_EQ'(x8, x9, x10) -> f2059_0_slide95_EQ(x11, x12, x13) :|: x12 < x9 && x9 > -1 && x14 < x10 && x10 > -1 && x8 - 2 * x15 = 1 && x8 >= x11 && x12 > 0 && x14 > -1 && x13 <= x14 && x13 > 0 && x8 - 2 * x15 > -2 && x8 - 2 * x15 < 2 && x8 - 2 * x11 > -2 && x8 - 2 * x11 < 2 f2059_0_slide95_EQ(x16, x17, x18) -> f2059_0_slide95_EQ'(x16, x17, x18) :|: x19 < x17 && x17 > -1 && x19 < x18 && x18 > -1 && x16 - 2 * x20 = 1 && x16 >= x21 && x19 > 0 f2059_0_slide95_EQ'(x22, x23, x24) -> f2059_0_slide95_EQ(x25, x26, x26) :|: x26 < x23 && x23 > -1 && x26 < x24 && x24 > -1 && x22 - 2 * x27 = 1 && x26 > 0 && x22 >= x25 && x22 - 2 * x27 > -2 && x22 - 2 * x27 < 2 && x22 - 2 * x25 > -2 && x22 - 2 * x25 < 2 f2059_0_slide95_EQ(x28, x29, x30) -> f2059_0_slide95_EQ'(x28, x29, x30) :|: x31 < x29 && x29 > -1 && x32 < x30 && x30 > -1 && x28 - 2 * x33 = 0 && x31 > -1 && x34 > x31 && x28 >= x35 && x32 > 0 f2059_0_slide95_EQ'(x36, x37, x38) -> f2059_0_slide95_EQ(x39, x40, x41) :|: x42 < x37 && x37 > -1 && x41 < x38 && x38 > -1 && x36 - 2 * x43 = 0 && x42 > -1 && x40 > x42 && x36 >= x39 && x41 > 0 && x36 - 2 * x43 > -2 && x36 - 2 * x43 < 2 && x36 - 2 * x39 > -2 && x36 - 2 * x39 < 2 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f2059_0_slide95_EQ(x, x1, x2) -> f2059_0_slide95_EQ'(x, x1, x2) :|: x3 < x1 && x1 > -1 && x4 < x2 && x2 > -1 && x - 2 * x5 = 1 && x >= x6 && x3 > 0 && x4 > -1 && x7 <= x4 && x7 > 0 f2059_0_slide95_EQ'(x8, x9, x10) -> f2059_0_slide95_EQ(x11, x12, x13) :|: x12 < x9 && x9 > -1 && x14 < x10 && x10 > -1 && x8 - 2 * x15 = 1 && x8 >= x11 && x12 > 0 && x14 > -1 && x13 <= x14 && x13 > 0 && x8 - 2 * x15 > -2 && x8 - 2 * x15 < 2 && x8 - 2 * x11 > -2 && x8 - 2 * x11 < 2 f2059_0_slide95_EQ(x16, x17, x18) -> f2059_0_slide95_EQ'(x16, x17, x18) :|: x19 < x17 && x17 > -1 && x19 < x18 && x18 > -1 && x16 - 2 * x20 = 1 && x16 >= x21 && x19 > 0 f2059_0_slide95_EQ'(x22, x23, x24) -> f2059_0_slide95_EQ(x25, x26, x26) :|: x26 < x23 && x23 > -1 && x26 < x24 && x24 > -1 && x22 - 2 * x27 = 1 && x26 > 0 && x22 >= x25 && x22 - 2 * x27 > -2 && x22 - 2 * x27 < 2 && x22 - 2 * x25 > -2 && x22 - 2 * x25 < 2 f2059_0_slide95_EQ(x28, x29, x30) -> f2059_0_slide95_EQ'(x28, x29, x30) :|: x31 < x29 && x29 > -1 && x32 < x30 && x30 > -1 && x28 - 2 * x33 = 0 && x31 > -1 && x34 > x31 && x28 >= x35 && x32 > 0 f2059_0_slide95_EQ'(x36, x37, x38) -> f2059_0_slide95_EQ(x39, x40, x41) :|: x42 < x37 && x37 > -1 && x41 < x38 && x38 > -1 && x36 - 2 * x43 = 0 && x42 > -1 && x40 > x42 && x36 >= x39 && x41 > 0 && x36 - 2 * x43 > -2 && x36 - 2 * x43 < 2 && x36 - 2 * x39 > -2 && x36 - 2 * x39 < 2 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2059_0_slide95_EQ(x, x1, x2) -> f2059_0_slide95_EQ'(x, x1, x2) :|: x3 < x1 && x1 > -1 && x4 < x2 && x2 > -1 && x - 2 * x5 = 1 && x >= x6 && x3 > 0 && x4 > -1 && x7 <= x4 && x7 > 0 (2) f2059_0_slide95_EQ'(x8, x9, x10) -> f2059_0_slide95_EQ(x11, x12, x13) :|: x12 < x9 && x9 > -1 && x14 < x10 && x10 > -1 && x8 - 2 * x15 = 1 && x8 >= x11 && x12 > 0 && x14 > -1 && x13 <= x14 && x13 > 0 && x8 - 2 * x15 > -2 && x8 - 2 * x15 < 2 && x8 - 2 * x11 > -2 && x8 - 2 * x11 < 2 (3) f2059_0_slide95_EQ(x16, x17, x18) -> f2059_0_slide95_EQ'(x16, x17, x18) :|: x19 < x17 && x17 > -1 && x19 < x18 && x18 > -1 && x16 - 2 * x20 = 1 && x16 >= x21 && x19 > 0 (4) f2059_0_slide95_EQ'(x22, x23, x24) -> f2059_0_slide95_EQ(x25, x26, x26) :|: x26 < x23 && x23 > -1 && x26 < x24 && x24 > -1 && x22 - 2 * x27 = 1 && x26 > 0 && x22 >= x25 && x22 - 2 * x27 > -2 && x22 - 2 * x27 < 2 && x22 - 2 * x25 > -2 && x22 - 2 * x25 < 2 (5) f2059_0_slide95_EQ(x28, x29, x30) -> f2059_0_slide95_EQ'(x28, x29, x30) :|: x31 < x29 && x29 > -1 && x32 < x30 && x30 > -1 && x28 - 2 * x33 = 0 && x31 > -1 && x34 > x31 && x28 >= x35 && x32 > 0 (6) f2059_0_slide95_EQ'(x36, x37, x38) -> f2059_0_slide95_EQ(x39, x40, x41) :|: x42 < x37 && x37 > -1 && x41 < x38 && x38 > -1 && x36 - 2 * x43 = 0 && x42 > -1 && x40 > x42 && x36 >= x39 && x41 > 0 && x36 - 2 * x43 > -2 && x36 - 2 * x43 < 2 && x36 - 2 * x39 > -2 && x36 - 2 * x39 < 2 Arcs: (1) -> (2), (4) (2) -> (1), (3), (5) (3) -> (2), (4) (4) -> (1), (3), (5) (5) -> (6) (6) -> (1), (3), (5) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f2059_0_slide95_EQ(x, x1, x2) -> f2059_0_slide95_EQ'(x, x1, x2) :|: x3 < x1 && x1 > -1 && x4 < x2 && x2 > -1 && x - 2 * x5 = 1 && x >= x6 && x3 > 0 && x4 > -1 && x7 <= x4 && x7 > 0 (2) f2059_0_slide95_EQ'(x8, x9, x10) -> f2059_0_slide95_EQ(x11, x12, x13) :|: x12 < x9 && x9 > -1 && x14 < x10 && x10 > -1 && x8 - 2 * x15 = 1 && x8 >= x11 && x12 > 0 && x14 > -1 && x13 <= x14 && x13 > 0 && x8 - 2 * x15 > -2 && x8 - 2 * x15 < 2 && x8 - 2 * x11 > -2 && x8 - 2 * x11 < 2 (3) f2059_0_slide95_EQ(x16, x17, x18) -> f2059_0_slide95_EQ'(x16, x17, x18) :|: x19 < x17 && x17 > -1 && x19 < x18 && x18 > -1 && x16 - 2 * x20 = 1 && x16 >= x21 && x19 > 0 (4) f2059_0_slide95_EQ'(x36, x37, x38) -> f2059_0_slide95_EQ(x39, x40, x41) :|: x42 < x37 && x37 > -1 && x41 < x38 && x38 > -1 && x36 - 2 * x43 = 0 && x42 > -1 && x40 > x42 && x36 >= x39 && x41 > 0 && x36 - 2 * x43 > -2 && x36 - 2 * x43 < 2 && x36 - 2 * x39 > -2 && x36 - 2 * x39 < 2 (5) f2059_0_slide95_EQ(x28, x29, x30) -> f2059_0_slide95_EQ'(x28, x29, x30) :|: x31 < x29 && x29 > -1 && x32 < x30 && x30 > -1 && x28 - 2 * x33 = 0 && x31 > -1 && x34 > x31 && x28 >= x35 && x32 > 0 (6) f2059_0_slide95_EQ'(x22, x23, x24) -> f2059_0_slide95_EQ(x25, x26, x26) :|: x26 < x23 && x23 > -1 && x26 < x24 && x24 > -1 && x22 - 2 * x27 = 1 && x26 > 0 && x22 >= x25 && x22 - 2 * x27 > -2 && x22 - 2 * x27 < 2 && x22 - 2 * x25 > -2 && x22 - 2 * x25 < 2 Arcs: (1) -> (2), (6) (2) -> (1), (3), (5) (3) -> (2), (6) (4) -> (1), (3), (5) (5) -> (4) (6) -> (1), (3), (5) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f2059_0_slide95_EQ'(x22:0, x23:0, x24:0) -> f2059_0_slide95_EQ(x25:0, x26:0, x26:0) :|: x22:0 - 2 * x25:0 > -2 && x22:0 - 2 * x25:0 < 2 && x22:0 - 2 * x27:0 < 2 && x22:0 - 2 * x27:0 > -2 && x25:0 <= x22:0 && x26:0 > 0 && x22:0 - 2 * x27:0 = 1 && x24:0 > -1 && x26:0 < x24:0 && x23:0 > -1 && x26:0 < x23:0 f2059_0_slide95_EQ(x16:0, x17:0, x18:0) -> f2059_0_slide95_EQ'(x16:0, x17:0, x18:0) :|: x21:0 <= x16:0 && x19:0 > 0 && x16:0 - 2 * x20:0 = 1 && x18:0 > -1 && x19:0 < x18:0 && x17:0 > -1 && x19:0 < x17:0 f2059_0_slide95_EQ'(x36:0, x37:0, x38:0) -> f2059_0_slide95_EQ(x39:0, x40:0, x41:0) :|: x36:0 - 2 * x39:0 > -2 && x36:0 - 2 * x39:0 < 2 && x36:0 - 2 * x43:0 < 2 && x36:0 - 2 * x43:0 > -2 && x41:0 > 0 && x39:0 <= x36:0 && x42:0 < x40:0 && x42:0 > -1 && x36:0 - 2 * x43:0 = 0 && x38:0 > -1 && x41:0 < x38:0 && x37:0 > -1 && x42:0 < x37:0 f2059_0_slide95_EQ(x28:0, x29:0, x30:0) -> f2059_0_slide95_EQ'(x28:0, x29:0, x30:0) :|: x35:0 <= x28:0 && x32:0 > 0 && x34:0 > x31:0 && x31:0 > -1 && x28:0 - 2 * x33:0 = 0 && x30:0 > -1 && x32:0 < x30:0 && x29:0 > -1 && x31:0 < x29:0 f2059_0_slide95_EQ(x:0, x1:0, x2:0) -> f2059_0_slide95_EQ'(x:0, x1:0, x2:0) :|: x7:0 <= x4:0 && x7:0 > 0 && x4:0 > -1 && x3:0 > 0 && x:0 >= x6:0 && x:0 - 2 * x5:0 = 1 && x2:0 > -1 && x4:0 < x2:0 && x1:0 > -1 && x3:0 < x1:0 f2059_0_slide95_EQ'(x8:0, x9:0, x10:0) -> f2059_0_slide95_EQ(x11:0, x12:0, x13:0) :|: x8:0 - 2 * x11:0 > -2 && x8:0 - 2 * x11:0 < 2 && x8:0 - 2 * x15:0 < 2 && x8:0 - 2 * x15:0 > -2 && x13:0 > 0 && x14:0 >= x13:0 && x14:0 > -1 && x12:0 > 0 && x8:0 >= x11:0 && x8:0 - 2 * x15:0 = 1 && x10:0 > -1 && x14:0 < x10:0 && x9:0 > -1 && x9:0 > x12:0 ---------------------------------------- (29) FilterProof (EQUIVALENT) Used the following sort dictionary for filtering: f2059_0_slide95_EQ'(INTEGER, INTEGER, INTEGER) f2059_0_slide95_EQ(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f2059_0_slide95_EQ'(x22:0, x23:0, x24:0) -> f2059_0_slide95_EQ(x25:0, x26:0, x26:0) :|: x22:0 - 2 * x25:0 > -2 && x22:0 - 2 * x25:0 < 2 && x22:0 - 2 * x27:0 < 2 && x22:0 - 2 * x27:0 > -2 && x25:0 <= x22:0 && x26:0 > 0 && x22:0 - 2 * x27:0 = 1 && x24:0 > -1 && x26:0 < x24:0 && x23:0 > -1 && x26:0 < x23:0 f2059_0_slide95_EQ(x16:0, x17:0, x18:0) -> f2059_0_slide95_EQ'(x16:0, x17:0, x18:0) :|: x21:0 <= x16:0 && x19:0 > 0 && x16:0 - 2 * x20:0 = 1 && x18:0 > -1 && x19:0 < x18:0 && x17:0 > -1 && x19:0 < x17:0 f2059_0_slide95_EQ'(x36:0, x37:0, x38:0) -> f2059_0_slide95_EQ(x39:0, x40:0, x41:0) :|: x36:0 - 2 * x39:0 > -2 && x36:0 - 2 * x39:0 < 2 && x36:0 - 2 * x43:0 < 2 && x36:0 - 2 * x43:0 > -2 && x41:0 > 0 && x39:0 <= x36:0 && x42:0 < x40:0 && x42:0 > -1 && x36:0 - 2 * x43:0 = 0 && x38:0 > -1 && x41:0 < x38:0 && x37:0 > -1 && x42:0 < x37:0 f2059_0_slide95_EQ(x28:0, x29:0, x30:0) -> f2059_0_slide95_EQ'(x28:0, x29:0, x30:0) :|: x35:0 <= x28:0 && x32:0 > 0 && x34:0 > x31:0 && x31:0 > -1 && x28:0 - 2 * x33:0 = 0 && x30:0 > -1 && x32:0 < x30:0 && x29:0 > -1 && x31:0 < x29:0 f2059_0_slide95_EQ(x:0, x1:0, x2:0) -> f2059_0_slide95_EQ'(x:0, x1:0, x2:0) :|: x7:0 <= x4:0 && x7:0 > 0 && x4:0 > -1 && x3:0 > 0 && x:0 >= x6:0 && x:0 - 2 * x5:0 = 1 && x2:0 > -1 && x4:0 < x2:0 && x1:0 > -1 && x3:0 < x1:0 f2059_0_slide95_EQ'(x8:0, x9:0, x10:0) -> f2059_0_slide95_EQ(x11:0, x12:0, x13:0) :|: x8:0 - 2 * x11:0 > -2 && x8:0 - 2 * x11:0 < 2 && x8:0 - 2 * x15:0 < 2 && x8:0 - 2 * x15:0 > -2 && x13:0 > 0 && x14:0 >= x13:0 && x14:0 > -1 && x12:0 > 0 && x8:0 >= x11:0 && x8:0 - 2 * x15:0 = 1 && x10:0 > -1 && x14:0 < x10:0 && x9:0 > -1 && x9:0 > x12:0 ---------------------------------------- (31) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (32) Obligation: Rules: f2059_0_slide95_EQ(x28:0:0, x29:0:0, x30:0:0) -> f2059_0_slide95_EQ'(x28:0:0, x29:0:0, x30:0:0) :|: x29:0:0 > -1 && x31:0:0 < x29:0:0 && x32:0:0 < x30:0:0 && x30:0:0 > -1 && x28:0:0 - 2 * x33:0:0 = 0 && x31:0:0 > -1 && x34:0:0 > x31:0:0 && x32:0:0 > 0 && x35:0:0 <= x28:0:0 f2059_0_slide95_EQ'(x36:0:0, x37:0:0, x38:0:0) -> f2059_0_slide95_EQ(x39:0:0, x40:0:0, x41:0:0) :|: x37:0:0 > -1 && x42:0:0 < x37:0:0 && x41:0:0 < x38:0:0 && x38:0:0 > -1 && x36:0:0 - 2 * x43:0:0 = 0 && x42:0:0 > -1 && x42:0:0 < x40:0:0 && x39:0:0 <= x36:0:0 && x41:0:0 > 0 && x36:0:0 - 2 * x43:0:0 > -2 && x36:0:0 - 2 * x43:0:0 < 2 && x36:0:0 - 2 * x39:0:0 < 2 && x36:0:0 - 2 * x39:0:0 > -2 f2059_0_slide95_EQ'(x8:0:0, x9:0:0, x10:0:0) -> f2059_0_slide95_EQ(x11:0:0, x12:0:0, x13:0:0) :|: x9:0:0 > -1 && x9:0:0 > x12:0:0 && x14:0:0 < x10:0:0 && x10:0:0 > -1 && x8:0:0 - 2 * x15:0:0 = 1 && x8:0:0 >= x11:0:0 && x12:0:0 > 0 && x14:0:0 > -1 && x14:0:0 >= x13:0:0 && x13:0:0 > 0 && x8:0:0 - 2 * x15:0:0 > -2 && x8:0:0 - 2 * x15:0:0 < 2 && x8:0:0 - 2 * x11:0:0 < 2 && x8:0:0 - 2 * x11:0:0 > -2 f2059_0_slide95_EQ(x:0:0, x1:0:0, x2:0:0) -> f2059_0_slide95_EQ'(x:0:0, x1:0:0, x2:0:0) :|: x1:0:0 > -1 && x3:0:0 < x1:0:0 && x4:0:0 < x2:0:0 && x2:0:0 > -1 && x:0:0 - 2 * x5:0:0 = 1 && x:0:0 >= x6:0:0 && x3:0:0 > 0 && x4:0:0 > -1 && x7:0:0 > 0 && x7:0:0 <= x4:0:0 f2059_0_slide95_EQ'(x22:0:0, x23:0:0, x24:0:0) -> f2059_0_slide95_EQ(x25:0:0, x26:0:0, x26:0:0) :|: x23:0:0 > -1 && x26:0:0 < x23:0:0 && x26:0:0 < x24:0:0 && x24:0:0 > -1 && x22:0:0 - 2 * x27:0:0 = 1 && x26:0:0 > 0 && x25:0:0 <= x22:0:0 && x22:0:0 - 2 * x27:0:0 > -2 && x22:0:0 - 2 * x27:0:0 < 2 && x22:0:0 - 2 * x25:0:0 < 2 && x22:0:0 - 2 * x25:0:0 > -2 f2059_0_slide95_EQ(x16:0:0, x17:0:0, x18:0:0) -> f2059_0_slide95_EQ'(x16:0:0, x17:0:0, x18:0:0) :|: x17:0:0 > -1 && x19:0:0 < x17:0:0 && x19:0:0 < x18:0:0 && x18:0:0 > -1 && x16:0:0 - 2 * x20:0:0 = 1 && x19:0:0 > 0 && x21:0:0 <= x16:0:0 ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f2059_0_slide95_EQ ] = 2*f2059_0_slide95_EQ_3 + 1 [ f2059_0_slide95_EQ' ] = 2*f2059_0_slide95_EQ'_3 The following rules are decreasing: f2059_0_slide95_EQ(x28:0:0, x29:0:0, x30:0:0) -> f2059_0_slide95_EQ'(x28:0:0, x29:0:0, x30:0:0) :|: x29:0:0 > -1 && x31:0:0 < x29:0:0 && x32:0:0 < x30:0:0 && x30:0:0 > -1 && x28:0:0 - 2 * x33:0:0 = 0 && x31:0:0 > -1 && x34:0:0 > x31:0:0 && x32:0:0 > 0 && x35:0:0 <= x28:0:0 f2059_0_slide95_EQ'(x36:0:0, x37:0:0, x38:0:0) -> f2059_0_slide95_EQ(x39:0:0, x40:0:0, x41:0:0) :|: x37:0:0 > -1 && x42:0:0 < x37:0:0 && x41:0:0 < x38:0:0 && x38:0:0 > -1 && x36:0:0 - 2 * x43:0:0 = 0 && x42:0:0 > -1 && x42:0:0 < x40:0:0 && x39:0:0 <= x36:0:0 && x41:0:0 > 0 && x36:0:0 - 2 * x43:0:0 > -2 && x36:0:0 - 2 * x43:0:0 < 2 && x36:0:0 - 2 * x39:0:0 < 2 && x36:0:0 - 2 * x39:0:0 > -2 f2059_0_slide95_EQ'(x8:0:0, x9:0:0, x10:0:0) -> f2059_0_slide95_EQ(x11:0:0, x12:0:0, x13:0:0) :|: x9:0:0 > -1 && x9:0:0 > x12:0:0 && x14:0:0 < x10:0:0 && x10:0:0 > -1 && x8:0:0 - 2 * x15:0:0 = 1 && x8:0:0 >= x11:0:0 && x12:0:0 > 0 && x14:0:0 > -1 && x14:0:0 >= x13:0:0 && x13:0:0 > 0 && x8:0:0 - 2 * x15:0:0 > -2 && x8:0:0 - 2 * x15:0:0 < 2 && x8:0:0 - 2 * x11:0:0 < 2 && x8:0:0 - 2 * x11:0:0 > -2 f2059_0_slide95_EQ(x:0:0, x1:0:0, x2:0:0) -> f2059_0_slide95_EQ'(x:0:0, x1:0:0, x2:0:0) :|: x1:0:0 > -1 && x3:0:0 < x1:0:0 && x4:0:0 < x2:0:0 && x2:0:0 > -1 && x:0:0 - 2 * x5:0:0 = 1 && x:0:0 >= x6:0:0 && x3:0:0 > 0 && x4:0:0 > -1 && x7:0:0 > 0 && x7:0:0 <= x4:0:0 f2059_0_slide95_EQ'(x22:0:0, x23:0:0, x24:0:0) -> f2059_0_slide95_EQ(x25:0:0, x26:0:0, x26:0:0) :|: x23:0:0 > -1 && x26:0:0 < x23:0:0 && x26:0:0 < x24:0:0 && x24:0:0 > -1 && x22:0:0 - 2 * x27:0:0 = 1 && x26:0:0 > 0 && x25:0:0 <= x22:0:0 && x22:0:0 - 2 * x27:0:0 > -2 && x22:0:0 - 2 * x27:0:0 < 2 && x22:0:0 - 2 * x25:0:0 < 2 && x22:0:0 - 2 * x25:0:0 > -2 f2059_0_slide95_EQ(x16:0:0, x17:0:0, x18:0:0) -> f2059_0_slide95_EQ'(x16:0:0, x17:0:0, x18:0:0) :|: x17:0:0 > -1 && x19:0:0 < x17:0:0 && x19:0:0 < x18:0:0 && x18:0:0 > -1 && x16:0:0 - 2 * x20:0:0 = 1 && x19:0:0 > 0 && x21:0:0 <= x16:0:0 The following rules are bounded: f2059_0_slide95_EQ(x28:0:0, x29:0:0, x30:0:0) -> f2059_0_slide95_EQ'(x28:0:0, x29:0:0, x30:0:0) :|: x29:0:0 > -1 && x31:0:0 < x29:0:0 && x32:0:0 < x30:0:0 && x30:0:0 > -1 && x28:0:0 - 2 * x33:0:0 = 0 && x31:0:0 > -1 && x34:0:0 > x31:0:0 && x32:0:0 > 0 && x35:0:0 <= x28:0:0 f2059_0_slide95_EQ'(x36:0:0, x37:0:0, x38:0:0) -> f2059_0_slide95_EQ(x39:0:0, x40:0:0, x41:0:0) :|: x37:0:0 > -1 && x42:0:0 < x37:0:0 && x41:0:0 < x38:0:0 && x38:0:0 > -1 && x36:0:0 - 2 * x43:0:0 = 0 && x42:0:0 > -1 && x42:0:0 < x40:0:0 && x39:0:0 <= x36:0:0 && x41:0:0 > 0 && x36:0:0 - 2 * x43:0:0 > -2 && x36:0:0 - 2 * x43:0:0 < 2 && x36:0:0 - 2 * x39:0:0 < 2 && x36:0:0 - 2 * x39:0:0 > -2 f2059_0_slide95_EQ'(x8:0:0, x9:0:0, x10:0:0) -> f2059_0_slide95_EQ(x11:0:0, x12:0:0, x13:0:0) :|: x9:0:0 > -1 && x9:0:0 > x12:0:0 && x14:0:0 < x10:0:0 && x10:0:0 > -1 && x8:0:0 - 2 * x15:0:0 = 1 && x8:0:0 >= x11:0:0 && x12:0:0 > 0 && x14:0:0 > -1 && x14:0:0 >= x13:0:0 && x13:0:0 > 0 && x8:0:0 - 2 * x15:0:0 > -2 && x8:0:0 - 2 * x15:0:0 < 2 && x8:0:0 - 2 * x11:0:0 < 2 && x8:0:0 - 2 * x11:0:0 > -2 f2059_0_slide95_EQ(x:0:0, x1:0:0, x2:0:0) -> f2059_0_slide95_EQ'(x:0:0, x1:0:0, x2:0:0) :|: x1:0:0 > -1 && x3:0:0 < x1:0:0 && x4:0:0 < x2:0:0 && x2:0:0 > -1 && x:0:0 - 2 * x5:0:0 = 1 && x:0:0 >= x6:0:0 && x3:0:0 > 0 && x4:0:0 > -1 && x7:0:0 > 0 && x7:0:0 <= x4:0:0 f2059_0_slide95_EQ'(x22:0:0, x23:0:0, x24:0:0) -> f2059_0_slide95_EQ(x25:0:0, x26:0:0, x26:0:0) :|: x23:0:0 > -1 && x26:0:0 < x23:0:0 && x26:0:0 < x24:0:0 && x24:0:0 > -1 && x22:0:0 - 2 * x27:0:0 = 1 && x26:0:0 > 0 && x25:0:0 <= x22:0:0 && x22:0:0 - 2 * x27:0:0 > -2 && x22:0:0 - 2 * x27:0:0 < 2 && x22:0:0 - 2 * x25:0:0 < 2 && x22:0:0 - 2 * x25:0:0 > -2 f2059_0_slide95_EQ(x16:0:0, x17:0:0, x18:0:0) -> f2059_0_slide95_EQ'(x16:0:0, x17:0:0, x18:0:0) :|: x17:0:0 > -1 && x19:0:0 < x17:0:0 && x19:0:0 < x18:0:0 && x18:0:0 > -1 && x16:0:0 - 2 * x20:0:0 = 1 && x19:0:0 > 0 && x21:0:0 <= x16:0:0 ---------------------------------------- (34) YES