/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 545 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 7 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 198 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, 27 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 11 ms] (19) YES (20) IRSwT (21) IntTRSCompressionProof [EQUIVALENT, 0 ms] (22) IRSwT (23) TempFilterProof [SOUND, 147 ms] (24) IntTRS (25) PolynomialOrderProcessor [EQUIVALENT, 0 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: f1321_0_main_LE(EOS(STATIC_1321(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i400) -> f1324_0_main_LE(EOS(STATIC_1324(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i400) :|: TRUE f1324_0_main_LE(EOS(STATIC_1324(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i400) -> f1329_0_main_InvokeMethod(EOS(STATIC_1329(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) :|: i400 > 0 f1329_0_main_InvokeMethod(EOS(STATIC_1329(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) -> f1331_0_random_FieldAccess(EOS(STATIC_1331(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) :|: TRUE f1331_0_random_FieldAccess(EOS(STATIC_1331(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) -> f1333_0_random_FieldAccess(EOS(STATIC_1333(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38) :|: TRUE f1333_0_random_FieldAccess(EOS(STATIC_1333(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38) -> f1336_0_random_ArrayLength(EOS(STATIC_1336(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, java.lang.Object(ARRAY(i4))) :|: TRUE f1336_0_random_ArrayLength(EOS(STATIC_1336(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, java.lang.Object(ARRAY(i4))) -> f1362_0_random_LT(EOS(STATIC_1362(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, i4) :|: i4 >= 0 f1362_0_random_LT(EOS(STATIC_1362(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, i4) -> f1379_0_random_LT(EOS(STATIC_1379(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, i4) :|: i38 < i4 f1362_0_random_LT(EOS(STATIC_1362(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, i4) -> f1380_0_random_LT(EOS(STATIC_1380(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, i4) :|: i38 >= i4 f1379_0_random_LT(EOS(STATIC_1379(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, i4) -> f1383_0_random_FieldAccess(EOS(STATIC_1383(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) :|: i38 < i4 f1383_0_random_FieldAccess(EOS(STATIC_1383(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) -> f1385_0_random_FieldAccess(EOS(STATIC_1385(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(ARRAY(i4))) :|: TRUE f1385_0_random_FieldAccess(EOS(STATIC_1385(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(ARRAY(i4))) -> f1394_0_random_ArrayAccess(EOS(STATIC_1394(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(ARRAY(i4)), i38) :|: TRUE f1394_0_random_ArrayAccess(EOS(STATIC_1394(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(ARRAY(i4)), i38) -> f1396_0_random_ArrayAccess(EOS(STATIC_1396(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(ARRAY(i4)), i38) :|: TRUE f1396_0_random_ArrayAccess(EOS(STATIC_1396(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(ARRAY(i4)), i38) -> f1405_0_random_Store(EOS(STATIC_1405(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110) :|: TRUE f1405_0_random_Store(EOS(STATIC_1405(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110) -> f1413_0_random_FieldAccess(EOS(STATIC_1413(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110) :|: TRUE f1413_0_random_FieldAccess(EOS(STATIC_1413(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110) -> f1419_0_random_ConstantStackPush(EOS(STATIC_1419(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110, i38) :|: TRUE f1419_0_random_ConstantStackPush(EOS(STATIC_1419(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110, i38) -> f1431_0_random_IntArithmetic(EOS(STATIC_1431(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110, i38, 1) :|: TRUE f1431_0_random_IntArithmetic(EOS(STATIC_1431(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110, i38, matching1) -> f1439_0_random_FieldAccess(EOS(STATIC_1439(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110, i38 + 1) :|: i38 > 0 && matching1 = 1 f1439_0_random_FieldAccess(EOS(STATIC_1439(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, o110, i435) -> f1446_0_random_Load(EOS(STATIC_1446(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, o110) :|: TRUE f1446_0_random_Load(EOS(STATIC_1446(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, o110) -> f1452_0_random_InvokeMethod(EOS(STATIC_1452(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, o110) :|: TRUE f1452_0_random_InvokeMethod(EOS(STATIC_1452(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o113sub)) -> f1455_0_random_InvokeMethod(EOS(STATIC_1455(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o113sub)) :|: TRUE f1455_0_random_InvokeMethod(EOS(STATIC_1455(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o114sub)) -> f1461_0_random_InvokeMethod(EOS(STATIC_1461(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o114sub)) :|: TRUE f1461_0_random_InvokeMethod(EOS(STATIC_1461(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o114sub)) -> f1469_0_length_Load(EOS(STATIC_1469(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o114sub)) :|: TRUE f1469_0_length_Load(EOS(STATIC_1469(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o114sub)) -> f1477_0_length_FieldAccess(EOS(STATIC_1477(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(o114sub)) :|: TRUE f1477_0_length_FieldAccess(EOS(STATIC_1477(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(java.lang.String(EOC, i464))) -> f1488_0_length_FieldAccess(EOS(STATIC_1488(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(java.lang.String(EOC, i464))) :|: i464 >= 0 f1488_0_length_FieldAccess(EOS(STATIC_1488(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, java.lang.Object(java.lang.String(EOC, i464))) -> f1553_0_length_Return(EOS(STATIC_1553(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) :|: TRUE f1553_0_length_Return(EOS(STATIC_1553(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) -> f1558_0_random_Return(EOS(STATIC_1558(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) :|: TRUE f1558_0_random_Return(EOS(STATIC_1558(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) -> f1571_0_main_Store(EOS(STATIC_1571(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) :|: TRUE f1571_0_main_Store(EOS(STATIC_1571(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) -> f1578_0_main_Load(EOS(STATIC_1578(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) :|: TRUE f1578_0_main_Load(EOS(STATIC_1578(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464) -> f1589_0_main_ConstantStackPush(EOS(STATIC_1589(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i383) :|: TRUE f1589_0_main_ConstantStackPush(EOS(STATIC_1589(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i383) -> f1642_0_main_IntArithmetic(EOS(STATIC_1642(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i383, 1) :|: TRUE f1642_0_main_IntArithmetic(EOS(STATIC_1642(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i383, matching1) -> f1657_0_main_Load(EOS(STATIC_1657(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i383 - 1) :|: TRUE && matching1 = 1 f1657_0_main_Load(EOS(STATIC_1657(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i495) -> f1663_0_main_IntArithmetic(EOS(STATIC_1663(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i495, i464) :|: TRUE f1663_0_main_IntArithmetic(EOS(STATIC_1663(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i495, i464) -> f1676_0_main_Store(EOS(STATIC_1676(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i495 - i464) :|: i464 >= 0 f1676_0_main_Store(EOS(STATIC_1676(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i464, i498) -> f1688_0_main_Load(EOS(STATIC_1688(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i498, i464) :|: TRUE f1688_0_main_Load(EOS(STATIC_1688(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i383, i498, i464) -> f1696_0_main_ConstantStackPush(EOS(STATIC_1696(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i464, i383) :|: TRUE f1696_0_main_ConstantStackPush(EOS(STATIC_1696(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i464, i383) -> f1713_0_main_IntArithmetic(EOS(STATIC_1713(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i464, i383, 1) :|: TRUE f1713_0_main_IntArithmetic(EOS(STATIC_1713(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i464, i383, matching1) -> f1722_0_main_Load(EOS(STATIC_1722(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i464, i383 - 1) :|: TRUE && matching1 = 1 f1722_0_main_Load(EOS(STATIC_1722(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i464, i503) -> f1735_0_main_IntArithmetic(EOS(STATIC_1735(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i503, i464) :|: TRUE f1735_0_main_IntArithmetic(EOS(STATIC_1735(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i503, i464) -> f1749_0_main_Store(EOS(STATIC_1749(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i503 - i464) :|: i464 >= 0 f1749_0_main_Store(EOS(STATIC_1749(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i498, i507) -> f1758_0_main_JMP(EOS(STATIC_1758(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i507, i498) :|: TRUE f1758_0_main_JMP(EOS(STATIC_1758(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i507, i498) -> f1789_0_main_Load(EOS(STATIC_1789(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i507, i498) :|: TRUE f1789_0_main_Load(EOS(STATIC_1789(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i507, i498) -> f1316_0_main_Load(EOS(STATIC_1316(java.lang.Object(ARRAY(i4)), i435)), java.lang.Object(ARRAY(i4)), i507, i498) :|: TRUE f1316_0_main_Load(EOS(STATIC_1316(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i384) -> f1321_0_main_LE(EOS(STATIC_1321(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i384) :|: TRUE f1380_0_random_LT(EOS(STATIC_1380(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i38, i4) -> f1384_0_random_ConstantStackPush(EOS(STATIC_1384(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) :|: i38 >= i4 f1384_0_random_ConstantStackPush(EOS(STATIC_1384(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383) -> f1388_0_random_Return(EOS(STATIC_1388(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0) :|: TRUE f1388_0_random_Return(EOS(STATIC_1388(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1) -> f1395_0_main_Store(EOS(STATIC_1395(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0) :|: TRUE && matching1 = 0 f1395_0_main_Store(EOS(STATIC_1395(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1) -> f1400_0_main_Load(EOS(STATIC_1400(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0) :|: TRUE && matching1 = 0 f1400_0_main_Load(EOS(STATIC_1400(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1) -> f1409_0_main_ConstantStackPush(EOS(STATIC_1409(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0, i383) :|: TRUE && matching1 = 0 f1409_0_main_ConstantStackPush(EOS(STATIC_1409(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1, i383) -> f1415_0_main_IntArithmetic(EOS(STATIC_1415(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0, i383, 1) :|: TRUE && matching1 = 0 f1415_0_main_IntArithmetic(EOS(STATIC_1415(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1, i383, matching2) -> f1427_0_main_Load(EOS(STATIC_1427(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0, i383 - 1) :|: TRUE && matching1 = 0 && matching2 = 1 f1427_0_main_Load(EOS(STATIC_1427(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1, i433) -> f1435_0_main_IntArithmetic(EOS(STATIC_1435(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0, i433, 0) :|: TRUE && matching1 = 0 f1435_0_main_IntArithmetic(EOS(STATIC_1435(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1, i433, matching2) -> f1442_0_main_Store(EOS(STATIC_1442(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, 0, i433 - 0) :|: TRUE && matching1 = 0 && matching2 = 0 f1442_0_main_Store(EOS(STATIC_1442(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, matching1, i433) -> f1451_0_main_Load(EOS(STATIC_1451(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i433, 0) :|: TRUE && matching1 = 0 f1451_0_main_Load(EOS(STATIC_1451(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i383, i433, matching1) -> f1454_0_main_ConstantStackPush(EOS(STATIC_1454(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, 0, i383) :|: TRUE && matching1 = 0 f1454_0_main_ConstantStackPush(EOS(STATIC_1454(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, matching1, i383) -> f1457_0_main_IntArithmetic(EOS(STATIC_1457(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, 0, i383, 1) :|: TRUE && matching1 = 0 f1457_0_main_IntArithmetic(EOS(STATIC_1457(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, matching1, i383, matching2) -> f1467_0_main_Load(EOS(STATIC_1467(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, 0, i383 - 1) :|: TRUE && matching1 = 0 && matching2 = 1 f1467_0_main_Load(EOS(STATIC_1467(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, matching1, i445) -> f1471_0_main_IntArithmetic(EOS(STATIC_1471(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, i445, 0) :|: TRUE && matching1 = 0 f1471_0_main_IntArithmetic(EOS(STATIC_1471(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, i445, matching1) -> f1476_0_main_Store(EOS(STATIC_1476(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, i445 - 0) :|: TRUE && matching1 = 0 f1476_0_main_Store(EOS(STATIC_1476(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i433, i445) -> f1485_0_main_JMP(EOS(STATIC_1485(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i445, i433) :|: TRUE f1485_0_main_JMP(EOS(STATIC_1485(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i445, i433) -> f1549_0_main_Load(EOS(STATIC_1549(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i445, i433) :|: TRUE f1549_0_main_Load(EOS(STATIC_1549(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i445, i433) -> f1316_0_main_Load(EOS(STATIC_1316(java.lang.Object(ARRAY(i4)), i38)), java.lang.Object(ARRAY(i4)), i445, i433) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f1321_0_main_LE(EOS(STATIC_1321(java.lang.Object(ARRAY(i4:0)), i38:0)), java.lang.Object(ARRAY(i4:0)), i383:0, i400:0) -> f1321_0_main_LE(EOS(STATIC_1321(java.lang.Object(ARRAY(i4:0)), i38:0 + 1)), java.lang.Object(ARRAY(i4:0)), i383:0 - 1 - i464:0, i383:0 - 1 - i464:0) :|: i400:0 > 0 && i4:0 > -1 && i4:0 > i38:0 && i38:0 > 0 && i464:0 > -1 f1321_0_main_LE(EOS(STATIC_1321(java.lang.Object(ARRAY(i4:0)), i38:0)), java.lang.Object(ARRAY(i4:0)), i383:0, i400:0) -> f1321_0_main_LE(EOS(STATIC_1321(java.lang.Object(ARRAY(i4:0)), i38:0)), java.lang.Object(ARRAY(i4:0)), i383:0 - 1, i383:0 - 1) :|: i400:0 > 0 && i4:0 > -1 && i4:0 <= i38:0 Finished conversion. Obtained 2 rules.P rules: f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0, i400:0, i4:0, i38:0, i4:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0 - 1 - i464:0, i383:0 - 1 - i464:0, i4:0, i38:0 + 1, i4:0) :|: i4:0 > -1 && i400:0 > 0 && i4:0 > i38:0 && i464:0 > -1 && i38:0 > 0 f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0, i400:0, i4:0, i38:0, i4:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0 - 1, i383:0 - 1, i4:0, i38:0, i4:0) :|: i4:0 > -1 && i4:0 <= i38:0 && i400:0 > 0 ---------------------------------------- (8) Obligation: Rules: f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0, i400:0, i4:0, i38:0, i4:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0 - 1 - i464:0, i383:0 - 1 - i464:0, i4:0, i38:0 + 1, i4:0) :|: i4:0 > -1 && i400:0 > 0 && i4:0 > i38:0 && i464:0 > -1 && i38:0 > 0 f1321_0_main_LE(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f1321_0_main_LE(java.lang.Object(ARRAY(x)), x1 - 1, x1 - 1, x, x3, x) :|: x > -1 && x <= x3 && x2 > 0 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0, i400:0, i4:0, i38:0, i4:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), arith, arith, i4:0, arith1, i4:0) :|: i4:0 > -1 && i400:0 > 0 && i4:0 > i38:0 && i464:0 > -1 && i38:0 > 0 && arith = i383:0 - 1 - i464:0 && arith = i383:0 - 1 - i464:0 && arith1 = i38:0 + 1 f1321_0_main_LE(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f1321_0_main_LE(java.lang.Object(ARRAY(x4)), x8, x8, x4, x7, x4) :|: x4 > -1 && x4 <= x7 && x6 > 0 && x8 = x5 - 1 && x8 = x5 - 1 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0, i400:0, i4:0, i38:0, i4:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), arith, arith, i4:0, arith1, i4:0) :|: i4:0 > -1 && i400:0 > 0 && i4:0 > i38:0 && i464:0 > -1 && i38:0 > 0 && arith = i383:0 - 1 - i464:0 && arith = i383:0 - 1 - i464:0 && arith1 = i38:0 + 1 (2) f1321_0_main_LE(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f1321_0_main_LE(java.lang.Object(ARRAY(x4)), x8, x8, x4, x7, x4) :|: x4 > -1 && x4 <= x7 && x6 > 0 && x8 = x5 - 1 && x8 = x5 - 1 Arcs: (1) -> (1), (2) (2) -> (2) This digraph is fully evaluated! ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), i383:0, i400:0, i4:0, i38:0, i4:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(i4:0)), arith, arith, i4:0, arith1, i4:0) :|: i4:0 > -1 && i400:0 > 0 && i4:0 > i38:0 && i464:0 > -1 && i38:0 > 0 && arith = i383:0 - 1 - i464:0 && arith = i383:0 - 1 - i464:0 && arith1 = i38:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1321_0_main_LE(java.lang.Object(ARRAY(i4:0:0)), i383:0:0, i400:0:0, i4:0:0, i38:0:0, i4:0:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(i4:0:0)), i383:0:0 - 1 - i464:0:0, i383:0:0 - 1 - i464:0:0, i4:0:0, i38:0:0 + 1, i4:0:0) :|: i464:0:0 > -1 && i38:0:0 > 0 && i4:0:0 > i38:0:0 && i400:0:0 > 0 && i4:0:0 > -1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1321_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: f1321_0_main_LE(c, i383:0:0, i400:0:0, i4:0:0, i38:0:0, i4:0:0) -> f1321_0_main_LE(c1, c2, c3, i4:0:0, c4, i4:0:0) :|: c4 = i38:0:0 + 1 && (c3 = i383:0:0 - 1 - i464:0:0 && (c2 = i383:0:0 - 1 - i464:0:0 && (c1 = 0 && c = 0))) && (i464:0:0 > -1 && i38:0:0 > 0 && i4:0:0 > i38:0:0 && i400:0:0 > 0 && i4:0:0 > -1) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1321_0_main_LE(x, x1, x2, x3, x4, x5)] = -1 + c*x - x4 + x5 The following rules are decreasing: f1321_0_main_LE(c, i383:0:0, i400:0:0, i4:0:0, i38:0:0, i4:0:0) -> f1321_0_main_LE(c1, c2, c3, i4:0:0, c4, i4:0:0) :|: c4 = i38:0:0 + 1 && (c3 = i383:0:0 - 1 - i464:0:0 && (c2 = i383:0:0 - 1 - i464:0:0 && (c1 = 0 && c = 0))) && (i464:0:0 > -1 && i38:0:0 > 0 && i4:0:0 > i38:0:0 && i400:0:0 > 0 && i4:0:0 > -1) The following rules are bounded: f1321_0_main_LE(c, i383:0:0, i400:0:0, i4:0:0, i38:0:0, i4:0:0) -> f1321_0_main_LE(c1, c2, c3, i4:0:0, c4, i4:0:0) :|: c4 = i38:0:0 + 1 && (c3 = i383:0:0 - 1 - i464:0:0 && (c2 = i383:0:0 - 1 - i464:0:0 && (c1 = 0 && c = 0))) && (i464:0:0 > -1 && i38:0:0 > 0 && i4:0:0 > i38:0:0 && i400:0:0 > 0 && i4:0:0 > -1) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Termination digraph: Nodes: (1) f1321_0_main_LE(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f1321_0_main_LE(java.lang.Object(ARRAY(x4)), x8, x8, x4, x7, x4) :|: x4 > -1 && x4 <= x7 && x6 > 0 && x8 = x5 - 1 && x8 = x5 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (21) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (22) Obligation: Rules: f1321_0_main_LE(java.lang.Object(ARRAY(x4:0)), x5:0, x6:0, x4:0, x7:0, x4:0) -> f1321_0_main_LE(java.lang.Object(ARRAY(x4:0)), x5:0 - 1, x5:0 - 1, x4:0, x7:0, x4:0) :|: x4:0 > -1 && x7:0 >= x4:0 && x6:0 > 0 ---------------------------------------- (23) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1321_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: f1321_0_main_LE(c, x5:0, x6:0, x4:0, x7:0, x4:0) -> f1321_0_main_LE(c1, c2, c3, x4:0, x7:0, x4:0) :|: c3 = x5:0 - 1 && (c2 = x5:0 - 1 && (c1 = 0 && c = 0)) && (x4:0 > -1 && x7:0 >= x4:0 && x6:0 > 0) ---------------------------------------- (25) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1321_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: f1321_0_main_LE(c, x5:0, x6:0, x4:0, x7:0, x4:0) -> f1321_0_main_LE(c1, c2, c3, x4:0, x7:0, x4:0) :|: c3 = x5:0 - 1 && (c2 = x5:0 - 1 && (c1 = 0 && c = 0)) && (x4:0 > -1 && x7:0 >= x4:0 && x6:0 > 0) The following rules are bounded: f1321_0_main_LE(c, x5:0, x6:0, x4:0, x7:0, x4:0) -> f1321_0_main_LE(c1, c2, c3, x4:0, x7:0, x4:0) :|: c3 = x5:0 - 1 && (c2 = x5:0 - 1 && (c1 = 0 && c = 0)) && (x4:0 > -1 && x7:0 >= x4:0 && x6:0 > 0) ---------------------------------------- (26) YES