/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 478 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 9 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 42 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 33 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 19 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 134 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 211 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 107 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (32) IntTRS (33) PolynomialOrderProcessor [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: f805_0_create_Load(EOS(STATIC_805), i74, o75[Kernel88.next]o74) -> f810_0_create_LE(EOS(STATIC_810), i74, i74, o75[Kernel88.next]o74) :|: TRUE f810_0_create_LE(EOS(STATIC_810), i76, i76, o75[Kernel88.next]o74) -> f813_0_create_LE(EOS(STATIC_813), i76, i76, o75[Kernel88.next]o74) :|: TRUE f813_0_create_LE(EOS(STATIC_813), i76, i76, o75[Kernel88.next]o74) -> f817_0_create_New(EOS(STATIC_817), i76, o75[Kernel88.next]o74) :|: i76 > 0 f817_0_create_New(EOS(STATIC_817), i76, o75[Kernel88.next]o74) -> f824_0_create_Duplicate(EOS(STATIC_824), i76, o75[Kernel88.next]o74) :|: TRUE f824_0_create_Duplicate(EOS(STATIC_824), i76, o75[Kernel88.next]o74) -> f827_0_create_Load(EOS(STATIC_827), i76, o75[Kernel88.next]o74) :|: TRUE f827_0_create_Load(EOS(STATIC_827), i76, o75[Kernel88.next]o74) -> f829_0_create_InvokeMethod(EOS(STATIC_829), i76, o75[Kernel88.next]o74) :|: TRUE f829_0_create_InvokeMethod(EOS(STATIC_829), i76, o75[Kernel88.next]o74) -> f848_0__init__Load(EOS(STATIC_848), i76, o75[Kernel88.next]o74) :|: TRUE f848_0__init__Load(EOS(STATIC_848), i76, o75[Kernel88.next]o74) -> f871_0__init__InvokeMethod(EOS(STATIC_871), i76, o75[Kernel88.next]o74) :|: TRUE f871_0__init__InvokeMethod(EOS(STATIC_871), i76, o75[Kernel88.next]o74) -> f889_0__init__Load(EOS(STATIC_889), i76, o75[Kernel88.next]o74) :|: TRUE f889_0__init__Load(EOS(STATIC_889), i76, o75[Kernel88.next]o74) -> f922_0__init__Load(EOS(STATIC_922), i76, o75[Kernel88.next]o74) :|: TRUE f922_0__init__Load(EOS(STATIC_922), i76, o75[Kernel88.next]o74) -> f925_0__init__FieldAccess(EOS(STATIC_925), i76, o75[Kernel88.next]o74) :|: TRUE f925_0__init__FieldAccess(EOS(STATIC_925), i76, o75[Kernel88.next]o74) -> f933_0__init__Return(EOS(STATIC_933), i76, o75[Kernel88.next]o74) :|: TRUE f933_0__init__Return(EOS(STATIC_933), i76, o75[Kernel88.next]o74) -> f947_0_create_Store(EOS(STATIC_947), i76, o75[Kernel88.next]o74) :|: TRUE f947_0_create_Store(EOS(STATIC_947), i76, o75[Kernel88.next]o74) -> f951_0_create_JMP(EOS(STATIC_951), i76, o75[Kernel88.next]o74) :|: TRUE f951_0_create_JMP(EOS(STATIC_951), i76, o75[Kernel88.next]o74) -> f1086_0_create_Inc(EOS(STATIC_1086), i76, o75[Kernel88.next]o74) :|: TRUE f1086_0_create_Inc(EOS(STATIC_1086), i76, o75[Kernel88.next]o74) -> f790_0_create_Inc(EOS(STATIC_790), i76, o86[Kernel88.next]o74) :|: TRUE f790_0_create_Inc(EOS(STATIC_790), i55, o75[Kernel88.next]o74) -> f805_0_create_Load(EOS(STATIC_805), i55 + -1, o75[Kernel88.next]o74) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f805_0_create_Load(EOS(STATIC_805), i74:0, o75[Kernel88.next]o74:0) -> f805_0_create_Load(EOS(STATIC_805), i74:0 - 1, o86[Kernel88.next]o74:0) :|: i74:0 > 0 Filtered constant ground arguments: f805_0_create_Load(x1, x2, x3) -> f805_0_create_Load(x2, x3) EOS(x1) -> EOS Filtered unneeded arguments: f805_0_create_Load(x1, x2) -> f805_0_create_Load(x1) Finished conversion. Obtained 1 rules.P rules: f805_0_create_Load(i74:0) -> f805_0_create_Load(i74:0 - 1) :|: i74:0 > 0 ---------------------------------------- (9) Obligation: Rules: f805_0_create_Load(i74:0) -> f805_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: f805_0_create_Load(i74:0) -> f805_0_create_Load(arith) :|: i74:0 > 0 && arith = i74:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f805_0_create_Load(i74:0) -> f805_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) f805_0_create_Load(i74:0) -> f805_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: f805_0_create_Load(i74:0:0) -> f805_0_create_Load(i74:0:0 - 1) :|: i74:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f805_0_create_Load(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f805_0_create_Load(i74:0:0) -> f805_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f805_0_create_Load ] = f805_0_create_Load_1 The following rules are decreasing: f805_0_create_Load(i74:0:0) -> f805_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 The following rules are bounded: f805_0_create_Load(i74:0:0) -> f805_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: f1457_0_slide88_EQ(EOS(STATIC_1457), 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) -> f1461_0_slide88_Load(EOS(STATIC_1461), 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 f1461_0_slide88_Load(EOS(STATIC_1461), 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) -> f1467_0_slide88_Store(EOS(STATIC_1467), 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 f1467_0_slide88_Store(EOS(STATIC_1467), 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) -> f1470_0_slide88_Load(EOS(STATIC_1470), 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 f1470_0_slide88_Load(EOS(STATIC_1470), 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) -> f1473_0_slide88_InvokeMethod(EOS(STATIC_1473), 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 f1473_0_slide88_InvokeMethod(EOS(STATIC_1473), 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) -> f1476_0_check_Load(EOS(STATIC_1476), 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 f1476_0_check_Load(EOS(STATIC_1476), 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) -> f1479_0_check_ConstantStackPush(EOS(STATIC_1479), 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 f1479_0_check_ConstantStackPush(EOS(STATIC_1479), 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) -> f1483_0_check_IntArithmetic(EOS(STATIC_1483), 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 f1483_0_check_IntArithmetic(EOS(STATIC_1483), 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) -> f1487_0_check_LE(EOS(STATIC_1487), 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 f1487_0_check_LE(EOS(STATIC_1487), 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) -> f1492_0_check_LE(EOS(STATIC_1492), 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 f1492_0_check_LE(EOS(STATIC_1492), 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) -> f1495_0_check_ConstantStackPush(EOS(STATIC_1495), 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 f1495_0_check_ConstantStackPush(EOS(STATIC_1495), 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) -> f1497_0_check_Return(EOS(STATIC_1497), 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 f1497_0_check_Return(EOS(STATIC_1497), 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) -> f1499_0_slide88_EQ(EOS(STATIC_1499), 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 f1499_0_slide88_EQ(EOS(STATIC_1499), 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) -> f1523_0_slide88_Load(EOS(STATIC_1523), 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 f1523_0_slide88_Load(EOS(STATIC_1523), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1531_0_slide88_Store(EOS(STATIC_1531), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE f1531_0_slide88_Store(EOS(STATIC_1531), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1537_0_slide88_Load(EOS(STATIC_1537), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE f1537_0_slide88_Load(EOS(STATIC_1537), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1543_0_slide88_FieldAccess(EOS(STATIC_1543), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE f1543_0_slide88_FieldAccess(EOS(STATIC_1543), i104, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1565_0_slide88_FieldAccess(EOS(STATIC_1565), 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 f1543_0_slide88_FieldAccess(EOS(STATIC_1543), i104, o197[Kernel88.next]o197, o197[Kernel88.next]o141, o197[Kernel88.next]o197, o197[Kernel88.next]o141, o197[Kernel88.next]o197) -> f1566_0_slide88_FieldAccess(EOS(STATIC_1566), i104, o197[Kernel88.next]o141, o197[Kernel88.next]o197) :|: TRUE f1565_0_slide88_FieldAccess(EOS(STATIC_1565), i104, o142[Kernel88.next]o202, o142[Kernel88.next]o141, o202[Kernel88.next]o141, o202[Kernel88.next]o202, o202[Kernel88.next]o142) -> f1577_0_slide88_FieldAccess(EOS(STATIC_1577), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, 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 && o203[Kernel88.next]o142 < o202[Kernel88.next]o142 && o202[Kernel88.next]o142 >= 0 f1577_0_slide88_FieldAccess(EOS(STATIC_1577), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1581_0_slide88_Store(EOS(STATIC_1581), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE f1581_0_slide88_Store(EOS(STATIC_1581), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1585_0_slide88_Load(EOS(STATIC_1585), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE f1585_0_slide88_Load(EOS(STATIC_1585), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1589_0_slide88_ConstantStackPush(EOS(STATIC_1589), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE f1589_0_slide88_ConstantStackPush(EOS(STATIC_1589), i104, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1595_0_slide88_IntArithmetic(EOS(STATIC_1595), i104, 2, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE f1595_0_slide88_IntArithmetic(EOS(STATIC_1595), i104, matching1, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1622_0_slide88_Store(EOS(STATIC_1622), i125, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: i125 = i104 / 2 && i125 <= i104 && matching1 = 2 f1622_0_slide88_Store(EOS(STATIC_1622), i125, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1678_0_slide88_JMP(EOS(STATIC_1678), i125, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE f1678_0_slide88_JMP(EOS(STATIC_1678), i125, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1732_0_slide88_Load(EOS(STATIC_1732), i125, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE f1732_0_slide88_Load(EOS(STATIC_1732), i125, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1404_0_slide88_Load(EOS(STATIC_1404), i125, o142[Kernel88.next]o203, o142[Kernel88.next]o141, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o142[Kernel88.next]o202, o203[Kernel88.next]o202) :|: TRUE f1404_0_slide88_Load(EOS(STATIC_1404), 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) -> f1419_0_slide88_Load(EOS(STATIC_1419), 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 f1419_0_slide88_Load(EOS(STATIC_1419), 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) -> f1432_0_slide88_EQ(EOS(STATIC_1432), 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 f1432_0_slide88_EQ(EOS(STATIC_1432), 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) -> f1457_0_slide88_EQ(EOS(STATIC_1457), 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 f1566_0_slide88_FieldAccess(EOS(STATIC_1566), i104, o204[Kernel88.next]o141, o204[Kernel88.next]o204) -> f1578_0_slide88_FieldAccess(EOS(STATIC_1578), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: o205[Kernel88.next]o141 < o204[Kernel88.next]o141 && o204[Kernel88.next]o141 >= 0 && o205[Kernel88.next]o204 < o204[Kernel88.next]o204 && o204[Kernel88.next]o204 >= 0 f1578_0_slide88_FieldAccess(EOS(STATIC_1578), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1582_0_slide88_Store(EOS(STATIC_1582), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE f1582_0_slide88_Store(EOS(STATIC_1582), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1586_0_slide88_Load(EOS(STATIC_1586), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE f1586_0_slide88_Load(EOS(STATIC_1586), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1590_0_slide88_ConstantStackPush(EOS(STATIC_1590), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE f1590_0_slide88_ConstantStackPush(EOS(STATIC_1590), i104, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1599_0_slide88_IntArithmetic(EOS(STATIC_1599), i104, 2, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE f1599_0_slide88_IntArithmetic(EOS(STATIC_1599), i104, matching1, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1624_0_slide88_Store(EOS(STATIC_1624), i126, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: i126 = i104 / 2 && i126 <= i104 && matching1 = 2 f1624_0_slide88_Store(EOS(STATIC_1624), i126, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1681_0_slide88_JMP(EOS(STATIC_1681), i126, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE f1681_0_slide88_JMP(EOS(STATIC_1681), i126, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1761_0_slide88_Load(EOS(STATIC_1761), i126, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE f1761_0_slide88_Load(EOS(STATIC_1761), i126, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1404_0_slide88_Load(EOS(STATIC_1404), i126, o204[Kernel88.next]o205, o204[Kernel88.next]o141, o205[Kernel88.next]o141, o205[Kernel88.next]o204, o204[Kernel88.next]o204, o205[Kernel88.next]o204) :|: o204[Kernel88.next]o205 = 1 Combined rules. Obtained 4 IRulesP rules: f1457_0_slide88_EQ(EOS(STATIC_1457), 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) -> f1457_0_slide88_EQ'(EOS(STATIC_1457), 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 && o205[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o205[Kernel88.next]o204:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && o205[Kernel88.next]o141:0 > 0 && i104:0 >= div1 f1457_0_slide88_EQ'(EOS(STATIC_1457), 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) -> f1457_0_slide88_EQ(EOS(STATIC_1457), div1, 1, o204[Kernel88.next]o141:0, o205[Kernel88.next]o204:0, o204[Kernel88.next]o204:0, o205[Kernel88.next]o204:0, o205[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 && o205[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o205[Kernel88.next]o204:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && i104:0 >= div1 && o205[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 f1457_0_slide88_EQ(EOS(STATIC_1457), 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) -> f1457_0_slide88_EQ'(EOS(STATIC_1457), 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 && o203[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o203[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && o203[Kernel88.next]o141:0 > 0 && i104:0 >= div1 f1457_0_slide88_EQ'(EOS(STATIC_1457), 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) -> f1457_0_slide88_EQ(EOS(STATIC_1457), div1, o142[Kernel88.next]o203:0, o142[Kernel88.next]o141:0, o203[Kernel88.next]o142:0, o142[Kernel88.next]o144:0, o203[Kernel88.next]o202:0, o203[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 && o203[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o203[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && 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: f1457_0_slide88_EQ(x1, x2, x3, x4, x5, x6, x7, x8) -> f1457_0_slide88_EQ(x2, x3, x4, x5, x6, x7, x8) f1457_0_slide88_EQ'(x1, x2, x3, x4, x5, x6, x7, x8) -> f1457_0_slide88_EQ'(x2, x3, x4, x5, x6, x7, x8) EOS(x1) -> EOS Finished conversion. Obtained 4 rules.P rules: f1457_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) -> f1457_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 && o205[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o205[Kernel88.next]o204:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && i104:0 >= div1 && o205[Kernel88.next]o141:0 > 0 f1457_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) -> f1457_0_slide88_EQ(div1, 1, o204[Kernel88.next]o141:0, o205[Kernel88.next]o204:0, o204[Kernel88.next]o204:0, o205[Kernel88.next]o204:0, o205[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 && o205[Kernel88.next]o141:0 < o142[Kernel88.next]o141:0 && o205[Kernel88.next]o204:0 < o142[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > -1 && i104:0 >= div1 && o205[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 f1457_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) -> f1457_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 && o203[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o203[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && i104:0 >= div1 && o203[Kernel88.next]o141:0 > 0 f1457_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) -> f1457_0_slide88_EQ(div1, o142[Kernel88.next]o203:0, o142[Kernel88.next]o141:0, o203[Kernel88.next]o142:0, o142[Kernel88.next]o144:0, o203[Kernel88.next]o202:0, o203[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 && o203[Kernel88.next]o141:0 < o144[Kernel88.next]o141:0 && o203[Kernel88.next]o202:0 < o144[Kernel88.next]o144:0 && o142[Kernel88.next]o144:0 > 0 && o203[Kernel88.next]o142:0 < o144[Kernel88.next]o142:0 && 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: f1457_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1457_0_slide88_EQ'(x, x1, x2, x1, x3, x4, x2) :|: x3 > -1 && x - 2 * x5 = 0 && x1 > x3 && x4 < x1 && x4 > -1 && x2 > -1 && x6 < x2 && x7 < x1 && x1 > -1 && x >= x8 && x6 > 0 f1457_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1457_0_slide88_EQ(x14, 1, x15, x16, x17, x16, x18) :|: x12 > -1 && x9 - 2 * x19 = 0 && x10 > x12 && x13 < x10 && x13 > -1 && x11 > -1 && x18 < x11 && x16 < x10 && x10 > -1 && x9 >= x14 && x18 > 0 && x9 - 2 * x19 > -2 && x9 - 2 * x19 < 2 && x9 - 2 * x14 > -2 && x9 - 2 * x14 < 2 f1457_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1457_0_slide88_EQ'(x20, x21, x22, x23, x24, x25, x26) :|: x27 > 0 && x23 > 0 && x20 - 2 * x28 = 0 && x24 > -1 && x21 > x24 && x27 > x25 && x25 > -1 && x26 > -1 && x29 < x26 && x30 < x27 && x21 > 0 && x31 < x23 && x20 >= x32 && x29 > 0 f1457_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1457_0_slide88_EQ(x40, x41, x35, x42, x34, x43, x44) :|: x45 > 0 && x36 > 0 && x33 - 2 * x46 = 0 && x37 > -1 && x34 > x37 && x45 > x38 && x38 > -1 && x39 > -1 && x44 < x39 && x43 < x45 && x34 > 0 && x42 < x36 && x33 >= x40 && x44 > 0 && x33 - 2 * x46 > -2 && x33 - 2 * x46 < 2 && x33 - 2 * x40 > -2 && x33 - 2 * x40 < 2 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f1457_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1457_0_slide88_EQ'(x, x1, x2, x1, x3, x4, x2) :|: x3 > -1 && x - 2 * x5 = 0 && x1 > x3 && x4 < x1 && x4 > -1 && x2 > -1 && x6 < x2 && x7 < x1 && x1 > -1 && x >= x8 && x6 > 0 f1457_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1457_0_slide88_EQ(x14, 1, x15, x16, x17, x16, x18) :|: x12 > -1 && x9 - 2 * x19 = 0 && x10 > x12 && x13 < x10 && x13 > -1 && x11 > -1 && x18 < x11 && x16 < x10 && x10 > -1 && x9 >= x14 && x18 > 0 && x9 - 2 * x19 > -2 && x9 - 2 * x19 < 2 && x9 - 2 * x14 > -2 && x9 - 2 * x14 < 2 f1457_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1457_0_slide88_EQ'(x20, x21, x22, x23, x24, x25, x26) :|: x27 > 0 && x23 > 0 && x20 - 2 * x28 = 0 && x24 > -1 && x21 > x24 && x27 > x25 && x25 > -1 && x26 > -1 && x29 < x26 && x30 < x27 && x21 > 0 && x31 < x23 && x20 >= x32 && x29 > 0 f1457_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1457_0_slide88_EQ(x40, x41, x35, x42, x34, x43, x44) :|: x45 > 0 && x36 > 0 && x33 - 2 * x46 = 0 && x37 > -1 && x34 > x37 && x45 > x38 && x38 > -1 && x39 > -1 && x44 < x39 && x43 < x45 && x34 > 0 && x42 < x36 && x33 >= x40 && x44 > 0 && x33 - 2 * x46 > -2 && x33 - 2 * x46 < 2 && x33 - 2 * x40 > -2 && x33 - 2 * x40 < 2 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1457_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1457_0_slide88_EQ'(x, x1, x2, x1, x3, x4, x2) :|: x3 > -1 && x - 2 * x5 = 0 && x1 > x3 && x4 < x1 && x4 > -1 && x2 > -1 && x6 < x2 && x7 < x1 && x1 > -1 && x >= x8 && x6 > 0 (2) f1457_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1457_0_slide88_EQ(x14, 1, x15, x16, x17, x16, x18) :|: x12 > -1 && x9 - 2 * x19 = 0 && x10 > x12 && x13 < x10 && x13 > -1 && x11 > -1 && x18 < x11 && x16 < x10 && x10 > -1 && x9 >= x14 && x18 > 0 && x9 - 2 * x19 > -2 && x9 - 2 * x19 < 2 && x9 - 2 * x14 > -2 && x9 - 2 * x14 < 2 (3) f1457_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1457_0_slide88_EQ'(x20, x21, x22, x23, x24, x25, x26) :|: x27 > 0 && x23 > 0 && x20 - 2 * x28 = 0 && x24 > -1 && x21 > x24 && x27 > x25 && x25 > -1 && x26 > -1 && x29 < x26 && x30 < x27 && x21 > 0 && x31 < x23 && x20 >= x32 && x29 > 0 (4) f1457_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1457_0_slide88_EQ(x40, x41, x35, x42, x34, x43, x44) :|: x45 > 0 && x36 > 0 && x33 - 2 * x46 = 0 && x37 > -1 && x34 > x37 && x45 > x38 && x38 > -1 && x39 > -1 && x44 < x39 && x43 < x45 && x34 > 0 && x42 < x36 && x33 >= x40 && x44 > 0 && x33 - 2 * x46 > -2 && x33 - 2 * x46 < 2 && x33 - 2 * x40 > -2 && x33 - 2 * x40 < 2 Arcs: (1) -> (2), (4) (2) -> (3) (3) -> (2), (4) (4) -> (1), (3) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1457_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1457_0_slide88_EQ'(x, x1, x2, x1, x3, x4, x2) :|: x3 > -1 && x - 2 * x5 = 0 && x1 > x3 && x4 < x1 && x4 > -1 && x2 > -1 && x6 < x2 && x7 < x1 && x1 > -1 && x >= x8 && x6 > 0 (2) f1457_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1457_0_slide88_EQ(x40, x41, x35, x42, x34, x43, x44) :|: x45 > 0 && x36 > 0 && x33 - 2 * x46 = 0 && x37 > -1 && x34 > x37 && x45 > x38 && x38 > -1 && x39 > -1 && x44 < x39 && x43 < x45 && x34 > 0 && x42 < x36 && x33 >= x40 && x44 > 0 && x33 - 2 * x46 > -2 && x33 - 2 * x46 < 2 && x33 - 2 * x40 > -2 && x33 - 2 * x40 < 2 (3) f1457_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1457_0_slide88_EQ'(x20, x21, x22, x23, x24, x25, x26) :|: x27 > 0 && x23 > 0 && x20 - 2 * x28 = 0 && x24 > -1 && x21 > x24 && x27 > x25 && x25 > -1 && x26 > -1 && x29 < x26 && x30 < x27 && x21 > 0 && x31 < x23 && x20 >= x32 && x29 > 0 (4) f1457_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1457_0_slide88_EQ(x14, 1, x15, x16, x17, x16, x18) :|: x12 > -1 && x9 - 2 * x19 = 0 && x10 > x12 && x13 < x10 && x13 > -1 && x11 > -1 && x18 < x11 && x16 < x10 && x10 > -1 && x9 >= x14 && x18 > 0 && x9 - 2 * x19 > -2 && x9 - 2 * x19 < 2 && x9 - 2 * x14 > -2 && x9 - 2 * x14 < 2 Arcs: (1) -> (2), (4) (2) -> (1), (3) (3) -> (2), (4) (4) -> (3) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1457_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1457_0_slide88_EQ(x40:0, x41:0, x35:0, x42:0, x34:0, x43:0, x44:0) :|: x33:0 - 2 * x40:0 > -2 && x33:0 - 2 * x40:0 < 2 && x33:0 - 2 * x46:0 < 2 && x33:0 - 2 * x46:0 > -2 && x44:0 > 0 && x40:0 <= x33:0 && x42:0 < x36:0 && x34:0 > 0 && x45:0 > x43:0 && x44:0 < x39:0 && x39:0 > -1 && x38:0 > -1 && x45:0 > x38:0 && x37:0 < x34:0 && x37:0 > -1 && x33:0 - 2 * x46:0 = 0 && x36:0 > 0 && x45:0 > 0 f1457_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1457_0_slide88_EQ'(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) :|: x:0 >= x8:0 && x6:0 > 0 && x1:0 > -1 && x7:0 < x1:0 && x6:0 < x2:0 && x2:0 > -1 && x4:0 > -1 && x4:0 < x1:0 && x3:0 < x1:0 && x:0 - 2 * x5:0 = 0 && x3:0 > -1 f1457_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1457_0_slide88_EQ'(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) :|: x32:0 <= x20:0 && x29:0 > 0 && x31:0 < x23:0 && x21:0 > 0 && x30:0 < x27:0 && x29:0 < x26:0 && x26:0 > -1 && x25:0 > -1 && x27:0 > x25:0 && x24:0 < x21:0 && x24:0 > -1 && x20:0 - 2 * x28:0 = 0 && x23:0 > 0 && x27:0 > 0 f1457_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1457_0_slide88_EQ(x14:0, 1, x15:0, x16:0, x17:0, x16:0, x18:0) :|: x9:0 - 2 * x14:0 > -2 && x9:0 - 2 * x14:0 < 2 && x9:0 - 2 * x19:0 < 2 && x9:0 - 2 * x19:0 > -2 && x18:0 > 0 && x9:0 >= x14:0 && x10:0 > -1 && x16:0 < x10:0 && x18:0 < x11:0 && x11:0 > -1 && x13:0 > -1 && x13:0 < x10:0 && x12:0 < x10:0 && x9:0 - 2 * x19:0 = 0 && x12:0 > -1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1457_0_slide88_EQ'(INTEGER, INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER, INTEGER) f1457_0_slide88_EQ(INTEGER, VARIABLE, VARIABLE, INTEGER, VARIABLE, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1457_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1457_0_slide88_EQ(x40:0, x41:0, x35:0, x42:0, x34:0, x43:0, x44:0) :|: x33:0 - 2 * x40:0 > -2 && x33:0 - 2 * x40:0 < 2 && x33:0 - 2 * x46:0 < 2 && x33:0 - 2 * x46:0 > -2 && x44:0 > 0 && x40:0 <= x33:0 && x42:0 < x36:0 && x34:0 > 0 && x45:0 > x43:0 && x44:0 < x39:0 && x39:0 > -1 && x38:0 > -1 && x45:0 > x38:0 && x37:0 < x34:0 && x37:0 > -1 && x33:0 - 2 * x46:0 = 0 && x36:0 > 0 && x45:0 > 0 f1457_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1457_0_slide88_EQ'(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) :|: x:0 >= x8:0 && x6:0 > 0 && x1:0 > -1 && x7:0 < x1:0 && x6:0 < x2:0 && x2:0 > -1 && x4:0 > -1 && x4:0 < x1:0 && x3:0 < x1:0 && x:0 - 2 * x5:0 = 0 && x3:0 > -1 f1457_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1457_0_slide88_EQ'(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) :|: x32:0 <= x20:0 && x29:0 > 0 && x31:0 < x23:0 && x21:0 > 0 && x30:0 < x27:0 && x29:0 < x26:0 && x26:0 > -1 && x25:0 > -1 && x27:0 > x25:0 && x24:0 < x21:0 && x24:0 > -1 && x20:0 - 2 * x28:0 = 0 && x23:0 > 0 && x27:0 > 0 f1457_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1457_0_slide88_EQ(x14:0, c, x15:0, x16:0, x17:0, x16:0, x18:0) :|: c = 1 && (x9:0 - 2 * x14:0 > -2 && x9:0 - 2 * x14:0 < 2 && x9:0 - 2 * x19:0 < 2 && x9:0 - 2 * x19:0 > -2 && x18:0 > 0 && x9:0 >= x14:0 && x10:0 > -1 && x16:0 < x10:0 && x18:0 < x11:0 && x11:0 > -1 && x13:0 > -1 && x13:0 < x10:0 && x12:0 < x10:0 && x9:0 - 2 * x19:0 = 0 && x12:0 > -1) ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1457_0_slide88_EQ'(x, x1, x2, x3, x4, x5, x6)] = -1 + x3 [f1457_0_slide88_EQ(x7, x8, x9, x10, x11, x12, x13)] = x10 The following rules are decreasing: f1457_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1457_0_slide88_EQ'(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) :|: x:0 >= x8:0 && x6:0 > 0 && x1:0 > -1 && x7:0 < x1:0 && x6:0 < x2:0 && x2:0 > -1 && x4:0 > -1 && x4:0 < x1:0 && x3:0 < x1:0 && x:0 - 2 * x5:0 = 0 && x3:0 > -1 f1457_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1457_0_slide88_EQ'(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) :|: x32:0 <= x20:0 && x29:0 > 0 && x31:0 < x23:0 && x21:0 > 0 && x30:0 < x27:0 && x29:0 < x26:0 && x26:0 > -1 && x25:0 > -1 && x27:0 > x25:0 && x24:0 < x21:0 && x24:0 > -1 && x20:0 - 2 * x28:0 = 0 && x23:0 > 0 && x27:0 > 0 The following rules are bounded: f1457_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1457_0_slide88_EQ(x40:0, x41:0, x35:0, x42:0, x34:0, x43:0, x44:0) :|: x33:0 - 2 * x40:0 > -2 && x33:0 - 2 * x40:0 < 2 && x33:0 - 2 * x46:0 < 2 && x33:0 - 2 * x46:0 > -2 && x44:0 > 0 && x40:0 <= x33:0 && x42:0 < x36:0 && x34:0 > 0 && x45:0 > x43:0 && x44:0 < x39:0 && x39:0 > -1 && x38:0 > -1 && x45:0 > x38:0 && x37:0 < x34:0 && x37:0 > -1 && x33:0 - 2 * x46:0 = 0 && x36:0 > 0 && x45:0 > 0 f1457_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1457_0_slide88_EQ'(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) :|: x:0 >= x8:0 && x6:0 > 0 && x1:0 > -1 && x7:0 < x1:0 && x6:0 < x2:0 && x2:0 > -1 && x4:0 > -1 && x4:0 < x1:0 && x3:0 < x1:0 && x:0 - 2 * x5:0 = 0 && x3:0 > -1 f1457_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1457_0_slide88_EQ'(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) :|: x32:0 <= x20:0 && x29:0 > 0 && x31:0 < x23:0 && x21:0 > 0 && x30:0 < x27:0 && x29:0 < x26:0 && x26:0 > -1 && x25:0 > -1 && x27:0 > x25:0 && x24:0 < x21:0 && x24:0 > -1 && x20:0 - 2 * x28:0 = 0 && x23:0 > 0 && x27:0 > 0 f1457_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1457_0_slide88_EQ(x14:0, c, x15:0, x16:0, x17:0, x16:0, x18:0) :|: c = 1 && (x9:0 - 2 * x14:0 > -2 && x9:0 - 2 * x14:0 < 2 && x9:0 - 2 * x19:0 < 2 && x9:0 - 2 * x19:0 > -2 && x18:0 > 0 && x9:0 >= x14:0 && x10:0 > -1 && x16:0 < x10:0 && x18:0 < x11:0 && x11:0 > -1 && x13:0 > -1 && x13:0 < x10:0 && x12:0 < x10:0 && x9:0 - 2 * x19:0 = 0 && x12:0 > -1) ---------------------------------------- (32) Obligation: Rules: f1457_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1457_0_slide88_EQ(x40:0, x41:0, x35:0, x42:0, x34:0, x43:0, x44:0) :|: x33:0 - 2 * x40:0 > -2 && x33:0 - 2 * x40:0 < 2 && x33:0 - 2 * x46:0 < 2 && x33:0 - 2 * x46:0 > -2 && x44:0 > 0 && x40:0 <= x33:0 && x42:0 < x36:0 && x34:0 > 0 && x45:0 > x43:0 && x44:0 < x39:0 && x39:0 > -1 && x38:0 > -1 && x45:0 > x38:0 && x37:0 < x34:0 && x37:0 > -1 && x33:0 - 2 * x46:0 = 0 && x36:0 > 0 && x45:0 > 0 f1457_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1457_0_slide88_EQ(x14:0, c, x15:0, x16:0, x17:0, x16:0, x18:0) :|: c = 1 && (x9:0 - 2 * x14:0 > -2 && x9:0 - 2 * x14:0 < 2 && x9:0 - 2 * x19:0 < 2 && x9:0 - 2 * x19:0 > -2 && x18:0 > 0 && x9:0 >= x14:0 && x10:0 > -1 && x16:0 < x10:0 && x18:0 < x11:0 && x11:0 > -1 && x13:0 > -1 && x13:0 < x10:0 && x12:0 < x10:0 && x9:0 - 2 * x19:0 = 0 && x12:0 > -1) ---------------------------------------- (33) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1457_0_slide88_EQ'(x, x1, x2, x3, x4, x5, x6)] = 1 [f1457_0_slide88_EQ(x7, x8, x9, x10, x11, x12, x13)] = 0 The following rules are decreasing: f1457_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1457_0_slide88_EQ(x40:0, x41:0, x35:0, x42:0, x34:0, x43:0, x44:0) :|: x33:0 - 2 * x40:0 > -2 && x33:0 - 2 * x40:0 < 2 && x33:0 - 2 * x46:0 < 2 && x33:0 - 2 * x46:0 > -2 && x44:0 > 0 && x40:0 <= x33:0 && x42:0 < x36:0 && x34:0 > 0 && x45:0 > x43:0 && x44:0 < x39:0 && x39:0 > -1 && x38:0 > -1 && x45:0 > x38:0 && x37:0 < x34:0 && x37:0 > -1 && x33:0 - 2 * x46:0 = 0 && x36:0 > 0 && x45:0 > 0 f1457_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1457_0_slide88_EQ(x14:0, c, x15:0, x16:0, x17:0, x16:0, x18:0) :|: c = 1 && (x9:0 - 2 * x14:0 > -2 && x9:0 - 2 * x14:0 < 2 && x9:0 - 2 * x19:0 < 2 && x9:0 - 2 * x19:0 > -2 && x18:0 > 0 && x9:0 >= x14:0 && x10:0 > -1 && x16:0 < x10:0 && x18:0 < x11:0 && x11:0 > -1 && x13:0 > -1 && x13:0 < x10:0 && x12:0 < x10:0 && x9:0 - 2 * x19:0 = 0 && x12:0 > -1) The following rules are bounded: f1457_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1457_0_slide88_EQ(x40:0, x41:0, x35:0, x42:0, x34:0, x43:0, x44:0) :|: x33:0 - 2 * x40:0 > -2 && x33:0 - 2 * x40:0 < 2 && x33:0 - 2 * x46:0 < 2 && x33:0 - 2 * x46:0 > -2 && x44:0 > 0 && x40:0 <= x33:0 && x42:0 < x36:0 && x34:0 > 0 && x45:0 > x43:0 && x44:0 < x39:0 && x39:0 > -1 && x38:0 > -1 && x45:0 > x38:0 && x37:0 < x34:0 && x37:0 > -1 && x33:0 - 2 * x46:0 = 0 && x36:0 > 0 && x45:0 > 0 f1457_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1457_0_slide88_EQ(x14:0, c, x15:0, x16:0, x17:0, x16:0, x18:0) :|: c = 1 && (x9:0 - 2 * x14:0 > -2 && x9:0 - 2 * x14:0 < 2 && x9:0 - 2 * x19:0 < 2 && x9:0 - 2 * x19:0 > -2 && x18:0 > 0 && x9:0 >= x14:0 && x10:0 > -1 && x16:0 < x10:0 && x18:0 < x11:0 && x11:0 > -1 && x13:0 > -1 && x13:0 < x10:0 && x12:0 < x10:0 && x9:0 - 2 * x19:0 = 0 && x12:0 > -1) ---------------------------------------- (34) YES