(0) Obligation:
JBC Problem based on JBC Program:
Manifest-Version: 1.0
Created-By: 1.6.0_20 (Apple Inc.)
Main-Class: Test9
public class Test9 {
    public static void main(String[] args) {
	long l = args.length;
	while (l > 0) {
	    for (int i = (int) l ; i < 100; i++)
		test(i);
	    l--;
	}
    }
    private static void test(int i) {
	int j, k, l, m;
	for (j = i; j > 0; j--);
	for (k = i; k > 0; k--);
	for (l = i; l > 0; l--);
	for (m = i; m > 0; m--);
	for (j = i; j > 0; j--);
	for (k = i; k > 0; k--);
	for (l = i; l > 0; l--);
	for (m = i; m > 0; m--);
	for (j = i; j > 0; j--);
	for (k = i; k > 0; k--);
	for (l = i; l > 0; l--);
	for (m = i; m > 0; m--);
    }
}
 
(1) JBC2FIG (SOUND transformation)
Constructed FIGraph.
(2) Obligation:
FIGraph based on JBC Program:
Test9.main([Ljava/lang/String;)V: Graph of 37 nodes with 1 SCC.
Test9.test(I)V: Graph of 122 nodes with 12 SCCs.
(3) FIGtoITRSProof (SOUND transformation)
Transformed FIGraph SCCs to IDPs. Logs: 
Log for SCC 0: Generated 6 rules for P and 2 rules for R.
Combined rules. Obtained 1 rules for P and 1 rules for R.
Filtered ground terms:
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
Filtered duplicate args:
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
Combined rules. Obtained 1 rules for P and 1 rules for R.
Finished conversion. Obtained 1 rules for P and 1 rules for R. System has predefined symbols.
Log for SCC 1: Generated 6 rules for P and 13 rules for R.
Combined rules. Obtained 1 rules for P and 3 rules for R.
Filtered ground terms:
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
Filtered duplicate args:
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
Combined rules. Obtained 1 rules for P and 3 rules for R.
Finished conversion. Obtained 1 rules for P and 3 rules for R. System has predefined symbols.
Log for SCC 2: Generated 6 rules for P and 24 rules for R.
Combined rules. Obtained 1 rules for P and 5 rules for R.
Filtered ground terms:
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 5 rules for R.
Finished conversion. Obtained 1 rules for P and 5 rules for R. System has predefined symbols.
Log for SCC 3: Generated 6 rules for P and 35 rules for R.
Combined rules. Obtained 1 rules for P and 7 rules for R.
Filtered ground terms:
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 7 rules for R.
Finished conversion. Obtained 1 rules for P and 7 rules for R. System has predefined symbols.
Log for SCC 4: Generated 6 rules for P and 46 rules for R.
Combined rules. Obtained 1 rules for P and 9 rules for R.
Filtered ground terms:
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 9 rules for R.
Finished conversion. Obtained 1 rules for P and 9 rules for R. System has predefined symbols.
Log for SCC 5: Generated 6 rules for P and 57 rules for R.
Combined rules. Obtained 1 rules for P and 11 rules for R.
Filtered ground terms:
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 11 rules for R.
Finished conversion. Obtained 1 rules for P and 11 rules for R. System has predefined symbols.
Log for SCC 6: Generated 6 rules for P and 68 rules for R.
Combined rules. Obtained 1 rules for P and 13 rules for R.
Filtered ground terms:
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 13 rules for R.
Finished conversion. Obtained 1 rules for P and 13 rules for R. System has predefined symbols.
Log for SCC 7: Generated 6 rules for P and 79 rules for R.
Combined rules. Obtained 1 rules for P and 15 rules for R.
Filtered ground terms:
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 15 rules for R.
Finished conversion. Obtained 1 rules for P and 15 rules for R. System has predefined symbols.
Log for SCC 8: Generated 6 rules for P and 90 rules for R.
Combined rules. Obtained 1 rules for P and 17 rules for R.
Filtered ground terms:
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 17 rules for R.
Finished conversion. Obtained 1 rules for P and 17 rules for R. System has predefined symbols.
Log for SCC 9: Generated 6 rules for P and 101 rules for R.
Combined rules. Obtained 1 rules for P and 19 rules for R.
Filtered ground terms:
162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 19 rules for R.
Finished conversion. Obtained 1 rules for P and 19 rules for R. System has predefined symbols.
Log for SCC 10: Generated 6 rules for P and 112 rules for R.
Combined rules. Obtained 1 rules for P and 21 rules for R.
Filtered ground terms:
130_0_test_LE(x1, x2, x3, x4) → 130_0_test_LE(x2, x3, x4)
Cond_130_0_test_LE(x1, x2, x3, x4, x5) → Cond_130_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
130_0_test_LE(x1, x2, x3) → 130_0_test_LE(x1, x3)
Cond_130_0_test_LE(x1, x2, x3, x4) → Cond_130_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 21 rules for R.
Finished conversion. Obtained 1 rules for P and 21 rules for R. System has predefined symbols.
Log for SCC 11: Generated 6 rules for P and 123 rules for R.
Combined rules. Obtained 1 rules for P and 23 rules for R.
Filtered ground terms:
97_0_test_LE(x1, x2, x3, x4) → 97_0_test_LE(x2, x3, x4)
Cond_97_0_test_LE(x1, x2, x3, x4, x5) → Cond_97_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)
130_0_test_LE(x1, x2, x3, x4) → 130_0_test_LE(x2, x3, x4)
Cond_130_0_test_LE(x1, x2, x3, x4, x5) → Cond_130_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
97_0_test_LE(x1, x2, x3) → 97_0_test_LE(x1, x3)
Cond_97_0_test_LE(x1, x2, x3, x4) → Cond_97_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)
130_0_test_LE(x1, x2, x3) → 130_0_test_LE(x1, x3)
Cond_130_0_test_LE(x1, x2, x3, x4) → Cond_130_0_test_LE(x1, x2, x4)
Combined rules. Obtained 1 rules for P and 23 rules for R.
Finished conversion. Obtained 1 rules for P and 23 rules for R. System has predefined symbols.
Log for SCC 12: Generated 27 rules for P and 137 rules for R.
Combined rules. Obtained 3 rules for P and 25 rules for R.
Filtered ground terms:
48_0_main_GE(x1, x2, x3, x4, x5) → 48_0_main_GE(x2, x3, x4)
Cond_48_0_main_GE1(x1, x2, x3, x4, x5, x6) → Cond_48_0_main_GE1(x1, x3, x4, x5)
Cond_56_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_56_1_main_InvokeMethod(x1, x3, x4, x5)
471_0_test_Return(x1) → 471_0_test_Return
56_0_test_Load(x1, x2) → 56_0_test_Load(x2)
Cond_48_0_main_GE(x1, x2, x3, x4, x5, x6) → Cond_48_0_main_GE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)
130_0_test_LE(x1, x2, x3, x4) → 130_0_test_LE(x2, x3, x4)
Cond_130_0_test_LE(x1, x2, x3, x4, x5) → Cond_130_0_test_LE(x1, x3, x4, x5)
97_0_test_LE(x1, x2, x3, x4) → 97_0_test_LE(x2, x3, x4)
Cond_97_0_test_LE(x1, x2, x3, x4, x5) → Cond_97_0_test_LE(x1, x3, x4, x5)
Filtered duplicate args:
48_0_main_GE(x1, x2, x3) → 48_0_main_GE(x1, x3)
Cond_48_0_main_GE1(x1, x2, x3, x4) → Cond_48_0_main_GE1(x1, x2, x4)
Cond_56_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_56_1_main_InvokeMethod(x1, x2, x4)
56_1_main_InvokeMethod(x1, x2, x3, x4) → 56_1_main_InvokeMethod(x1, x2, x4)
Cond_48_0_main_GE(x1, x2, x3, x4) → Cond_48_0_main_GE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)
130_0_test_LE(x1, x2, x3) → 130_0_test_LE(x1, x3)
Cond_130_0_test_LE(x1, x2, x3, x4) → Cond_130_0_test_LE(x1, x2, x4)
97_0_test_LE(x1, x2, x3) → 97_0_test_LE(x1, x3)
Cond_97_0_test_LE(x1, x2, x3, x4) → Cond_97_0_test_LE(x1, x2, x4)
Filtered unneeded arguments:
Cond_48_0_main_GE1(x1, x2, x3) → Cond_48_0_main_GE1(x1, x2)
Combined rules. Obtained 3 rules for P and 25 rules for R.
Finished conversion. Obtained 3 rules for P and 25 rules for R. System has predefined symbols.
 
(4) Complex Obligation (AND)
(5) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
465_0_test_LE(
0) → 
471_0_test_ReturnThe integer pair graph contains the following rules and edges:
(0): 
465_0_TEST_LE(
x0[0]) → 
COND_465_0_TEST_LE(
x0[0] > 0, 
x0[0])
(1): 
COND_465_0_TEST_LE(
TRUE, 
x0[1]) → 
465_0_TEST_LE(
x0[1] + -1)
   (0) -> (1), if ((x0[0] > 0 →* TRUE)∧(x0[0] →* x0[1]))
   (1) -> (0), if ((x0[1] + -1 →* x0[0]))
The set Q consists of the following terms:
465_0_test_LE(
0)
 
(6) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
465_0_TEST_LE(
x0) → 
COND_465_0_TEST_LE(
>(
x0, 
0), 
x0) the following chains were created:
- We consider the chain 465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(>(x0[0], 0), x0[0]), COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(+(x0[1], -1)) which results in the following constraint:
 (1)    (>(x0[0], 0)=TRUE∧x0[0]=x0[1] ⇒ 465_0_TEST_LE(x0[0])≥NonInfC∧465_0_TEST_LE(x0[0])≥COND_465_0_TEST_LE(>(x0[0], 0), x0[0])∧(UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x0[0], 0)=TRUE ⇒ 465_0_TEST_LE(x0[0])≥NonInfC∧465_0_TEST_LE(x0[0])≥COND_465_0_TEST_LE(>(x0[0], 0), x0[0])∧(UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10 + (2)bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0) 
 
 
For Pair 
COND_465_0_TEST_LE(
TRUE, 
x0) → 
465_0_TEST_LE(
+(
x0, 
-1)) the following chains were created:
- We consider the chain COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(+(x0[1], -1)) which results in the following constraint:
 (7)    (COND_465_0_TEST_LE(TRUE, x0[1])≥NonInfC∧COND_465_0_TEST_LE(TRUE, x0[1])≥465_0_TEST_LE(+(x0[1], -1))∧(UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧[2 + (-1)bso_13] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧[2 + (-1)bso_13] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧[2 + (-1)bso_13] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_13] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 465_0_TEST_LE(x0) → COND_465_0_TEST_LE(>(x0, 0), x0)
 - (x0[0] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10 + (2)bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)
 
 
 
- COND_465_0_TEST_LE(TRUE, x0) → 465_0_TEST_LE(+(x0, -1))
 - ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_13] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(465_0_test_LE(x1)) = [-1]   
POL(0) = 0   
POL(471_0_test_Return) = [-1]   
POL(465_0_TEST_LE(x1)) = [2]x1   
POL(COND_465_0_TEST_LE(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
The following pairs are in P
>:
COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(+(x0[1], -1))
The following pairs are in P
bound:
465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(>(x0[0], 0), x0[0])
The following pairs are in P
≥:
465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(>(x0[0], 0), x0[0])
There are no usable rules.
 
(7) Complex Obligation (AND)
(8) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
465_0_test_LE(
0) → 
471_0_test_ReturnThe integer pair graph contains the following rules and edges:
(0): 
465_0_TEST_LE(
x0[0]) → 
COND_465_0_TEST_LE(
x0[0] > 0, 
x0[0])
The set Q consists of the following terms:
465_0_test_LE(
0)
 
(9) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(10) TRUE
(11) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
465_0_test_LE(
0) → 
471_0_test_ReturnThe integer pair graph contains the following rules and edges:
(1): 
COND_465_0_TEST_LE(
TRUE, 
x0[1]) → 
465_0_TEST_LE(
x0[1] + -1)
The set Q consists of the following terms:
465_0_test_LE(
0)
 
(12) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(13) TRUE
(14) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
426_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_426_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_426_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
426_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
426_0_test_LE(
x0, 
0)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(15) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
426_0_TEST_LE(
x0, 
x1) → 
COND_426_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 426_0_TEST_LE(x0[0], x1[0])≥NonInfC∧426_0_TEST_LE(x0[0], x1[0])≥COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 426_0_TEST_LE(x0[0], x1[0])≥NonInfC∧426_0_TEST_LE(x0[0], x1[0])≥COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14 + (2)bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0) 
 
 
For Pair 
COND_426_0_TEST_LE(
TRUE, 
x0, 
x1) → 
426_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_426_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_426_0_TEST_LE(TRUE, x0[1], x1[1])≥426_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_17] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_17] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_17] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_17] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 426_0_TEST_LE(x0, x1) → COND_426_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14 + (2)bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0)
 
 
 
- COND_426_0_TEST_LE(TRUE, x0, x1) → 426_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_17] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(426_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(426_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_426_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(16) Complex Obligation (AND)
(17) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
426_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_426_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
426_0_test_LE(
x0, 
0)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(18) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(19) TRUE
(20) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_426_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
426_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
426_0_test_LE(
x0, 
0)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(21) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(22) TRUE
(23) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
386_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_386_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_386_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
386_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
386_0_test_LE(
x0, 
0)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(24) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
386_0_TEST_LE(
x0, 
x1) → 
COND_386_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 386_0_TEST_LE(x0[0], x1[0])≥NonInfC∧386_0_TEST_LE(x0[0], x1[0])≥COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 386_0_TEST_LE(x0[0], x1[0])≥NonInfC∧386_0_TEST_LE(x0[0], x1[0])≥COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16 + (2)bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0) 
 
 
For Pair 
COND_386_0_TEST_LE(
TRUE, 
x0, 
x1) → 
386_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_386_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_386_0_TEST_LE(TRUE, x0[1], x1[1])≥386_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_19] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_19] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_19] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_19] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 386_0_TEST_LE(x0, x1) → COND_386_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16 + (2)bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0)
 
 
 
- COND_386_0_TEST_LE(TRUE, x0, x1) → 386_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_19] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(386_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(386_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_386_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(25) Complex Obligation (AND)
(26) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
386_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_386_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
386_0_test_LE(
x0, 
0)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(27) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(28) TRUE
(29) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_386_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
386_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
386_0_test_LE(
x0, 
0)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(30) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(31) TRUE
(32) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
354_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_354_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_354_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
354_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
354_0_test_LE(
x0, 
0)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(33) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
354_0_TEST_LE(
x0, 
x1) → 
COND_354_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 354_0_TEST_LE(x0[0], x1[0])≥NonInfC∧354_0_TEST_LE(x0[0], x1[0])≥COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 354_0_TEST_LE(x0[0], x1[0])≥NonInfC∧354_0_TEST_LE(x0[0], x1[0])≥COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17 + (2)bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0) 
 
 
For Pair 
COND_354_0_TEST_LE(
TRUE, 
x0, 
x1) → 
354_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_354_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_354_0_TEST_LE(TRUE, x0[1], x1[1])≥354_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_20] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_20] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_20] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_20] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 354_0_TEST_LE(x0, x1) → COND_354_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17 + (2)bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0)
 
 
 
- COND_354_0_TEST_LE(TRUE, x0, x1) → 354_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_20] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(354_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(354_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_354_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(34) Complex Obligation (AND)
(35) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
354_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_354_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
354_0_test_LE(
x0, 
0)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(36) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(37) TRUE
(38) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_354_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
354_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
354_0_test_LE(
x0, 
0)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(39) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(40) TRUE
(41) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
319_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_319_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_319_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
319_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
319_0_test_LE(
x0, 
0)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(42) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
319_0_TEST_LE(
x0, 
x1) → 
COND_319_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 319_0_TEST_LE(x0[0], x1[0])≥NonInfC∧319_0_TEST_LE(x0[0], x1[0])≥COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 319_0_TEST_LE(x0[0], x1[0])≥NonInfC∧319_0_TEST_LE(x0[0], x1[0])≥COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21 + (2)bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0) 
 
 
For Pair 
COND_319_0_TEST_LE(
TRUE, 
x0, 
x1) → 
319_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_319_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_319_0_TEST_LE(TRUE, x0[1], x1[1])≥319_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_24] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_24] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_24] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_24] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 319_0_TEST_LE(x0, x1) → COND_319_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21 + (2)bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)
 
 
 
- COND_319_0_TEST_LE(TRUE, x0, x1) → 319_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_24] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(319_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(319_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_319_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(43) Complex Obligation (AND)
(44) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
319_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_319_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
319_0_test_LE(
x0, 
0)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(45) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(46) TRUE
(47) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_319_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
319_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
319_0_test_LE(
x0, 
0)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(48) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(49) TRUE
(50) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
285_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_285_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_285_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
285_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
285_0_test_LE(
x0, 
0)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(51) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
285_0_TEST_LE(
x0, 
x1) → 
COND_285_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 285_0_TEST_LE(x0[0], x1[0])≥NonInfC∧285_0_TEST_LE(x0[0], x1[0])≥COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 285_0_TEST_LE(x0[0], x1[0])≥NonInfC∧285_0_TEST_LE(x0[0], x1[0])≥COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22 + (2)bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0) 
 
 
For Pair 
COND_285_0_TEST_LE(
TRUE, 
x0, 
x1) → 
285_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_285_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_285_0_TEST_LE(TRUE, x0[1], x1[1])≥285_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_25] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_25] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_25] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_25] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 285_0_TEST_LE(x0, x1) → COND_285_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22 + (2)bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0)
 
 
 
- COND_285_0_TEST_LE(TRUE, x0, x1) → 285_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_25] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(285_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(285_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_285_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(52) Complex Obligation (AND)
(53) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
285_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_285_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
285_0_test_LE(
x0, 
0)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(54) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(55) TRUE
(56) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_285_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
285_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
285_0_test_LE(
x0, 
0)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(57) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(58) TRUE
(59) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
248_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_248_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_248_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
248_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
248_0_test_LE(
x0, 
0)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(60) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
248_0_TEST_LE(
x0, 
x1) → 
COND_248_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 248_0_TEST_LE(x0[0], x1[0])≥NonInfC∧248_0_TEST_LE(x0[0], x1[0])≥COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 248_0_TEST_LE(x0[0], x1[0])≥NonInfC∧248_0_TEST_LE(x0[0], x1[0])≥COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23 + (2)bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0) 
 
 
For Pair 
COND_248_0_TEST_LE(
TRUE, 
x0, 
x1) → 
248_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_248_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_248_0_TEST_LE(TRUE, x0[1], x1[1])≥248_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_26] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_26] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_26] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_26] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 248_0_TEST_LE(x0, x1) → COND_248_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23 + (2)bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0)
 
 
 
- COND_248_0_TEST_LE(TRUE, x0, x1) → 248_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_26] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(248_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(248_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_248_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(61) Complex Obligation (AND)
(62) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
248_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_248_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
248_0_test_LE(
x0, 
0)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(63) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(64) TRUE
(65) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_248_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
248_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
248_0_test_LE(
x0, 
0)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(66) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(67) TRUE
(68) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
221_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_221_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_221_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
221_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
221_0_test_LE(
x0, 
0)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(69) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
221_0_TEST_LE(
x0, 
x1) → 
COND_221_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 221_0_TEST_LE(x0[0], x1[0])≥NonInfC∧221_0_TEST_LE(x0[0], x1[0])≥COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 221_0_TEST_LE(x0[0], x1[0])≥NonInfC∧221_0_TEST_LE(x0[0], x1[0])≥COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 
For Pair 
COND_221_0_TEST_LE(
TRUE, 
x0, 
x1) → 
221_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_221_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_221_0_TEST_LE(TRUE, x0[1], x1[1])≥221_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 221_0_TEST_LE(x0, x1) → COND_221_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)
 
 
 
- COND_221_0_TEST_LE(TRUE, x0, x1) → 221_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(221_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(221_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_221_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(70) Complex Obligation (AND)
(71) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
221_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_221_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
221_0_test_LE(
x0, 
0)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(72) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(73) TRUE
(74) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_221_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
221_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
221_0_test_LE(
x0, 
0)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(75) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(76) TRUE
(77) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
193_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_193_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_193_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
193_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
193_0_test_LE(
x0, 
0)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(78) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
193_0_TEST_LE(
x0, 
x1) → 
COND_193_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 193_0_TEST_LE(x0[0], x1[0])≥NonInfC∧193_0_TEST_LE(x0[0], x1[0])≥COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 193_0_TEST_LE(x0[0], x1[0])≥NonInfC∧193_0_TEST_LE(x0[0], x1[0])≥COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0) 
 
 
For Pair 
COND_193_0_TEST_LE(
TRUE, 
x0, 
x1) → 
193_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_193_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_193_0_TEST_LE(TRUE, x0[1], x1[1])≥193_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 193_0_TEST_LE(x0, x1) → COND_193_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)
 
 
 
- COND_193_0_TEST_LE(TRUE, x0, x1) → 193_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(193_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(193_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_193_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(79) Complex Obligation (AND)
(80) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
193_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_193_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
193_0_test_LE(
x0, 
0)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(81) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(82) TRUE
(83) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_193_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
193_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
193_0_test_LE(
x0, 
0)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(84) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(85) TRUE
(86) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
162_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_162_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_162_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
162_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
162_0_test_LE(
x0, 
0)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(87) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
162_0_TEST_LE(
x0, 
x1) → 
COND_162_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 162_0_TEST_LE(x0[0], x1[0])≥NonInfC∧162_0_TEST_LE(x0[0], x1[0])≥COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 162_0_TEST_LE(x0[0], x1[0])≥NonInfC∧162_0_TEST_LE(x0[0], x1[0])≥COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31 + (2)bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0) 
 
 
For Pair 
COND_162_0_TEST_LE(
TRUE, 
x0, 
x1) → 
162_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_162_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_162_0_TEST_LE(TRUE, x0[1], x1[1])≥162_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_34] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_34] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_34] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_34] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 162_0_TEST_LE(x0, x1) → COND_162_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31 + (2)bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0)
 
 
 
- COND_162_0_TEST_LE(TRUE, x0, x1) → 162_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_34] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(162_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(193_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(162_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_162_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(88) Complex Obligation (AND)
(89) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
162_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_162_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
162_0_test_LE(
x0, 
0)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(90) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(91) TRUE
(92) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_162_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
162_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
162_0_test_LE(
x0, 
0)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(93) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(94) TRUE
(95) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
130_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_130_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_130_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
130_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
130_0_test_LE(
x0, 
0)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(96) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
130_0_TEST_LE(
x0, 
x1) → 
COND_130_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 130_0_TEST_LE(x0[0], x1[0])≥NonInfC∧130_0_TEST_LE(x0[0], x1[0])≥COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 130_0_TEST_LE(x0[0], x1[0])≥NonInfC∧130_0_TEST_LE(x0[0], x1[0])≥COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32 + (2)bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0) 
 
 
For Pair 
COND_130_0_TEST_LE(
TRUE, 
x0, 
x1) → 
130_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_130_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_130_0_TEST_LE(TRUE, x0[1], x1[1])≥130_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_35] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_35] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_35] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_35] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 130_0_TEST_LE(x0, x1) → COND_130_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32 + (2)bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)
 
 
 
- COND_130_0_TEST_LE(TRUE, x0, x1) → 130_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_35] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(130_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(162_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(193_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(130_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_130_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(97) Complex Obligation (AND)
(98) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
130_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_130_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
130_0_test_LE(
x0, 
0)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(99) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(100) TRUE
(101) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_130_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
130_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
130_0_test_LE(
x0, 
0)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(102) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(103) TRUE
(104) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
97_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_97_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
(1): 
COND_97_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
97_0_TEST_LE(
x0[1], 
x1[1] + -1)
   (0) -> (1), if ((x1[0] > 0 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (0), if ((x0[1] →* x0[0])∧(x1[1] + -1 →* x1[0]))
The set Q consists of the following terms:
97_0_test_LE(
x0, 
0)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(105) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
97_0_TEST_LE(
x0, 
x1) → 
COND_97_0_TEST_LE(
>(
x1, 
0), 
x0, 
x1) the following chains were created:
- We consider the chain 97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (1)    (>(x1[0], 0)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 97_0_TEST_LE(x0[0], x1[0])≥NonInfC∧97_0_TEST_LE(x0[0], x1[0])≥COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (>(x1[0], 0)=TRUE ⇒ 97_0_TEST_LE(x0[0], x1[0])≥NonInfC∧97_0_TEST_LE(x0[0], x1[0])≥COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34 + (2)bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0) 
 
 
For Pair 
COND_97_0_TEST_LE(
TRUE, 
x0, 
x1) → 
97_0_TEST_LE(
x0, 
+(
x1, 
-1)) the following chains were created:
- We consider the chain COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:
 (7)    (COND_97_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_97_0_TEST_LE(TRUE, x0[1], x1[1])≥97_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_37] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_37] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_37] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (11)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_37] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 97_0_TEST_LE(x0, x1) → COND_97_0_TEST_LE(>(x1, 0), x0, x1)
 - (x1[0] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34 + (2)bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0)
 
 
 
- COND_97_0_TEST_LE(TRUE, x0, x1) → 97_0_TEST_LE(x0, +(x1, -1))
 - ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_37] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(97_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(130_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_130_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(162_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(193_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(97_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_97_0_TEST_LE(x1, x2, x3)) = [2]x3   
The following pairs are in P
>:
COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], +(x1[1], -1))
The following pairs are in P
bound:
97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
The following pairs are in P
≥:
97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])
There are no usable rules.
 
(106) Complex Obligation (AND)
(107) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
97_0_TEST_LE(
x0[0], 
x1[0]) → 
COND_97_0_TEST_LE(
x1[0] > 0, 
x0[0], 
x1[0])
The set Q consists of the following terms:
97_0_test_LE(
x0, 
0)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(108) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(109) TRUE
(110) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(1): 
COND_97_0_TEST_LE(
TRUE, 
x0[1], 
x1[1]) → 
97_0_TEST_LE(
x0[1], 
x1[1] + -1)
The set Q consists of the following terms:
97_0_test_LE(
x0, 
0)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(111) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(112) TRUE
(113) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer, Boolean
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
x1[0] < 100, 
x0[0], 
x1[0])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(3): 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
x1[3] + 1)
(4): 
48_0_MAIN_GE(
x0[4], 
x1[4]) → 
COND_48_0_MAIN_GE1(
x1[4] >= 100 && x0[4] > 0 && 1 > 0 && 0 < x0[4] - 1, 
x0[4], 
x1[4])
(5): 
COND_48_0_MAIN_GE1(
TRUE, 
x0[5], 
x1[5]) → 
48_0_MAIN_GE(
x0[5] - 1, 
x0[5] - 1)
   (0) -> (1), if ((x1[0] < 100 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
   (2) -> (3), if ((x1[2] > 0 →* TRUE)∧(x0[2] →* x0[3])∧(x1[2] →* x1[3]))
   (3) -> (0), if ((x0[3] →* x0[0])∧(x1[3] + 1 →* x1[0]))
   (3) -> (4), if ((x0[3] →* x0[4])∧(x1[3] + 1 →* x1[4]))
   (4) -> (5), if ((x1[4] >= 100 && x0[4] > 0 && 1 > 0 && 0 < x0[4] - 1 →* TRUE)∧(x0[4] →* x0[5])∧(x1[4] →* x1[5]))
   (5) -> (0), if ((x0[5] - 1 →* x0[0])∧(x0[5] - 1 →* x1[0]))
   (5) -> (4), if ((x0[5] - 1 →* x0[4])∧(x0[5] - 1 →* x1[4]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(114) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
48_0_MAIN_GE(
x0, 
x1) → 
COND_48_0_MAIN_GE(
<(
x1, 
100), 
x0, 
x1) the following chains were created:
- We consider the chain 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]), COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:
 (1)    (<(x1[0], 100)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (1) using rule (IV) which results in the following new constraint:
 (2)    (<(x1[0], 100)=TRUE ⇒ 48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (3)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] ≥ 0) 
 
 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (4)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] ≥ 0) 
 
 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (5)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] ≥ 0) 
 
 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (6)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0) 
 
 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraints:
 (7)    ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0) 
 (8)    ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0) 
 
 
For Pair 
COND_48_0_MAIN_GE(
TRUE, 
x0, 
x1) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1), 
x0, 
x1) the following chains were created:
- We consider the chain COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:
 (9)    (COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥NonInfC∧COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])∧(UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)) 
 
 We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (10)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_57] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (11)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_57] ≥ 0) 
 
 We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (12)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_57] ≥ 0) 
 
 We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (13)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0) 
 
 
For Pair 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0, 
x1) → 
COND_56_1_MAIN_INVOKEMETHOD(
>(
x1, 
0), 
471_0_test_Return, 
x0, 
x1) the following chains were created:
- We consider the chain 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]), COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:
 (14)    (>(x1[2], 0)=TRUE∧x0[2]=x0[3]∧x1[2]=x1[3] ⇒ 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)) 
 
 We simplified constraint (14) using rule (IV) which results in the following new constraint:
 (15)    (>(x1[2], 0)=TRUE ⇒ 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)) 
 
 We simplified constraint (15) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (16)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [bni_58]x0[2] ≥ 0∧[(-1)bso_59] ≥ 0) 
 
 We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (17)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [bni_58]x0[2] ≥ 0∧[(-1)bso_59] ≥ 0) 
 
 We simplified constraint (17) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (18)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [bni_58]x0[2] ≥ 0∧[(-1)bso_59] ≥ 0) 
 
 We simplified constraint (18) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (19)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧[(-1)bso_59] ≥ 0) 
 
 We simplified constraint (19) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (20)    (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧[(-1)bso_59] ≥ 0) 
 
 
For Pair 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0, 
x1) → 
48_0_MAIN_GE(
x0, 
+(
x1, 
1)) the following chains were created:
- We consider the chain COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:
 (21)    (COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥NonInfC∧COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥48_0_MAIN_GE(x0[3], +(x1[3], 1))∧(UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)) 
 
 We simplified constraint (21) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (22)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_61] ≥ 0) 
 
 We simplified constraint (22) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (23)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_61] ≥ 0) 
 
 We simplified constraint (23) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (24)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_61] ≥ 0) 
 
 We simplified constraint (24) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (25)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0) 
 
 
For Pair 
48_0_MAIN_GE(
x0, 
x1) → 
COND_48_0_MAIN_GE1(
&&(
&&(
&&(
>=(
x1, 
100), 
>(
x0, 
0)), 
>(
1, 
0)), 
<(
0, 
-(
x0, 
1))), 
x0, 
x1) the following chains were created:
- We consider the chain 48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4]), COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1)) which results in the following constraint:
 (26)    (&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1)))=TRUE∧x0[4]=x0[5]∧x1[4]=x1[5] ⇒ 48_0_MAIN_GE(x0[4], x1[4])≥NonInfC∧48_0_MAIN_GE(x0[4], x1[4])≥COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])∧(UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)) 
 
 We simplified constraint (26) using rules (IV), (IDP_CONSTANT_FOLD), (DELETE_TRIVIAL_REDUCESTO), (IDP_BOOLEAN) which results in the following new constraint:
 (27)    (<(0, -(x0[4], 1))=TRUE∧>=(x1[4], 100)=TRUE∧>(x0[4], 0)=TRUE ⇒ 48_0_MAIN_GE(x0[4], x1[4])≥NonInfC∧48_0_MAIN_GE(x0[4], x1[4])≥COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])∧(UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)) 
 
 We simplified constraint (27) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (28)    (x0[4] + [-2] ≥ 0∧x1[4] + [-100] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0) 
 
 We simplified constraint (28) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (29)    (x0[4] + [-2] ≥ 0∧x1[4] + [-100] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0) 
 
 We simplified constraint (29) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (30)    (x0[4] + [-2] ≥ 0∧x1[4] + [-100] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0) 
 
 We simplified constraint (30) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (31)    (x0[4] ≥ 0∧x1[4] + [-100] ≥ 0∧[1] + x0[4] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0) 
 
 We simplified constraint (31) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (32)    (x0[4] ≥ 0∧x1[4] ≥ 0∧[1] + x0[4] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0) 
 
 
For Pair 
COND_48_0_MAIN_GE1(
TRUE, 
x0, 
x1) → 
48_0_MAIN_GE(
-(
x0, 
1), 
-(
x0, 
1)) the following chains were created:
- We consider the chain COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1)) which results in the following constraint:
 (33)    (COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5])≥NonInfC∧COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5])≥48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))∧(UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)) 
 
 We simplified constraint (33) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (34)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧[1 + (-1)bso_65] ≥ 0) 
 
 We simplified constraint (34) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (35)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧[1 + (-1)bso_65] ≥ 0) 
 
 We simplified constraint (35) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (36)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧[1 + (-1)bso_65] ≥ 0) 
 
 We simplified constraint (36) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (37)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧0 = 0∧0 = 0∧[1 + (-1)bso_65] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- 48_0_MAIN_GE(x0, x1) → COND_48_0_MAIN_GE(<(x1, 100), x0, x1)
 - ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)
 
- ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)
 
 
 
- COND_48_0_MAIN_GE(TRUE, x0, x1) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1), x0, x1)
 - ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)
 
 
 
- 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0, x1) → COND_56_1_MAIN_INVOKEMETHOD(>(x1, 0), 471_0_test_Return, x0, x1)
 - (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧[(-1)bso_59] ≥ 0)
 
 
 
- COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0, x1) → 48_0_MAIN_GE(x0, +(x1, 1))
 - ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)
 
 
 
- 48_0_MAIN_GE(x0, x1) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1, 100), >(x0, 0)), >(1, 0)), <(0, -(x0, 1))), x0, x1)
 - (x0[4] ≥ 0∧x1[4] ≥ 0∧[1] + x0[4] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0)
 
 
 
- COND_48_0_MAIN_GE1(TRUE, x0, x1) → 48_0_MAIN_GE(-(x0, 1), -(x0, 1))
 - ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧0 = 0∧0 = 0∧[1 + (-1)bso_65] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(56_0_test_Load(x1)) = x1   
POL(97_0_test_LE(x1, x2)) = [-1] + [2]x2 + [-1]x1   
POL(Cond_97_0_test_LE(x1, x2, x3)) = [2] + [2]x3 + x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(130_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_130_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(162_0_test_LE(x1, x2)) = [1] + [-1]x2 + x1   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(193_0_test_LE(x1, x2)) = [-1]x2 + [2]x1   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [1] + [-1]x3 + x2   
POL(248_0_test_LE(x1, x2)) = [1] + [-1]x2 + [-1]x1   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(319_0_test_LE(x1, x2)) = [2] + [-1]x2 + [2]x1   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2 + x1   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1]x3 + x2   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = 0   
POL(Cond_465_0_test_LE(x1, x2)) = [2] + [2]x2   
POL(48_0_MAIN_GE(x1, x2)) = [-1] + x1   
POL(COND_48_0_MAIN_GE(x1, x2, x3)) = [-1] + x2   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(56_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + x2   
POL(COND_56_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + x3   
POL(1) = [1]   
POL(COND_48_0_MAIN_GE1(x1, x2, x3)) = [-1] + x2   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   
The following pairs are in P
>:
COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))
The following pairs are in P
bound:
48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])
The following pairs are in P
≥:
48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])
At least the following rules have been oriented under context sensitive arithmetic replacement:
56_0_test_Load(x0)1 → 97_0_test_LE(x0, x0)1
130_0_test_LE(x0, x0)1 → 97_0_test_LE(x0, 0)1
162_0_test_LE(x0, x0)1 → 130_0_test_LE(x0, 0)1
162_0_test_LE(x0, x1)1 → Cond_162_0_test_LE(>(x1, 0), x0, x1)1
Cond_354_0_test_LE(>(x1, 0), x0, x1)1 → 354_0_test_LE(x0, x1)1
471_0_test_Return1 → 465_0_test_LE(0)1
 
(115) Complex Obligation (AND)
(116) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer, Boolean
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
x1[0] < 100, 
x0[0], 
x1[0])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(3): 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
x1[3] + 1)
(4): 
48_0_MAIN_GE(
x0[4], 
x1[4]) → 
COND_48_0_MAIN_GE1(
x1[4] >= 100 && x0[4] > 0 && 1 > 0 && 0 < x0[4] - 1, 
x0[4], 
x1[4])
   (3) -> (0), if ((x0[3] →* x0[0])∧(x1[3] + 1 →* x1[0]))
   (0) -> (1), if ((x1[0] < 100 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
   (2) -> (3), if ((x1[2] > 0 →* TRUE)∧(x0[2] →* x0[3])∧(x1[2] →* x1[3]))
   (3) -> (4), if ((x0[3] →* x0[4])∧(x1[3] + 1 →* x1[4]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(117) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.
(118) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(3): 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
x1[3] + 1)
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
(0): 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
x1[0] < 100, 
x0[0], 
x1[0])
   (3) -> (0), if ((x0[3] →* x0[0])∧(x1[3] + 1 →* x1[0]))
   (0) -> (1), if ((x1[0] < 100 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
   (2) -> (3), if ((x1[2] > 0 →* TRUE)∧(x0[2] →* x0[3])∧(x1[2] →* x1[3]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(119) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
+(
x1[3], 
1)) the following chains were created:
- We consider the chain COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:
 (1)    (COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥NonInfC∧COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥48_0_MAIN_GE(x0[3], +(x1[3], 1))∧(UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)) 
 
 We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (2)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[1 + (-1)bso_36] ≥ 0) 
 
 We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (3)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[1 + (-1)bso_36] ≥ 0) 
 
 We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (4)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[1 + (-1)bso_36] ≥ 0) 
 
 We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (5)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[1 + (-1)bso_36] ≥ 0) 
 
 
For Pair 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
>(
x1[2], 
0), 
471_0_test_Return, 
x0[2], 
x1[2]) the following chains were created:
- We consider the chain 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]), COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:
 (6)    (>(x1[2], 0)=TRUE∧x0[2]=x0[3]∧x1[2]=x1[3] ⇒ 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)) 
 
 We simplified constraint (6) using rule (IV) which results in the following new constraint:
 (7)    (>(x1[2], 0)=TRUE ⇒ 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (11)    (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0) 
 
 
For Pair 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1]) the following chains were created:
- We consider the chain COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:
 (12)    (COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥NonInfC∧COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])∧(UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)) 
 
 We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (13)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_40] ≥ 0) 
 
 We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (14)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_40] ≥ 0) 
 
 We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (15)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_40] ≥ 0) 
 
 We simplified constraint (15) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (16)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_40] ≥ 0) 
 
 
For Pair 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
<(
x1[0], 
100), 
x0[0], 
x1[0]) the following chains were created:
- We consider the chain 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]), COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:
 (17)    (<(x1[0], 100)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (17) using rule (IV) which results in the following new constraint:
 (18)    (<(x1[0], 100)=TRUE ⇒ 48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (18) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (19)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0) 
 
 We simplified constraint (19) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (20)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0) 
 
 We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (21)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0) 
 
 We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:
 (22)    ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0) 
 (23)    ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
 - ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[1 + (-1)bso_36] ≥ 0)
 
 
 
- 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
 - (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)
 
 
 
- COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
 - ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_40] ≥ 0)
 
 
 
- 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
 - ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)
 
- ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(56_0_test_Load(x1)) = [-1] + [-1]x1   
POL(97_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_97_0_test_LE(x1, x2, x3)) = [-1]x3 + [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(130_0_test_LE(x1, x2)) = [-1]x1   
POL(Cond_130_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(162_0_test_LE(x1, x2)) = [-1] + [-1]x1   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [2] + [-1]x2   
POL(193_0_test_LE(x1, x2)) = [-1] + x1   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(221_0_test_LE(x1, x2)) = [1] + [2]x2 + x1   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [2]x3 + [-1]x2   
POL(248_0_test_LE(x1, x2)) = [-1] + [2]x1   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(285_0_test_LE(x1, x2)) = [1] + [-1]x1   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(319_0_test_LE(x1, x2)) = 0   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [1] + [-1]x2   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x1   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1]x2   
POL(386_0_test_LE(x1, x2)) = [2] + x1   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(426_0_test_LE(x1, x2)) = [1] + [-1]x1   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(465_0_test_LE(x1)) = 0   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1]x2   
POL(COND_56_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(48_0_MAIN_GE(x1, x2)) = [-1] + [-1]x2   
POL(1) = [1]   
POL(56_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x3   
POL(COND_48_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x3   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
The following pairs are in P
>:
COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
The following pairs are in P
bound:
48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
The following pairs are in P
≥:
56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
At least the following rules have been oriented under context sensitive arithmetic replacement:
97_0_test_LE(x0, x0)1 → 56_0_test_Load(x0)1
130_0_test_LE(x0, 0)1 → 162_0_test_LE(x0, x0)1
130_0_test_LE(x0, +(x1, -1))1 → Cond_130_0_test_LE(TRUE, x0, x1)1
285_0_test_LE(x0, x1)1 → Cond_285_0_test_LE(>(x1, 0), x0, x1)1
Cond_354_0_test_LE(>(x1, 0), x0, x1)1 → 354_0_test_LE(x0, x1)1
426_0_test_LE(x0, +(x1, -1))1 → Cond_426_0_test_LE(TRUE, x0, x1)1
465_0_test_LE(0)1 → 471_0_test_Return1
 
(120) Complex Obligation (AND)
(121) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
(0): 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
x1[0] < 100, 
x0[0], 
x1[0])
   (0) -> (1), if ((x1[0] < 100 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(122) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.
(123) TRUE
(124) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(3): 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
x1[3] + 1)
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
   (2) -> (3), if ((x1[2] > 0 →* TRUE)∧(x0[2] →* x0[3])∧(x1[2] →* x1[3]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(125) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.
(126) TRUE
(127) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(0): 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
x1[0] < 100, 
x0[0], 
x1[0])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(3): 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
x1[3] + 1)
(5): 
COND_48_0_MAIN_GE1(
TRUE, 
x0[5], 
x1[5]) → 
48_0_MAIN_GE(
x0[5] - 1, 
x0[5] - 1)
   (3) -> (0), if ((x0[3] →* x0[0])∧(x1[3] + 1 →* x1[0]))
   (5) -> (0), if ((x0[5] - 1 →* x0[0])∧(x0[5] - 1 →* x1[0]))
   (0) -> (1), if ((x1[0] < 100 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
   (2) -> (3), if ((x1[2] > 0 →* TRUE)∧(x0[2] →* x0[3])∧(x1[2] →* x1[3]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(128) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.
(129) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(3): 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
x1[3] + 1)
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
(0): 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
x1[0] < 100, 
x0[0], 
x1[0])
   (3) -> (0), if ((x0[3] →* x0[0])∧(x1[3] + 1 →* x1[0]))
   (0) -> (1), if ((x1[0] < 100 →* TRUE)∧(x0[0] →* x0[1])∧(x1[0] →* x1[1]))
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
   (2) -> (3), if ((x1[2] > 0 →* TRUE)∧(x0[2] →* x0[3])∧(x1[2] →* x1[3]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(130) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that 
final constraints are written in 
bold face.
For Pair 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
+(
x1[3], 
1)) the following chains were created:
- We consider the chain COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:
 (1)    (COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥NonInfC∧COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥48_0_MAIN_GE(x0[3], +(x1[3], 1))∧(UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)) 
 
 We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (2)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_37] ≥ 0) 
 
 We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (3)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_37] ≥ 0) 
 
 We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (4)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_37] ≥ 0) 
 
 We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (5)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[(-1)bso_37] ≥ 0) 
 
 
For Pair 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
>(
x1[2], 
0), 
471_0_test_Return, 
x0[2], 
x1[2]) the following chains were created:
- We consider the chain 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]), COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:
 (6)    (>(x1[2], 0)=TRUE∧x0[2]=x0[3]∧x1[2]=x1[3] ⇒ 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)) 
 
 We simplified constraint (6) using rule (IV) which results in the following new constraint:
 (7)    (>(x1[2], 0)=TRUE ⇒ 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)) 
 
 We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (8)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0) 
 
 We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (9)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0) 
 
 We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (10)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0) 
 
 We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
 (11)    (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0) 
 
 
For Pair 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1]) the following chains were created:
- We consider the chain COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:
 (12)    (COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥NonInfC∧COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])∧(UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)) 
 
 We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (13)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_41] ≥ 0) 
 
 We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (14)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_41] ≥ 0) 
 
 We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (15)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_41] ≥ 0) 
 
 We simplified constraint (15) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
 (16)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_41] ≥ 0) 
 
 
For Pair 
48_0_MAIN_GE(
x0[0], 
x1[0]) → 
COND_48_0_MAIN_GE(
<(
x1[0], 
100), 
x0[0], 
x1[0]) the following chains were created:
- We consider the chain 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]), COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:
 (17)    (<(x1[0], 100)=TRUE∧x0[0]=x0[1]∧x1[0]=x1[1] ⇒ 48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (17) using rule (IV) which results in the following new constraint:
 (18)    (<(x1[0], 100)=TRUE ⇒ 48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)) 
 
 We simplified constraint (18) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
 (19)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0) 
 
 We simplified constraint (19) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
 (20)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0) 
 
 We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
 (21)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0) 
 
 We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:
 (22)    ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0) 
 (23)    ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0) 
 
 
To summarize, we get the following constraints P
≥ for the following pairs.
- COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
 - ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[(-1)bso_37] ≥ 0)
 
 
 
- 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
 - (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0)
 
 
 
- COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
 - ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_41] ≥ 0)
 
 
 
- 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
 - ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)
 
- ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)
 
 
 
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by  "t > s" respective "t ≥ 
c". Here 
c stands for the fresh constant used for P
bound. 
Using the following integer polynomial ordering the  resulting constraints can be solved 
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0   
POL(FALSE) = 0   
POL(56_0_test_Load(x1)) = 0   
POL(97_0_test_LE(x1, x2)) = 0   
POL(Cond_97_0_test_LE(x1, x2, x3)) = 0   
POL(>(x1, x2)) = 0   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(130_0_test_LE(x1, x2)) = 0   
POL(Cond_130_0_test_LE(x1, x2, x3)) = 0   
POL(162_0_test_LE(x1, x2)) = 0   
POL(Cond_162_0_test_LE(x1, x2, x3)) = 0   
POL(193_0_test_LE(x1, x2)) = 0   
POL(Cond_193_0_test_LE(x1, x2, x3)) = 0   
POL(221_0_test_LE(x1, x2)) = 0   
POL(Cond_221_0_test_LE(x1, x2, x3)) = 0   
POL(248_0_test_LE(x1, x2)) = 0   
POL(Cond_248_0_test_LE(x1, x2, x3)) = 0   
POL(285_0_test_LE(x1, x2)) = 0   
POL(Cond_285_0_test_LE(x1, x2, x3)) = 0   
POL(319_0_test_LE(x1, x2)) = 0   
POL(Cond_319_0_test_LE(x1, x2, x3)) = 0   
POL(354_0_test_LE(x1, x2)) = 0   
POL(Cond_354_0_test_LE(x1, x2, x3)) = 0   
POL(386_0_test_LE(x1, x2)) = 0   
POL(Cond_386_0_test_LE(x1, x2, x3)) = 0   
POL(426_0_test_LE(x1, x2)) = 0   
POL(Cond_426_0_test_LE(x1, x2, x3)) = 0   
POL(465_0_test_LE(x1)) = 0   
POL(471_0_test_Return) = 0   
POL(Cond_465_0_test_LE(x1, x2)) = 0   
POL(COND_56_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(48_0_MAIN_GE(x1, x2)) = [-1]x2   
POL(1) = [1]   
POL(56_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3   
POL(COND_48_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x3   
POL(<(x1, x2)) = 0   
POL(100) = [100]   
The following pairs are in P
>:
48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
The following pairs are in P
bound:
48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
The following pairs are in P
≥:
COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
At least the following rules have been oriented under context sensitive arithmetic replacement:
56_0_test_Load(x0)1 ↔ 97_0_test_LE(x0, x0)1
97_0_test_LE(x0, 0)1 ↔ 130_0_test_LE(x0, x0)1
97_0_test_LE(x0, +(x1, -1))1 → Cond_97_0_test_LE(TRUE, x0, x1)1
97_0_test_LE(x0, x1)1 ↔ Cond_97_0_test_LE(>(x1, 0), x0, x1)1
130_0_test_LE(x0, 0)1 ↔ 162_0_test_LE(x0, x0)1
130_0_test_LE(x0, +(x1, -1))1 → Cond_130_0_test_LE(TRUE, x0, x1)1
Cond_130_0_test_LE(>(x1, 0), x0, x1)1 → 130_0_test_LE(x0, x1)1
193_0_test_LE(x0, x0)1 → 162_0_test_LE(x0, 0)1
162_0_test_LE(x0, +(x1, -1))1 → Cond_162_0_test_LE(TRUE, x0, x1)1
162_0_test_LE(x0, x1)1 ↔ Cond_162_0_test_LE(>(x1, 0), x0, x1)1
221_0_test_LE(x0, x0)1 → 193_0_test_LE(x0, 0)1
193_0_test_LE(x0, +(x1, -1))1 → Cond_193_0_test_LE(TRUE, x0, x1)1
193_0_test_LE(x0, x1)1 ↔ Cond_193_0_test_LE(>(x1, 0), x0, x1)1
248_0_test_LE(x0, x0)1 → 221_0_test_LE(x0, 0)1
221_0_test_LE(x0, +(x1, -1))1 → Cond_221_0_test_LE(TRUE, x0, x1)1
221_0_test_LE(x0, x1)1 ↔ Cond_221_0_test_LE(>(x1, 0), x0, x1)1
248_0_test_LE(x0, 0)1 ↔ 285_0_test_LE(x0, x0)1
248_0_test_LE(x0, +(x1, -1))1 → Cond_248_0_test_LE(TRUE, x0, x1)1
Cond_248_0_test_LE(>(x1, 0), x0, x1)1 → 248_0_test_LE(x0, x1)1
285_0_test_LE(x0, 0)1 ↔ 319_0_test_LE(x0, x0)1
Cond_285_0_test_LE(TRUE, x0, x1)1 ↔ 285_0_test_LE(x0, +(x1, -1))1
285_0_test_LE(x0, x1)1 ↔ Cond_285_0_test_LE(>(x1, 0), x0, x1)1
354_0_test_LE(x0, x0)1 → 319_0_test_LE(x0, 0)1
Cond_319_0_test_LE(TRUE, x0, x1)1 ↔ 319_0_test_LE(x0, +(x1, -1))1
Cond_319_0_test_LE(>(x1, 0), x0, x1)1 → 319_0_test_LE(x0, x1)1
386_0_test_LE(x0, x0)1 → 354_0_test_LE(x0, 0)1
Cond_354_0_test_LE(TRUE, x0, x1)1 ↔ 354_0_test_LE(x0, +(x1, -1))1
354_0_test_LE(x0, x1)1 ↔ Cond_354_0_test_LE(>(x1, 0), x0, x1)1
426_0_test_LE(x0, x0)1 → 386_0_test_LE(x0, 0)1
Cond_386_0_test_LE(TRUE, x0, x1)1 ↔ 386_0_test_LE(x0, +(x1, -1))1
386_0_test_LE(x0, x1)1 ↔ Cond_386_0_test_LE(>(x1, 0), x0, x1)1
465_0_test_LE(x0)1 → 426_0_test_LE(x0, 0)1
426_0_test_LE(x0, +(x1, -1))1 → Cond_426_0_test_LE(TRUE, x0, x1)1
Cond_426_0_test_LE(>(x1, 0), x0, x1)1 → 426_0_test_LE(x0, x1)1
465_0_test_LE(0)1 ↔ 471_0_test_Return1
465_0_test_LE(x0)1 ↔ Cond_465_0_test_LE(>(x0, 0), x0)1
Cond_465_0_test_LE(TRUE, x0)1 ↔ 465_0_test_LE(+(x0, -1))1
 
(131) Obligation:
IDP problem:
The following function symbols are pre-defined:
| != | ~ | Neq: (Integer, Integer) -> Boolean | 
| * | ~ | Mul: (Integer, Integer) -> Integer | 
| >= | ~ | Ge: (Integer, Integer) -> Boolean | 
| -1 | ~ | UnaryMinus: (Integer) -> Integer | 
| | | ~ | Bwor: (Integer, Integer) -> Integer | 
| / | ~ | Div: (Integer, Integer) -> Integer | 
| = | ~ | Eq: (Integer, Integer) -> Boolean | 
|  | ~ | Bwxor: (Integer, Integer) -> Integer | 
| || | ~ | Lor: (Boolean, Boolean) -> Boolean | 
| ! | ~ | Lnot: (Boolean) -> Boolean | 
| < | ~ | Lt: (Integer, Integer) -> Boolean | 
| - | ~ | Sub: (Integer, Integer) -> Integer | 
| <= | ~ | Le: (Integer, Integer) -> Boolean | 
| > | ~ | Gt: (Integer, Integer) -> Boolean | 
| ~ | ~ | Bwnot: (Integer) -> Integer | 
| % | ~ | Mod: (Integer, Integer) -> Integer | 
| & | ~ | Bwand: (Integer, Integer) -> Integer | 
| + | ~ | Add: (Integer, Integer) -> Integer | 
| && | ~ | Land: (Boolean, Boolean) -> Boolean | 
The following domains are used:
 
Integer
The ITRS R consists of the following rules:
56_0_test_Load(
x0) → 
97_0_test_LE(
x0, 
x0)
97_0_test_LE(
x0, 
x1) → 
Cond_97_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1) → 
97_0_test_LE(
x0, 
x1 + -1)
97_0_test_LE(
x0, 
0) → 
130_0_test_LE(
x0, 
x0)
130_0_test_LE(
x0, 
x1) → 
Cond_130_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1) → 
130_0_test_LE(
x0, 
x1 + -1)
130_0_test_LE(
x0, 
0) → 
162_0_test_LE(
x0, 
x0)
162_0_test_LE(
x0, 
x1) → 
Cond_162_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1) → 
162_0_test_LE(
x0, 
x1 + -1)
162_0_test_LE(
x0, 
0) → 
193_0_test_LE(
x0, 
x0)
193_0_test_LE(
x0, 
x1) → 
Cond_193_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1) → 
193_0_test_LE(
x0, 
x1 + -1)
193_0_test_LE(
x0, 
0) → 
221_0_test_LE(
x0, 
x0)
221_0_test_LE(
x0, 
x1) → 
Cond_221_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1) → 
221_0_test_LE(
x0, 
x1 + -1)
221_0_test_LE(
x0, 
0) → 
248_0_test_LE(
x0, 
x0)
248_0_test_LE(
x0, 
x1) → 
Cond_248_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1) → 
248_0_test_LE(
x0, 
x1 + -1)
248_0_test_LE(
x0, 
0) → 
285_0_test_LE(
x0, 
x0)
285_0_test_LE(
x0, 
x1) → 
Cond_285_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1) → 
285_0_test_LE(
x0, 
x1 + -1)
285_0_test_LE(
x0, 
0) → 
319_0_test_LE(
x0, 
x0)
319_0_test_LE(
x0, 
x1) → 
Cond_319_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1) → 
319_0_test_LE(
x0, 
x1 + -1)
319_0_test_LE(
x0, 
0) → 
354_0_test_LE(
x0, 
x0)
354_0_test_LE(
x0, 
x1) → 
Cond_354_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1) → 
354_0_test_LE(
x0, 
x1 + -1)
354_0_test_LE(
x0, 
0) → 
386_0_test_LE(
x0, 
x0)
386_0_test_LE(
x0, 
x1) → 
Cond_386_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1) → 
386_0_test_LE(
x0, 
x1 + -1)
386_0_test_LE(
x0, 
0) → 
426_0_test_LE(
x0, 
x0)
426_0_test_LE(
x0, 
x1) → 
Cond_426_0_test_LE(
x1 > 0, 
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1) → 
426_0_test_LE(
x0, 
x1 + -1)
426_0_test_LE(
x0, 
0) → 
465_0_test_LE(
x0)
465_0_test_LE(
0) → 
471_0_test_Return465_0_test_LE(
x0) → 
Cond_465_0_test_LE(
x0 > 0, 
x0)
Cond_465_0_test_LE(
TRUE, 
x0) → 
465_0_test_LE(
x0 + -1)
The integer pair graph contains the following rules and edges:
(3): 
COND_56_1_MAIN_INVOKEMETHOD(
TRUE, 
471_0_test_Return, 
x0[3], 
x1[3]) → 
48_0_MAIN_GE(
x0[3], 
x1[3] + 1)
(2): 
56_1_MAIN_INVOKEMETHOD(
471_0_test_Return, 
x0[2], 
x1[2]) → 
COND_56_1_MAIN_INVOKEMETHOD(
x1[2] > 0, 
471_0_test_Return, 
x0[2], 
x1[2])
(1): 
COND_48_0_MAIN_GE(
TRUE, 
x0[1], 
x1[1]) → 
56_1_MAIN_INVOKEMETHOD(
56_0_test_Load(
x1[1]), 
x0[1], 
x1[1])
   (1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1] →* x0[2])∧(x1[1] →* x1[2]))
   (2) -> (3), if ((x1[2] > 0 →* TRUE)∧(x0[2] →* x0[3])∧(x1[2] →* x1[3]))
The set Q consists of the following terms:
56_0_test_Load(
x0)
97_0_test_LE(
x0, 
x1)
Cond_97_0_test_LE(
TRUE, 
x0, 
x1)
130_0_test_LE(
x0, 
x1)
Cond_130_0_test_LE(
TRUE, 
x0, 
x1)
162_0_test_LE(
x0, 
x1)
Cond_162_0_test_LE(
TRUE, 
x0, 
x1)
193_0_test_LE(
x0, 
x1)
Cond_193_0_test_LE(
TRUE, 
x0, 
x1)
221_0_test_LE(
x0, 
x1)
Cond_221_0_test_LE(
TRUE, 
x0, 
x1)
248_0_test_LE(
x0, 
x1)
Cond_248_0_test_LE(
TRUE, 
x0, 
x1)
285_0_test_LE(
x0, 
x1)
Cond_285_0_test_LE(
TRUE, 
x0, 
x1)
319_0_test_LE(
x0, 
x1)
Cond_319_0_test_LE(
TRUE, 
x0, 
x1)
354_0_test_LE(
x0, 
x1)
Cond_354_0_test_LE(
TRUE, 
x0, 
x1)
386_0_test_LE(
x0, 
x1)
Cond_386_0_test_LE(
TRUE, 
x0, 
x1)
426_0_test_LE(
x0, 
x1)
Cond_426_0_test_LE(
TRUE, 
x0, 
x1)
465_0_test_LE(
x0)
Cond_465_0_test_LE(
TRUE, 
x0)
 
(132) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.
(133) TRUE