/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: 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, 596 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 2 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 61 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 37 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 17 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 122 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 103 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 46 ms] (30) IntTRS (31) RankingReductionPairProof [EQUIVALENT, 17 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 0 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 100 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 23 ms] (45) IntTRS (46) RankingReductionPairProof [EQUIVALENT, 9 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: f1500_0_main_Load(EOS(STATIC_1500), java.lang.Object(ARRAY(i265)), i299, i265, i299) -> f1518_0_main_ConstantStackPush(EOS(STATIC_1518), java.lang.Object(ARRAY(i265)), i299, i265, i299, i265) :|: TRUE f1518_0_main_ConstantStackPush(EOS(STATIC_1518), java.lang.Object(ARRAY(i265)), i299, i265, i299, i265) -> f1524_0_main_IntArithmetic(EOS(STATIC_1524), java.lang.Object(ARRAY(i265)), i299, i265, i299, i265, 1) :|: TRUE f1524_0_main_IntArithmetic(EOS(STATIC_1524), java.lang.Object(ARRAY(i265)), i299, i265, i299, i265, matching1) -> f1528_0_main_GE(EOS(STATIC_1528), java.lang.Object(ARRAY(i265)), i299, i265, i299, i265 - 1) :|: i265 >= 0 && matching1 = 1 f1528_0_main_GE(EOS(STATIC_1528), java.lang.Object(ARRAY(i265)), i299, i265, i299, i303) -> f1545_0_main_GE(EOS(STATIC_1545), java.lang.Object(ARRAY(i265)), i299, i265, i299, i303) :|: i299 < i303 f1545_0_main_GE(EOS(STATIC_1545), java.lang.Object(ARRAY(i265)), i299, i265, i299, i303) -> f1575_0_main_Inc(EOS(STATIC_1575), java.lang.Object(ARRAY(i265)), i299, i265) :|: i299 < i303 f1575_0_main_Inc(EOS(STATIC_1575), java.lang.Object(ARRAY(i265)), i299, i265) -> f1584_0_main_JMP(EOS(STATIC_1584), java.lang.Object(ARRAY(i265)), i299 + 1, i265) :|: TRUE f1584_0_main_JMP(EOS(STATIC_1584), java.lang.Object(ARRAY(i265)), i322, i265) -> f1590_0_main_Load(EOS(STATIC_1590), java.lang.Object(ARRAY(i265)), i322, i265) :|: TRUE f1590_0_main_Load(EOS(STATIC_1590), java.lang.Object(ARRAY(i265)), i322, i265) -> f1482_0_main_Load(EOS(STATIC_1482), java.lang.Object(ARRAY(i265)), i322, i265) :|: TRUE f1482_0_main_Load(EOS(STATIC_1482), java.lang.Object(ARRAY(i265)), i299, i265) -> f1500_0_main_Load(EOS(STATIC_1500), java.lang.Object(ARRAY(i265)), i299, i265, i299) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f1500_0_main_Load(EOS(STATIC_1500), java.lang.Object(ARRAY(i265:0)), i299:0, i265:0, i299:0) -> f1500_0_main_Load(EOS(STATIC_1500), java.lang.Object(ARRAY(i265:0)), i299:0 + 1, i265:0, i299:0 + 1) :|: i265:0 > -1 && i299:0 < i265:0 - 1 Filtered constant ground arguments: f1500_0_main_Load(x1, x2, x3, x4, x5) -> f1500_0_main_Load(x2, x3, x4, x5) EOS(x1) -> EOS Filtered duplicate arguments: f1500_0_main_Load(x1, x2, x3, x4) -> f1500_0_main_Load(x1, x3, x4) Finished conversion. Obtained 1 rules.P rules: f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, i299:0, i265:0) -> f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, i299:0 + 1, i265:0) :|: i265:0 > -1 && i299:0 < i265:0 - 1 ---------------------------------------- (9) Obligation: Rules: f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, i299:0, i265:0) -> f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, i299:0 + 1, i265:0) :|: i265:0 > -1 && i299:0 < i265:0 - 1 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, i299:0, i265:0) -> f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, arith, i265:0) :|: i265:0 > -1 && i299:0 < i265:0 - 1 && arith = i299:0 + 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, i299:0, i265:0) -> f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, arith, i265:0) :|: i265:0 > -1 && i299:0 < i265:0 - 1 && arith = i299:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, i299:0, i265:0) -> f1500_0_main_Load(java.lang.Object(ARRAY(i265:0)), i265:0, arith, i265:0) :|: i265:0 > -1 && i299:0 < i265:0 - 1 && arith = i299:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1500_0_main_Load(java.lang.Object(ARRAY(i265:0:0)), i265:0:0, i299:0:0, i265:0:0) -> f1500_0_main_Load(java.lang.Object(ARRAY(i265:0:0)), i265:0:0, i299:0:0 + 1, i265:0:0) :|: i265:0:0 > -1 && i299:0:0 < i265:0:0 - 1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1500_0_main_Load(VARIABLE, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1500_0_main_Load(c, i265:0:0, i299:0:0, i265:0:0) -> f1500_0_main_Load(c1, i265:0:0, c2, i265:0:0) :|: c2 = i299:0:0 + 1 && (c1 = 0 && c = 0) && (i265:0:0 > -1 && i299:0:0 < i265:0:0 - 1) ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1500_0_main_Load ] = f1500_0_main_Load_4 + -1*f1500_0_main_Load_3 The following rules are decreasing: f1500_0_main_Load(c, i265:0:0, i299:0:0, i265:0:0) -> f1500_0_main_Load(c1, i265:0:0, c2, i265:0:0) :|: c2 = i299:0:0 + 1 && (c1 = 0 && c = 0) && (i265:0:0 > -1 && i299:0:0 < i265:0:0 - 1) The following rules are bounded: f1500_0_main_Load(c, i265:0:0, i299:0:0, i265:0:0) -> f1500_0_main_Load(c1, i265:0:0, c2, i265:0:0) :|: c2 = i299:0:0 + 1 && (c1 = 0 && c = 0) && (i265:0:0 > -1 && i299:0:0 < i265: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: f1237_0_main_Load(EOS(STATIC_1237), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) -> f1238_0_main_ConstantStackPush(EOS(STATIC_1238), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200) :|: TRUE f1238_0_main_ConstantStackPush(EOS(STATIC_1238), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200) -> f1239_0_main_IntArithmetic(EOS(STATIC_1239), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200, 1) :|: TRUE f1239_0_main_IntArithmetic(EOS(STATIC_1239), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200, matching1) -> f1240_0_main_GE(EOS(STATIC_1240), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200 - 1) :|: i200 >= 0 && matching1 = 1 f1240_0_main_GE(EOS(STATIC_1240), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) -> f1244_0_main_GE(EOS(STATIC_1244), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) :|: i255 < i257 f1244_0_main_GE(EOS(STATIC_1244), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) -> f1249_0_main_Load(EOS(STATIC_1249), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) :|: i255 < i257 f1249_0_main_Load(EOS(STATIC_1249), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1251_0_main_ConstantStackPush(EOS(STATIC_1251), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1251_0_main_ConstantStackPush(EOS(STATIC_1251), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) -> f1254_0_main_IntArithmetic(EOS(STATIC_1254), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, 1) :|: TRUE f1254_0_main_IntArithmetic(EOS(STATIC_1254), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, matching1) -> f1256_0_main_Store(EOS(STATIC_1256), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255 + 1) :|: i255 >= 0 && matching1 = 1 f1256_0_main_Store(EOS(STATIC_1256), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i258) -> f1258_0_main_Load(EOS(STATIC_1258), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1258_0_main_Load(EOS(STATIC_1258), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1260_0_main_Load(EOS(STATIC_1260), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258) :|: TRUE f1260_0_main_Load(EOS(STATIC_1260), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258) -> f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) :|: TRUE f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1278_0_main_GE(EOS(STATIC_1278), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) :|: i258 >= i200 f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1279_0_main_GE(EOS(STATIC_1279), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) :|: i258 < i200 f1278_0_main_GE(EOS(STATIC_1278), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1282_0_main_Inc(EOS(STATIC_1282), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) :|: i258 >= i200 f1282_0_main_Inc(EOS(STATIC_1282), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1286_0_main_JMP(EOS(STATIC_1286), java.lang.Object(ARRAY(i200)), i255 + 1, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1286_0_main_JMP(EOS(STATIC_1286), java.lang.Object(ARRAY(i200)), i263, i200, java.lang.Object(ARRAY(i200))) -> f1308_0_main_Load(EOS(STATIC_1308), java.lang.Object(ARRAY(i200)), i263, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1308_0_main_Load(EOS(STATIC_1308), java.lang.Object(ARRAY(i200)), i263, i200, java.lang.Object(ARRAY(i200))) -> f1236_0_main_Load(EOS(STATIC_1236), java.lang.Object(ARRAY(i200)), i263, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1236_0_main_Load(EOS(STATIC_1236), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1237_0_main_Load(EOS(STATIC_1237), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1279_0_main_GE(EOS(STATIC_1279), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1283_0_main_Load(EOS(STATIC_1283), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i258 < i200 f1283_0_main_Load(EOS(STATIC_1283), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1287_0_main_Load(EOS(STATIC_1287), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1287_0_main_Load(EOS(STATIC_1287), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1309_0_main_ArrayAccess(EOS(STATIC_1309), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1309_0_main_ArrayAccess(EOS(STATIC_1309), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1313_0_main_ArrayAccess(EOS(STATIC_1313), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1313_0_main_ArrayAccess(EOS(STATIC_1313), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1316_0_main_Load(EOS(STATIC_1316), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271) :|: i255 < i200 f1316_0_main_Load(EOS(STATIC_1316), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271) -> f1320_0_main_Load(EOS(STATIC_1320), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, java.lang.Object(ARRAY(i200))) :|: TRUE f1320_0_main_Load(EOS(STATIC_1320), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, java.lang.Object(ARRAY(i200))) -> f1324_0_main_ArrayAccess(EOS(STATIC_1324), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, java.lang.Object(ARRAY(i200)), i258) :|: TRUE f1324_0_main_ArrayAccess(EOS(STATIC_1324), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, java.lang.Object(ARRAY(i200)), i258) -> f1340_0_main_ArrayAccess(EOS(STATIC_1340), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, java.lang.Object(ARRAY(i200)), i258) :|: TRUE f1340_0_main_ArrayAccess(EOS(STATIC_1340), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, java.lang.Object(ARRAY(i200)), i258) -> f1345_0_main_GE(EOS(STATIC_1345), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, i274) :|: i258 < i200 f1345_0_main_GE(EOS(STATIC_1345), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, i274) -> f1349_0_main_GE(EOS(STATIC_1349), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, i274) :|: i271 >= i274 f1345_0_main_GE(EOS(STATIC_1345), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, i274) -> f1350_0_main_GE(EOS(STATIC_1350), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, i274) :|: i271 < i274 f1349_0_main_GE(EOS(STATIC_1349), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, i274) -> f1376_0_main_Inc(EOS(STATIC_1376), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i271 >= i274 f1376_0_main_Inc(EOS(STATIC_1376), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1397_0_main_JMP(EOS(STATIC_1397), java.lang.Object(ARRAY(i200)), i255, i258 + 1, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1397_0_main_JMP(EOS(STATIC_1397), java.lang.Object(ARRAY(i200)), i255, i284, i200, java.lang.Object(ARRAY(i200))) -> f1415_0_main_Load(EOS(STATIC_1415), java.lang.Object(ARRAY(i200)), i255, i284, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1415_0_main_Load(EOS(STATIC_1415), java.lang.Object(ARRAY(i200)), i255, i284, i200, java.lang.Object(ARRAY(i200))) -> f1258_0_main_Load(EOS(STATIC_1258), java.lang.Object(ARRAY(i200)), i255, i284, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1350_0_main_GE(EOS(STATIC_1350), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i271, i274) -> f1382_0_main_Load(EOS(STATIC_1382), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i271 < i274 f1382_0_main_Load(EOS(STATIC_1382), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1399_0_main_Load(EOS(STATIC_1399), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1399_0_main_Load(EOS(STATIC_1399), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1416_0_main_ArrayAccess(EOS(STATIC_1416), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1416_0_main_ArrayAccess(EOS(STATIC_1416), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1419_0_main_ArrayAccess(EOS(STATIC_1419), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1419_0_main_ArrayAccess(EOS(STATIC_1419), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1424_0_main_Store(EOS(STATIC_1424), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i294) :|: i255 < i200 f1424_0_main_Store(EOS(STATIC_1424), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i294) -> f1429_0_main_Load(EOS(STATIC_1429), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200))) :|: TRUE f1429_0_main_Load(EOS(STATIC_1429), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200))) -> f1437_0_main_Load(EOS(STATIC_1437), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1437_0_main_Load(EOS(STATIC_1437), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1462_0_main_Load(EOS(STATIC_1462), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE f1462_0_main_Load(EOS(STATIC_1462), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1489_0_main_Load(EOS(STATIC_1489), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200))) :|: TRUE f1489_0_main_Load(EOS(STATIC_1489), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200))) -> f1502_0_main_ArrayAccess(EOS(STATIC_1502), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) :|: TRUE f1502_0_main_ArrayAccess(EOS(STATIC_1502), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) -> f1519_0_main_ArrayAccess(EOS(STATIC_1519), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) :|: TRUE f1519_0_main_ArrayAccess(EOS(STATIC_1519), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) -> f1525_0_main_ArrayAccess(EOS(STATIC_1525), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i302) :|: i258 < i200 f1525_0_main_ArrayAccess(EOS(STATIC_1525), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i302) -> f1529_0_main_ArrayAccess(EOS(STATIC_1529), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i302) :|: TRUE f1529_0_main_ArrayAccess(EOS(STATIC_1529), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i302) -> f1548_0_main_Load(EOS(STATIC_1548), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200))) :|: i255 < i200 f1548_0_main_Load(EOS(STATIC_1548), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200))) -> f1577_0_main_Load(EOS(STATIC_1577), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE f1577_0_main_Load(EOS(STATIC_1577), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1585_0_main_Load(EOS(STATIC_1585), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258) :|: TRUE f1585_0_main_Load(EOS(STATIC_1585), java.lang.Object(ARRAY(i200)), i255, i258, i294, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258) -> f1591_0_main_ArrayAccess(EOS(STATIC_1591), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i294) :|: TRUE f1591_0_main_ArrayAccess(EOS(STATIC_1591), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i294) -> f1604_0_main_ArrayAccess(EOS(STATIC_1604), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i294) :|: TRUE f1604_0_main_ArrayAccess(EOS(STATIC_1604), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i294) -> f1617_0_main_Inc(EOS(STATIC_1617), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i258 < i200 f1617_0_main_Inc(EOS(STATIC_1617), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1376_0_main_Inc(EOS(STATIC_1376), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: TRUE Combined rules. Obtained 3 IRulesP rules: f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(EOS(STATIC_1264), 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 && i258:0 >= i200:0 f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0 + 1, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0 + 1, i200:0) :|: i258:0 < i200:0 && i255:0 < i200:0 && i274:0 > i271:0 f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(EOS(STATIC_1264), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0 + 1, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0 + 1, i200:0) :|: i258:0 < i200:0 && i255:0 < i200:0 && i274:0 <= i271:0 Filtered constant ground arguments: f1264_0_main_GE(x1, x2, x3, x4, x5, x6, x7, x8) -> f1264_0_main_GE(x2, x3, x4, x5, x6, x7, x8) EOS(x1) -> EOS Filtered duplicate arguments: f1264_0_main_GE(x1, x2, x3, x4, x5, x6, x7) -> f1264_0_main_GE(x2, x5, x6) Finished conversion. Obtained 3 rules.P rules: f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_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 && i258:0 >= i200:0 && i255:0 > -2 f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0 + 1, i200:0) :|: i255:0 < i200:0 && i274:0 > i271:0 && i258:0 < i200:0 f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0 + 1, i200:0) :|: i255:0 < i200:0 && i274:0 <= i271:0 && i258:0 < i200:0 ---------------------------------------- (22) Obligation: Rules: f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_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 && i258:0 >= i200:0 && i255:0 > -2 f1264_0_main_GE(x, java.lang.Object(ARRAY(x1)), x2, x1) -> f1264_0_main_GE(x, java.lang.Object(ARRAY(x1)), x2 + 1, x1) :|: x < x1 && x3 > x4 && x2 < x1 f1264_0_main_GE(x5, java.lang.Object(ARRAY(x6)), x7, x6) -> f1264_0_main_GE(x5, java.lang.Object(ARRAY(x6)), x7 + 1, x6) :|: x5 < x6 && x8 <= x9 && x7 < x6 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(arith, java.lang.Object(ARRAY(i200:0)), arith1, i200:0) :|: i255:0 + 1 < i200:0 - 1 && i200:0 > -1 && i258:0 >= i200:0 && i255:0 > -2 && arith = i255:0 + 1 && arith1 = i255:0 + 2 f1264_0_main_GE(x10, java.lang.Object(ARRAY(x11)), x12, x11) -> f1264_0_main_GE(x10, java.lang.Object(ARRAY(x11)), x13, x11) :|: x10 < x11 && x14 > x15 && x12 < x11 && x13 = x12 + 1 f1264_0_main_GE(x16, java.lang.Object(ARRAY(x17)), x18, x17) -> f1264_0_main_GE(x16, java.lang.Object(ARRAY(x17)), x19, x17) :|: x16 < x17 && x20 <= x21 && x18 < x17 && x19 = x18 + 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(arith, java.lang.Object(ARRAY(i200:0)), arith1, i200:0) :|: i255:0 + 1 < i200:0 - 1 && i200:0 > -1 && i258:0 >= i200:0 && i255:0 > -2 && arith = i255:0 + 1 && arith1 = i255:0 + 2 (2) f1264_0_main_GE(x10, java.lang.Object(ARRAY(x11)), x12, x11) -> f1264_0_main_GE(x10, java.lang.Object(ARRAY(x11)), x13, x11) :|: x10 < x11 && x14 > x15 && x12 < x11 && x13 = x12 + 1 (3) f1264_0_main_GE(x16, java.lang.Object(ARRAY(x17)), x18, x17) -> f1264_0_main_GE(x16, java.lang.Object(ARRAY(x17)), x19, x17) :|: x16 < x17 && x20 <= x21 && x18 < x17 && x19 = x18 + 1 Arcs: (1) -> (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1264_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1264_0_main_GE(arith, java.lang.Object(ARRAY(i200:0)), arith1, i200:0) :|: i255:0 + 1 < i200:0 - 1 && i200:0 > -1 && i258:0 >= i200:0 && i255:0 > -2 && arith = i255:0 + 1 && arith1 = i255:0 + 2 (2) f1264_0_main_GE(x10, java.lang.Object(ARRAY(x11)), x12, x11) -> f1264_0_main_GE(x10, java.lang.Object(ARRAY(x11)), x13, x11) :|: x10 < x11 && x14 > x15 && x12 < x11 && x13 = x12 + 1 (3) f1264_0_main_GE(x16, java.lang.Object(ARRAY(x17)), x18, x17) -> f1264_0_main_GE(x16, java.lang.Object(ARRAY(x17)), x19, x17) :|: x16 < x17 && x20 <= x21 && x18 < x17 && x19 = x18 + 1 Arcs: (1) -> (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1264_0_main_GE(i255:0:0, java.lang.Object(ARRAY(i200:0:0)), i258:0:0, i200:0:0) -> f1264_0_main_GE(i255:0:0 + 1, java.lang.Object(ARRAY(i200:0:0)), i255:0:0 + 2, i200:0:0) :|: i258:0:0 >= i200:0:0 && i255:0:0 > -2 && i200:0:0 > -1 && i255:0:0 + 1 < i200:0:0 - 1 f1264_0_main_GE(x10:0, java.lang.Object(ARRAY(x11:0)), x12:0, x11:0) -> f1264_0_main_GE(x10:0, java.lang.Object(ARRAY(x11:0)), x12:0 + 1, x11:0) :|: x11:0 > x10:0 && x15:0 < x14:0 && x12:0 < x11:0 f1264_0_main_GE(x16:0, java.lang.Object(ARRAY(x17:0)), x18:0, x17:0) -> f1264_0_main_GE(x16:0, java.lang.Object(ARRAY(x17:0)), x18:0 + 1, x17:0) :|: x17:0 > x16:0 && x21:0 >= x20:0 && x18:0 < x17:0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1264_0_main_GE(INTEGER, VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1264_0_main_GE(i255:0:0, c, i258:0:0, i200:0:0) -> f1264_0_main_GE(c1, c2, c3, i200:0:0) :|: c3 = i255:0:0 + 2 && (c2 = 0 && (c1 = i255:0:0 + 1 && c = 0)) && (i258:0:0 >= i200:0:0 && i255:0:0 > -2 && i200:0:0 > -1 && i255:0:0 + 1 < i200:0:0 - 1) f1264_0_main_GE(x10:0, c4, x12:0, x11:0) -> f1264_0_main_GE(x10:0, c5, c6, x11:0) :|: c6 = x12:0 + 1 && (c5 = 0 && c4 = 0) && (x11:0 > x10:0 && x15:0 < x14:0 && x12:0 < x11:0) f1264_0_main_GE(x16:0, c7, x18:0, x17:0) -> f1264_0_main_GE(x16:0, c8, c9, x17:0) :|: c9 = x18:0 + 1 && (c8 = 0 && c7 = 0) && (x17:0 > x16:0 && x21:0 >= x20:0 && x18:0 < x17:0) ---------------------------------------- (31) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1264_0_main_GE ] = f1264_0_main_GE_4 + -1*f1264_0_main_GE_1 The following rules are decreasing: f1264_0_main_GE(i255:0:0, c, i258:0:0, i200:0:0) -> f1264_0_main_GE(c1, c2, c3, i200:0:0) :|: c3 = i255:0:0 + 2 && (c2 = 0 && (c1 = i255:0:0 + 1 && c = 0)) && (i258:0:0 >= i200:0:0 && i255:0:0 > -2 && i200:0:0 > -1 && i255:0:0 + 1 < i200:0:0 - 1) The following rules are bounded: f1264_0_main_GE(i255:0:0, c, i258:0:0, i200:0:0) -> f1264_0_main_GE(c1, c2, c3, i200:0:0) :|: c3 = i255:0:0 + 2 && (c2 = 0 && (c1 = i255:0:0 + 1 && c = 0)) && (i258:0:0 >= i200:0:0 && i255:0:0 > -2 && i200:0:0 > -1 && i255:0:0 + 1 < i200:0:0 - 1) f1264_0_main_GE(x10:0, c4, x12:0, x11:0) -> f1264_0_main_GE(x10:0, c5, c6, x11:0) :|: c6 = x12:0 + 1 && (c5 = 0 && c4 = 0) && (x11:0 > x10:0 && x15:0 < x14:0 && x12:0 < x11:0) f1264_0_main_GE(x16:0, c7, x18:0, x17:0) -> f1264_0_main_GE(x16:0, c8, c9, x17:0) :|: c9 = x18:0 + 1 && (c8 = 0 && c7 = 0) && (x17:0 > x16:0 && x21:0 >= x20:0 && x18:0 < x17:0) ---------------------------------------- (32) Obligation: Rules: f1264_0_main_GE(x10:0, c4, x12:0, x11:0) -> f1264_0_main_GE(x10:0, c5, c6, x11:0) :|: c6 = x12:0 + 1 && (c5 = 0 && c4 = 0) && (x11:0 > x10:0 && x15:0 < x14:0 && x12:0 < x11:0) f1264_0_main_GE(x16:0, c7, x18:0, x17:0) -> f1264_0_main_GE(x16:0, c8, c9, x17:0) :|: c9 = x18:0 + 1 && (c8 = 0 && c7 = 0) && (x17:0 > x16:0 && x21:0 >= x20:0 && x18:0 < x17:0) ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1264_0_main_GE ] = f1264_0_main_GE_4 + -1*f1264_0_main_GE_3 The following rules are decreasing: f1264_0_main_GE(x10:0, c4, x12:0, x11:0) -> f1264_0_main_GE(x10:0, c5, c6, x11:0) :|: c6 = x12:0 + 1 && (c5 = 0 && c4 = 0) && (x11:0 > x10:0 && x15:0 < x14:0 && x12:0 < x11:0) f1264_0_main_GE(x16:0, c7, x18:0, x17:0) -> f1264_0_main_GE(x16:0, c8, c9, x17:0) :|: c9 = x18:0 + 1 && (c8 = 0 && c7 = 0) && (x17:0 > x16:0 && x21:0 >= x20:0 && x18:0 < x17:0) The following rules are bounded: f1264_0_main_GE(x10:0, c4, x12:0, x11:0) -> f1264_0_main_GE(x10:0, c5, c6, x11:0) :|: c6 = x12:0 + 1 && (c5 = 0 && c4 = 0) && (x11:0 > x10:0 && x15:0 < x14:0 && x12:0 < x11:0) f1264_0_main_GE(x16:0, c7, x18:0, x17:0) -> f1264_0_main_GE(x16:0, c8, c9, x17:0) :|: c9 = x18:0 + 1 && (c8 = 0 && c7 = 0) && (x17:0 > x16:0 && x21:0 >= x20:0 && x18:0 < x17: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: f538_0_main_Load(EOS(STATIC_538), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128) -> f542_0_main_ConstantStackPush(EOS(STATIC_542), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i44) :|: TRUE f542_0_main_ConstantStackPush(EOS(STATIC_542), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i44) -> f544_0_main_IntArithmetic(EOS(STATIC_544), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i44, 1) :|: TRUE f544_0_main_IntArithmetic(EOS(STATIC_544), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i44, matching1) -> f547_0_main_GE(EOS(STATIC_547), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i44 - 1) :|: i44 >= 0 && matching1 = 1 f547_0_main_GE(EOS(STATIC_547), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i131) -> f562_0_main_GE(EOS(STATIC_562), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i131) :|: i128 < i131 f562_0_main_GE(EOS(STATIC_562), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128, i131) -> f572_0_main_Load(EOS(STATIC_572), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44))) :|: i128 < i131 f572_0_main_Load(EOS(STATIC_572), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44))) -> f574_0_main_Load(EOS(STATIC_574), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44))) :|: TRUE f574_0_main_Load(EOS(STATIC_574), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44))) -> f577_0_main_Load(EOS(STATIC_577), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128) :|: TRUE f577_0_main_Load(EOS(STATIC_577), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128) -> f579_0_main_Load(EOS(STATIC_579), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(ARRAY(i44))) :|: TRUE f579_0_main_Load(EOS(STATIC_579), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(ARRAY(i44))) -> f581_0_main_ArrayAccess(EOS(STATIC_581), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(ARRAY(i44)), i128) :|: TRUE f581_0_main_ArrayAccess(EOS(STATIC_581), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(ARRAY(i44)), i128) -> f586_0_main_ArrayAccess(EOS(STATIC_586), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(ARRAY(i44)), i128) :|: TRUE f586_0_main_ArrayAccess(EOS(STATIC_586), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(ARRAY(i44)), i128) -> f589_0_main_InvokeMethod(EOS(STATIC_589), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, o38) :|: i128 < i44 f589_0_main_InvokeMethod(EOS(STATIC_589), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o40sub)) -> f596_0_main_InvokeMethod(EOS(STATIC_596), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o40sub)) :|: TRUE f596_0_main_InvokeMethod(EOS(STATIC_596), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o42sub)) -> f610_0_main_InvokeMethod(EOS(STATIC_610), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o42sub)) :|: TRUE f610_0_main_InvokeMethod(EOS(STATIC_610), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o42sub)) -> f617_0_length_Load(EOS(STATIC_617), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o42sub)) :|: TRUE f617_0_length_Load(EOS(STATIC_617), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o42sub)) -> f627_0_length_FieldAccess(EOS(STATIC_627), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(o42sub)) :|: TRUE f627_0_length_FieldAccess(EOS(STATIC_627), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(java.lang.String(EOC, i143))) -> f636_0_length_FieldAccess(EOS(STATIC_636), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(java.lang.String(EOC, i143))) :|: i143 >= 0 f636_0_length_FieldAccess(EOS(STATIC_636), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, java.lang.Object(java.lang.String(EOC, i143))) -> f643_0_length_Return(EOS(STATIC_643), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i143) :|: TRUE f643_0_length_Return(EOS(STATIC_643), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i143) -> f654_0_main_ArrayAccess(EOS(STATIC_654), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i143) :|: TRUE f654_0_main_ArrayAccess(EOS(STATIC_654), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i143) -> f677_0_main_ArrayAccess(EOS(STATIC_677), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i143) :|: TRUE f677_0_main_ArrayAccess(EOS(STATIC_677), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i143) -> f701_0_main_Inc(EOS(STATIC_701), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44))) :|: i128 < i44 f701_0_main_Inc(EOS(STATIC_701), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44))) -> f711_0_main_JMP(EOS(STATIC_711), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128 + 1, i44, java.lang.Object(ARRAY(i44))) :|: TRUE f711_0_main_JMP(EOS(STATIC_711), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i156, i44, java.lang.Object(ARRAY(i44))) -> f751_0_main_Load(EOS(STATIC_751), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i156, i44, java.lang.Object(ARRAY(i44))) :|: TRUE f751_0_main_Load(EOS(STATIC_751), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i156, i44, java.lang.Object(ARRAY(i44))) -> f536_0_main_Load(EOS(STATIC_536), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i156, i44, java.lang.Object(ARRAY(i44))) :|: TRUE f536_0_main_Load(EOS(STATIC_536), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44))) -> f538_0_main_Load(EOS(STATIC_538), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i128, i44, java.lang.Object(ARRAY(i44)), i128) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f538_0_main_Load(EOS(STATIC_538), java.lang.Object(ARRAY(i44:0)), java.lang.Object(ARRAY(i44:0)), i128:0, i44:0, java.lang.Object(ARRAY(i44:0)), i128:0) -> f538_0_main_Load(EOS(STATIC_538), java.lang.Object(ARRAY(i44:0)), java.lang.Object(ARRAY(i44:0)), i128:0 + 1, i44:0, java.lang.Object(ARRAY(i44:0)), i128:0 + 1) :|: i44:0 > -1 && i44:0 - 1 > i128:0 && i44:0 > i128:0 && i143:0 > -1 Filtered constant ground arguments: f538_0_main_Load(x1, x2, x3, x4, x5, x6, x7) -> f538_0_main_Load(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS Filtered duplicate arguments: f538_0_main_Load(x1, x2, x3, x4, x5, x6) -> f538_0_main_Load(x4, x5, x6) Finished conversion. Obtained 1 rules.P rules: f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i128:0, i44:0) -> f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i128:0 + 1, i44:0) :|: i44:0 - 1 > i128:0 && i44:0 > -1 && i143:0 > -1 && i44:0 > i128:0 ---------------------------------------- (37) Obligation: Rules: f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i128:0, i44:0) -> f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i128:0 + 1, i44:0) :|: i44:0 - 1 > i128:0 && i44:0 > -1 && i143:0 > -1 && i44:0 > i128:0 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i128:0, i44:0) -> f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), arith, i44:0) :|: i44:0 - 1 > i128:0 && i44:0 > -1 && i143:0 > -1 && i44:0 > i128:0 && arith = i128:0 + 1 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i128:0, i44:0) -> f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), arith, i44:0) :|: i44:0 - 1 > i128:0 && i44:0 > -1 && i143:0 > -1 && i44:0 > i128:0 && arith = i128:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i128:0, i44:0) -> f538_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), arith, i44:0) :|: i44:0 - 1 > i128:0 && i44:0 > -1 && i143:0 > -1 && i44:0 > i128:0 && arith = i128:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f538_0_main_Load(i44:0:0, java.lang.Object(ARRAY(i44:0:0)), i128:0:0, i44:0:0) -> f538_0_main_Load(i44:0:0, java.lang.Object(ARRAY(i44:0:0)), i128:0:0 + 1, i44:0:0) :|: i143:0:0 > -1 && i44:0:0 > i128:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i128:0:0 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f538_0_main_Load(INTEGER, VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f538_0_main_Load(i44:0:0, c, i128:0:0, i44:0:0) -> f538_0_main_Load(i44:0:0, c1, c2, i44:0:0) :|: c2 = i128:0:0 + 1 && (c1 = 0 && c = 0) && (i143:0:0 > -1 && i44:0:0 > i128:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i128:0:0) ---------------------------------------- (46) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f538_0_main_Load ] = f538_0_main_Load_4 + -1*f538_0_main_Load_3 The following rules are decreasing: f538_0_main_Load(i44:0:0, c, i128:0:0, i44:0:0) -> f538_0_main_Load(i44:0:0, c1, c2, i44:0:0) :|: c2 = i128:0:0 + 1 && (c1 = 0 && c = 0) && (i143:0:0 > -1 && i44:0:0 > i128:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i128:0:0) The following rules are bounded: f538_0_main_Load(i44:0:0, c, i128:0:0, i44:0:0) -> f538_0_main_Load(i44:0:0, c1, c2, i44:0:0) :|: c2 = i128:0:0 + 1 && (c1 = 0 && c = 0) && (i143:0:0 > -1 && i44:0:0 > i128:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i128:0:0) ---------------------------------------- (47) YES