10.57/3.73 YES 10.57/3.75 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 10.57/3.75 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.57/3.75 10.57/3.75 10.57/3.75 termination of the given Bare JBC problem could be proven: 10.57/3.75 10.57/3.75 (0) Bare JBC problem 10.57/3.75 (1) BareJBCToJBCProof [EQUIVALENT, 97 ms] 10.57/3.75 (2) JBC problem 10.57/3.75 (3) JBCToGraph [EQUIVALENT, 487 ms] 10.57/3.75 (4) JBCTerminationGraph 10.57/3.75 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 10.57/3.75 (6) AND 10.57/3.75 (7) JBCTerminationSCC 10.57/3.75 (8) SCCToIRSProof [SOUND, 100 ms] 10.57/3.75 (9) IRSwT 10.57/3.75 (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 10.57/3.75 (11) IRSwT 10.57/3.75 (12) IRSwTTerminationDigraphProof [EQUIVALENT, 42 ms] 10.57/3.75 (13) IRSwT 10.57/3.75 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.57/3.75 (15) IRSwT 10.57/3.75 (16) TempFilterProof [SOUND, 35 ms] 10.57/3.75 (17) IntTRS 10.57/3.75 (18) PolynomialOrderProcessor [EQUIVALENT, 2 ms] 10.57/3.75 (19) YES 10.57/3.75 (20) JBCTerminationSCC 10.57/3.75 (21) SCCToIRSProof [SOUND, 141 ms] 10.57/3.75 (22) IRSwT 10.57/3.75 (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 10.57/3.75 (24) IRSwT 10.57/3.75 (25) IRSwTTerminationDigraphProof [EQUIVALENT, 262 ms] 10.57/3.75 (26) IRSwT 10.57/3.75 (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.57/3.75 (28) IRSwT 10.57/3.75 (29) TempFilterProof [SOUND, 93 ms] 10.57/3.75 (30) IntTRS 10.57/3.75 (31) PolynomialOrderProcessor [EQUIVALENT, 3 ms] 10.57/3.75 (32) IntTRS 10.57/3.75 (33) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 10.57/3.75 (34) YES 10.57/3.75 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (0) 10.57/3.75 Obligation: 10.57/3.75 need to prove termination of the following program: 10.57/3.75 /** 10.57/3.75 * Parts of the below code have been adapted from 10.57/3.75 * 10.57/3.75 * http://www0.cs.ucl.ac.uk/staff/p.ohearn/Talks/SAStalk.pdf 10.57/3.75 * 10.57/3.75 * Based on the motivating example of the paper 10.57/3.75 * 10.57/3.75 * Automatic termination proofs for programs with shape-shifting heaps 10.57/3.75 * Josh Berdine, Byron Cook, Dino Distefano, and Peter W. O’Hearn 10.57/3.75 * In Proc. CAV'06, LNCS 4144, pp. 386 - 400, 2006. 10.57/3.75 */ 10.57/3.75 public class Kernel88 { 10.57/3.75 /** 10.57/3.75 * A reference to the next list element. 10.57/3.75 */ 10.57/3.75 private Kernel88 next; 10.57/3.75 10.57/3.75 public static void main(String[] args) { 10.57/3.75 int random1 = args[0].length(); 10.57/3.75 int random2 = args[1].length(); 10.57/3.75 10.57/3.75 //slide68(random1, random2); 10.57/3.75 slide88(random1, random2); 10.57/3.75 //slide93(random1, random2); 10.57/3.75 //slide95(random1, random2); 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Create a new list element. 10.57/3.75 * @param n a reference to the next element. 10.57/3.75 */ 10.57/3.75 public Kernel88(final Kernel88 n) { 10.57/3.75 this.next = n; 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Create a new cyclical list of a length x. 10.57/3.75 * @param x some length 10.57/3.75 * @return cyclical list of length max(1, x) 10.57/3.75 */ 10.57/3.75 public static Kernel88 create(int x) { 10.57/3.75 Kernel88 last, current; 10.57/3.75 last = current = new Kernel88(null); 10.57/3.75 while (--x > 0) 10.57/3.75 current = new Kernel88(current); 10.57/3.75 return last.next = current; 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Check if the last bit of x is > 0. 10.57/3.75 */ 10.57/3.75 private static boolean check(int x) { 10.57/3.75 return x % 2 > 0; 10.57/3.75 } 10.57/3.75 10.57/3.75 public static void slide68(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 c = c.next; 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 p.next = c; 10.57/3.75 //dispose(o); 10.57/3.75 o = null; 10.57/3.75 // Java's garbage collector will notice that the object 10.57/3.75 // previously referenced by o is not referenced any more 10.57/3.75 // and will release it (of course, in the next loop iteration 10.57/3.75 // this would happen anyway); obviously, this does not have 10.57/3.75 // quite the impact of a proper "dispose" operation, which 10.57/3.75 // also renders all other pointer invalid that happen to point 10.57/3.75 // to the same address 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 public static void slide88(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 //c = c.next; 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 Kernel88 e = o.next; 10.57/3.75 p.next = e; 10.57/3.75 //dispose(o); 10.57/3.75 o = null; 10.57/3.75 // Java's garbage collector will notice that the object 10.57/3.75 // previously referenced by o is not referenced any more 10.57/3.75 // and will release it 10.57/3.75 c = o; 10.57/3.75 // for a faithful translation of the original C code, 10.57/3.75 // let c point to whatever o points to -- the interesting 10.57/3.75 // aspect is that dereferencing this memory location 10.57/3.75 // henceforth is a very bad idea (in C, obviously, this would 10.57/3.75 // not necessarily lead to a clean exception at runtime) 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 c = c.next; 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Non-terminating. 10.57/3.75 */ 10.57/3.75 public static void slide93(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 //c = c.next; 10.57/3.75 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 Kernel88 e = o.next; 10.57/3.75 p.next = e; 10.57/3.75 o.next = o; 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 c = c.next; 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 public static void slide95(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 c = c.next; 10.57/3.75 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 Kernel88 e = o.next; 10.57/3.75 p.next = e; 10.57/3.75 o.next = o; 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 } 10.57/3.75 10.57/3.75 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (1) BareJBCToJBCProof (EQUIVALENT) 10.57/3.75 initialized classpath 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (2) 10.57/3.75 Obligation: 10.57/3.75 need to prove termination of the following program: 10.57/3.75 /** 10.57/3.75 * Parts of the below code have been adapted from 10.57/3.75 * 10.57/3.75 * http://www0.cs.ucl.ac.uk/staff/p.ohearn/Talks/SAStalk.pdf 10.57/3.75 * 10.57/3.75 * Based on the motivating example of the paper 10.57/3.75 * 10.57/3.75 * Automatic termination proofs for programs with shape-shifting heaps 10.57/3.75 * Josh Berdine, Byron Cook, Dino Distefano, and Peter W. O’Hearn 10.57/3.75 * In Proc. CAV'06, LNCS 4144, pp. 386 - 400, 2006. 10.57/3.75 */ 10.57/3.75 public class Kernel88 { 10.57/3.75 /** 10.57/3.75 * A reference to the next list element. 10.57/3.75 */ 10.57/3.75 private Kernel88 next; 10.57/3.75 10.57/3.75 public static void main(String[] args) { 10.57/3.75 int random1 = args[0].length(); 10.57/3.75 int random2 = args[1].length(); 10.57/3.75 10.57/3.75 //slide68(random1, random2); 10.57/3.75 slide88(random1, random2); 10.57/3.75 //slide93(random1, random2); 10.57/3.75 //slide95(random1, random2); 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Create a new list element. 10.57/3.75 * @param n a reference to the next element. 10.57/3.75 */ 10.57/3.75 public Kernel88(final Kernel88 n) { 10.57/3.75 this.next = n; 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Create a new cyclical list of a length x. 10.57/3.75 * @param x some length 10.57/3.75 * @return cyclical list of length max(1, x) 10.57/3.75 */ 10.57/3.75 public static Kernel88 create(int x) { 10.57/3.75 Kernel88 last, current; 10.57/3.75 last = current = new Kernel88(null); 10.57/3.75 while (--x > 0) 10.57/3.75 current = new Kernel88(current); 10.57/3.75 return last.next = current; 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Check if the last bit of x is > 0. 10.57/3.75 */ 10.57/3.75 private static boolean check(int x) { 10.57/3.75 return x % 2 > 0; 10.57/3.75 } 10.57/3.75 10.57/3.75 public static void slide68(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 c = c.next; 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 p.next = c; 10.57/3.75 //dispose(o); 10.57/3.75 o = null; 10.57/3.75 // Java's garbage collector will notice that the object 10.57/3.75 // previously referenced by o is not referenced any more 10.57/3.75 // and will release it (of course, in the next loop iteration 10.57/3.75 // this would happen anyway); obviously, this does not have 10.57/3.75 // quite the impact of a proper "dispose" operation, which 10.57/3.75 // also renders all other pointer invalid that happen to point 10.57/3.75 // to the same address 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 public static void slide88(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 //c = c.next; 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 Kernel88 e = o.next; 10.57/3.75 p.next = e; 10.57/3.75 //dispose(o); 10.57/3.75 o = null; 10.57/3.75 // Java's garbage collector will notice that the object 10.57/3.75 // previously referenced by o is not referenced any more 10.57/3.75 // and will release it 10.57/3.75 c = o; 10.57/3.75 // for a faithful translation of the original C code, 10.57/3.75 // let c point to whatever o points to -- the interesting 10.57/3.75 // aspect is that dereferencing this memory location 10.57/3.75 // henceforth is a very bad idea (in C, obviously, this would 10.57/3.75 // not necessarily lead to a clean exception at runtime) 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 c = c.next; 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 /** 10.57/3.75 * Non-terminating. 10.57/3.75 */ 10.57/3.75 public static void slide93(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 //c = c.next; 10.57/3.75 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 Kernel88 e = o.next; 10.57/3.75 p.next = e; 10.57/3.75 o.next = o; 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 c = c.next; 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 public static void slide95(int random1, int random2) { 10.57/3.75 Kernel88 h = create(random1); 10.57/3.75 Kernel88 p = h; 10.57/3.75 Kernel88 c = p.next; 10.57/3.75 while (c != h) { 10.57/3.75 Kernel88 o = c; 10.57/3.75 c = c.next; 10.57/3.75 10.57/3.75 if (check(random2)) { // nondet() 10.57/3.75 Kernel88 e = o.next; 10.57/3.75 p.next = e; 10.57/3.75 o.next = o; 10.57/3.75 } else { 10.57/3.75 p = o; 10.57/3.75 } 10.57/3.75 10.57/3.75 // get a fresh random bit to the end of random2 10.57/3.75 random2 = random2 / 2; 10.57/3.75 } 10.57/3.75 } 10.57/3.75 10.57/3.75 } 10.57/3.75 10.57/3.75 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (3) JBCToGraph (EQUIVALENT) 10.57/3.75 Constructed TerminationGraph. 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (4) 10.57/3.75 Obligation: 10.57/3.75 Termination Graph based on JBC Program: 10.57/3.75 Kernel88.main([Ljava/lang/String;)V: Graph of 292 nodes with 1 SCC. 10.57/3.75 10.57/3.75 10.57/3.75 10.57/3.75 Kernel88.create(I)LKernel88;: Graph of 42 nodes with 1 SCC. 10.57/3.75 10.57/3.75 10.57/3.75 10.57/3.75 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (5) TerminationGraphToSCCProof (SOUND) 10.57/3.75 Splitted TerminationGraph to 2 SCCss. 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (6) 10.57/3.75 Complex Obligation (AND) 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (7) 10.57/3.75 Obligation: 10.57/3.75 SCC of termination graph based on JBC Program. 10.57/3.75 SCC contains nodes from the following methods: Kernel88.create(I)LKernel88; 10.57/3.75 SCC calls the following helper methods: 10.57/3.75 Performed SCC analyses: 10.57/3.75 *Used field analysis yielded the following read fields: 10.57/3.75 10.57/3.75 *Marker field analysis yielded the following relations that could be markers: 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (8) SCCToIRSProof (SOUND) 10.57/3.75 Transformed FIGraph SCCs to intTRSs. Log: 10.57/3.75 Generated rules. Obtained 17 IRulesP rules: 10.57/3.75 f792_0_create_Load(EOS(STATIC_792), i74, o74[Kernel88.next]o73) -> f797_0_create_LE(EOS(STATIC_797), i74, i74, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f797_0_create_LE(EOS(STATIC_797), i76, i76, o74[Kernel88.next]o73) -> f806_0_create_LE(EOS(STATIC_806), i76, i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f806_0_create_LE(EOS(STATIC_806), i76, i76, o74[Kernel88.next]o73) -> f814_0_create_New(EOS(STATIC_814), i76, o74[Kernel88.next]o73) :|: i76 > 0 10.57/3.75 f814_0_create_New(EOS(STATIC_814), i76, o74[Kernel88.next]o73) -> f819_0_create_Duplicate(EOS(STATIC_819), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f819_0_create_Duplicate(EOS(STATIC_819), i76, o74[Kernel88.next]o73) -> f822_0_create_Load(EOS(STATIC_822), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f822_0_create_Load(EOS(STATIC_822), i76, o74[Kernel88.next]o73) -> f824_0_create_InvokeMethod(EOS(STATIC_824), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f824_0_create_InvokeMethod(EOS(STATIC_824), i76, o74[Kernel88.next]o73) -> f836_0__init__Load(EOS(STATIC_836), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f836_0__init__Load(EOS(STATIC_836), i76, o74[Kernel88.next]o73) -> f863_0__init__InvokeMethod(EOS(STATIC_863), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f863_0__init__InvokeMethod(EOS(STATIC_863), i76, o74[Kernel88.next]o73) -> f864_0__init__Load(EOS(STATIC_864), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f864_0__init__Load(EOS(STATIC_864), i76, o74[Kernel88.next]o73) -> f876_0__init__Load(EOS(STATIC_876), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f876_0__init__Load(EOS(STATIC_876), i76, o74[Kernel88.next]o73) -> f878_0__init__FieldAccess(EOS(STATIC_878), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f878_0__init__FieldAccess(EOS(STATIC_878), i76, o74[Kernel88.next]o73) -> f880_0__init__Return(EOS(STATIC_880), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f880_0__init__Return(EOS(STATIC_880), i76, o74[Kernel88.next]o73) -> f882_0_create_Store(EOS(STATIC_882), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f882_0_create_Store(EOS(STATIC_882), i76, o74[Kernel88.next]o73) -> f887_0_create_JMP(EOS(STATIC_887), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f887_0_create_JMP(EOS(STATIC_887), i76, o74[Kernel88.next]o73) -> f1023_0_create_Inc(EOS(STATIC_1023), i76, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 f1023_0_create_Inc(EOS(STATIC_1023), i76, o74[Kernel88.next]o73) -> f778_0_create_Inc(EOS(STATIC_778), i76, o86[Kernel88.next]o73) :|: TRUE 10.57/3.75 f778_0_create_Inc(EOS(STATIC_778), i54, o74[Kernel88.next]o73) -> f792_0_create_Load(EOS(STATIC_792), i54 + -1, o74[Kernel88.next]o73) :|: TRUE 10.57/3.75 Combined rules. Obtained 1 IRulesP rules: 10.57/3.75 f792_0_create_Load(EOS(STATIC_792), i74:0, o74[Kernel88.next]o73:0) -> f792_0_create_Load(EOS(STATIC_792), i74:0 - 1, o86[Kernel88.next]o73:0) :|: i74:0 > 0 10.57/3.75 Filtered constant ground arguments: 10.57/3.75 f792_0_create_Load(x1, x2, x3) -> f792_0_create_Load(x2, x3) 10.57/3.75 EOS(x1) -> EOS 10.57/3.75 Filtered unneeded arguments: 10.57/3.75 f792_0_create_Load(x1, x2) -> f792_0_create_Load(x1) 10.57/3.75 Finished conversion. Obtained 1 rules.P rules: 10.57/3.75 f792_0_create_Load(i74:0) -> f792_0_create_Load(i74:0 - 1) :|: i74:0 > 0 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (9) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f792_0_create_Load(i74:0) -> f792_0_create_Load(i74:0 - 1) :|: i74:0 > 0 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (10) IRSFormatTransformerProof (EQUIVALENT) 10.57/3.75 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (11) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f792_0_create_Load(i74:0) -> f792_0_create_Load(arith) :|: i74:0 > 0 && arith = i74:0 - 1 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (12) IRSwTTerminationDigraphProof (EQUIVALENT) 10.57/3.75 Constructed termination digraph! 10.57/3.75 Nodes: 10.57/3.75 (1) f792_0_create_Load(i74:0) -> f792_0_create_Load(arith) :|: i74:0 > 0 && arith = i74:0 - 1 10.57/3.75 10.57/3.75 Arcs: 10.57/3.75 (1) -> (1) 10.57/3.75 10.57/3.75 This digraph is fully evaluated! 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (13) 10.57/3.75 Obligation: 10.57/3.75 10.57/3.75 Termination digraph: 10.57/3.75 Nodes: 10.57/3.75 (1) f792_0_create_Load(i74:0) -> f792_0_create_Load(arith) :|: i74:0 > 0 && arith = i74:0 - 1 10.57/3.75 10.57/3.75 Arcs: 10.57/3.75 (1) -> (1) 10.57/3.75 10.57/3.75 This digraph is fully evaluated! 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (14) IntTRSCompressionProof (EQUIVALENT) 10.57/3.75 Compressed rules. 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (15) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f792_0_create_Load(i74:0:0) -> f792_0_create_Load(i74:0:0 - 1) :|: i74:0:0 > 0 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (16) TempFilterProof (SOUND) 10.57/3.75 Used the following sort dictionary for filtering: 10.57/3.75 f792_0_create_Load(INTEGER) 10.57/3.75 Replaced non-predefined constructor symbols by 0. 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (17) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f792_0_create_Load(i74:0:0) -> f792_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (18) PolynomialOrderProcessor (EQUIVALENT) 10.57/3.75 Found the following polynomial interpretation: 10.57/3.75 [f792_0_create_Load(x)] = x 10.57/3.75 10.57/3.75 The following rules are decreasing: 10.57/3.75 f792_0_create_Load(i74:0:0) -> f792_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 10.57/3.75 The following rules are bounded: 10.57/3.75 f792_0_create_Load(i74:0:0) -> f792_0_create_Load(c) :|: c = i74:0:0 - 1 && i74:0:0 > 0 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (19) 10.57/3.75 YES 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (20) 10.57/3.75 Obligation: 10.57/3.75 SCC of termination graph based on JBC Program. 10.57/3.75 SCC contains nodes from the following methods: Kernel88.main([Ljava/lang/String;)V 10.57/3.75 SCC calls the following helper methods: 10.57/3.75 Performed SCC analyses: 10.57/3.75 *Used field analysis yielded the following read fields: 10.57/3.75 *Kernel88: [next] 10.57/3.75 *Marker field analysis yielded the following relations that could be markers: 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (21) SCCToIRSProof (SOUND) 10.57/3.75 Transformed FIGraph SCCs to intTRSs. Log: 10.57/3.75 Generated rules. Obtained 39 IRulesP rules: 10.57/3.75 f1482_0_slide88_EQ(EOS(STATIC_1482), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1484_0_slide88_Load(EOS(STATIC_1484), i106, 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 10.57/3.75 f1484_0_slide88_Load(EOS(STATIC_1484), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1489_0_slide88_Store(EOS(STATIC_1489), i106, 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 10.57/3.75 f1489_0_slide88_Store(EOS(STATIC_1489), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1493_0_slide88_Load(EOS(STATIC_1493), i106, 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 10.57/3.75 f1493_0_slide88_Load(EOS(STATIC_1493), i106, 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_slide88_InvokeMethod(EOS(STATIC_1495), i106, i106, 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 10.57/3.75 f1495_0_slide88_InvokeMethod(EOS(STATIC_1495), i106, i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1498_0_check_Load(EOS(STATIC_1498), i106, i106, 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 10.57/3.75 f1498_0_check_Load(EOS(STATIC_1498), i106, i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1500_0_check_ConstantStackPush(EOS(STATIC_1500), i106, i106, 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 10.57/3.75 f1500_0_check_ConstantStackPush(EOS(STATIC_1500), i106, i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1501_0_check_IntArithmetic(EOS(STATIC_1501), i106, i106, 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 10.57/3.75 f1501_0_check_IntArithmetic(EOS(STATIC_1501), i106, i106, 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) -> f1503_0_check_LE(EOS(STATIC_1503), i106, i106 % 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 10.57/3.75 f1503_0_check_LE(EOS(STATIC_1503), i106, 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) -> f1505_0_check_LE(EOS(STATIC_1505), i106, 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 10.57/3.75 f1505_0_check_LE(EOS(STATIC_1505), i106, 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) -> f1509_0_check_ConstantStackPush(EOS(STATIC_1509), i106, 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 10.57/3.75 f1509_0_check_ConstantStackPush(EOS(STATIC_1509), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143, o144[Kernel88.next]o141) -> f1512_0_check_Return(EOS(STATIC_1512), i106, 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 10.57/3.75 f1512_0_check_Return(EOS(STATIC_1512), i106, 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) -> f1517_0_slide88_EQ(EOS(STATIC_1517), i106, 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 10.57/3.75 f1517_0_slide88_EQ(EOS(STATIC_1517), i106, 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) -> f1519_0_slide88_Load(EOS(STATIC_1519), i106, 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 10.57/3.75 f1519_0_slide88_Load(EOS(STATIC_1519), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1521_0_slide88_Store(EOS(STATIC_1521), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE 10.57/3.75 f1521_0_slide88_Store(EOS(STATIC_1521), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1523_0_slide88_Load(EOS(STATIC_1523), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE 10.57/3.75 f1523_0_slide88_Load(EOS(STATIC_1523), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1525_0_slide88_FieldAccess(EOS(STATIC_1525), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) :|: TRUE 10.57/3.75 f1525_0_slide88_FieldAccess(EOS(STATIC_1525), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o142, o144[Kernel88.next]o141, o144[Kernel88.next]o144) -> f1553_0_slide88_FieldAccess(EOS(STATIC_1553), i106, 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 10.57/3.75 f1525_0_slide88_FieldAccess(EOS(STATIC_1525), i106, o195[Kernel88.next]o195, o195[Kernel88.next]o141, o195[Kernel88.next]o195, o195[Kernel88.next]o141, o195[Kernel88.next]o195) -> f1554_0_slide88_FieldAccess(EOS(STATIC_1554), i106, o195[Kernel88.next]o141, o195[Kernel88.next]o195) :|: TRUE 10.57/3.75 f1553_0_slide88_FieldAccess(EOS(STATIC_1553), i106, o142[Kernel88.next]o202, o142[Kernel88.next]o141, o202[Kernel88.next]o141, o202[Kernel88.next]o202, o202[Kernel88.next]o142) -> f1570_0_slide88_FieldAccess(EOS(STATIC_1570), i106, 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 10.57/3.75 f1570_0_slide88_FieldAccess(EOS(STATIC_1570), i106, 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), i106, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE 10.57/3.75 f1581_0_slide88_Store(EOS(STATIC_1581), i106, 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), i106, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE 10.57/3.75 f1585_0_slide88_Load(EOS(STATIC_1585), i106, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1636_0_slide88_ConstantStackPush(EOS(STATIC_1636), i106, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE 10.57/3.75 f1636_0_slide88_ConstantStackPush(EOS(STATIC_1636), i106, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1661_0_slide88_IntArithmetic(EOS(STATIC_1661), i106, 2, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE 10.57/3.75 f1661_0_slide88_IntArithmetic(EOS(STATIC_1661), i106, matching1, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1717_0_slide88_Store(EOS(STATIC_1717), i129, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: i129 = i106 / 2 && i129 <= i106 && matching1 = 2 10.57/3.75 f1717_0_slide88_Store(EOS(STATIC_1717), i129, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1755_0_slide88_JMP(EOS(STATIC_1755), i129, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE 10.57/3.75 f1755_0_slide88_JMP(EOS(STATIC_1755), i129, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1913_0_slide88_Load(EOS(STATIC_1913), i129, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) :|: TRUE 10.57/3.75 f1913_0_slide88_Load(EOS(STATIC_1913), i129, o142[Kernel88.next]o141, o142[Kernel88.next]o202, o203[Kernel88.next]o141, o203[Kernel88.next]o142, o203[Kernel88.next]o202) -> f1425_0_slide88_Load(EOS(STATIC_1425), i129, 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 10.57/3.75 f1425_0_slide88_Load(EOS(STATIC_1425), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) -> f1427_0_slide88_Load(EOS(STATIC_1427), i106, 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 10.57/3.75 f1427_0_slide88_Load(EOS(STATIC_1427), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) -> f1454_0_slide88_EQ(EOS(STATIC_1454), i106, 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 10.57/3.75 f1454_0_slide88_EQ(EOS(STATIC_1454), i106, o142[Kernel88.next]o144, o142[Kernel88.next]o141, o144[Kernel88.next]o141, o144[Kernel88.next]o142, o142[Kernel88.next]o143, o144[Kernel88.next]o143) -> f1482_0_slide88_EQ(EOS(STATIC_1482), i106, 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 10.57/3.75 f1554_0_slide88_FieldAccess(EOS(STATIC_1554), i106, o204[Kernel88.next]o141, o204[Kernel88.next]o204) -> f1575_0_slide88_FieldAccess(EOS(STATIC_1575), i106, 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 10.57/3.75 f1575_0_slide88_FieldAccess(EOS(STATIC_1575), i106, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1582_0_slide88_Store(EOS(STATIC_1582), i106, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE 10.57/3.75 f1582_0_slide88_Store(EOS(STATIC_1582), i106, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1589_0_slide88_Load(EOS(STATIC_1589), i106, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE 10.57/3.75 f1589_0_slide88_Load(EOS(STATIC_1589), i106, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1640_0_slide88_ConstantStackPush(EOS(STATIC_1640), i106, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE 10.57/3.75 f1640_0_slide88_ConstantStackPush(EOS(STATIC_1640), i106, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1663_0_slide88_IntArithmetic(EOS(STATIC_1663), i106, 2, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE 10.57/3.75 f1663_0_slide88_IntArithmetic(EOS(STATIC_1663), i106, matching1, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1718_0_slide88_Store(EOS(STATIC_1718), i130, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: i130 = i106 / 2 && i130 <= i106 && matching1 = 2 10.57/3.75 f1718_0_slide88_Store(EOS(STATIC_1718), i130, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1757_0_slide88_JMP(EOS(STATIC_1757), i130, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE 10.57/3.75 f1757_0_slide88_JMP(EOS(STATIC_1757), i130, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1947_0_slide88_Load(EOS(STATIC_1947), i130, o205[Kernel88.next]o141, o205[Kernel88.next]o204) :|: TRUE 10.57/3.75 f1947_0_slide88_Load(EOS(STATIC_1947), i130, o205[Kernel88.next]o141, o205[Kernel88.next]o204) -> f1425_0_slide88_Load(EOS(STATIC_1425), i130, 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 10.57/3.75 Combined rules. Obtained 4 IRulesP rules: 10.57/3.75 f1482_0_slide88_EQ(EOS(STATIC_1482), i106: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) -> f1482_0_slide88_EQ'(EOS(STATIC_1482), i106: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) :|: i106: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 && i106:0 >= div1 10.57/3.75 f1482_0_slide88_EQ'(EOS(STATIC_1482), i106: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) -> f1482_0_slide88_EQ(EOS(STATIC_1482), 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) :|: i106: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 && i106:0 >= div1 && o205[Kernel88.next]o141:0 > 0 && i106:0 - 2 * div > -2 && i106:0 - 2 * div < 2 && i106:0 - 2 * div1 < 2 && i106:0 - 2 * div1 > -2 10.57/3.75 f1482_0_slide88_EQ(EOS(STATIC_1482), i106: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) -> f1482_0_slide88_EQ'(EOS(STATIC_1482), i106: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 && i106: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 && i106:0 >= div1 10.57/3.75 f1482_0_slide88_EQ'(EOS(STATIC_1482), i106: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) -> f1482_0_slide88_EQ(EOS(STATIC_1482), 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 && i106: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 && i106:0 >= div1 && o203[Kernel88.next]o141:0 > 0 && i106:0 - 2 * div > -2 && i106:0 - 2 * div < 2 && i106:0 - 2 * div1 < 2 && i106:0 - 2 * div1 > -2 10.57/3.75 Filtered constant ground arguments: 10.57/3.75 f1482_0_slide88_EQ(x1, x2, x3, x4, x5, x6, x7, x8) -> f1482_0_slide88_EQ(x2, x3, x4, x5, x6, x7, x8) 10.57/3.75 f1482_0_slide88_EQ'(x1, x2, x3, x4, x5, x6, x7, x8) -> f1482_0_slide88_EQ'(x2, x3, x4, x5, x6, x7, x8) 10.57/3.75 EOS(x1) -> EOS 10.57/3.75 Finished conversion. Obtained 4 rules.P rules: 10.57/3.75 f1482_0_slide88_EQ(i106: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) -> f1482_0_slide88_EQ'(i106: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 && i106: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 && i106:0 >= div1 && o205[Kernel88.next]o141:0 > 0 10.57/3.75 f1482_0_slide88_EQ'(i106: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) -> f1482_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 && i106: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 && i106:0 >= div1 && o205[Kernel88.next]o141:0 > 0 && i106:0 - 2 * div > -2 && i106:0 - 2 * div < 2 && i106:0 - 2 * div1 > -2 && i106:0 - 2 * div1 < 2 10.57/3.75 f1482_0_slide88_EQ(i106: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) -> f1482_0_slide88_EQ'(i106: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 && i106: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 && i106:0 >= div1 && o203[Kernel88.next]o141:0 > 0 10.57/3.75 f1482_0_slide88_EQ'(i106: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) -> f1482_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 && i106: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 && i106:0 >= div1 && o203[Kernel88.next]o141:0 > 0 && i106:0 - 2 * div > -2 && i106:0 - 2 * div < 2 && i106:0 - 2 * div1 > -2 && i106:0 - 2 * div1 < 2 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (22) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f1482_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1482_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 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (23) IRSFormatTransformerProof (EQUIVALENT) 10.57/3.75 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (24) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f1482_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1482_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 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (25) IRSwTTerminationDigraphProof (EQUIVALENT) 10.57/3.75 Constructed termination digraph! 10.57/3.75 Nodes: 10.57/3.75 (1) f1482_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1482_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 10.57/3.75 (2) f1482_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1482_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 10.57/3.75 (3) f1482_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1482_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 10.57/3.75 (4) f1482_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1482_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 10.57/3.75 10.57/3.75 Arcs: 10.57/3.75 (1) -> (2), (4) 10.57/3.75 (2) -> (3) 10.57/3.75 (3) -> (2), (4) 10.57/3.75 (4) -> (1), (3) 10.57/3.75 10.57/3.75 This digraph is fully evaluated! 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (26) 10.57/3.75 Obligation: 10.57/3.75 10.57/3.75 Termination digraph: 10.57/3.75 Nodes: 10.57/3.75 (1) f1482_0_slide88_EQ(x, x1, x2, x1, x3, x4, x2) -> f1482_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 10.57/3.75 (2) f1482_0_slide88_EQ'(x33, x34, x35, x36, x37, x38, x39) -> f1482_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 10.57/3.75 (3) f1482_0_slide88_EQ(x20, x21, x22, x23, x24, x25, x26) -> f1482_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 10.57/3.75 (4) f1482_0_slide88_EQ'(x9, x10, x11, x10, x12, x13, x11) -> f1482_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 10.57/3.75 10.57/3.75 Arcs: 10.57/3.75 (1) -> (2), (4) 10.57/3.75 (2) -> (1), (3) 10.57/3.75 (3) -> (2), (4) 10.57/3.75 (4) -> (3) 10.57/3.75 10.57/3.75 This digraph is fully evaluated! 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (27) IntTRSCompressionProof (EQUIVALENT) 10.57/3.75 Compressed rules. 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (28) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f1482_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1482_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 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (29) TempFilterProof (SOUND) 10.57/3.75 Used the following sort dictionary for filtering: 10.57/3.75 f1482_0_slide88_EQ(INTEGER, VARIABLE, VARIABLE, INTEGER, VARIABLE, INTEGER, INTEGER) 10.57/3.75 f1482_0_slide88_EQ'(INTEGER, INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER, INTEGER) 10.57/3.75 Replaced non-predefined constructor symbols by 0. 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (30) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f1482_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1482_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) 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (31) PolynomialOrderProcessor (EQUIVALENT) 10.57/3.75 Found the following polynomial interpretation: 10.57/3.75 [f1482_0_slide88_EQ(x, x1, x2, x3, x4, x5, x6)] = 1 + x6 10.57/3.75 [f1482_0_slide88_EQ'(x7, x8, x9, x10, x11, x12, x13)] = x13 10.57/3.75 10.57/3.75 The following rules are decreasing: 10.57/3.75 f1482_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1482_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 10.57/3.75 The following rules are bounded: 10.57/3.75 f1482_0_slide88_EQ(x20:0, x21:0, x22:0, x23:0, x24:0, x25:0, x26:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ(x:0, x1:0, x2:0, x1:0, x3:0, x4:0, x2:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1482_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) 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (32) 10.57/3.75 Obligation: 10.57/3.75 Rules: 10.57/3.75 f1482_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1482_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) 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (33) PolynomialOrderProcessor (EQUIVALENT) 10.57/3.75 Found the following polynomial interpretation: 10.57/3.75 [f1482_0_slide88_EQ'(x, x1, x2, x3, x4, x5, x6)] = 1 10.57/3.75 [f1482_0_slide88_EQ(x7, x8, x9, x10, x11, x12, x13)] = 0 10.57/3.75 10.57/3.75 The following rules are decreasing: 10.57/3.75 f1482_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1482_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) 10.57/3.75 The following rules are bounded: 10.57/3.75 f1482_0_slide88_EQ'(x33:0, x34:0, x35:0, x36:0, x37:0, x38:0, x39:0) -> f1482_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 10.57/3.75 f1482_0_slide88_EQ'(x9:0, x10:0, x11:0, x10:0, x12:0, x13:0, x11:0) -> f1482_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) 10.57/3.75 10.57/3.75 ---------------------------------------- 10.57/3.75 10.57/3.75 (34) 10.57/3.75 YES 10.78/3.81 EOF