9.10/3.46 YES 9.25/3.49 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 9.25/3.49 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 9.25/3.49 9.25/3.49 9.25/3.49 termination of the given Bare JBC problem could be proven: 9.25/3.49 9.25/3.49 (0) Bare JBC problem 9.25/3.49 (1) BareJBCToJBCProof [EQUIVALENT, 94 ms] 9.25/3.49 (2) JBC problem 9.25/3.49 (3) JBCToGraph [EQUIVALENT, 647 ms] 9.25/3.49 (4) JBCTerminationGraph 9.25/3.49 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 9.25/3.49 (6) AND 9.25/3.49 (7) JBCTerminationSCC 9.25/3.49 (8) SCCToIRSProof [SOUND, 82 ms] 9.25/3.49 (9) IRSwT 9.25/3.49 (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 9.25/3.49 (11) IRSwT 9.25/3.49 (12) IRSwTTerminationDigraphProof [EQUIVALENT, 19 ms] 9.25/3.49 (13) IRSwT 9.25/3.49 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 9.25/3.49 (15) IRSwT 9.25/3.49 (16) TempFilterProof [SOUND, 9 ms] 9.25/3.49 (17) IntTRS 9.25/3.49 (18) PolynomialOrderProcessor [EQUIVALENT, 4 ms] 9.25/3.49 (19) YES 9.25/3.49 (20) JBCTerminationSCC 9.25/3.49 (21) SCCToIRSProof [SOUND, 128 ms] 9.25/3.49 (22) IRSwT 9.25/3.49 (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 9.25/3.49 (24) IRSwT 9.25/3.49 (25) IRSwTTerminationDigraphProof [EQUIVALENT, 86 ms] 9.25/3.49 (26) IRSwT 9.25/3.49 (27) IntTRSCompressionProof [EQUIVALENT, 1 ms] 9.25/3.49 (28) IRSwT 9.25/3.49 (29) TempFilterProof [SOUND, 33 ms] 9.25/3.49 (30) IntTRS 9.25/3.49 (31) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 9.25/3.49 (32) IntTRS 9.25/3.49 (33) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 9.25/3.49 (34) YES 9.25/3.49 (35) JBCTerminationSCC 9.25/3.49 (36) SCCToIRSProof [SOUND, 91 ms] 9.25/3.49 (37) IRSwT 9.25/3.49 (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 9.25/3.49 (39) IRSwT 9.25/3.49 (40) IRSwTTerminationDigraphProof [EQUIVALENT, 15 ms] 9.25/3.49 (41) IRSwT 9.25/3.49 (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] 9.25/3.49 (43) IRSwT 9.25/3.49 (44) TempFilterProof [SOUND, 39 ms] 9.25/3.49 (45) IntTRS 9.25/3.49 (46) PolynomialOrderProcessor [EQUIVALENT, 15 ms] 9.25/3.49 (47) YES 9.25/3.49 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (0) 9.25/3.49 Obligation: 9.25/3.49 need to prove termination of the following program: 9.25/3.49 public class NestedLoop { 9.25/3.49 public static void main(String[] args) { 9.25/3.49 int i, j, z, n; 9.25/3.49 n = args.length; 9.25/3.49 int[] a = new int[n]; 9.25/3.49 for(i = 0;i< n-1;i++){ 9.25/3.49 a[i] = args[i].length(); 9.25/3.49 } 9.25/3.49 9.25/3.49 for (i = 0; i < n - 1; i++) { 9.25/3.49 for (j = i + 1; j < n; j++) { 9.25/3.49 if(a[i]< a[j]){ 9.25/3.49 z = a[i]; a[i] = a[j]; a[j] = z; 9.25/3.49 } 9.25/3.49 } 9.25/3.49 } 9.25/3.49 for(i = 0;i< n -1;i++){ 9.25/3.49 } 9.25/3.49 } 9.25/3.49 } 9.25/3.49 9.25/3.49 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (1) BareJBCToJBCProof (EQUIVALENT) 9.25/3.49 initialized classpath 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (2) 9.25/3.49 Obligation: 9.25/3.49 need to prove termination of the following program: 9.25/3.49 public class NestedLoop { 9.25/3.49 public static void main(String[] args) { 9.25/3.49 int i, j, z, n; 9.25/3.49 n = args.length; 9.25/3.49 int[] a = new int[n]; 9.25/3.49 for(i = 0;i< n-1;i++){ 9.25/3.49 a[i] = args[i].length(); 9.25/3.49 } 9.25/3.49 9.25/3.49 for (i = 0; i < n - 1; i++) { 9.25/3.49 for (j = i + 1; j < n; j++) { 9.25/3.49 if(a[i]< a[j]){ 9.25/3.49 z = a[i]; a[i] = a[j]; a[j] = z; 9.25/3.49 } 9.25/3.49 } 9.25/3.49 } 9.25/3.49 for(i = 0;i< n -1;i++){ 9.25/3.49 } 9.25/3.49 } 9.25/3.49 } 9.25/3.49 9.25/3.49 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (3) JBCToGraph (EQUIVALENT) 9.25/3.49 Constructed TerminationGraph. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (4) 9.25/3.49 Obligation: 9.25/3.49 Termination Graph based on JBC Program: 9.25/3.49 NestedLoop.main([Ljava/lang/String;)V: Graph of 324 nodes with 3 SCCs. 9.25/3.49 9.25/3.49 9.25/3.49 9.25/3.49 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (5) TerminationGraphToSCCProof (SOUND) 9.25/3.49 Splitted TerminationGraph to 3 SCCss. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (6) 9.25/3.49 Complex Obligation (AND) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (7) 9.25/3.49 Obligation: 9.25/3.49 SCC of termination graph based on JBC Program. 9.25/3.49 SCC contains nodes from the following methods: NestedLoop.main([Ljava/lang/String;)V 9.25/3.49 SCC calls the following helper methods: 9.25/3.49 Performed SCC analyses: 9.25/3.49 *Used field analysis yielded the following read fields: 9.25/3.49 9.25/3.49 *Marker field analysis yielded the following relations that could be markers: 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (8) SCCToIRSProof (SOUND) 9.25/3.49 Transformed FIGraph SCCs to intTRSs. Log: 9.25/3.49 Generated rules. Obtained 9 IRulesP rules: 9.25/3.49 f1578_0_main_Load(EOS(STATIC_1578), java.lang.Object(ARRAY(i266)), i318, i266, i318) -> f1592_0_main_ConstantStackPush(EOS(STATIC_1592), java.lang.Object(ARRAY(i266)), i318, i266, i318, i266) :|: TRUE 9.25/3.49 f1592_0_main_ConstantStackPush(EOS(STATIC_1592), java.lang.Object(ARRAY(i266)), i318, i266, i318, i266) -> f1602_0_main_IntArithmetic(EOS(STATIC_1602), java.lang.Object(ARRAY(i266)), i318, i266, i318, i266, 1) :|: TRUE 9.25/3.49 f1602_0_main_IntArithmetic(EOS(STATIC_1602), java.lang.Object(ARRAY(i266)), i318, i266, i318, i266, matching1) -> f1609_0_main_GE(EOS(STATIC_1609), java.lang.Object(ARRAY(i266)), i318, i266, i318, i266 - 1) :|: i266 >= 0 && matching1 = 1 9.25/3.49 f1609_0_main_GE(EOS(STATIC_1609), java.lang.Object(ARRAY(i266)), i318, i266, i318, i323) -> f1628_0_main_GE(EOS(STATIC_1628), java.lang.Object(ARRAY(i266)), i318, i266, i318, i323) :|: i318 < i323 9.25/3.49 f1628_0_main_GE(EOS(STATIC_1628), java.lang.Object(ARRAY(i266)), i318, i266, i318, i323) -> f1656_0_main_Inc(EOS(STATIC_1656), java.lang.Object(ARRAY(i266)), i318, i266) :|: i318 < i323 9.25/3.49 f1656_0_main_Inc(EOS(STATIC_1656), java.lang.Object(ARRAY(i266)), i318, i266) -> f1669_0_main_JMP(EOS(STATIC_1669), java.lang.Object(ARRAY(i266)), i318 + 1, i266) :|: TRUE 9.25/3.49 f1669_0_main_JMP(EOS(STATIC_1669), java.lang.Object(ARRAY(i266)), i324, i266) -> f1715_0_main_Load(EOS(STATIC_1715), java.lang.Object(ARRAY(i266)), i324, i266) :|: TRUE 9.25/3.49 f1715_0_main_Load(EOS(STATIC_1715), java.lang.Object(ARRAY(i266)), i324, i266) -> f1573_0_main_Load(EOS(STATIC_1573), java.lang.Object(ARRAY(i266)), i324, i266) :|: TRUE 9.25/3.49 f1573_0_main_Load(EOS(STATIC_1573), java.lang.Object(ARRAY(i266)), i318, i266) -> f1578_0_main_Load(EOS(STATIC_1578), java.lang.Object(ARRAY(i266)), i318, i266, i318) :|: TRUE 9.25/3.49 Combined rules. Obtained 1 IRulesP rules: 9.25/3.49 f1578_0_main_Load(EOS(STATIC_1578), java.lang.Object(ARRAY(i266:0)), i318:0, i266:0, i318:0) -> f1578_0_main_Load(EOS(STATIC_1578), java.lang.Object(ARRAY(i266:0)), i318:0 + 1, i266:0, i318:0 + 1) :|: i266:0 > -1 && i318:0 < i266:0 - 1 9.25/3.49 Filtered constant ground arguments: 9.25/3.49 f1578_0_main_Load(x1, x2, x3, x4, x5) -> f1578_0_main_Load(x2, x3, x4, x5) 9.25/3.49 EOS(x1) -> EOS 9.25/3.49 Filtered duplicate arguments: 9.25/3.49 f1578_0_main_Load(x1, x2, x3, x4) -> f1578_0_main_Load(x1, x3, x4) 9.25/3.49 Finished conversion. Obtained 1 rules.P rules: 9.25/3.49 f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, i318:0, i266:0) -> f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, i318:0 + 1, i266:0) :|: i266:0 > -1 && i318:0 < i266:0 - 1 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (9) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, i318:0, i266:0) -> f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, i318:0 + 1, i266:0) :|: i266:0 > -1 && i318:0 < i266:0 - 1 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (10) IRSFormatTransformerProof (EQUIVALENT) 9.25/3.49 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (11) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, i318:0, i266:0) -> f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, arith, i266:0) :|: i266:0 > -1 && i318:0 < i266:0 - 1 && arith = i318:0 + 1 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (12) IRSwTTerminationDigraphProof (EQUIVALENT) 9.25/3.49 Constructed termination digraph! 9.25/3.49 Nodes: 9.25/3.49 (1) f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, i318:0, i266:0) -> f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, arith, i266:0) :|: i266:0 > -1 && i318:0 < i266:0 - 1 && arith = i318:0 + 1 9.25/3.49 9.25/3.49 Arcs: 9.25/3.49 (1) -> (1) 9.25/3.49 9.25/3.49 This digraph is fully evaluated! 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (13) 9.25/3.49 Obligation: 9.25/3.49 9.25/3.49 Termination digraph: 9.25/3.49 Nodes: 9.25/3.49 (1) f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, i318:0, i266:0) -> f1578_0_main_Load(java.lang.Object(ARRAY(i266:0)), i266:0, arith, i266:0) :|: i266:0 > -1 && i318:0 < i266:0 - 1 && arith = i318:0 + 1 9.25/3.49 9.25/3.49 Arcs: 9.25/3.49 (1) -> (1) 9.25/3.49 9.25/3.49 This digraph is fully evaluated! 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (14) IntTRSCompressionProof (EQUIVALENT) 9.25/3.49 Compressed rules. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (15) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1578_0_main_Load(java.lang.Object(ARRAY(i266:0:0)), i266:0:0, i318:0:0, i266:0:0) -> f1578_0_main_Load(java.lang.Object(ARRAY(i266:0:0)), i266:0:0, i318:0:0 + 1, i266:0:0) :|: i266:0:0 > -1 && i318:0:0 < i266:0:0 - 1 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (16) TempFilterProof (SOUND) 9.25/3.49 Used the following sort dictionary for filtering: 9.25/3.49 f1578_0_main_Load(VARIABLE, INTEGER, INTEGER, INTEGER) 9.25/3.49 java.lang.Object(VARIABLE) 9.25/3.49 ARRAY(INTEGER) 9.25/3.49 Replaced non-predefined constructor symbols by 0. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (17) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1578_0_main_Load(c, i266:0:0, i318:0:0, i266:0:0) -> f1578_0_main_Load(c1, i266:0:0, c2, i266:0:0) :|: c2 = i318:0:0 + 1 && (c1 = 0 && c = 0) && (i266:0:0 > -1 && i318:0:0 < i266:0:0 - 1) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (18) PolynomialOrderProcessor (EQUIVALENT) 9.25/3.49 Found the following polynomial interpretation: 9.25/3.49 [f1578_0_main_Load(x, x1, x2, x3)] = c*x - x2 + x3 9.25/3.49 9.25/3.49 The following rules are decreasing: 9.25/3.49 f1578_0_main_Load(c, i266:0:0, i318:0:0, i266:0:0) -> f1578_0_main_Load(c1, i266:0:0, c2, i266:0:0) :|: c2 = i318:0:0 + 1 && (c1 = 0 && c = 0) && (i266:0:0 > -1 && i318:0:0 < i266:0:0 - 1) 9.25/3.49 The following rules are bounded: 9.25/3.49 f1578_0_main_Load(c, i266:0:0, i318:0:0, i266:0:0) -> f1578_0_main_Load(c1, i266:0:0, c2, i266:0:0) :|: c2 = i318:0:0 + 1 && (c1 = 0 && c = 0) && (i266:0:0 > -1 && i318:0:0 < i266:0:0 - 1) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (19) 9.25/3.49 YES 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (20) 9.25/3.49 Obligation: 9.25/3.49 SCC of termination graph based on JBC Program. 9.25/3.49 SCC contains nodes from the following methods: NestedLoop.main([Ljava/lang/String;)V 9.25/3.49 SCC calls the following helper methods: 9.25/3.49 Performed SCC analyses: 9.25/3.49 *Used field analysis yielded the following read fields: 9.25/3.49 9.25/3.49 *Marker field analysis yielded the following relations that could be markers: 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (21) SCCToIRSProof (SOUND) 9.25/3.49 Transformed FIGraph SCCs to intTRSs. Log: 9.25/3.49 Generated rules. Obtained 53 IRulesP rules: 9.25/3.49 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 9.25/3.49 f1238_0_main_ConstantStackPush(EOS(STATIC_1238), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200) -> f1240_0_main_IntArithmetic(EOS(STATIC_1240), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200, 1) :|: TRUE 9.25/3.49 f1240_0_main_IntArithmetic(EOS(STATIC_1240), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200, matching1) -> f1241_0_main_GE(EOS(STATIC_1241), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i200 - 1) :|: i200 >= 0 && matching1 = 1 9.25/3.49 f1241_0_main_GE(EOS(STATIC_1241), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) -> f1248_0_main_GE(EOS(STATIC_1248), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) :|: i255 < i257 9.25/3.49 f1248_0_main_GE(EOS(STATIC_1248), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, i257) -> f1252_0_main_Load(EOS(STATIC_1252), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) :|: i255 < i257 9.25/3.49 f1252_0_main_Load(EOS(STATIC_1252), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1256_0_main_ConstantStackPush(EOS(STATIC_1256), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) :|: TRUE 9.25/3.49 f1256_0_main_ConstantStackPush(EOS(STATIC_1256), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255) -> f1260_0_main_IntArithmetic(EOS(STATIC_1260), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, 1) :|: TRUE 9.25/3.49 f1260_0_main_IntArithmetic(EOS(STATIC_1260), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255, matching1) -> f1263_0_main_Store(EOS(STATIC_1263), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i255 + 1) :|: i255 >= 0 && matching1 = 1 9.25/3.49 f1263_0_main_Store(EOS(STATIC_1263), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200)), i258) -> f1265_0_main_Load(EOS(STATIC_1265), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1265_0_main_Load(EOS(STATIC_1265), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1268_0_main_Load(EOS(STATIC_1268), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258) :|: TRUE 9.25/3.49 f1268_0_main_Load(EOS(STATIC_1268), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258) -> f1270_0_main_GE(EOS(STATIC_1270), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) :|: TRUE 9.25/3.49 f1270_0_main_GE(EOS(STATIC_1270), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1294_0_main_GE(EOS(STATIC_1294), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) :|: i258 >= i200 9.25/3.49 f1270_0_main_GE(EOS(STATIC_1270), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1295_0_main_GE(EOS(STATIC_1295), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) :|: i258 < i200 9.25/3.49 f1294_0_main_GE(EOS(STATIC_1294), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1309_0_main_Inc(EOS(STATIC_1309), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) :|: i258 >= i200 9.25/3.49 f1309_0_main_Inc(EOS(STATIC_1309), java.lang.Object(ARRAY(i200)), i255, i200, java.lang.Object(ARRAY(i200))) -> f1325_0_main_JMP(EOS(STATIC_1325), java.lang.Object(ARRAY(i200)), i255 + 1, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1325_0_main_JMP(EOS(STATIC_1325), java.lang.Object(ARRAY(i200)), i264, i200, java.lang.Object(ARRAY(i200))) -> f1356_0_main_Load(EOS(STATIC_1356), java.lang.Object(ARRAY(i200)), i264, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1356_0_main_Load(EOS(STATIC_1356), java.lang.Object(ARRAY(i200)), i264, i200, java.lang.Object(ARRAY(i200))) -> f1235_0_main_Load(EOS(STATIC_1235), java.lang.Object(ARRAY(i200)), i264, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1235_0_main_Load(EOS(STATIC_1235), 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 9.25/3.49 f1295_0_main_GE(EOS(STATIC_1295), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i258, i200) -> f1317_0_main_Load(EOS(STATIC_1317), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i258 < i200 9.25/3.49 f1317_0_main_Load(EOS(STATIC_1317), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1327_0_main_Load(EOS(STATIC_1327), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1327_0_main_Load(EOS(STATIC_1327), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1359_0_main_ArrayAccess(EOS(STATIC_1359), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE 9.25/3.49 f1359_0_main_ArrayAccess(EOS(STATIC_1359), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1363_0_main_ArrayAccess(EOS(STATIC_1363), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE 9.25/3.49 f1363_0_main_ArrayAccess(EOS(STATIC_1363), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1368_0_main_Load(EOS(STATIC_1368), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278) :|: i255 < i200 9.25/3.49 f1368_0_main_Load(EOS(STATIC_1368), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278) -> f1375_0_main_Load(EOS(STATIC_1375), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1375_0_main_Load(EOS(STATIC_1375), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, java.lang.Object(ARRAY(i200))) -> f1380_0_main_ArrayAccess(EOS(STATIC_1380), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, java.lang.Object(ARRAY(i200)), i258) :|: TRUE 9.25/3.49 f1380_0_main_ArrayAccess(EOS(STATIC_1380), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, java.lang.Object(ARRAY(i200)), i258) -> f1414_0_main_ArrayAccess(EOS(STATIC_1414), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, java.lang.Object(ARRAY(i200)), i258) :|: TRUE 9.25/3.49 f1414_0_main_ArrayAccess(EOS(STATIC_1414), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, java.lang.Object(ARRAY(i200)), i258) -> f1439_0_main_GE(EOS(STATIC_1439), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, i290) :|: i258 < i200 9.25/3.49 f1439_0_main_GE(EOS(STATIC_1439), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, i290) -> f1468_0_main_GE(EOS(STATIC_1468), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, i290) :|: i278 >= i290 9.25/3.49 f1439_0_main_GE(EOS(STATIC_1439), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, i290) -> f1469_0_main_GE(EOS(STATIC_1469), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, i290) :|: i278 < i290 9.25/3.49 f1468_0_main_GE(EOS(STATIC_1468), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, i290) -> f1495_0_main_Inc(EOS(STATIC_1495), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i278 >= i290 9.25/3.49 f1495_0_main_Inc(EOS(STATIC_1495), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1513_0_main_JMP(EOS(STATIC_1513), java.lang.Object(ARRAY(i200)), i255, i258 + 1, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1513_0_main_JMP(EOS(STATIC_1513), java.lang.Object(ARRAY(i200)), i255, i312, i200, java.lang.Object(ARRAY(i200))) -> f1522_0_main_Load(EOS(STATIC_1522), java.lang.Object(ARRAY(i200)), i255, i312, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1522_0_main_Load(EOS(STATIC_1522), java.lang.Object(ARRAY(i200)), i255, i312, i200, java.lang.Object(ARRAY(i200))) -> f1265_0_main_Load(EOS(STATIC_1265), java.lang.Object(ARRAY(i200)), i255, i312, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1469_0_main_GE(EOS(STATIC_1469), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i278, i290) -> f1499_0_main_Load(EOS(STATIC_1499), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i278 < i290 9.25/3.49 f1499_0_main_Load(EOS(STATIC_1499), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1514_0_main_Load(EOS(STATIC_1514), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1514_0_main_Load(EOS(STATIC_1514), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1524_0_main_ArrayAccess(EOS(STATIC_1524), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE 9.25/3.49 f1524_0_main_ArrayAccess(EOS(STATIC_1524), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1528_0_main_ArrayAccess(EOS(STATIC_1528), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE 9.25/3.49 f1528_0_main_ArrayAccess(EOS(STATIC_1528), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1535_0_main_Store(EOS(STATIC_1535), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i316) :|: i255 < i200 9.25/3.49 f1535_0_main_Store(EOS(STATIC_1535), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), i316) -> f1545_0_main_Load(EOS(STATIC_1545), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1545_0_main_Load(EOS(STATIC_1545), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200))) -> f1553_0_main_Load(EOS(STATIC_1553), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1553_0_main_Load(EOS(STATIC_1553), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1565_0_main_Load(EOS(STATIC_1565), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) :|: TRUE 9.25/3.49 f1565_0_main_Load(EOS(STATIC_1565), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255) -> f1575_0_main_Load(EOS(STATIC_1575), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1575_0_main_Load(EOS(STATIC_1575), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200))) -> f1580_0_main_ArrayAccess(EOS(STATIC_1580), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) :|: TRUE 9.25/3.49 f1580_0_main_ArrayAccess(EOS(STATIC_1580), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) -> f1594_0_main_ArrayAccess(EOS(STATIC_1594), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) :|: TRUE 9.25/3.49 f1594_0_main_ArrayAccess(EOS(STATIC_1594), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, java.lang.Object(ARRAY(i200)), i258) -> f1604_0_main_ArrayAccess(EOS(STATIC_1604), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i322) :|: i258 < i200 9.25/3.49 f1604_0_main_ArrayAccess(EOS(STATIC_1604), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i322) -> f1611_0_main_ArrayAccess(EOS(STATIC_1611), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i322) :|: TRUE 9.25/3.49 f1611_0_main_ArrayAccess(EOS(STATIC_1611), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i255, i322) -> f1630_0_main_Load(EOS(STATIC_1630), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200))) :|: i255 < i200 9.25/3.49 f1630_0_main_Load(EOS(STATIC_1630), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200))) -> f1658_0_main_Load(EOS(STATIC_1658), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 f1658_0_main_Load(EOS(STATIC_1658), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200))) -> f1671_0_main_Load(EOS(STATIC_1671), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258) :|: TRUE 9.25/3.49 f1671_0_main_Load(EOS(STATIC_1671), java.lang.Object(ARRAY(i200)), i255, i258, i316, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258) -> f1717_0_main_ArrayAccess(EOS(STATIC_1717), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i316) :|: TRUE 9.25/3.49 f1717_0_main_ArrayAccess(EOS(STATIC_1717), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i316) -> f1765_0_main_ArrayAccess(EOS(STATIC_1765), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i316) :|: TRUE 9.25/3.49 f1765_0_main_ArrayAccess(EOS(STATIC_1765), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200)), java.lang.Object(ARRAY(i200)), i258, i316) -> f1818_0_main_Inc(EOS(STATIC_1818), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: i258 < i200 9.25/3.49 f1818_0_main_Inc(EOS(STATIC_1818), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) -> f1495_0_main_Inc(EOS(STATIC_1495), java.lang.Object(ARRAY(i200)), i255, i258, i200, java.lang.Object(ARRAY(i200))) :|: TRUE 9.25/3.49 Combined rules. Obtained 3 IRulesP rules: 9.25/3.49 f1270_0_main_GE(EOS(STATIC_1270), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(EOS(STATIC_1270), 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 && i290:0 <= i278:0 9.25/3.49 f1270_0_main_GE(EOS(STATIC_1270), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(EOS(STATIC_1270), 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 && i290:0 > i278:0 9.25/3.49 f1270_0_main_GE(EOS(STATIC_1270), java.lang.Object(ARRAY(i200:0)), i255:0, i258:0, i200:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(EOS(STATIC_1270), 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 9.25/3.49 Filtered constant ground arguments: 9.25/3.49 f1270_0_main_GE(x1, x2, x3, x4, x5, x6, x7, x8) -> f1270_0_main_GE(x2, x3, x4, x5, x6, x7, x8) 9.25/3.49 EOS(x1) -> EOS 9.25/3.49 Filtered duplicate arguments: 9.25/3.49 f1270_0_main_GE(x1, x2, x3, x4, x5, x6, x7) -> f1270_0_main_GE(x2, x5, x6) 9.25/3.49 Finished conversion. Obtained 3 rules.P rules: 9.25/3.49 f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0 + 1, i200:0) :|: i255:0 < i200:0 && i290:0 <= i278:0 && i258:0 < i200:0 9.25/3.49 f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0 + 1, i200:0) :|: i255:0 < i200:0 && i290:0 > i278:0 && i258:0 < i200:0 9.25/3.49 f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_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 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (22) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0 + 1, i200:0) :|: i255:0 < i200:0 && i290:0 <= i278:0 && i258:0 < i200:0 9.25/3.49 f1270_0_main_GE(x, java.lang.Object(ARRAY(x1)), x2, x1) -> f1270_0_main_GE(x, java.lang.Object(ARRAY(x1)), x2 + 1, x1) :|: x < x1 && x3 > x4 && x2 < x1 9.25/3.49 f1270_0_main_GE(x5, java.lang.Object(ARRAY(x6)), x7, x6) -> f1270_0_main_GE(x5 + 1, java.lang.Object(ARRAY(x6)), x5 + 2, x6) :|: x5 + 1 < x6 - 1 && x6 > -1 && x7 >= x6 && x5 > -2 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (23) IRSFormatTransformerProof (EQUIVALENT) 9.25/3.49 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (24) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), arith, i200:0) :|: i255:0 < i200:0 && i290:0 <= i278:0 && i258:0 < i200:0 && arith = i258:0 + 1 9.25/3.49 f1270_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x10, x9) -> f1270_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x11, x9) :|: x8 < x9 && x12 > x13 && x10 < x9 && x11 = x10 + 1 9.25/3.49 f1270_0_main_GE(x14, java.lang.Object(ARRAY(x15)), x16, x15) -> f1270_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 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (25) IRSwTTerminationDigraphProof (EQUIVALENT) 9.25/3.49 Constructed termination digraph! 9.25/3.49 Nodes: 9.25/3.49 (1) f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), arith, i200:0) :|: i255:0 < i200:0 && i290:0 <= i278:0 && i258:0 < i200:0 && arith = i258:0 + 1 9.25/3.49 (2) f1270_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x10, x9) -> f1270_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x11, x9) :|: x8 < x9 && x12 > x13 && x10 < x9 && x11 = x10 + 1 9.25/3.49 (3) f1270_0_main_GE(x14, java.lang.Object(ARRAY(x15)), x16, x15) -> f1270_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 9.25/3.49 9.25/3.49 Arcs: 9.25/3.49 (1) -> (1), (2), (3) 9.25/3.49 (2) -> (1), (2), (3) 9.25/3.49 (3) -> (1), (2) 9.25/3.49 9.25/3.49 This digraph is fully evaluated! 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (26) 9.25/3.49 Obligation: 9.25/3.49 9.25/3.49 Termination digraph: 9.25/3.49 Nodes: 9.25/3.49 (1) f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), i258:0, i200:0) -> f1270_0_main_GE(i255:0, java.lang.Object(ARRAY(i200:0)), arith, i200:0) :|: i255:0 < i200:0 && i290:0 <= i278:0 && i258:0 < i200:0 && arith = i258:0 + 1 9.25/3.49 (2) f1270_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x10, x9) -> f1270_0_main_GE(x8, java.lang.Object(ARRAY(x9)), x11, x9) :|: x8 < x9 && x12 > x13 && x10 < x9 && x11 = x10 + 1 9.25/3.49 (3) f1270_0_main_GE(x14, java.lang.Object(ARRAY(x15)), x16, x15) -> f1270_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 9.25/3.49 9.25/3.49 Arcs: 9.25/3.49 (1) -> (1), (2), (3) 9.25/3.49 (2) -> (1), (2), (3) 9.25/3.49 (3) -> (1), (2) 9.25/3.49 9.25/3.49 This digraph is fully evaluated! 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (27) IntTRSCompressionProof (EQUIVALENT) 9.25/3.49 Compressed rules. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (28) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1270_0_main_GE(x8:0, java.lang.Object(ARRAY(x9:0)), x10:0, x9:0) -> f1270_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 9.25/3.49 f1270_0_main_GE(x14:0, java.lang.Object(ARRAY(x15:0)), x16:0, x15:0) -> f1270_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 9.25/3.49 f1270_0_main_GE(i255:0:0, java.lang.Object(ARRAY(i200:0:0)), i258:0:0, i200:0:0) -> f1270_0_main_GE(i255:0:0, java.lang.Object(ARRAY(i200:0:0)), i258:0:0 + 1, i200:0:0) :|: i255:0:0 < i200:0:0 && i290:0:0 <= i278:0:0 && i258:0:0 < i200:0:0 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (29) TempFilterProof (SOUND) 9.25/3.49 Used the following sort dictionary for filtering: 9.25/3.49 f1270_0_main_GE(INTEGER, VARIABLE, INTEGER, INTEGER) 9.25/3.49 java.lang.Object(VARIABLE) 9.25/3.49 ARRAY(INTEGER) 9.25/3.49 Replaced non-predefined constructor symbols by 0. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (30) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1270_0_main_GE(x8:0, c, x10:0, x9:0) -> f1270_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) 9.25/3.49 f1270_0_main_GE(x14:0, c3, x16:0, x15:0) -> f1270_0_main_GE(c4, c5, c6, x15:0) :|: c6 = x14:0 + 2 && (c5 = 0 && (c4 = x14:0 + 1 && c3 = 0)) && (x16:0 >= x15:0 && x14:0 > -2 && x15:0 > -1 && x15:0 - 1 > x14:0 + 1) 9.25/3.49 f1270_0_main_GE(i255:0:0, c7, i258:0:0, i200:0:0) -> f1270_0_main_GE(i255:0:0, c8, c9, i200:0:0) :|: c9 = i258:0:0 + 1 && (c8 = 0 && c7 = 0) && (i255:0:0 < i200:0:0 && i290:0:0 <= i278:0:0 && i258:0:0 < i200:0:0) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (31) PolynomialOrderProcessor (EQUIVALENT) 9.25/3.49 Found the following polynomial interpretation: 9.25/3.49 [f1270_0_main_GE(x, x1, x2, x3)] = -x + c1*x1 + x3 9.25/3.49 9.25/3.49 The following rules are decreasing: 9.25/3.49 f1270_0_main_GE(x14:0, c3, x16:0, x15:0) -> f1270_0_main_GE(c4, c5, c6, x15:0) :|: c6 = x14:0 + 2 && (c5 = 0 && (c4 = x14:0 + 1 && c3 = 0)) && (x16:0 >= x15:0 && x14:0 > -2 && x15:0 > -1 && x15:0 - 1 > x14:0 + 1) 9.25/3.49 The following rules are bounded: 9.25/3.49 f1270_0_main_GE(x14:0, c3, x16:0, x15:0) -> f1270_0_main_GE(c4, c5, c6, x15:0) :|: c6 = x14:0 + 2 && (c5 = 0 && (c4 = x14:0 + 1 && c3 = 0)) && (x16:0 >= x15:0 && x14:0 > -2 && x15:0 > -1 && x15:0 - 1 > x14:0 + 1) 9.25/3.49 f1270_0_main_GE(i255:0:0, c7, i258:0:0, i200:0:0) -> f1270_0_main_GE(i255:0:0, c8, c9, i200:0:0) :|: c9 = i258:0:0 + 1 && (c8 = 0 && c7 = 0) && (i255:0:0 < i200:0:0 && i290:0:0 <= i278:0:0 && i258:0:0 < i200:0:0) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (32) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f1270_0_main_GE(x8:0, c, x10:0, x9:0) -> f1270_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) 9.25/3.49 f1270_0_main_GE(i255:0:0, c7, i258:0:0, i200:0:0) -> f1270_0_main_GE(i255:0:0, c8, c9, i200:0:0) :|: c9 = i258:0:0 + 1 && (c8 = 0 && c7 = 0) && (i255:0:0 < i200:0:0 && i290:0:0 <= i278:0:0 && i258:0:0 < i200:0:0) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (33) PolynomialOrderProcessor (EQUIVALENT) 9.25/3.49 Found the following polynomial interpretation: 9.25/3.49 [f1270_0_main_GE(x, x1, x2, x3)] = c1*x1 - x2 + x3 9.25/3.49 9.25/3.49 The following rules are decreasing: 9.25/3.49 f1270_0_main_GE(x8:0, c, x10:0, x9:0) -> f1270_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) 9.25/3.49 f1270_0_main_GE(i255:0:0, c7, i258:0:0, i200:0:0) -> f1270_0_main_GE(i255:0:0, c8, c9, i200:0:0) :|: c9 = i258:0:0 + 1 && (c8 = 0 && c7 = 0) && (i255:0:0 < i200:0:0 && i290:0:0 <= i278:0:0 && i258:0:0 < i200:0:0) 9.25/3.49 The following rules are bounded: 9.25/3.49 f1270_0_main_GE(x8:0, c, x10:0, x9:0) -> f1270_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) 9.25/3.49 f1270_0_main_GE(i255:0:0, c7, i258:0:0, i200:0:0) -> f1270_0_main_GE(i255:0:0, c8, c9, i200:0:0) :|: c9 = i258:0:0 + 1 && (c8 = 0 && c7 = 0) && (i255:0:0 < i200:0:0 && i290:0:0 <= i278:0:0 && i258:0:0 < i200:0:0) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (34) 9.25/3.49 YES 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (35) 9.25/3.49 Obligation: 9.25/3.49 SCC of termination graph based on JBC Program. 9.25/3.49 SCC contains nodes from the following methods: NestedLoop.main([Ljava/lang/String;)V 9.25/3.49 SCC calls the following helper methods: 9.25/3.49 Performed SCC analyses: 9.25/3.49 *Used field analysis yielded the following read fields: 9.25/3.49 *java.lang.String: [count] 9.25/3.49 *Marker field analysis yielded the following relations that could be markers: 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (36) SCCToIRSProof (SOUND) 9.25/3.49 Transformed FIGraph SCCs to intTRSs. Log: 9.25/3.49 Generated rules. Obtained 24 IRulesP rules: 9.25/3.49 f513_0_main_Load(EOS(STATIC_513), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122) -> f515_0_main_ConstantStackPush(EOS(STATIC_515), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i44) :|: TRUE 9.25/3.49 f515_0_main_ConstantStackPush(EOS(STATIC_515), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i44) -> f517_0_main_IntArithmetic(EOS(STATIC_517), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i44, 1) :|: TRUE 9.25/3.49 f517_0_main_IntArithmetic(EOS(STATIC_517), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i44, matching1) -> f520_0_main_GE(EOS(STATIC_520), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i44 - 1) :|: i44 >= 0 && matching1 = 1 9.25/3.49 f520_0_main_GE(EOS(STATIC_520), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i127) -> f532_0_main_GE(EOS(STATIC_532), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i127) :|: i122 < i127 9.25/3.49 f532_0_main_GE(EOS(STATIC_532), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122, i127) -> f544_0_main_Load(EOS(STATIC_544), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44))) :|: i122 < i127 9.25/3.49 f544_0_main_Load(EOS(STATIC_544), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44))) -> f546_0_main_Load(EOS(STATIC_546), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44))) :|: TRUE 9.25/3.49 f546_0_main_Load(EOS(STATIC_546), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44))) -> f548_0_main_Load(EOS(STATIC_548), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122) :|: TRUE 9.25/3.49 f548_0_main_Load(EOS(STATIC_548), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122) -> f551_0_main_Load(EOS(STATIC_551), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(ARRAY(i44))) :|: TRUE 9.25/3.49 f551_0_main_Load(EOS(STATIC_551), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(ARRAY(i44))) -> f556_0_main_ArrayAccess(EOS(STATIC_556), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(ARRAY(i44)), i122) :|: TRUE 9.25/3.49 f556_0_main_ArrayAccess(EOS(STATIC_556), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(ARRAY(i44)), i122) -> f561_0_main_ArrayAccess(EOS(STATIC_561), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(ARRAY(i44)), i122) :|: TRUE 9.25/3.49 f561_0_main_ArrayAccess(EOS(STATIC_561), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(ARRAY(i44)), i122) -> f568_0_main_InvokeMethod(EOS(STATIC_568), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, o37) :|: i122 < i44 9.25/3.49 f568_0_main_InvokeMethod(EOS(STATIC_568), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o39sub)) -> f581_0_main_InvokeMethod(EOS(STATIC_581), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o39sub)) :|: TRUE 9.25/3.49 f581_0_main_InvokeMethod(EOS(STATIC_581), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o41sub)) -> f594_0_main_InvokeMethod(EOS(STATIC_594), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o41sub)) :|: TRUE 9.25/3.49 f594_0_main_InvokeMethod(EOS(STATIC_594), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o41sub)) -> f602_0_length_Load(EOS(STATIC_602), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o41sub)) :|: TRUE 9.25/3.49 f602_0_length_Load(EOS(STATIC_602), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o41sub)) -> f610_0_length_FieldAccess(EOS(STATIC_610), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(o41sub)) :|: TRUE 9.25/3.49 f610_0_length_FieldAccess(EOS(STATIC_610), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(java.lang.String(EOC, i142))) -> f617_0_length_FieldAccess(EOS(STATIC_617), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(java.lang.String(EOC, i142))) :|: i142 >= 0 9.25/3.49 f617_0_length_FieldAccess(EOS(STATIC_617), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, java.lang.Object(java.lang.String(EOC, i142))) -> f622_0_length_Return(EOS(STATIC_622), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i142) :|: TRUE 9.25/3.49 f622_0_length_Return(EOS(STATIC_622), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i142) -> f629_0_main_ArrayAccess(EOS(STATIC_629), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i142) :|: TRUE 9.25/3.49 f629_0_main_ArrayAccess(EOS(STATIC_629), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i142) -> f645_0_main_ArrayAccess(EOS(STATIC_645), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i142) :|: TRUE 9.25/3.49 f645_0_main_ArrayAccess(EOS(STATIC_645), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i142) -> f660_0_main_Inc(EOS(STATIC_660), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44))) :|: i122 < i44 9.25/3.49 f660_0_main_Inc(EOS(STATIC_660), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44))) -> f675_0_main_JMP(EOS(STATIC_675), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122 + 1, i44, java.lang.Object(ARRAY(i44))) :|: TRUE 9.25/3.49 f675_0_main_JMP(EOS(STATIC_675), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i149, i44, java.lang.Object(ARRAY(i44))) -> f713_0_main_Load(EOS(STATIC_713), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i149, i44, java.lang.Object(ARRAY(i44))) :|: TRUE 9.25/3.49 f713_0_main_Load(EOS(STATIC_713), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i149, i44, java.lang.Object(ARRAY(i44))) -> f506_0_main_Load(EOS(STATIC_506), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i149, i44, java.lang.Object(ARRAY(i44))) :|: TRUE 9.25/3.49 f506_0_main_Load(EOS(STATIC_506), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44))) -> f513_0_main_Load(EOS(STATIC_513), java.lang.Object(ARRAY(i44)), java.lang.Object(ARRAY(i44)), i122, i44, java.lang.Object(ARRAY(i44)), i122) :|: TRUE 9.25/3.49 Combined rules. Obtained 1 IRulesP rules: 9.25/3.49 f513_0_main_Load(EOS(STATIC_513), java.lang.Object(ARRAY(i44:0)), java.lang.Object(ARRAY(i44:0)), i122:0, i44:0, java.lang.Object(ARRAY(i44:0)), i122:0) -> f513_0_main_Load(EOS(STATIC_513), java.lang.Object(ARRAY(i44:0)), java.lang.Object(ARRAY(i44:0)), i122:0 + 1, i44:0, java.lang.Object(ARRAY(i44:0)), i122:0 + 1) :|: i44:0 > -1 && i44:0 - 1 > i122:0 && i44:0 > i122:0 && i142:0 > -1 9.25/3.49 Filtered constant ground arguments: 9.25/3.49 f513_0_main_Load(x1, x2, x3, x4, x5, x6, x7) -> f513_0_main_Load(x2, x3, x4, x5, x6, x7) 9.25/3.49 EOS(x1) -> EOS 9.25/3.49 Filtered duplicate arguments: 9.25/3.49 f513_0_main_Load(x1, x2, x3, x4, x5, x6) -> f513_0_main_Load(x4, x5, x6) 9.25/3.49 Finished conversion. Obtained 1 rules.P rules: 9.25/3.49 f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i122:0, i44:0) -> f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i122:0 + 1, i44:0) :|: i44:0 - 1 > i122:0 && i44:0 > -1 && i142:0 > -1 && i44:0 > i122:0 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (37) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i122:0, i44:0) -> f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i122:0 + 1, i44:0) :|: i44:0 - 1 > i122:0 && i44:0 > -1 && i142:0 > -1 && i44:0 > i122:0 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (38) IRSFormatTransformerProof (EQUIVALENT) 9.25/3.49 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (39) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i122:0, i44:0) -> f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), arith, i44:0) :|: i44:0 - 1 > i122:0 && i44:0 > -1 && i142:0 > -1 && i44:0 > i122:0 && arith = i122:0 + 1 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (40) IRSwTTerminationDigraphProof (EQUIVALENT) 9.25/3.49 Constructed termination digraph! 9.25/3.49 Nodes: 9.25/3.49 (1) f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i122:0, i44:0) -> f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), arith, i44:0) :|: i44:0 - 1 > i122:0 && i44:0 > -1 && i142:0 > -1 && i44:0 > i122:0 && arith = i122:0 + 1 9.25/3.49 9.25/3.49 Arcs: 9.25/3.49 (1) -> (1) 9.25/3.49 9.25/3.49 This digraph is fully evaluated! 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (41) 9.25/3.49 Obligation: 9.25/3.49 9.25/3.49 Termination digraph: 9.25/3.49 Nodes: 9.25/3.49 (1) f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), i122:0, i44:0) -> f513_0_main_Load(i44:0, java.lang.Object(ARRAY(i44:0)), arith, i44:0) :|: i44:0 - 1 > i122:0 && i44:0 > -1 && i142:0 > -1 && i44:0 > i122:0 && arith = i122:0 + 1 9.25/3.49 9.25/3.49 Arcs: 9.25/3.49 (1) -> (1) 9.25/3.49 9.25/3.49 This digraph is fully evaluated! 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (42) IntTRSCompressionProof (EQUIVALENT) 9.25/3.49 Compressed rules. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (43) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f513_0_main_Load(i44:0:0, java.lang.Object(ARRAY(i44:0:0)), i122:0:0, i44:0:0) -> f513_0_main_Load(i44:0:0, java.lang.Object(ARRAY(i44:0:0)), i122:0:0 + 1, i44:0:0) :|: i142:0:0 > -1 && i44:0:0 > i122:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i122:0:0 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (44) TempFilterProof (SOUND) 9.25/3.49 Used the following sort dictionary for filtering: 9.25/3.49 f513_0_main_Load(INTEGER, VARIABLE, INTEGER, INTEGER) 9.25/3.49 java.lang.Object(VARIABLE) 9.25/3.49 ARRAY(INTEGER) 9.25/3.49 Replaced non-predefined constructor symbols by 0. 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (45) 9.25/3.49 Obligation: 9.25/3.49 Rules: 9.25/3.49 f513_0_main_Load(i44:0:0, c, i122:0:0, i44:0:0) -> f513_0_main_Load(i44:0:0, c1, c2, i44:0:0) :|: c2 = i122:0:0 + 1 && (c1 = 0 && c = 0) && (i142:0:0 > -1 && i44:0:0 > i122:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i122:0:0) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (46) PolynomialOrderProcessor (EQUIVALENT) 9.25/3.49 Found the following polynomial interpretation: 9.25/3.49 [f513_0_main_Load(x, x1, x2, x3)] = c1*x1 - x2 + x3 9.25/3.49 9.25/3.49 The following rules are decreasing: 9.25/3.49 f513_0_main_Load(i44:0:0, c, i122:0:0, i44:0:0) -> f513_0_main_Load(i44:0:0, c1, c2, i44:0:0) :|: c2 = i122:0:0 + 1 && (c1 = 0 && c = 0) && (i142:0:0 > -1 && i44:0:0 > i122:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i122:0:0) 9.25/3.49 The following rules are bounded: 9.25/3.49 f513_0_main_Load(i44:0:0, c, i122:0:0, i44:0:0) -> f513_0_main_Load(i44:0:0, c1, c2, i44:0:0) :|: c2 = i122:0:0 + 1 && (c1 = 0 && c = 0) && (i142:0:0 > -1 && i44:0:0 > i122:0:0 && i44:0:0 > -1 && i44:0:0 - 1 > i122:0:0) 9.25/3.49 9.25/3.49 ---------------------------------------- 9.25/3.49 9.25/3.49 (47) 9.25/3.49 YES 9.25/3.52 EOF