/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/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, 626 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 11 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 13 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 25 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 9 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 7 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 79 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 42 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 0 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 39 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 24 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 14 ms] (45) IntTRS (46) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (47) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class NestedLoop { public static void main(String[] args) { int i, j, z, n; n = args.length; int[] a = new int[n]; for(i = 0;i< n-1;i++){ a[i] = args[i].length(); } for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if(a[i]< a[j]){ z = a[i]; a[i] = a[j]; a[j] = z; } } } for(i = 0;i< n -1;i++){ } } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class NestedLoop { public static void main(String[] args) { int i, j, z, n; n = args.length; int[] a = new int[n]; for(i = 0;i< n-1;i++){ a[i] = args[i].length(); } for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if(a[i]< a[j]){ z = a[i]; a[i] = a[j]; a[j] = z; } } } for(i = 0;i< n -1;i++){ } } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: NestedLoop.main([Ljava/lang/String;)V: Graph of 324 nodes with 3 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 3 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: NestedLoop.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 9 IRulesP rules: f1715_0_main_Load(EOS(STATIC_1715), java.lang.Object(ARRAY(i289)), i320, i289, i320) -> f1787_0_main_ConstantStackPush(EOS(STATIC_1787), java.lang.Object(ARRAY(i289)), i320, i289, i320, i289) :|: TRUE f1787_0_main_ConstantStackPush(EOS(STATIC_1787), java.lang.Object(ARRAY(i289)), i320, i289, i320, i289) -> f1809_0_main_IntArithmetic(EOS(STATIC_1809), java.lang.Object(ARRAY(i289)), i320, i289, i320, i289, 1) :|: TRUE f1809_0_main_IntArithmetic(EOS(STATIC_1809), java.lang.Object(ARRAY(i289)), i320, i289, i320, i289, matching1) -> f1821_0_main_GE(EOS(STATIC_1821), java.lang.Object(ARRAY(i289)), i320, i289, i320, i289 - 1) :|: i289 >= 0 && matching1 = 1 f1821_0_main_GE(EOS(STATIC_1821), java.lang.Object(ARRAY(i289)), i320, i289, i320, i339) -> f1849_0_main_GE(EOS(STATIC_1849), java.lang.Object(ARRAY(i289)), i320, i289, i320, i339) :|: i320 < i339 f1849_0_main_GE(EOS(STATIC_1849), java.lang.Object(ARRAY(i289)), i320, i289, i320, i339) -> f1893_0_main_Inc(EOS(STATIC_1893), java.lang.Object(ARRAY(i289)), i320, i289) :|: i320 < i339 f1893_0_main_Inc(EOS(STATIC_1893), java.lang.Object(ARRAY(i289)), i320, i289) -> f1905_0_main_JMP(EOS(STATIC_1905), java.lang.Object(ARRAY(i289)), i320 + 1, i289) :|: TRUE f1905_0_main_JMP(EOS(STATIC_1905), java.lang.Object(ARRAY(i289)), i353, i289) -> f1920_0_main_Load(EOS(STATIC_1920), java.lang.Object(ARRAY(i289)), i353, i289) :|: TRUE f1920_0_main_Load(EOS(STATIC_1920), java.lang.Object(ARRAY(i289)), i353, i289) -> f1700_0_main_Load(EOS(STATIC_1700), java.lang.Object(ARRAY(i289)), i353, i289) :|: TRUE f1700_0_main_Load(EOS(STATIC_1700), java.lang.Object(ARRAY(i289)), i320, i289) -> f1715_0_main_Load(EOS(STATIC_1715), java.lang.Object(ARRAY(i289)), i320, i289, i320) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f1715_0_main_Load(EOS(STATIC_1715), java.lang.Object(ARRAY(i289:0)), i320:0, i289:0, i320:0) -> f1715_0_main_Load(EOS(STATIC_1715), java.lang.Object(ARRAY(i289:0)), i320:0 + 1, i289:0, i320:0 + 1) :|: i289:0 > -1 && i320:0 < i289:0 - 1 Filtered constant ground arguments: f1715_0_main_Load(x1, x2, x3, x4, x5) -> f1715_0_main_Load(x2, x3, x4, x5) EOS(x1) -> EOS Filtered duplicate arguments: f1715_0_main_Load(x1, x2, x3, x4) -> f1715_0_main_Load(x1, x3, x4) Finished conversion. Obtained 1 rules.P rules: f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, i320:0, i289:0) -> f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, i320:0 + 1, i289:0) :|: i289:0 > -1 && i320:0 < i289:0 - 1 ---------------------------------------- (9) Obligation: Rules: f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, i320:0, i289:0) -> f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, i320:0 + 1, i289:0) :|: i289:0 > -1 && i320:0 < i289:0 - 1 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, i320:0, i289:0) -> f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, arith, i289:0) :|: i289:0 > -1 && i320:0 < i289:0 - 1 && arith = i320:0 + 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, i320:0, i289:0) -> f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, arith, i289:0) :|: i289:0 > -1 && i320:0 < i289:0 - 1 && arith = i320:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, i320:0, i289:0) -> f1715_0_main_Load(java.lang.Object(ARRAY(i289:0)), i289:0, arith, i289:0) :|: i289:0 > -1 && i320:0 < i289:0 - 1 && arith = i320:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1715_0_main_Load(java.lang.Object(ARRAY(i289:0:0)), i289:0:0, i320:0:0, i289:0:0) -> f1715_0_main_Load(java.lang.Object(ARRAY(i289:0:0)), i289:0:0, i320:0:0 + 1, i289:0:0) :|: i289:0:0 > -1 && i320:0:0 < i289:0:0 - 1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1715_0_main_Load(VARIABLE, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1715_0_main_Load(c, i289:0:0, i320:0:0, i289:0:0) -> f1715_0_main_Load(c1, i289:0:0, c2, i289:0:0) :|: c2 = i320:0:0 + 1 && (c1 = 0 && c = 0) && (i289:0:0 > -1 && i320:0:0 < i289:0:0 - 1) ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1715_0_main_Load ] = f1715_0_main_Load_4 + -1*f1715_0_main_Load_3 The following rules are decreasing: f1715_0_main_Load(c, i289:0:0, i320:0:0, i289:0:0) -> f1715_0_main_Load(c1, i289:0:0, c2, i289:0:0) :|: c2 = i320:0:0 + 1 && (c1 = 0 && c = 0) && (i289:0:0 > -1 && i320:0:0 < i289:0:0 - 1) The following rules are bounded: f1715_0_main_Load(c, i289:0:0, i320:0:0, i289:0:0) -> f1715_0_main_Load(c1, i289:0:0, c2, i289:0:0) :|: c2 = i320:0:0 + 1 && (c1 = 0 && c = 0) && (i289:0:0 > -1 && i320:0:0 < i289:0:0 - 1) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: NestedLoop.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 53 IRulesP rules: f1239_0_main_Load(EOS(STATIC_1239), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) -> f1240_0_main_ConstantStackPush(EOS(STATIC_1240), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200) :|: TRUE f1240_0_main_ConstantStackPush(EOS(STATIC_1240), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200) -> f1243_0_main_IntArithmetic(EOS(STATIC_1243), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200, 1) :|: TRUE f1243_0_main_IntArithmetic(EOS(STATIC_1243), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200, matching1) -> f1245_0_main_GE(EOS(STATIC_1245), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200 - 1) :|: i200 >= 0 && matching1 = 1 f1245_0_main_GE(EOS(STATIC_1245), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) -> f1250_0_main_GE(EOS(STATIC_1250), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) :|: i255 < i257 f1250_0_main_GE(EOS(STATIC_1250), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) -> f1344_0_main_Load(EOS(STATIC_1344), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) :|: i255 < i257 f1344_0_main_Load(EOS(STATIC_1344), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1349_0_main_ConstantStackPush(EOS(STATIC_1349), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1349_0_main_ConstantStackPush(EOS(STATIC_1349), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) -> f1354_0_main_IntArithmetic(EOS(STATIC_1354), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, 1) :|: TRUE f1354_0_main_IntArithmetic(EOS(STATIC_1354), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, matching1) -> f1359_0_main_Store(EOS(STATIC_1359), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255 + 1) :|: i255 >= 0 && matching1 = 1 f1359_0_main_Store(EOS(STATIC_1359), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i272) -> f1362_0_main_Load(EOS(STATIC_1362), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1362_0_main_Load(EOS(STATIC_1362), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) -> f1367_0_main_Load(EOS(STATIC_1367), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272) :|: TRUE f1367_0_main_Load(EOS(STATIC_1367), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272) -> f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272, i200) :|: TRUE f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272, i200) -> f1386_0_main_GE(EOS(STATIC_1386), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272, i200) :|: i272 >= i200 f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272, i200) -> f1387_0_main_GE(EOS(STATIC_1387), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272, i200) :|: i272 < i200 f1386_0_main_GE(EOS(STATIC_1386), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272, i200) -> f1390_0_main_Inc(EOS(STATIC_1390), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) :|: i272 >= i200 f1390_0_main_Inc(EOS(STATIC_1390), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1420_0_main_JMP(EOS(STATIC_1420), java.lang.Object(ARRAY(i200)), i255 + 1, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1420_0_main_JMP(EOS(STATIC_1420), java.lang.Object(ARRAY(i200)), i280, i200, java.lang.Object(ARRAY(i200))) -> f1477_0_main_Load(EOS(STATIC_1477), java.lang.Object(ARRAY(i200)), i280, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1477_0_main_Load(EOS(STATIC_1477), java.lang.Object(ARRAY(i200)), i280, i200, java.lang.Object(ARRAY(i200))) -> f1238_0_main_Load(EOS(STATIC_1238), java.lang.Object(ARRAY(i200)), i280, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1238_0_main_Load(EOS(STATIC_1238), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1239_0_main_Load(EOS(STATIC_1239), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1387_0_main_GE(EOS(STATIC_1387), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i272, i200) -> f1391_0_main_Load(EOS(STATIC_1391), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) :|: i272 < i200 f1391_0_main_Load(EOS(STATIC_1391), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) -> f1453_0_main_Load(EOS(STATIC_1453), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1453_0_main_Load(EOS(STATIC_1453), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1479_0_main_ArrayAccess(EOS(STATIC_1479), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1479_0_main_ArrayAccess(EOS(STATIC_1479), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1482_0_main_ArrayAccess(EOS(STATIC_1482), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1482_0_main_ArrayAccess(EOS(STATIC_1482), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1485_0_main_Load(EOS(STATIC_1485), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306) :|: i255 < i200 f1485_0_main_Load(EOS(STATIC_1485), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306) -> f1488_0_main_Load(EOS(STATIC_1488), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, java.lang.Object(ARRAY(i200))) :|: TRUE f1488_0_main_Load(EOS(STATIC_1488), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, java.lang.Object(ARRAY(i200))) -> f1492_0_main_ArrayAccess(EOS(STATIC_1492), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, java.lang.Object(ARRAY(i200)), i272) :|: TRUE f1492_0_main_ArrayAccess(EOS(STATIC_1492), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, java.lang.Object(ARRAY(i200)), i272) -> f1522_0_main_ArrayAccess(EOS(STATIC_1522), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, java.lang.Object(ARRAY(i200)), i272) :|: TRUE f1522_0_main_ArrayAccess(EOS(STATIC_1522), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, java.lang.Object(ARRAY(i200)), i272) -> f1537_0_main_GE(EOS(STATIC_1537), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, i308) :|: i272 < i200 f1537_0_main_GE(EOS(STATIC_1537), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, i308) -> f1547_0_main_GE(EOS(STATIC_1547), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, i308) :|: i306 >= i308 f1537_0_main_GE(EOS(STATIC_1537), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, i308) -> f1548_0_main_GE(EOS(STATIC_1548), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, i308) :|: i306 < i308 f1547_0_main_GE(EOS(STATIC_1547), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, i308) -> f1552_0_main_Inc(EOS(STATIC_1552), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) :|: i306 >= i308 f1552_0_main_Inc(EOS(STATIC_1552), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) -> f1557_0_main_JMP(EOS(STATIC_1557), java.lang.Object(ARRAY(i200)), i255, i272 + 1, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1557_0_main_JMP(EOS(STATIC_1557), java.lang.Object(ARRAY(i200)), i255, i314, i200, java.lang.Object(ARRAY(i200))) -> f1568_0_main_Load(EOS(STATIC_1568), java.lang.Object(ARRAY(i200)), i255, i314, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1568_0_main_Load(EOS(STATIC_1568), java.lang.Object(ARRAY(i200)), i255, i314, i200, java.lang.Object(ARRAY(i200))) -> f1362_0_main_Load(EOS(STATIC_1362), java.lang.Object(ARRAY(i200)), i255, i314, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1548_0_main_GE(EOS(STATIC_1548), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i306, i308) -> f1553_0_main_Load(EOS(STATIC_1553), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) :|: i306 < i308 f1553_0_main_Load(EOS(STATIC_1553), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) -> f1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1590_0_main_ArrayAccess(EOS(STATIC_1590), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1590_0_main_ArrayAccess(EOS(STATIC_1590), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1599_0_main_ArrayAccess(EOS(STATIC_1599), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1599_0_main_ArrayAccess(EOS(STATIC_1599), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1610_0_main_Store(EOS(STATIC_1610), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i318) :|: i255 < i200 f1610_0_main_Store(EOS(STATIC_1610), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), i318) -> f1627_0_main_Load(EOS(STATIC_1627), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1627_0_main_Load(EOS(STATIC_1627), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200))) -> f1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1682_0_main_Load(EOS(STATIC_1682), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1682_0_main_Load(EOS(STATIC_1682), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1704_0_main_Load(EOS(STATIC_1704), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200))) :|: TRUE f1704_0_main_Load(EOS(STATIC_1704), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200))) -> f1717_0_main_ArrayAccess(EOS(STATIC_1717), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i272) :|: TRUE f1717_0_main_ArrayAccess(EOS(STATIC_1717), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i272) -> f1790_0_main_ArrayAccess(EOS(STATIC_1790), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i272) :|: TRUE f1790_0_main_ArrayAccess(EOS(STATIC_1790), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i272) -> f1812_0_main_ArrayAccess(EOS(STATIC_1812), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i337) :|: i272 < i200 f1812_0_main_ArrayAccess(EOS(STATIC_1812), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i337) -> f1823_0_main_ArrayAccess(EOS(STATIC_1823), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i337) :|: TRUE f1823_0_main_ArrayAccess(EOS(STATIC_1823), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i337) -> f1851_0_main_Load(EOS(STATIC_1851), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200))) :|: i255 < i200 f1851_0_main_Load(EOS(STATIC_1851), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200))) -> f1895_0_main_Load(EOS(STATIC_1895), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1895_0_main_Load(EOS(STATIC_1895), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1906_0_main_Load(EOS(STATIC_1906), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i272) :|: TRUE f1906_0_main_Load(EOS(STATIC_1906), java.lang.Object(ARRAY(i200)), i255, i272, i318, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i272) -> f1921_0_main_ArrayAccess(EOS(STATIC_1921), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i272, i318) :|: TRUE f1921_0_main_ArrayAccess(EOS(STATIC_1921), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i272, i318) -> f1927_0_main_ArrayAccess(EOS(STATIC_1927), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i272, i318) :|: TRUE f1927_0_main_ArrayAccess(EOS(STATIC_1927), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i272, i318) -> f1932_0_main_Inc(EOS(STATIC_1932), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) :|: i272 < i200 f1932_0_main_Inc(EOS(STATIC_1932), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) -> f1552_0_main_Inc(EOS(STATIC_1552), java.lang.Object(ARRAY(i200)), i255, i272, i200, java.lang.Object(ARRAY(i200))) :|: TRUE Combined rules. Obtained 3 IRulesP rules: f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200:0)), i255:0, i272:0, i200:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200:0)), i255:0, i272:0 + 1, i200:0, java.lang.Object(ARRAY(i200:0)), i272:0 + 1, i200:0) :|: i272:0 < i200:0 && i255:0 < i200:0 && i308:0 > i306:0 f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200:0)), i255:0, i272:0, i200:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200:0)), i255:0, i272:0 + 1, i200:0, java.lang.Object(ARRAY(i200:0)), i272:0 + 1, i200:0) :|: i272:0 < i200:0 && i255:0 < i200:0 && i308:0 <= i306:0 f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200:0)), i255:0, i272:0, i200:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(EOS(STATIC_1371), java.lang.Object(ARRAY(i200:0)), i255:0 + 1, i255:0 + 2, i200:0, java.lang.Object(ARRAY(i200:0)), i255:0 + 2, i200:0) :|: i200:0 > -1 && i255:0 + 1 < i200:0 - 1 && i255:0 > -2 && i272:0 >= i200:0 Filtered constant ground arguments: f1371_0_main_GE(x1, x2, x3, x4, x5, x6, x7, x8) -> f1371_0_main_GE(x2, x3, x4, x5, x6, x7, x8) EOS(x1) -> EOS Filtered duplicate arguments: f1371_0_main_GE(x1, x2, x3, x4, x5, x6, x7) -> f1371_0_main_GE(x2, x5, x6) Finished conversion. Obtained 3 rules.P rules: f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0 + 1, i200:0) :|: i255:0 < i200:0 && i308:0 > i306:0 && i272:0 < i200:0 f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0 + 1, i200:0) :|: i255:0 < i200:0 && i308:0 <= i306:0 && i272:0 < i200:0 f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(i255:0 + 1, java.lang.Object(ARRAY(i200:0)), i255:0 + 2, i200:0) :|: i255:0 + 1 < i200:0 - 1 && i200:0 > -1 && i272:0 >= i200:0 && i255:0 > -2 ---------------------------------------- (22) Obligation: Rules: f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0 + 1, i200:0) :|: i255:0 < i200:0 && i308:0 > i306:0 && i272:0 < i200:0 f1371_0_main_GE(x, java.lang.Object(ARRAY(x1)), x2, x1) -> f1371_0_main_GE(x, java.lang.Object(ARRAY(x1)), x2 + 1, x1) :|: x < x1 && x3 <= x4 && x2 < x1 f1371_0_main_GE(x5, java.lang.Object(ARRAY(x6)), x7, x6) -> f1371_0_main_GE(x5 + 1, java.lang.Object(ARRAY(x6)), x5 + 2, x6) :|: x5 + 1 < x6 - 1 && x6 > -1 && x7 >= x6 && x5 > -2 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), arith, i200:0) :|: i255:0 < i200:0 && i308:0 > i306:0 && i272:0 < i200:0 && arith = i272:0 + 1 f1371_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x10, x9) -> f1371_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x11, x9) :|: x8 < x9 && x12 <= x13 && x10 < x9 && x11 = x10 + 1 f1371_0_main_GE(x14, java.lang.Object(ARRAY(x15)), x16, x15) -> f1371_0_main_GE(x17, java.lang.Object(ARRAY(x15)), x18, x15) :|: x14 + 1 < x15 - 1 && x15 > -1 && x16 >= x15 && x14 > -2 && x17 = x14 + 1 && x18 = x14 + 2 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), arith, i200:0) :|: i255:0 < i200:0 && i308:0 > i306:0 && i272:0 < i200:0 && arith = i272:0 + 1 (2) f1371_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x10, x9) -> f1371_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x11, x9) :|: x8 < x9 && x12 <= x13 && x10 < x9 && x11 = x10 + 1 (3) f1371_0_main_GE(x14, java.lang.Object(ARRAY(x15)), x16, x15) -> f1371_0_main_GE(x17, java.lang.Object(ARRAY(x15)), x18, x15) :|: x14 + 1 < x15 - 1 && x15 > -1 && x16 >= x15 && x14 > -2 && x17 = x14 + 1 && x18 = x14 + 2 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i272:0, i200:0) -> f1371_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), arith, i200:0) :|: i255:0 < i200:0 && i308:0 > i306:0 && i272:0 < i200:0 && arith = i272:0 + 1 (2) f1371_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x10, x9) -> f1371_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x11, x9) :|: x8 < x9 && x12 <= x13 && x10 < x9 && x11 = x10 + 1 (3) f1371_0_main_GE(x14, java.lang.Object(ARRAY(x15)), x16, x15) -> f1371_0_main_GE(x17, java.lang.Object(ARRAY(x15)), x18, x15) :|: x14 + 1 < x15 - 1 && x15 > -1 && x16 >= x15 && x14 > -2 && x17 = x14 + 1 && x18 = x14 + 2 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1371_0_main_GE(x8:0, java.lang.Object(ARRAY(x9:0)), x10:0, x9:0) -> f1371_0_main_GE(x8:0, java.lang.Object(ARRAY(x9:0)), x10:0 + 1, x9:0) :|: x9:0 > x8:0 && x13:0 >= x12:0 && x9:0 > x10:0 f1371_0_main_GE(i255:0:0, java.lang.Object(ARRAY(i200:0:0)), i272:0:0, i200:0:0) -> f1371_0_main_GE(i255:0:0, java.lang.Object(ARRAY(i200:0:0)), i272:0:0 + 1, i200:0:0) :|: i255:0:0 < i200:0:0 && i308:0:0 > i306:0:0 && i272:0:0 < i200:0:0 f1371_0_main_GE(x14:0, java.lang.Object(ARRAY(x15:0)), x16:0, x15:0) -> f1371_0_main_GE(x14:0 + 1, java.lang.Object(ARRAY(x15:0)), x14:0 + 2, x15:0) :|: x16:0 >= x15:0 && x14:0 > -2 && x15:0 > -1 && x15:0 - 1 > x14:0 + 1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1371_0_main_GE(INTEGER, VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1371_0_main_GE(x8:0, c, x10:0, x9:0) -> f1371_0_main_GE(x8:0, c1, c2, x9:0) :|: c2 = x10:0 + 1 && (c1 = 0 && c = 0) && (x9:0 > x8:0 && x13:0 >= x12:0 && x9:0 > x10:0) f1371_0_main_GE(i255:0:0, c3, i272:0:0, i200:0:0) -> f1371_0_main_GE(i255:0:0, c4, c5, i200:0:0) :|: c5 = i272:0:0 + 1 && (c4 = 0 && c3 = 0) && (i255:0:0 < i200:0:0 && i308:0:0 > i306:0:0 && i272:0:0 < i200:0:0) f1371_0_main_GE(x14:0, c6, x16:0, x15:0) -> f1371_0_main_GE(c7, c8, c9, x15:0) :|: c9 = x14:0 + 2 && (c8 = 0 && (c7 = x14:0 + 1 && c6 = 0)) && (x16:0 >= x15:0 && x14:0 > -2 && x15:0 > -1 && x15:0 - 1 > x14:0 + 1) ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1371_0_main_GE(x, x1, x2, x3)] = -x + c1*x1 + x3 The following rules are decreasing: f1371_0_main_GE(x14:0, c6, x16:0, x15:0) -> f1371_0_main_GE(c7, c8, c9, x15:0) :|: c9 = x14:0 + 2 && (c8 = 0 && (c7 = x14:0 + 1 && c6 = 0)) && (x16:0 >= x15:0 && x14:0 > -2 && x15:0 > -1 && x15:0 - 1 > x14:0 + 1) The following rules are bounded: f1371_0_main_GE(i255:0:0, c3, i272:0:0, i200:0:0) -> f1371_0_main_GE(i255:0:0, c4, c5, i200:0:0) :|: c5 = i272:0:0 + 1 && (c4 = 0 && c3 = 0) && (i255:0:0 < i200:0:0 && i308:0:0 > i306:0:0 && i272:0:0 < i200:0:0) f1371_0_main_GE(x14:0, c6, x16:0, x15:0) -> f1371_0_main_GE(c7, c8, c9, x15:0) :|: c9 = x14:0 + 2 && (c8 = 0 && (c7 = x14:0 + 1 && c6 = 0)) && (x16:0 >= x15:0 && x14:0 > -2 && x15:0 > -1 && x15:0 - 1 > x14:0 + 1) ---------------------------------------- (32) Obligation: Rules: f1371_0_main_GE(x8:0, c, x10:0, x9:0) -> f1371_0_main_GE(x8:0, c1, c2, x9:0) :|: c2 = x10:0 + 1 && (c1 = 0 && c = 0) && (x9:0 > x8:0 && x13:0 >= x12:0 && x9:0 > x10:0) f1371_0_main_GE(i255:0:0, c3, i272:0:0, i200:0:0) -> f1371_0_main_GE(i255:0:0, c4, c5, i200:0:0) :|: c5 = i272:0:0 + 1 && (c4 = 0 && c3 = 0) && (i255:0:0 < i200:0:0 && i308:0:0 > i306:0:0 && i272:0:0 < i200:0:0) ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1371_0_main_GE ] = f1371_0_main_GE_4 + -1*f1371_0_main_GE_3 The following rules are decreasing: f1371_0_main_GE(x8:0, c, x10:0, x9:0) -> f1371_0_main_GE(x8:0, c1, c2, x9:0) :|: c2 = x10:0 + 1 && (c1 = 0 && c = 0) && (x9:0 > x8:0 && x13:0 >= x12:0 && x9:0 > x10:0) f1371_0_main_GE(i255:0:0, c3, i272:0:0, i200:0:0) -> f1371_0_main_GE(i255:0:0, c4, c5, i200:0:0) :|: c5 = i272:0:0 + 1 && (c4 = 0 && c3 = 0) && (i255:0:0 < i200:0:0 && i308:0:0 > i306:0:0 && i272:0:0 < i200:0:0) The following rules are bounded: f1371_0_main_GE(x8:0, c, x10:0, x9:0) -> f1371_0_main_GE(x8:0, c1, c2, x9:0) :|: c2 = x10:0 + 1 && (c1 = 0 && c = 0) && (x9:0 > x8:0 && x13:0 >= x12:0 && x9:0 > x10:0) f1371_0_main_GE(i255:0:0, c3, i272:0:0, i200:0:0) -> f1371_0_main_GE(i255:0:0, c4, c5, i200:0:0) :|: c5 = i272:0:0 + 1 && (c4 = 0 && c3 = 0) && (i255:0:0 < i200:0:0 && i308:0:0 > i306:0:0 && i272:0:0 < i200:0:0) ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: NestedLoop.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: ---------------------------------------- (36) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 24 IRulesP rules: f526_0_main_Load(EOS(STATIC_526), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126) -> f528_0_main_ConstantStackPush(EOS(STATIC_528), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i39) :|: TRUE f528_0_main_ConstantStackPush(EOS(STATIC_528), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i39) -> f530_0_main_IntArithmetic(EOS(STATIC_530), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i39, 1) :|: TRUE f530_0_main_IntArithmetic(EOS(STATIC_530), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i39, matching1) -> f532_0_main_GE(EOS(STATIC_532), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i39 - 1) :|: i39 >= 0 && matching1 = 1 f532_0_main_GE(EOS(STATIC_532), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i130) -> f542_0_main_GE(EOS(STATIC_542), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i130) :|: i126 < i130 f542_0_main_GE(EOS(STATIC_542), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126, i130) -> f563_0_main_Load(EOS(STATIC_563), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39))) :|: i126 < i130 f563_0_main_Load(EOS(STATIC_563), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39))) -> f566_0_main_Load(EOS(STATIC_566), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39))) :|: TRUE f566_0_main_Load(EOS(STATIC_566), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39))) -> f568_0_main_Load(EOS(STATIC_568), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126) :|: TRUE f568_0_main_Load(EOS(STATIC_568), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126) -> f572_0_main_Load(EOS(STATIC_572), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(ARRAY(i39))) :|: TRUE f572_0_main_Load(EOS(STATIC_572), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(ARRAY(i39))) -> f576_0_main_ArrayAccess(EOS(STATIC_576), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(ARRAY(i39)), i126) :|: TRUE f576_0_main_ArrayAccess(EOS(STATIC_576), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(ARRAY(i39)), i126) -> f580_0_main_ArrayAccess(EOS(STATIC_580), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(ARRAY(i39)), i126) :|: TRUE f580_0_main_ArrayAccess(EOS(STATIC_580), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(ARRAY(i39)), i126) -> f584_0_main_InvokeMethod(EOS(STATIC_584), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, o38) :|: i126 < i39 f584_0_main_InvokeMethod(EOS(STATIC_584), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o40sub)) -> f590_0_main_InvokeMethod(EOS(STATIC_590), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o40sub)) :|: TRUE f590_0_main_InvokeMethod(EOS(STATIC_590), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o41sub)) -> f598_0_main_InvokeMethod(EOS(STATIC_598), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o41sub)) :|: TRUE f598_0_main_InvokeMethod(EOS(STATIC_598), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o41sub)) -> f606_0_length_Load(EOS(STATIC_606), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o41sub)) :|: TRUE f606_0_length_Load(EOS(STATIC_606), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o41sub)) -> f622_0_length_FieldAccess(EOS(STATIC_622), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(o41sub)) :|: TRUE f622_0_length_FieldAccess(EOS(STATIC_622), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(java.lang.String(EOC, i143))) -> f628_0_length_FieldAccess(EOS(STATIC_628), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(java.lang.String(EOC, i143))) :|: i143 >= 0 f628_0_length_FieldAccess(EOS(STATIC_628), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, java.lang.Object(java.lang.String(EOC, i143))) -> f635_0_length_Return(EOS(STATIC_635), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i143) :|: TRUE f635_0_length_Return(EOS(STATIC_635), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i143) -> f640_0_main_ArrayAccess(EOS(STATIC_640), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i143) :|: TRUE f640_0_main_ArrayAccess(EOS(STATIC_640), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i143) -> f656_0_main_ArrayAccess(EOS(STATIC_656), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i143) :|: TRUE f656_0_main_ArrayAccess(EOS(STATIC_656), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i143) -> f684_0_main_Inc(EOS(STATIC_684), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39))) :|: i126 < i39 f684_0_main_Inc(EOS(STATIC_684), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39))) -> f698_0_main_JMP(EOS(STATIC_698), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126 + 1, i39, java.lang.Object(ARRAY(i39))) :|: TRUE f698_0_main_JMP(EOS(STATIC_698), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i153, i39, java.lang.Object(ARRAY(i39))) -> f736_0_main_Load(EOS(STATIC_736), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i153, i39, java.lang.Object(ARRAY(i39))) :|: TRUE f736_0_main_Load(EOS(STATIC_736), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i153, i39, java.lang.Object(ARRAY(i39))) -> f522_0_main_Load(EOS(STATIC_522), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i153, i39, java.lang.Object(ARRAY(i39))) :|: TRUE f522_0_main_Load(EOS(STATIC_522), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39))) -> f526_0_main_Load(EOS(STATIC_526), java.lang.Object(ARRAY(i39)), java.lang.Object(ARRAY(i39)), i126, i39, java.lang.Object(ARRAY(i39)), i126) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f526_0_main_Load(EOS(STATIC_526), java.lang.Object(ARRAY(i39:0)), java.lang.Object(ARRAY(i39:0)), i126:0, i39:0, java.lang.Object(ARRAY(i39:0)), i126:0) -> f526_0_main_Load(EOS(STATIC_526), java.lang.Object(ARRAY(i39:0)), java.lang.Object(ARRAY(i39:0)), i126:0 + 1, i39:0, java.lang.Object(ARRAY(i39:0)), i126:0 + 1) :|: i39:0 > -1 && i39:0 - 1 > i126:0 && i39:0 > i126:0 && i143:0 > -1 Filtered constant ground arguments: f526_0_main_Load(x1, x2, x3, x4, x5, x6, x7) -> f526_0_main_Load(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS Filtered duplicate arguments: f526_0_main_Load(x1, x2, x3, x4, x5, x6) -> f526_0_main_Load(x4, x5, x6) Finished conversion. Obtained 1 rules.P rules: f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), i126:0, i39:0) -> f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), i126:0 + 1, i39:0) :|: i39:0 - 1 > i126:0 && i39:0 > -1 && i143:0 > -1 && i39:0 > i126:0 ---------------------------------------- (37) Obligation: Rules: f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), i126:0, i39:0) -> f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), i126:0 + 1, i39:0) :|: i39:0 - 1 > i126:0 && i39:0 > -1 && i143:0 > -1 && i39:0 > i126:0 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), i126:0, i39:0) -> f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), arith, i39:0) :|: i39:0 - 1 > i126:0 && i39:0 > -1 && i143:0 > -1 && i39:0 > i126:0 && arith = i126:0 + 1 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), i126:0, i39:0) -> f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), arith, i39:0) :|: i39:0 - 1 > i126:0 && i39:0 > -1 && i143:0 > -1 && i39:0 > i126:0 && arith = i126:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), i126:0, i39:0) -> f526_0_main_Load(i39:0, java.lang.Object(ARRAY(i39:0)), arith, i39:0) :|: i39:0 - 1 > i126:0 && i39:0 > -1 && i143:0 > -1 && i39:0 > i126:0 && arith = i126:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f526_0_main_Load(i39:0:0, java.lang.Object(ARRAY(i39:0:0)), i126:0:0, i39:0:0) -> f526_0_main_Load(i39:0:0, java.lang.Object(ARRAY(i39:0:0)), i126:0:0 + 1, i39:0:0) :|: i143:0:0 > -1 && i39:0:0 > i126:0:0 && i39:0:0 > -1 && i39:0:0 - 1 > i126:0:0 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f526_0_main_Load(INTEGER, VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f526_0_main_Load(i39:0:0, c, i126:0:0, i39:0:0) -> f526_0_main_Load(i39:0:0, c1, c2, i39:0:0) :|: c2 = i126:0:0 + 1 && (c1 = 0 && c = 0) && (i143:0:0 > -1 && i39:0:0 > i126:0:0 && i39:0:0 > -1 && i39:0:0 - 1 > i126:0:0) ---------------------------------------- (46) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f526_0_main_Load(x, x1, x2, x3)] = c1*x1 - x2 + x3 The following rules are decreasing: f526_0_main_Load(i39:0:0, c, i126:0:0, i39:0:0) -> f526_0_main_Load(i39:0:0, c1, c2, i39:0:0) :|: c2 = i126:0:0 + 1 && (c1 = 0 && c = 0) && (i143:0:0 > -1 && i39:0:0 > i126:0:0 && i39:0:0 > -1 && i39:0:0 - 1 > i126:0:0) The following rules are bounded: f526_0_main_Load(i39:0:0, c, i126:0:0, i39:0:0) -> f526_0_main_Load(i39:0:0, c1, c2, i39:0:0) :|: c2 = i126:0:0 + 1 && (c1 = 0 && c = 0) && (i143:0:0 > -1 && i39:0:0 > i126:0:0 && i39:0:0 > -1 && i39:0:0 - 1 > i126:0:0) ---------------------------------------- (47) YES