/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, 491 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 77 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 40 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 35 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 121 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 283 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 97 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 25 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 0 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 Kernel88 { /** * A reference to the next list element. */ private Kernel88 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 Kernel88(final Kernel88 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 Kernel88 create(int x) { Kernel88 last, current; last = current = new Kernel88(null); while (--x > 0) current = new Kernel88(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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel88 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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel88 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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 o = c; c = c.next; if (check(random2)) { // nondet() Kernel88 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 Kernel88 { /** * A reference to the next list element. */ private Kernel88 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 Kernel88(final Kernel88 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 Kernel88 create(int x) { Kernel88 last, current; last = current = new Kernel88(null); while (--x > 0) current = new Kernel88(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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel88 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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 o = c; //c = c.next; if (check(random2)) { // nondet() Kernel88 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) { Kernel88 h = create(random1); Kernel88 p = h; Kernel88 c = p.next; while (c != h) { Kernel88 o = c; c = c.next; if (check(random2)) { // nondet() Kernel88 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: Kernel88.main([Ljava/lang/String;)V: Graph of 292 nodes with 1 SCC. Kernel88.create(I)LKernel88;: 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: Kernel88.create(I)LKernel88; 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: f818_0_create_Load(EOS(STATIC_818), i74, o73[Kernel88.next]o72) -> f822_0_create_LE(EOS(STATIC_822), i74, i74, o73[Kernel88.next]o72) :|: TRUE f822_0_create_LE(EOS(STATIC_822), i77, i77, o73[Kernel88.next]o72) -> f830_0_create_LE(EOS(STATIC_830), i77, i77, o73[Kernel88.next]o72) :|: TRUE f830_0_create_LE(EOS(STATIC_830), i77, i77, o73[Kernel88.next]o72) -> f838_0_create_New(EOS(STATIC_838), i77, o73[Kernel88.next]o72) :|: i77 > 0 f838_0_create_New(EOS(STATIC_838), i77, o73[Kernel88.next]o72) -> f844_0_create_Duplicate(EOS(STATIC_844), i77, o73[Kernel88.next]o72) :|: TRUE f844_0_create_Duplicate(EOS(STATIC_844), i77, o73[Kernel88.next]o72) -> f850_0_create_Load(EOS(STATIC_850), i77, o73[Kernel88.next]o72) :|: TRUE f850_0_create_Load(EOS(STATIC_850), i77, o73[Kernel88.next]o72) -> f855_0_create_InvokeMethod(EOS(STATIC_855), i77, o73[Kernel88.next]o72) :|: TRUE f855_0_create_InvokeMethod(EOS(STATIC_855), i77, o73[Kernel88.next]o72) -> f866_0__init__Load(EOS(STATIC_866), i77, o73[Kernel88.next]o72) :|: TRUE f866_0__init__Load(EOS(STATIC_866), i77, o73[Kernel88.next]o72) -> f915_0__init__InvokeMethod(EOS(STATIC_915), i77, o73[Kernel88.next]o72) :|: TRUE f915_0__init__InvokeMethod(EOS(STATIC_915), i77, o73[Kernel88.next]o72) -> f938_0__init__Load(EOS(STATIC_938), i77, o73[Kernel88.next]o72) :|: TRUE f938_0__init__Load(EOS(STATIC_938), i77, o73[Kernel88.next]o72) -> f968_0__init__Load(EOS(STATIC_968), i77, o73[Kernel88.next]o72) :|: TRUE f968_0__init__Load(EOS(STATIC_968), i77, o73[Kernel88.next]o72) -> f973_0__init__FieldAccess(EOS(STATIC_973), i77, o73[Kernel88.next]o72) :|: TRUE f973_0__init__FieldAccess(EOS(STATIC_973), i77, o73[Kernel88.next]o72) -> f982_0__init__Return(EOS(STATIC_982), i77, o73[Kernel88.next]o72) :|: TRUE f982_0__init__Return(EOS(STATIC_982), i77, o73[Kernel88.next]o72) -> f987_0_create_Store(EOS(STATIC_987), i77, o73[Kernel88.next]o72) :|: TRUE f987_0_create_Store(EOS(STATIC_987), i77, o73[Kernel88.next]o72) -> f992_0_create_JMP(EOS(STATIC_992), i77, o73[Kernel88.next]o72) :|: TRUE f992_0_create_JMP(EOS(STATIC_992), i77, o73[Kernel88.next]o72) -> f1108_0_create_Inc(EOS(STATIC_1108), i77, o73[Kernel88.next]o72) :|: TRUE f1108_0_create_Inc(EOS(STATIC_1108), i77, o73[Kernel88.next]o72) -> f811_0_create_Inc(EOS(STATIC_811), i77, o86[Kernel88.next]o72) :|: TRUE f811_0_create_Inc(EOS(STATIC_811), i51, o73[Kernel88.next]o72) -> f818_0_create_Load(EOS(STATIC_818), i51 + -1, o73[Kernel88.next]o72) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f818_0_create_Load(EOS(STATIC_818), i74:0, o73[Kernel88.next]o72:0) -> f818_0_create_Load(EOS(STATIC_818), i74:0 - 1, o86[Kernel88.next]o72:0) :|: i74:0 > 0 Filtered constant ground arguments: f818_0_create_Load(x1, x2, x3) -> f818_0_create_Load(x2, x3) EOS(x1) -> EOS Filtered unneeded arguments: f818_0_create_Load(x1, x2) -> f818_0_create_Load(x1) Finished conversion. Obtained 1 rules.P rules: f818_0_create_Load(i74:0) -> f818_0_create_Load(i74:0 - 1) :|: i74:0 > 0 ---------------------------------------- (9) Obligation: Rules: f818_0_create_Load(i74:0) -> f818_0_create_Load(i74:0 - 1) :|: i74:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f818_0_create_Load(i74:0) -> f818_0_create_Load(arith) :|: i74:0 > 0 && arith = i74:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f818_0_create_Load(i74:0) -> f818_0_create_Load(arith) :|: i74:0 > 0 && arith = i74:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f818_0_create_Load(i74:0) -> f818_0_create_Load(arith) :|: i74:0 > 0 && arith = i74:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f818_0_create_Load(i74:0:0) -> f818_0_create_Load(i74:0:0 - 1) :|: i74:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f818_0_create_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f818_0_create_Load(i74:0:0) -> f818_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f818_0_create_Load(x)] = x The following rules are decreasing: f818_0_create_Load(i74:0:0) -> f818_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 The following rules are bounded: f818_0_create_Load(i74:0:0) -> f818_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Kernel88.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Kernel88: [next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 39 IRulesP rules: f1416_0_slide88_EQ(EOS(STATIC_1416), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1420_0_slide88_Load(EOS(STATIC_1420), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1420_0_slide88_Load(EOS(STATIC_1420), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1429_0_slide88_Store(EOS(STATIC_1429), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1429_0_slide88_Store(EOS(STATIC_1429), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1431_0_slide88_Load(EOS(STATIC_1431), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1431_0_slide88_Load(EOS(STATIC_1431), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1433_0_slide88_InvokeMethod(EOS(STATIC_1433), i104, i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1433_0_slide88_InvokeMethod(EOS(STATIC_1433), i104, i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1434_0_check_Load(EOS(STATIC_1434), i104, i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1434_0_check_Load(EOS(STATIC_1434), i104, i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1435_0_check_ConstantStackPush(EOS(STATIC_1435), i104, i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1435_0_check_ConstantStackPush(EOS(STATIC_1435), i104, i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1437_0_check_IntArithmetic(EOS(STATIC_1437), i104, i104, 2, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1437_0_check_IntArithmetic(EOS(STATIC_1437), i104, i104, matching1, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1438_0_check_LE(EOS(STATIC_1438), i104, i104 % 2, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE && matching1 = 2 f1438_0_check_LE(EOS(STATIC_1438), i104, matching1, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1439_0_check_LE(EOS(STATIC_1439), i104, 0, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE && matching1 = 0 f1439_0_check_LE(EOS(STATIC_1439), i104, matching1, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1441_0_check_ConstantStackPush(EOS(STATIC_1441), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: 0 <= 0 && matching1 = 0 f1441_0_check_ConstantStackPush(EOS(STATIC_1441), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1443_0_check_Return(EOS(STATIC_1443), i104, 0, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE f1443_0_check_Return(EOS(STATIC_1443), i104, matching1, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1445_0_slide88_EQ(EOS(STATIC_1445), i104, 0, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: TRUE && matching1 = 0 f1445_0_slide88_EQ(EOS(STATIC_1445), i104, matching1, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1451_0_slide88_Load(EOS(STATIC_1451), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: o142[Kernel88.next]o144 > o142[Kernel88.next]o143 && o142[Kernel88.next]o143 >= 0 && o144[Kernel88.next]o144 > o144[Kernel88.next]o143 && o144[Kernel88.next]o143 >= 0 && matching1 = 0 f1451_0_slide88_Load(EOS(STATIC_1451), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1454_0_slide88_Store(EOS(STATIC_1454), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE f1454_0_slide88_Store(EOS(STATIC_1454), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1456_0_slide88_Load(EOS(STATIC_1456), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE f1456_0_slide88_Load(EOS(STATIC_1456), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1462_0_slide88_FieldAccess(EOS(STATIC_1462), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE f1462_0_slide88_FieldAccess(EOS(STATIC_1462), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1502_0_slide88_FieldAccess(EOS(STATIC_1502), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o144, o144[Kernel88.next]o142) :|: o142[Kernel88.next]o144 > 0 && o144[Kernel88.next]o142 > 0 && o144[Kernel88.next]o144 > 0 f1462_0_slide88_FieldAccess(EOS(STATIC_1462), i104, o195[Kernel88.next]o195, o195[Kernel88.next]o141, o195[Kernel88.next]o195, o195[Kernel88.next]o141, o195[Kernel88.next]o195) -> f1504_0_slide88_FieldAccess(EOS(STATIC_1504), i104, o195[Kernel88.next]o141, o195[Kernel88.next]o195) :|: TRUE f1502_0_slide88_FieldAccess(EOS(STATIC_1502), i104, o142[Kernel88.next]o200, o142[Kernel88.next]o141, o200[Kernel88.next]o141, o200[Kernel88.next]o200, o200[Kernel88.next]o142) -> f1508_0_slide88_FieldAccess(EOS(STATIC_1508), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: o201[Kernel88.next]o141 < o200[Kernel88.next]o141 && o200[Kernel88.next]o141 >= 0 && o201[Kernel88.next]o200 < o200[Kernel88.next]o200 && o200[Kernel88.next]o200 >= 0 && o201[Kernel88.next]o142 < o200[Kernel88.next]o142 && o200[Kernel88.next]o142 >= 0 f1508_0_slide88_FieldAccess(EOS(STATIC_1508), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1512_0_slide88_Store(EOS(STATIC_1512), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: TRUE f1512_0_slide88_Store(EOS(STATIC_1512), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1527_0_slide88_Load(EOS(STATIC_1527), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: TRUE f1527_0_slide88_Load(EOS(STATIC_1527), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1531_0_slide88_ConstantStackPush(EOS(STATIC_1531), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: TRUE f1531_0_slide88_ConstantStackPush(EOS(STATIC_1531), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1535_0_slide88_IntArithmetic(EOS(STATIC_1535), i104, 2, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: TRUE f1535_0_slide88_IntArithmetic(EOS(STATIC_1535), i104, matching1, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1556_0_slide88_Store(EOS(STATIC_1556), i124, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: i124 = i104 / 2 && i124 <= i104 && matching1 = 2 f1556_0_slide88_Store(EOS(STATIC_1556), i124, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1604_0_slide88_JMP(EOS(STATIC_1604), i124, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: TRUE f1604_0_slide88_JMP(EOS(STATIC_1604), i124, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1688_0_slide88_Load(EOS(STATIC_1688), i124, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) :|: TRUE f1688_0_slide88_Load(EOS(STATIC_1688), i124, o142[Kernel88.next]o141, o142[Kernel88.next]o200, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o201[Kernel88.next]o200) -> f1355_0_slide88_Load(EOS(STATIC_1355), i124, o142[Kernel88.next]o201, o142[Kernel88.next]o141, o201[Kernel88.next]o141, o201[Kernel88.next]o142, o142[Kernel88.next]o200, o201[Kernel88.next]o200) :|: TRUE f1355_0_slide88_Load(EOS(STATIC_1355), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) -> f1368_0_slide88_Load(EOS(STATIC_1368), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) :|: TRUE f1368_0_slide88_Load(EOS(STATIC_1368), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) -> f1392_0_slide88_EQ(EOS(STATIC_1392), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) :|: TRUE f1392_0_slide88_EQ(EOS(STATIC_1392), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) -> f1416_0_slide88_EQ(EOS(STATIC_1416), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) :|: o144[Kernel88.next]o141 > 0 f1504_0_slide88_FieldAccess(EOS(STATIC_1504), i104, o202[Kernel88.next]o141, o202[Kernel88.next]o202) -> f1509_0_slide88_FieldAccess(EOS(STATIC_1509), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: o203[Kernel88.next]o141 < o202[Kernel88.next]o141 && o202[Kernel88.next]o141 >= 0 && o203[Kernel88.next]o202 < o202[Kernel88.next]o202 && o202[Kernel88.next]o202 >= 0 f1509_0_slide88_FieldAccess(EOS(STATIC_1509), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1513_0_slide88_Store(EOS(STATIC_1513), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: TRUE f1513_0_slide88_Store(EOS(STATIC_1513), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1528_0_slide88_Load(EOS(STATIC_1528), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: TRUE f1528_0_slide88_Load(EOS(STATIC_1528), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1532_0_slide88_ConstantStackPush(EOS(STATIC_1532), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: TRUE f1532_0_slide88_ConstantStackPush(EOS(STATIC_1532), i104, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1536_0_slide88_IntArithmetic(EOS(STATIC_1536), i104, 2, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: TRUE f1536_0_slide88_IntArithmetic(EOS(STATIC_1536), i104, matching1, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1560_0_slide88_Store(EOS(STATIC_1560), i125, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: i125 = i104 / 2 && i125 <= i104 && matching1 = 2 f1560_0_slide88_Store(EOS(STATIC_1560), i125, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1605_0_slide88_JMP(EOS(STATIC_1605), i125, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: TRUE f1605_0_slide88_JMP(EOS(STATIC_1605), i125, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1713_0_slide88_Load(EOS(STATIC_1713), i125, o203[Kernel88.next]o141, o203[Kernel88.next]o202) :|: TRUE f1713_0_slide88_Load(EOS(STATIC_1713), i125, o203[Kernel88.next]o141, o203[Kernel88.next]o202) -> f1355_0_slide88_Load(EOS(STATIC_1355), i125, o202[Kernel88.next]o203, o202[Kernel88.next]o141, o203[Kernel88.next]o141, o203[Kernel88.next]o202, o202[Kernel88.next]o202, o203[Kernel88.next]o202) :|: o202[Kernel88.next]o203 = 1 Combined rules. Obtained 4 IRulesP rules: f1416_0_slide88_EQ(EOS(STATIC_1416), i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o144[Kernel88.next]o142:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o144[Kernel88.next]o141:0) -> f1416_0_slide88_EQ'(EOS(STATIC_1416), i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o144[Kernel88.next]o142:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o144[Kernel88.next]o141:0) :|: o144[Kernel88.next]o142:0 > 0 && o144[Kernel88.next]o144:0 > 0 && i104:0 - 2 * div = 0 && o142[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o144:0 > o144[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 > -1 && o144[Kernel88.next]o141:0 > -1 && o201[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o201[Kernel88.next]o200:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o201[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && o201[Kernel88.next]o141:0 > 0 && i104:0 >= div1 f1416_0_slide88_EQ'(EOS(STATIC_1416), i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o144[Kernel88.next]o142:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o144[Kernel88.next]o141:0) -> f1416_0_slide88_EQ(EOS(STATIC_1416), div1, o142[Kernel88.next]o201:0, o142[Kernel88.next]o141:0, o201[Kernel88.next]o142:0, o142[Kernel88.next]o144:0, o201[Kernel88.next]o200:0, o201[Kernel88.next]o141:0) :|: o144[Kernel88.next]o142:0 > 0 && o144[Kernel88.next]o144:0 > 0 && i104:0 - 2 * div = 0 && o142[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o144:0 > o144[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 > -1 && o144[Kernel88.next]o141:0 > -1 && o201[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o201[Kernel88.next]o200:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o201[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && i104:0 >= div1 && o201[Kernel88.next]o141:0 > 0 && i104:0 - 2 * div > -2 && i104:0 - 2 * div < 2 && i104:0 - 2 * div1 < 2 && i104:0 - 2 * div1 > -2 f1416_0_slide88_EQ(EOS(STATIC_1416), i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o142[Kernel88.next]o141:0) -> f1416_0_slide88_EQ'(EOS(STATIC_1416), i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o142[Kernel88.next]o141:0) :|: i104:0 - 2 * div = 0 && o142[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 < o142[Kernel88.next]o144:0 && o144[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o141:0 > -1 && o203[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && o203[Kernel88.next]o141:0 > 0 && i104:0 >= div1 f1416_0_slide88_EQ'(EOS(STATIC_1416), i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o142[Kernel88.next]o141:0) -> f1416_0_slide88_EQ(EOS(STATIC_1416), div1, 1, o202[Kernel88.next]o141:0, o203[Kernel88.next]o202:0, o202[Kernel88.next]o202:0, o203[Kernel88.next]o202:0, o203[Kernel88.next]o141:0) :|: i104:0 - 2 * div = 0 && o142[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 < o142[Kernel88.next]o144:0 && o144[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o141:0 > -1 && o203[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && i104:0 >= div1 && o203[Kernel88.next]o141:0 > 0 && i104:0 - 2 * div > -2 && i104:0 - 2 * div < 2 && i104:0 - 2 * div1 < 2 && i104:0 - 2 * div1 > -2 Filtered constant ground arguments: f1416_0_slide88_EQ(x1, x2, x3, x4, x5, x6, x7, x8) -> f1416_0_slide88_EQ(x2, x3, x4, x5, x6, x7, x8) f1416_0_slide88_EQ'(x1, x2, x3, x4, x5, x6, x7, x8) -> f1416_0_slide88_EQ'(x2, x3, x4, x5, x6, x7, x8) EOS(x1) -> EOS Finished conversion. Obtained 4 rules.P rules: f1416_0_slide88_EQ(i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o144[Kernel88.next]o142:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o144[Kernel88.next]o141:0) -> f1416_0_slide88_EQ'(i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o144[Kernel88.next]o142:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o144[Kernel88.next]o141:0) :|: o144[Kernel88.next]o144:0 > 0 && o144[Kernel88.next]o142:0 > 0 && i104:0 - 2 * div = 0 && o142[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o144:0 > o144[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 > -1 && o144[Kernel88.next]o141:0 > -1 && o201[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o201[Kernel88.next]o200:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o201[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && i104:0 >= div1 && o201[Kernel88.next]o141:0 > 0 f1416_0_slide88_EQ'(i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o144[Kernel88.next]o142:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o144[Kernel88.next]o141:0) -> f1416_0_slide88_EQ(div1, o142[Kernel88.next]o201:0, o142[Kernel88.next]o141:0, o201[Kernel88.next]o142:0, o142[Kernel88.next]o144:0, o201[Kernel88.next]o200:0, o201[Kernel88.next]o141:0) :|: o144[Kernel88.next]o144:0 > 0 && o144[Kernel88.next]o142:0 > 0 && i104:0 - 2 * div = 0 && o142[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o144:0 > o144[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 > -1 && o144[Kernel88.next]o141:0 > -1 && o201[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o201[Kernel88.next]o200:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o201[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && i104:0 >= div1 && o201[Kernel88.next]o141:0 > 0 && i104:0 - 2 * div > -2 && i104:0 - 2 * div < 2 && i104:0 - 2 * div1 > -2 && i104:0 - 2 * div1 < 2 f1416_0_slide88_EQ(i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o142[Kernel88.next]o141:0) -> f1416_0_slide88_EQ'(i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o142[Kernel88.next]o141:0) :|: o142[Kernel88.next]o143:0 > -1 && i104:0 - 2 * div = 0 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 < o142[Kernel88.next]o144:0 && o144[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o141:0 > -1 && o203[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && i104:0 >= div1 && o203[Kernel88.next]o141:0 > 0 f1416_0_slide88_EQ'(i104:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o141:0, o142[Kernel88.next]o144:0, o142[Kernel88.next]o143:0, o144[Kernel88.next]o143:0, o142[Kernel88.next]o141:0) -> f1416_0_slide88_EQ(div1, 1, o202[Kernel88.next]o141:0, o203[Kernel88.next]o202:0, o202[Kernel88.next]o202:0, o203[Kernel88.next]o202:0, o203[Kernel88.next]o141:0) :|: o142[Kernel88.next]o143:0 > -1 && i104:0 - 2 * div = 0 && o142[Kernel88.next]o144:0 > o142[Kernel88.next]o143:0 && o144[Kernel88.next]o143:0 < o142[Kernel88.next]o144:0 && o144[Kernel88.next]o143:0 > -1 && o142[Kernel88.next]o141:0 > -1 && o203[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && i104:0 >= div1 && o203[Kernel88.next]o141:0 > 0 && i104:0 - 2 * div > -2 && i104:0 - 2 * div < 2 && i104:0 - 2 * div1 > -2 && i104:0 - 2 * div1 < 2 ---------------------------------------- (22) Obligation: Rules: f1416_0_slide88_EQ(x, x1, x2, x3, x4, x5, x6) -> f1416_0_slide88_EQ'(x, x1, x2, x3, x4, x5, x6) :|: x7 > 0 && x3 > 0 && x - 2 * x8 = 0 && x4 > -1 && x1 > x4 && x7 > x5 && x5 > -1 && x6 > -1 && x9 < x6 && x10 < x7 && x1 > 0 && x11 < x3 && x >= x12 && x9 > 0 f1416_0_slide88_EQ'(x13, x14, x15, x16, x17, x18, x19) -> f1416_0_slide88_EQ(x20, x21, x15, x22, x14, x23, x24) :|: x25 > 0 && x16 > 0 && x13 - 2 * x26 = 0 && x17 > -1 && x14 > x17 && x25 > x18 && x18 > -1 && x19 > -1 && x24 < x19 && x23 < x25 && x14 > 0 && x22 < x16 && x13 >= x20 && x24 > 0 && x13 - 2 * x26 > -2 && x13 - 2 * x26 < 2 && x13 - 2 * x20 > -2 && x13 - 2 * x20 < 2 f1416_0_slide88_EQ(x27, x28, x29, x28, x30, x31, x29) -> f1416_0_slide88_EQ'(x27, x28, x29, x28, x30, x31, x29) :|: x30 > -1 && x27 - 2 * x32 = 0 && x28 > x30 && x31 < x28 && x31 > -1 && x29 > -1 && x33 < x29 && x34 < x28 && x28 > -1 && x27 >= x35 && x33 > 0 f1416_0_slide88_EQ'(x36, x37, x38, x37, x39, x40, x38) -> f1416_0_slide88_EQ(x41, 1, x42, x43, x44, x43, x45) :|: x39 > -1 && x36 - 2 * x46 = 0 && x37 > x39 && x40 < x37 && x40 > -1 && x38 > -1 && x45 < x38 && x43 < x37 && x37 > -1 && x36 >= x41 && x45 > 0 && x36 - 2 * x46 > -2 && x36 - 2 * x46 < 2 && x36 - 2 * x41 > -2 && x36 - 2 * x41 < 2 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f1416_0_slide88_EQ(x, x1, x2, x3, x4, x5, x6) -> f1416_0_slide88_EQ'(x, x1, x2, x3, x4, x5, x6) :|: x7 > 0 && x3 > 0 && x - 2 * x8 = 0 && x4 > -1 && x1 > x4 && x7 > x5 && x5 > -1 && x6 > -1 && x9 < x6 && x10 < x7 && x1 > 0 && x11 < x3 && x >= x12 && x9 > 0 f1416_0_slide88_EQ'(x13, x14, x15, x16, x17, x18, x19) -> f1416_0_slide88_EQ(x20, x21, x15, x22, x14, x23, x24) :|: x25 > 0 && x16 > 0 && x13 - 2 * x26 = 0 && x17 > -1 && x14 > x17 && x25 > x18 && x18 > -1 && x19 > -1 && x24 < x19 && x23 < x25 && x14 > 0 && x22 < x16 && x13 >= x20 && x24 > 0 && x13 - 2 * x26 > -2 && x13 - 2 * x26 < 2 && x13 - 2 * x20 > -2 && x13 - 2 * x20 < 2 f1416_0_slide88_EQ(x27, x28, x29, x28, x30, x31, x29) -> f1416_0_slide88_EQ'(x27, x28, x29, x28, x30, x31, x29) :|: x30 > -1 && x27 - 2 * x32 = 0 && x28 > x30 && x31 < x28 && x31 > -1 && x29 > -1 && x33 < x29 && x34 < x28 && x28 > -1 && x27 >= x35 && x33 > 0 f1416_0_slide88_EQ'(x36, x37, x38, x37, x39, x40, x38) -> f1416_0_slide88_EQ(x41, 1, x42, x43, x44, x43, x45) :|: x39 > -1 && x36 - 2 * x46 = 0 && x37 > x39 && x40 < x37 && x40 > -1 && x38 > -1 && x45 < x38 && x43 < x37 && x37 > -1 && x36 >= x41 && x45 > 0 && x36 - 2 * x46 > -2 && x36 - 2 * x46 < 2 && x36 - 2 * x41 > -2 && x36 - 2 * x41 < 2 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1416_0_slide88_EQ(x, x1, x2, x3, x4, x5, x6) -> f1416_0_slide88_EQ'(x, x1, x2, x3, x4, x5, x6) :|: x7 > 0 && x3 > 0 && x - 2 * x8 = 0 && x4 > -1 && x1 > x4 && x7 > x5 && x5 > -1 && x6 > -1 && x9 < x6 && x10 < x7 && x1 > 0 && x11 < x3 && x >= x12 && x9 > 0 (2) f1416_0_slide88_EQ'(x13, x14, x15, x16, x17, x18, x19) -> f1416_0_slide88_EQ(x20, x21, x15, x22, x14, x23, x24) :|: x25 > 0 && x16 > 0 && x13 - 2 * x26 = 0 && x17 > -1 && x14 > x17 && x25 > x18 && x18 > -1 && x19 > -1 && x24 < x19 && x23 < x25 && x14 > 0 && x22 < x16 && x13 >= x20 && x24 > 0 && x13 - 2 * x26 > -2 && x13 - 2 * x26 < 2 && x13 - 2 * x20 > -2 && x13 - 2 * x20 < 2 (3) f1416_0_slide88_EQ(x27, x28, x29, x28, x30, x31, x29) -> f1416_0_slide88_EQ'(x27, x28, x29, x28, x30, x31, x29) :|: x30 > -1 && x27 - 2 * x32 = 0 && x28 > x30 && x31 < x28 && x31 > -1 && x29 > -1 && x33 < x29 && x34 < x28 && x28 > -1 && x27 >= x35 && x33 > 0 (4) f1416_0_slide88_EQ'(x36, x37, x38, x37, x39, x40, x38) -> f1416_0_slide88_EQ(x41, 1, x42, x43, x44, x43, x45) :|: x39 > -1 && x36 - 2 * x46 = 0 && x37 > x39 && x40 < x37 && x40 > -1 && x38 > -1 && x45 < x38 && x43 < x37 && x37 > -1 && x36 >= x41 && x45 > 0 && x36 - 2 * x46 > -2 && x36 - 2 * x46 < 2 && x36 - 2 * x41 > -2 && x36 - 2 * x41 < 2 Arcs: (1) -> (2), (4) (2) -> (1), (3) (3) -> (2), (4) (4) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1416_0_slide88_EQ(x, x1, x2, x3, x4, x5, x6) -> f1416_0_slide88_EQ'(x, x1, x2, x3, x4, x5, x6) :|: x7 > 0 && x3 > 0 && x - 2 * x8 = 0 && x4 > -1 && x1 > x4 && x7 > x5 && x5 > -1 && x6 > -1 && x9 < x6 && x10 < x7 && x1 > 0 && x11 < x3 && x >= x12 && x9 > 0 (2) f1416_0_slide88_EQ'(x36, x37, x38, x37, x39, x40, x38) -> f1416_0_slide88_EQ(x41, 1, x42, x43, x44, x43, x45) :|: x39 > -1 && x36 - 2 * x46 = 0 && x37 > x39 && x40 < x37 && x40 > -1 && x38 > -1 && x45 < x38 && x43 < x37 && x37 > -1 && x36 >= x41 && x45 > 0 && x36 - 2 * x46 > -2 && x36 - 2 * x46 < 2 && x36 - 2 * x41 > -2 && x36 - 2 * x41 < 2 (3) f1416_0_slide88_EQ'(x13, x14, x15, x16, x17, x18, x19) -> f1416_0_slide88_EQ(x20, x21, x15, x22, x14, x23, x24) :|: x25 > 0 && x16 > 0 && x13 - 2 * x26 = 0 && x17 > -1 && x14 > x17 && x25 > x18 && x18 > -1 && x19 > -1 && x24 < x19 && x23 < x25 && x14 > 0 && x22 < x16 && x13 >= x20 && x24 > 0 && x13 - 2 * x26 > -2 && x13 - 2 * x26 < 2 && x13 - 2 * x20 > -2 && x13 - 2 * x20 < 2 (4) f1416_0_slide88_EQ(x27, x28, x29, x28, x30, x31, x29) -> f1416_0_slide88_EQ'(x27, x28, x29, x28, x30, x31, x29) :|: x30 > -1 && x27 - 2 * x32 = 0 && x28 > x30 && x31 < x28 && x31 > -1 && x29 > -1 && x33 < x29 && x34 < x28 && x28 > -1 && x27 >= x35 && x33 > 0 Arcs: (1) -> (2), (3) (2) -> (1) (3) -> (1), (4) (4) -> (2), (3) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1416_0_slide88_EQ(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) -> f1416_0_slide88_EQ'(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) :|: x35:0 <= x27:0 && x33:0 > 0 && x28:0 > -1 && x34:0 < x28:0 && x33:0 < x29:0 && x29:0 > -1 && x31:0 > -1 && x31:0 < x28:0 && x30:0 < x28:0 && x27:0 - 2 * x32:0 = 0 && x30:0 > -1 f1416_0_slide88_EQ'(x36:0, x37:0, x38:0, x37:0, x39:0, x40:0, x38:0) -> f1416_0_slide88_EQ(x41:0, 1, x42:0, x43:0, x44:0, x43:0, x45:0) :|: x36:0 - 2 * x41:0 > -2 && x36:0 - 2 * x41:0 < 2 && x36:0 - 2 * x46:0 < 2 && x36:0 - 2 * x46:0 > -2 && x45:0 > 0 && x41:0 <= x36:0 && x37:0 > -1 && x43:0 < x37:0 && x45:0 < x38:0 && x38:0 > -1 && x40:0 > -1 && x40:0 < x37:0 && x39:0 < x37:0 && x36:0 - 2 * x46:0 = 0 && x39:0 > -1 f1416_0_slide88_EQ'(x13:0, x14:0, x15:0, x16:0, x17:0, x18:0, x19:0) -> f1416_0_slide88_EQ(x20:0, x21:0, x15:0, x22:0, x14:0, x23:0, x24:0) :|: x13:0 - 2 * x20:0 > -2 && x13:0 - 2 * x20:0 < 2 && x13:0 - 2 * x26:0 < 2 && x13:0 - 2 * x26:0 > -2 && x24:0 > 0 && x20:0 <= x13:0 && x22:0 < x16:0 && x14:0 > 0 && x25:0 > x23:0 && x24:0 < x19:0 && x19:0 > -1 && x18:0 > -1 && x25:0 > x18:0 && x17:0 < x14:0 && x17:0 > -1 && x13:0 - 2 * x26:0 = 0 && x16:0 > 0 && x25:0 > 0 f1416_0_slide88_EQ(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f1416_0_slide88_EQ'(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) :|: x:0 >= x12:0 && x9:0 > 0 && x3:0 > x11:0 && x1:0 > 0 && x7:0 > x10:0 && x9:0 < x6:0 && x6:0 > -1 && x5:0 > -1 && x7:0 > x5:0 && x4:0 < x1:0 && x4:0 > -1 && x:0 - 2 * x8:0 = 0 && x3:0 > 0 && x7:0 > 0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1416_0_slide88_EQ(INTEGER, VARIABLE, VARIABLE, INTEGER, VARIABLE, INTEGER, INTEGER) f1416_0_slide88_EQ'(INTEGER, INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1416_0_slide88_EQ(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) -> f1416_0_slide88_EQ'(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) :|: x35:0 <= x27:0 && x33:0 > 0 && x28:0 > -1 && x34:0 < x28:0 && x33:0 < x29:0 && x29:0 > -1 && x31:0 > -1 && x31:0 < x28:0 && x30:0 < x28:0 && x27:0 - 2 * x32:0 = 0 && x30:0 > -1 f1416_0_slide88_EQ'(x36:0, x37:0, x38:0, x37:0, x39:0, x40:0, x38:0) -> f1416_0_slide88_EQ(x41:0, c, x42:0, x43:0, x44:0, x43:0, x45:0) :|: c = 1 && (x36:0 - 2 * x41:0 > -2 && x36:0 - 2 * x41:0 < 2 && x36:0 - 2 * x46:0 < 2 && x36:0 - 2 * x46:0 > -2 && x45:0 > 0 && x41:0 <= x36:0 && x37:0 > -1 && x43:0 < x37:0 && x45:0 < x38:0 && x38:0 > -1 && x40:0 > -1 && x40:0 < x37:0 && x39:0 < x37:0 && x36:0 - 2 * x46:0 = 0 && x39:0 > -1) f1416_0_slide88_EQ'(x13:0, x14:0, x15:0, x16:0, x17:0, x18:0, x19:0) -> f1416_0_slide88_EQ(x20:0, x21:0, x15:0, x22:0, x14:0, x23:0, x24:0) :|: x13:0 - 2 * x20:0 > -2 && x13:0 - 2 * x20:0 < 2 && x13:0 - 2 * x26:0 < 2 && x13:0 - 2 * x26:0 > -2 && x24:0 > 0 && x20:0 <= x13:0 && x22:0 < x16:0 && x14:0 > 0 && x25:0 > x23:0 && x24:0 < x19:0 && x19:0 > -1 && x18:0 > -1 && x25:0 > x18:0 && x17:0 < x14:0 && x17:0 > -1 && x13:0 - 2 * x26:0 = 0 && x16:0 > 0 && x25:0 > 0 f1416_0_slide88_EQ(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f1416_0_slide88_EQ'(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) :|: x:0 >= x12:0 && x9:0 > 0 && x3:0 > x11:0 && x1:0 > 0 && x7:0 > x10:0 && x9:0 < x6:0 && x6:0 > -1 && x5:0 > -1 && x7:0 > x5:0 && x4:0 < x1:0 && x4:0 > -1 && x:0 - 2 * x8:0 = 0 && x3:0 > 0 && x7:0 > 0 ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1416_0_slide88_EQ(x, x1, x2, x3, x4, x5, x6)] = x6 [f1416_0_slide88_EQ'(x7, x8, x9, x10, x11, x12, x13)] = x13 The following rules are decreasing: f1416_0_slide88_EQ'(x36:0, x37:0, x38:0, x37:0, x39:0, x40:0, x38:0) -> f1416_0_slide88_EQ(x41:0, c, x42:0, x43:0, x44:0, x43:0, x45:0) :|: c = 1 && (x36:0 - 2 * x41:0 > -2 && x36:0 - 2 * x41:0 < 2 && x36:0 - 2 * x46:0 < 2 && x36:0 - 2 * x46:0 > -2 && x45:0 > 0 && x41:0 <= x36:0 && x37:0 > -1 && x43:0 < x37:0 && x45:0 < x38:0 && x38:0 > -1 && x40:0 > -1 && x40:0 < x37:0 && x39:0 < x37:0 && x36:0 - 2 * x46:0 = 0 && x39:0 > -1) f1416_0_slide88_EQ'(x13:0, x14:0, x15:0, x16:0, x17:0, x18:0, x19:0) -> f1416_0_slide88_EQ(x20:0, x21:0, x15:0, x22:0, x14:0, x23:0, x24:0) :|: x13:0 - 2 * x20:0 > -2 && x13:0 - 2 * x20:0 < 2 && x13:0 - 2 * x26:0 < 2 && x13:0 - 2 * x26:0 > -2 && x24:0 > 0 && x20:0 <= x13:0 && x22:0 < x16:0 && x14:0 > 0 && x25:0 > x23:0 && x24:0 < x19:0 && x19:0 > -1 && x18:0 > -1 && x25:0 > x18:0 && x17:0 < x14:0 && x17:0 > -1 && x13:0 - 2 * x26:0 = 0 && x16:0 > 0 && x25:0 > 0 The following rules are bounded: f1416_0_slide88_EQ(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) -> f1416_0_slide88_EQ'(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) :|: x35:0 <= x27:0 && x33:0 > 0 && x28:0 > -1 && x34:0 < x28:0 && x33:0 < x29:0 && x29:0 > -1 && x31:0 > -1 && x31:0 < x28:0 && x30:0 < x28:0 && x27:0 - 2 * x32:0 = 0 && x30:0 > -1 f1416_0_slide88_EQ'(x36:0, x37:0, x38:0, x37:0, x39:0, x40:0, x38:0) -> f1416_0_slide88_EQ(x41:0, c, x42:0, x43:0, x44:0, x43:0, x45:0) :|: c = 1 && (x36:0 - 2 * x41:0 > -2 && x36:0 - 2 * x41:0 < 2 && x36:0 - 2 * x46:0 < 2 && x36:0 - 2 * x46:0 > -2 && x45:0 > 0 && x41:0 <= x36:0 && x37:0 > -1 && x43:0 < x37:0 && x45:0 < x38:0 && x38:0 > -1 && x40:0 > -1 && x40:0 < x37:0 && x39:0 < x37:0 && x36:0 - 2 * x46:0 = 0 && x39:0 > -1) f1416_0_slide88_EQ'(x13:0, x14:0, x15:0, x16:0, x17:0, x18:0, x19:0) -> f1416_0_slide88_EQ(x20:0, x21:0, x15:0, x22:0, x14:0, x23:0, x24:0) :|: x13:0 - 2 * x20:0 > -2 && x13:0 - 2 * x20:0 < 2 && x13:0 - 2 * x26:0 < 2 && x13:0 - 2 * x26:0 > -2 && x24:0 > 0 && x20:0 <= x13:0 && x22:0 < x16:0 && x14:0 > 0 && x25:0 > x23:0 && x24:0 < x19:0 && x19:0 > -1 && x18:0 > -1 && x25:0 > x18:0 && x17:0 < x14:0 && x17:0 > -1 && x13:0 - 2 * x26:0 = 0 && x16:0 > 0 && x25:0 > 0 f1416_0_slide88_EQ(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f1416_0_slide88_EQ'(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) :|: x:0 >= x12:0 && x9:0 > 0 && x3:0 > x11:0 && x1:0 > 0 && x7:0 > x10:0 && x9:0 < x6:0 && x6:0 > -1 && x5:0 > -1 && x7:0 > x5:0 && x4:0 < x1:0 && x4:0 > -1 && x:0 - 2 * x8:0 = 0 && x3:0 > 0 && x7:0 > 0 ---------------------------------------- (32) Obligation: Rules: f1416_0_slide88_EQ(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) -> f1416_0_slide88_EQ'(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) :|: x35:0 <= x27:0 && x33:0 > 0 && x28:0 > -1 && x34:0 < x28:0 && x33:0 < x29:0 && x29:0 > -1 && x31:0 > -1 && x31:0 < x28:0 && x30:0 < x28:0 && x27:0 - 2 * x32:0 = 0 && x30:0 > -1 f1416_0_slide88_EQ(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f1416_0_slide88_EQ'(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) :|: x:0 >= x12:0 && x9:0 > 0 && x3:0 > x11:0 && x1:0 > 0 && x7:0 > x10:0 && x9:0 < x6:0 && x6:0 > -1 && x5:0 > -1 && x7:0 > x5:0 && x4:0 < x1:0 && x4:0 > -1 && x:0 - 2 * x8:0 = 0 && x3:0 > 0 && x7:0 > 0 ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1416_0_slide88_EQ ] = f1416_0_slide88_EQ_4 [ f1416_0_slide88_EQ' ] = 0 The following rules are decreasing: f1416_0_slide88_EQ(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) -> f1416_0_slide88_EQ'(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) :|: x35:0 <= x27:0 && x33:0 > 0 && x28:0 > -1 && x34:0 < x28:0 && x33:0 < x29:0 && x29:0 > -1 && x31:0 > -1 && x31:0 < x28:0 && x30:0 < x28:0 && x27:0 - 2 * x32:0 = 0 && x30:0 > -1 f1416_0_slide88_EQ(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f1416_0_slide88_EQ'(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) :|: x:0 >= x12:0 && x9:0 > 0 && x3:0 > x11:0 && x1:0 > 0 && x7:0 > x10:0 && x9:0 < x6:0 && x6:0 > -1 && x5:0 > -1 && x7:0 > x5:0 && x4:0 < x1:0 && x4:0 > -1 && x:0 - 2 * x8:0 = 0 && x3:0 > 0 && x7:0 > 0 The following rules are bounded: f1416_0_slide88_EQ(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) -> f1416_0_slide88_EQ'(x27:0, x28:0, x29:0, x28:0, x30:0, x31:0, x29:0) :|: x35:0 <= x27:0 && x33:0 > 0 && x28:0 > -1 && x34:0 < x28:0 && x33:0 < x29:0 && x29:0 > -1 && x31:0 > -1 && x31:0 < x28:0 && x30:0 < x28:0 && x27:0 - 2 * x32:0 = 0 && x30:0 > -1 f1416_0_slide88_EQ(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) -> f1416_0_slide88_EQ'(x:0, x1:0, x2:0, x3:0, x4:0, x5:0, x6:0) :|: x:0 >= x12:0 && x9:0 > 0 && x3:0 > x11:0 && x1:0 > 0 && x7:0 > x10:0 && x9:0 < x6:0 && x6:0 > -1 && x5:0 > -1 && x7:0 > x5:0 && x4:0 < x1:0 && x4:0 > -1 && x:0 - 2 * x8:0 = 0 && x3:0 > 0 && x7:0 > 0 ---------------------------------------- (34) YES