/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 525 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 255 ms] (8) IRSwT (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (10) IRSwT (11) IRSwTTerminationDigraphProof [EQUIVALENT, 65 ms] (12) AND (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 36 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 0 ms] (19) YES (20) IRSwT (21) IntTRSCompressionProof [EQUIVALENT, 0 ms] (22) IRSwT (23) TempFilterProof [SOUND, 62 ms] (24) IntTRS (25) PolynomialOrderProcessor [EQUIVALENT, 19 ms] (26) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Et1 { public static void main(String[] args) { Random.args = args; int a = - Random.random(); int b = - Random.random(); while (a > b) { b = b + a; a = a + 1; } } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } public class Et2 { public static void main(String[] args) { Random.args = args; int a = Random.random(); int b = Random.random(); while (b > 0) { int r = Random.random(); b = a - 1 - r; a = a - 1 - r; } } } // bin(entry593(C,D),[1*C+ -1*B>=1,1*C+ -1*A>=1,1*D>=1],entry593(A,B)) ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Et1 { public static void main(String[] args) { Random.args = args; int a = - Random.random(); int b = - Random.random(); while (a > b) { b = b + a; a = a + 1; } } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } public class Et2 { public static void main(String[] args) { Random.args = args; int a = Random.random(); int b = Random.random(); while (b > 0) { int r = Random.random(); b = a - 1 - r; a = a - 1 - r; } } } // bin(entry593(C,D),[1*C+ -1*B>=1,1*C+ -1*A>=1,1*D>=1],entry593(A,B)) ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Et2.main([Ljava/lang/String;)V: Graph of 312 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 1 SCCs. ---------------------------------------- (6) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Et2.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (7) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 61 IRulesP rules: f1386_0_main_LE(EOS(STATIC_1386(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i423) -> f1392_0_main_LE(EOS(STATIC_1392(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i423) :|: TRUE f1392_0_main_LE(EOS(STATIC_1392(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i423) -> f1397_0_main_InvokeMethod(EOS(STATIC_1397(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) :|: i423 > 0 f1397_0_main_InvokeMethod(EOS(STATIC_1397(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) -> f1401_0_random_FieldAccess(EOS(STATIC_1401(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) :|: TRUE f1401_0_random_FieldAccess(EOS(STATIC_1401(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) -> f1405_0_random_FieldAccess(EOS(STATIC_1405(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39) :|: TRUE f1405_0_random_FieldAccess(EOS(STATIC_1405(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39) -> f1409_0_random_ArrayLength(EOS(STATIC_1409(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, java.lang.Object(ARRAY(i4))) :|: TRUE f1409_0_random_ArrayLength(EOS(STATIC_1409(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, java.lang.Object(ARRAY(i4))) -> f1412_0_random_LT(EOS(STATIC_1412(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, i4) :|: i4 >= 0 f1412_0_random_LT(EOS(STATIC_1412(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, i4) -> f1425_0_random_LT(EOS(STATIC_1425(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, i4) :|: i39 < i4 f1412_0_random_LT(EOS(STATIC_1412(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, i4) -> f1426_0_random_LT(EOS(STATIC_1426(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, i4) :|: i39 >= i4 f1425_0_random_LT(EOS(STATIC_1425(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, i4) -> f1427_0_random_FieldAccess(EOS(STATIC_1427(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) :|: i39 < i4 f1427_0_random_FieldAccess(EOS(STATIC_1427(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) -> f1435_0_random_FieldAccess(EOS(STATIC_1435(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(ARRAY(i4))) :|: TRUE f1435_0_random_FieldAccess(EOS(STATIC_1435(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(ARRAY(i4))) -> f1439_0_random_ArrayAccess(EOS(STATIC_1439(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(ARRAY(i4)), i39) :|: TRUE f1439_0_random_ArrayAccess(EOS(STATIC_1439(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(ARRAY(i4)), i39) -> f1443_0_random_ArrayAccess(EOS(STATIC_1443(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(ARRAY(i4)), i39) :|: TRUE f1443_0_random_ArrayAccess(EOS(STATIC_1443(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(ARRAY(i4)), i39) -> f1446_0_random_Store(EOS(STATIC_1446(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124) :|: TRUE f1446_0_random_Store(EOS(STATIC_1446(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124) -> f1449_0_random_FieldAccess(EOS(STATIC_1449(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124) :|: TRUE f1449_0_random_FieldAccess(EOS(STATIC_1449(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124) -> f1451_0_random_ConstantStackPush(EOS(STATIC_1451(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124, i39) :|: TRUE f1451_0_random_ConstantStackPush(EOS(STATIC_1451(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124, i39) -> f1454_0_random_IntArithmetic(EOS(STATIC_1454(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124, i39, 1) :|: TRUE f1454_0_random_IntArithmetic(EOS(STATIC_1454(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124, i39, matching1) -> f1457_0_random_FieldAccess(EOS(STATIC_1457(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124, i39 + 1) :|: i39 > 0 && matching1 = 1 f1457_0_random_FieldAccess(EOS(STATIC_1457(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, o124, i448) -> f1459_0_random_Load(EOS(STATIC_1459(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, o124) :|: TRUE f1459_0_random_Load(EOS(STATIC_1459(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, o124) -> f1462_0_random_InvokeMethod(EOS(STATIC_1462(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, o124) :|: TRUE f1462_0_random_InvokeMethod(EOS(STATIC_1462(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o131sub)) -> f1465_0_random_InvokeMethod(EOS(STATIC_1465(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o131sub)) :|: TRUE f1465_0_random_InvokeMethod(EOS(STATIC_1465(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o132sub)) -> f1468_0_random_InvokeMethod(EOS(STATIC_1468(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o132sub)) :|: TRUE f1468_0_random_InvokeMethod(EOS(STATIC_1468(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o132sub)) -> f1472_0_length_Load(EOS(STATIC_1472(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o132sub)) :|: TRUE f1472_0_length_Load(EOS(STATIC_1472(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o132sub)) -> f1484_0_length_FieldAccess(EOS(STATIC_1484(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(o132sub)) :|: TRUE f1484_0_length_FieldAccess(EOS(STATIC_1484(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(java.lang.String(EOC, i476))) -> f1492_0_length_FieldAccess(EOS(STATIC_1492(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(java.lang.String(EOC, i476))) :|: i476 >= 0 f1492_0_length_FieldAccess(EOS(STATIC_1492(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, java.lang.Object(java.lang.String(EOC, i476))) -> f1541_0_length_Return(EOS(STATIC_1541(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) :|: TRUE f1541_0_length_Return(EOS(STATIC_1541(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) -> f1547_0_random_Return(EOS(STATIC_1547(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) :|: TRUE f1547_0_random_Return(EOS(STATIC_1547(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) -> f1553_0_main_Store(EOS(STATIC_1553(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) :|: TRUE f1553_0_main_Store(EOS(STATIC_1553(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) -> f1555_0_main_Load(EOS(STATIC_1555(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) :|: TRUE f1555_0_main_Load(EOS(STATIC_1555(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476) -> f1561_0_main_ConstantStackPush(EOS(STATIC_1561(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i389) :|: TRUE f1561_0_main_ConstantStackPush(EOS(STATIC_1561(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i389) -> f1569_0_main_IntArithmetic(EOS(STATIC_1569(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i389, 1) :|: TRUE f1569_0_main_IntArithmetic(EOS(STATIC_1569(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i389, matching1) -> f1578_0_main_Load(EOS(STATIC_1578(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i389 - 1) :|: TRUE && matching1 = 1 f1578_0_main_Load(EOS(STATIC_1578(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i490) -> f1590_0_main_IntArithmetic(EOS(STATIC_1590(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i490, i476) :|: TRUE f1590_0_main_IntArithmetic(EOS(STATIC_1590(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i490, i476) -> f1602_0_main_Store(EOS(STATIC_1602(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i490 - i476) :|: i476 >= 0 f1602_0_main_Store(EOS(STATIC_1602(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i476, i493) -> f1611_0_main_Load(EOS(STATIC_1611(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i493, i476) :|: TRUE f1611_0_main_Load(EOS(STATIC_1611(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i389, i493, i476) -> f1614_0_main_ConstantStackPush(EOS(STATIC_1614(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i476, i389) :|: TRUE f1614_0_main_ConstantStackPush(EOS(STATIC_1614(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i476, i389) -> f1623_0_main_IntArithmetic(EOS(STATIC_1623(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i476, i389, 1) :|: TRUE f1623_0_main_IntArithmetic(EOS(STATIC_1623(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i476, i389, matching1) -> f1630_0_main_Load(EOS(STATIC_1630(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i476, i389 - 1) :|: TRUE && matching1 = 1 f1630_0_main_Load(EOS(STATIC_1630(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i476, i500) -> f1641_0_main_IntArithmetic(EOS(STATIC_1641(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i500, i476) :|: TRUE f1641_0_main_IntArithmetic(EOS(STATIC_1641(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i500, i476) -> f1644_0_main_Store(EOS(STATIC_1644(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i500 - i476) :|: i476 >= 0 f1644_0_main_Store(EOS(STATIC_1644(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i493, i502) -> f1647_0_main_JMP(EOS(STATIC_1647(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i502, i493) :|: TRUE f1647_0_main_JMP(EOS(STATIC_1647(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i502, i493) -> f1670_0_main_Load(EOS(STATIC_1670(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i502, i493) :|: TRUE f1670_0_main_Load(EOS(STATIC_1670(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i502, i493) -> f1349_0_main_Load(EOS(STATIC_1349(java.lang.Object(ARRAY(i4)), i448)), java.lang.Object(ARRAY(i4)), i502, i493) :|: TRUE f1349_0_main_Load(EOS(STATIC_1349(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i390) -> f1386_0_main_LE(EOS(STATIC_1386(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i390) :|: TRUE f1426_0_random_LT(EOS(STATIC_1426(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i39, i4) -> f1433_0_random_ConstantStackPush(EOS(STATIC_1433(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) :|: i39 >= i4 f1433_0_random_ConstantStackPush(EOS(STATIC_1433(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389) -> f1436_0_random_Return(EOS(STATIC_1436(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0) :|: TRUE f1436_0_random_Return(EOS(STATIC_1436(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1) -> f1442_0_main_Store(EOS(STATIC_1442(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0) :|: TRUE && matching1 = 0 f1442_0_main_Store(EOS(STATIC_1442(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1) -> f1445_0_main_Load(EOS(STATIC_1445(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0) :|: TRUE && matching1 = 0 f1445_0_main_Load(EOS(STATIC_1445(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1) -> f1448_0_main_ConstantStackPush(EOS(STATIC_1448(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0, i389) :|: TRUE && matching1 = 0 f1448_0_main_ConstantStackPush(EOS(STATIC_1448(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1, i389) -> f1450_0_main_IntArithmetic(EOS(STATIC_1450(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0, i389, 1) :|: TRUE && matching1 = 0 f1450_0_main_IntArithmetic(EOS(STATIC_1450(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1, i389, matching2) -> f1453_0_main_Load(EOS(STATIC_1453(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0, i389 - 1) :|: TRUE && matching1 = 0 && matching2 = 1 f1453_0_main_Load(EOS(STATIC_1453(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1, i447) -> f1456_0_main_IntArithmetic(EOS(STATIC_1456(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0, i447, 0) :|: TRUE && matching1 = 0 f1456_0_main_IntArithmetic(EOS(STATIC_1456(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1, i447, matching2) -> f1458_0_main_Store(EOS(STATIC_1458(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, 0, i447 - 0) :|: TRUE && matching1 = 0 && matching2 = 0 f1458_0_main_Store(EOS(STATIC_1458(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, matching1, i447) -> f1461_0_main_Load(EOS(STATIC_1461(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i447, 0) :|: TRUE && matching1 = 0 f1461_0_main_Load(EOS(STATIC_1461(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i389, i447, matching1) -> f1464_0_main_ConstantStackPush(EOS(STATIC_1464(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, 0, i389) :|: TRUE && matching1 = 0 f1464_0_main_ConstantStackPush(EOS(STATIC_1464(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, matching1, i389) -> f1467_0_main_IntArithmetic(EOS(STATIC_1467(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, 0, i389, 1) :|: TRUE && matching1 = 0 f1467_0_main_IntArithmetic(EOS(STATIC_1467(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, matching1, i389, matching2) -> f1471_0_main_Load(EOS(STATIC_1471(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, 0, i389 - 1) :|: TRUE && matching1 = 0 && matching2 = 1 f1471_0_main_Load(EOS(STATIC_1471(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, matching1, i457) -> f1474_0_main_IntArithmetic(EOS(STATIC_1474(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, i457, 0) :|: TRUE && matching1 = 0 f1474_0_main_IntArithmetic(EOS(STATIC_1474(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, i457, matching1) -> f1476_0_main_Store(EOS(STATIC_1476(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, i457 - 0) :|: TRUE && matching1 = 0 f1476_0_main_Store(EOS(STATIC_1476(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i447, i457) -> f1490_0_main_JMP(EOS(STATIC_1490(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i457, i447) :|: TRUE f1490_0_main_JMP(EOS(STATIC_1490(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i457, i447) -> f1537_0_main_Load(EOS(STATIC_1537(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i457, i447) :|: TRUE f1537_0_main_Load(EOS(STATIC_1537(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i457, i447) -> f1349_0_main_Load(EOS(STATIC_1349(java.lang.Object(ARRAY(i4)), i39)), java.lang.Object(ARRAY(i4)), i457, i447) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f1386_0_main_LE(EOS(STATIC_1386(java.lang.Object(ARRAY(i4:0)), i39:0)), java.lang.Object(ARRAY(i4:0)), i389:0, i423:0) -> f1386_0_main_LE(EOS(STATIC_1386(java.lang.Object(ARRAY(i4:0)), i39:0)), java.lang.Object(ARRAY(i4:0)), i389:0 - 1, i389:0 - 1) :|: i423:0 > 0 && i4:0 > -1 && i4:0 <= i39:0 f1386_0_main_LE(EOS(STATIC_1386(java.lang.Object(ARRAY(i4:0)), i39:0)), java.lang.Object(ARRAY(i4:0)), i389:0, i423:0) -> f1386_0_main_LE(EOS(STATIC_1386(java.lang.Object(ARRAY(i4:0)), i39:0 + 1)), java.lang.Object(ARRAY(i4:0)), i389:0 - 1 - i476:0, i389:0 - 1 - i476:0) :|: i423:0 > 0 && i4:0 > -1 && i4:0 > i39:0 && i39:0 > 0 && i476:0 > -1 Finished conversion. Obtained 2 rules.P rules: f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0, i423:0, i4:0, i39:0, i4:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0 - 1, i389:0 - 1, i4:0, i39:0, i4:0) :|: i4:0 > -1 && i4:0 <= i39:0 && i423:0 > 0 f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0, i423:0, i4:0, i39:0, i4:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0 - 1 - i476:0, i389:0 - 1 - i476:0, i4:0, i39:0 + 1, i4:0) :|: i4:0 > -1 && i423:0 > 0 && i4:0 > i39:0 && i476:0 > -1 && i39:0 > 0 ---------------------------------------- (8) Obligation: Rules: f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0, i423:0, i4:0, i39:0, i4:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0 - 1, i389:0 - 1, i4:0, i39:0, i4:0) :|: i4:0 > -1 && i4:0 <= i39:0 && i423:0 > 0 f1386_0_main_LE(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f1386_0_main_LE(java.lang.Object(ARRAY(x)), x1 - 1 - x4, x1 - 1 - x4, x, x3 + 1, x) :|: x > -1 && x2 > 0 && x > x3 && x4 > -1 && x3 > 0 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0, i423:0, i4:0, i39:0, i4:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), arith, arith, i4:0, i39:0, i4:0) :|: i4:0 > -1 && i4:0 <= i39:0 && i423:0 > 0 && arith = i389:0 - 1 && arith = i389:0 - 1 f1386_0_main_LE(java.lang.Object(ARRAY(x5)), x6, x7, x5, x8, x5) -> f1386_0_main_LE(java.lang.Object(ARRAY(x5)), x9, x9, x5, x10, x5) :|: x5 > -1 && x7 > 0 && x5 > x8 && x11 > -1 && x8 > 0 && x9 = x6 - 1 - x11 && x9 = x6 - 1 - x11 && x10 = x8 + 1 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0, i423:0, i4:0, i39:0, i4:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), arith, arith, i4:0, i39:0, i4:0) :|: i4:0 > -1 && i4:0 <= i39:0 && i423:0 > 0 && arith = i389:0 - 1 && arith = i389:0 - 1 (2) f1386_0_main_LE(java.lang.Object(ARRAY(x5)), x6, x7, x5, x8, x5) -> f1386_0_main_LE(java.lang.Object(ARRAY(x5)), x9, x9, x5, x10, x5) :|: x5 > -1 && x7 > 0 && x5 > x8 && x11 > -1 && x8 > 0 && x9 = x6 - 1 - x11 && x9 = x6 - 1 - x11 && x10 = x8 + 1 Arcs: (1) -> (1) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1386_0_main_LE(java.lang.Object(ARRAY(x5)), x6, x7, x5, x8, x5) -> f1386_0_main_LE(java.lang.Object(ARRAY(x5)), x9, x9, x5, x10, x5) :|: x5 > -1 && x7 > 0 && x5 > x8 && x11 > -1 && x8 > 0 && x9 = x6 - 1 - x11 && x9 = x6 - 1 - x11 && x10 = x8 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1386_0_main_LE(java.lang.Object(ARRAY(x5:0)), x6:0, x7:0, x5:0, x8:0, x5:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(x5:0)), x6:0 - 1 - x11:0, x6:0 - 1 - x11:0, x5:0, x8:0 + 1, x5:0) :|: x11:0 > -1 && x8:0 > 0 && x8:0 < x5:0 && x7:0 > 0 && x5:0 > -1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1386_0_main_LE(VARIABLE, VARIABLE, INTEGER, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1386_0_main_LE(c, x6:0, x7:0, x5:0, x8:0, x5:0) -> f1386_0_main_LE(c1, c2, c3, x5:0, c4, x5:0) :|: c4 = x8:0 + 1 && (c3 = x6:0 - 1 - x11:0 && (c2 = x6:0 - 1 - x11:0 && (c1 = 0 && c = 0))) && (x11:0 > -1 && x8:0 > 0 && x8:0 < x5:0 && x7:0 > 0 && x5:0 > -1) ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1386_0_main_LE ] = -1*f1386_0_main_LE_5 + f1386_0_main_LE_6 The following rules are decreasing: f1386_0_main_LE(c, x6:0, x7:0, x5:0, x8:0, x5:0) -> f1386_0_main_LE(c1, c2, c3, x5:0, c4, x5:0) :|: c4 = x8:0 + 1 && (c3 = x6:0 - 1 - x11:0 && (c2 = x6:0 - 1 - x11:0 && (c1 = 0 && c = 0))) && (x11:0 > -1 && x8:0 > 0 && x8:0 < x5:0 && x7:0 > 0 && x5:0 > -1) The following rules are bounded: f1386_0_main_LE(c, x6:0, x7:0, x5:0, x8:0, x5:0) -> f1386_0_main_LE(c1, c2, c3, x5:0, c4, x5:0) :|: c4 = x8:0 + 1 && (c3 = x6:0 - 1 - x11:0 && (c2 = x6:0 - 1 - x11:0 && (c1 = 0 && c = 0))) && (x11:0 > -1 && x8:0 > 0 && x8:0 < x5:0 && x7:0 > 0 && x5:0 > -1) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Termination digraph: Nodes: (1) f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), i389:0, i423:0, i4:0, i39:0, i4:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(i4:0)), arith, arith, i4:0, i39:0, i4:0) :|: i4:0 > -1 && i4:0 <= i39:0 && i423:0 > 0 && arith = i389:0 - 1 && arith = i389:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (21) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (22) Obligation: Rules: f1386_0_main_LE(java.lang.Object(ARRAY(i4:0:0)), i389:0:0, i423:0:0, i4:0:0, i39:0:0, i4:0:0) -> f1386_0_main_LE(java.lang.Object(ARRAY(i4:0:0)), i389:0:0 - 1, i389:0:0 - 1, i4:0:0, i39:0:0, i4:0:0) :|: i4:0:0 > -1 && i4:0:0 <= i39:0:0 && i423:0:0 > 0 ---------------------------------------- (23) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1386_0_main_LE(VARIABLE, VARIABLE, INTEGER, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (24) Obligation: Rules: f1386_0_main_LE(c, i389:0:0, i423:0:0, i4:0:0, i39:0:0, i4:0:0) -> f1386_0_main_LE(c1, c2, c3, i4:0:0, i39:0:0, i4:0:0) :|: c3 = i389:0:0 - 1 && (c2 = i389:0:0 - 1 && (c1 = 0 && c = 0)) && (i4:0:0 > -1 && i4:0:0 <= i39:0:0 && i423:0:0 > 0) ---------------------------------------- (25) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1386_0_main_LE(x, x1, x2, x3, x4, x5)] = -2 + c*x + c12*x*x1 + c13*x*x2 + c14*x*x3 + c15*x*x4 + c16*x*x5 + c1*x^2 + x1^2 + 2*x2 The following rules are decreasing: f1386_0_main_LE(c, i389:0:0, i423:0:0, i4:0:0, i39:0:0, i4:0:0) -> f1386_0_main_LE(c1, c2, c3, i4:0:0, i39:0:0, i4:0:0) :|: c3 = i389:0:0 - 1 && (c2 = i389:0:0 - 1 && (c1 = 0 && c = 0)) && (i4:0:0 > -1 && i4:0:0 <= i39:0:0 && i423:0:0 > 0) The following rules are bounded: f1386_0_main_LE(c, i389:0:0, i423:0:0, i4:0:0, i39:0:0, i4:0:0) -> f1386_0_main_LE(c1, c2, c3, i4:0:0, i39:0:0, i4:0:0) :|: c3 = i389:0:0 - 1 && (c2 = i389:0:0 - 1 && (c1 = 0 && c = 0)) && (i4:0:0 > -1 && i4:0:0 <= i39:0:0 && i423:0:0 > 0) ---------------------------------------- (26) YES