/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 100 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 931 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 265 ms] (8) IRSwT (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (10) IRSwT (11) IRSwTTerminationDigraphProof [EQUIVALENT, 44 ms] (12) AND (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 18 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 6 ms] (19) YES (20) IRSwT (21) IntTRSCompressionProof [EQUIVALENT, 0 ms] (22) IRSwT (23) IRSwTChainingProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 4 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 10 ms] (30) IntTRS (31) RankingReductionPairProof [EQUIVALENT, 0 ms] (32) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Et4 { public static void main(String[] args) { Random.args = args; int a = Random.random(); int b = Random.random(); int c = Random.random(); loop(a,b,c); } public static void loop(int a, int b, int c) { if ( (b - c >= 1) && (a == c)) { int r = Random.random(); b = 10; c = c + 1 + r; a = c; loop(a,b,c); } } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Et4 { public static void main(String[] args) { Random.args = args; int a = Random.random(); int b = Random.random(); int c = Random.random(); loop(a,b,c); } public static void loop(int a, int b, int c) { if ( (b - c >= 1) && (a == c)) { int r = Random.random(); b = 10; c = c + 1 + r; a = c; loop(a,b,c); } } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Et4.main([Ljava/lang/String;)V: Graph of 372 nodes with 0 SCCs. Et4.loop(III)V: Graph of 176 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 1 SCCs. ---------------------------------------- (6) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Et4.loop(III)V SCC calls the following helper methods: Et4.loop(III)V Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (7) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 76 IRulesP rules: f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i242) -> f1152_0_loop_IntArithmetic(EOS(STATIC_1152(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i242, i243) :|: TRUE f1152_0_loop_IntArithmetic(EOS(STATIC_1152(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i242, i243) -> f1164_0_loop_ConstantStackPush(EOS(STATIC_1164(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i242 - i243) :|: i242 >= 0 && i243 >= 0 f1164_0_loop_ConstantStackPush(EOS(STATIC_1164(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i246) -> f1171_0_loop_LT(EOS(STATIC_1171(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i246, 1) :|: TRUE f1171_0_loop_LT(EOS(STATIC_1171(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i250, matching1) -> f1178_0_loop_LT(EOS(STATIC_1178(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i250, 1) :|: TRUE && matching1 = 1 f1178_0_loop_LT(EOS(STATIC_1178(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i250, matching1) -> f1185_0_loop_Load(EOS(STATIC_1185(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243) :|: i250 >= 1 && matching1 = 1 f1185_0_loop_Load(EOS(STATIC_1185(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243) -> f1190_0_loop_Load(EOS(STATIC_1190(java.lang.Object(o122sub), i240)), i241, i242, i243, i243, i241) :|: TRUE f1190_0_loop_Load(EOS(STATIC_1190(java.lang.Object(o122sub), i240)), i241, i242, i243, i243, i241) -> f1219_0_loop_NE(EOS(STATIC_1219(java.lang.Object(o122sub), i240)), i241, i242, i243, i243, i241, i243) :|: TRUE f1219_0_loop_NE(EOS(STATIC_1219(java.lang.Object(o122sub), i240)), i243, i242, i243, i243, i243, i243) -> f1251_0_loop_NE(EOS(STATIC_1251(java.lang.Object(o122sub), i240)), i243, i242, i243, i243, i243, i243) :|: i241 = i243 f1251_0_loop_NE(EOS(STATIC_1251(java.lang.Object(o122sub), i240)), i243, i242, i243, i243, i243, i243) -> f1269_0_loop_InvokeMethod(EOS(STATIC_1269(java.lang.Object(o122sub), i240)), i243, i242, i243, i243) :|: TRUE f1269_0_loop_InvokeMethod(EOS(STATIC_1269(java.lang.Object(o122sub), i240)), i243, i242, i243, i243) -> f1274_0_random_FieldAccess(EOS(STATIC_1274(java.lang.Object(o122sub), i240)), i243, i242, i243, i243) :|: TRUE f1274_0_random_FieldAccess(EOS(STATIC_1274(java.lang.Object(o122sub), i240)), i243, i242, i243, i243) -> f1339_0_random_FieldAccess(EOS(STATIC_1339(java.lang.Object(o122sub), i240)), i243, i242, i243, i243, i240) :|: TRUE f1339_0_random_FieldAccess(EOS(STATIC_1339(java.lang.Object(o122sub), i240)), i243, i242, i243, i243, i240) -> f1340_0_random_ArrayLength(EOS(STATIC_1340(java.lang.Object(o122sub), i240)), i243, i242, i243, i243, i240, java.lang.Object(o122sub)) :|: TRUE f1340_0_random_ArrayLength(EOS(STATIC_1340(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, java.lang.Object(ARRAY(i339))) -> f1342_0_random_ArrayLength(EOS(STATIC_1342(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, java.lang.Object(ARRAY(i339))) :|: i339 >= 0 f1342_0_random_ArrayLength(EOS(STATIC_1342(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, java.lang.Object(ARRAY(i339))) -> f1344_0_random_LT(EOS(STATIC_1344(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, i339) :|: i339 >= 0 f1344_0_random_LT(EOS(STATIC_1344(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, i339) -> f1356_0_random_LT(EOS(STATIC_1356(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, i339) :|: i240 < i339 f1344_0_random_LT(EOS(STATIC_1344(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, i339) -> f1357_0_random_LT(EOS(STATIC_1357(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, i339) :|: i240 >= i339 f1356_0_random_LT(EOS(STATIC_1356(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, i339) -> f1361_0_random_FieldAccess(EOS(STATIC_1361(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243) :|: i240 < i339 f1361_0_random_FieldAccess(EOS(STATIC_1361(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243) -> f1363_0_random_FieldAccess(EOS(STATIC_1363(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339))) :|: TRUE f1363_0_random_FieldAccess(EOS(STATIC_1363(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339))) -> f1365_0_random_ArrayAccess(EOS(STATIC_1365(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339)), i240) :|: TRUE f1365_0_random_ArrayAccess(EOS(STATIC_1365(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339)), i346) -> f1371_0_random_ArrayAccess(EOS(STATIC_1371(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339)), i346) :|: TRUE f1371_0_random_ArrayAccess(EOS(STATIC_1371(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339)), i346) -> f1377_0_random_ArrayAccess(EOS(STATIC_1377(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339)), i346) :|: TRUE f1377_0_random_ArrayAccess(EOS(STATIC_1377(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, java.lang.Object(ARRAY(i339)), i346) -> f1382_0_random_Store(EOS(STATIC_1382(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150) :|: TRUE f1382_0_random_Store(EOS(STATIC_1382(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150) -> f1392_0_random_FieldAccess(EOS(STATIC_1392(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150) :|: TRUE f1392_0_random_FieldAccess(EOS(STATIC_1392(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150) -> f1396_0_random_ConstantStackPush(EOS(STATIC_1396(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150, i346) :|: TRUE f1396_0_random_ConstantStackPush(EOS(STATIC_1396(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150, i346) -> f1406_0_random_IntArithmetic(EOS(STATIC_1406(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150, i346, 1) :|: TRUE f1406_0_random_IntArithmetic(EOS(STATIC_1406(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150, i346, matching1) -> f1417_0_random_FieldAccess(EOS(STATIC_1417(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150, i346 + 1) :|: i346 >= 0 && matching1 = 1 f1417_0_random_FieldAccess(EOS(STATIC_1417(java.lang.Object(ARRAY(i339)), i346)), i243, i242, i243, i243, o150, i348) -> f1424_0_random_Load(EOS(STATIC_1424(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, o150) :|: TRUE f1424_0_random_Load(EOS(STATIC_1424(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, o150) -> f1429_0_random_InvokeMethod(EOS(STATIC_1429(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, o150) :|: TRUE f1429_0_random_InvokeMethod(EOS(STATIC_1429(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o152sub)) -> f1438_0_random_InvokeMethod(EOS(STATIC_1438(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o152sub)) :|: TRUE f1438_0_random_InvokeMethod(EOS(STATIC_1438(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o153sub)) -> f1445_0_random_InvokeMethod(EOS(STATIC_1445(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o153sub)) :|: TRUE f1445_0_random_InvokeMethod(EOS(STATIC_1445(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o153sub)) -> f1451_0_length_Load(EOS(STATIC_1451(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o153sub)) :|: TRUE f1451_0_length_Load(EOS(STATIC_1451(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o153sub)) -> f1462_0_length_FieldAccess(EOS(STATIC_1462(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(o153sub)) :|: TRUE f1462_0_length_FieldAccess(EOS(STATIC_1462(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(java.lang.String(EOC, i358))) -> f1470_0_length_FieldAccess(EOS(STATIC_1470(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(java.lang.String(EOC, i358))) :|: i358 >= 0 f1470_0_length_FieldAccess(EOS(STATIC_1470(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, java.lang.Object(java.lang.String(EOC, i358))) -> f1474_0_length_Return(EOS(STATIC_1474(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) :|: TRUE f1474_0_length_Return(EOS(STATIC_1474(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) -> f1480_0_random_Return(EOS(STATIC_1480(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) :|: TRUE f1480_0_random_Return(EOS(STATIC_1480(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) -> f1485_0_loop_Store(EOS(STATIC_1485(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) :|: TRUE f1485_0_loop_Store(EOS(STATIC_1485(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) -> f1488_0_loop_ConstantStackPush(EOS(STATIC_1488(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) :|: TRUE f1488_0_loop_ConstantStackPush(EOS(STATIC_1488(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358) -> f1552_0_loop_Store(EOS(STATIC_1552(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358, 10) :|: TRUE f1552_0_loop_Store(EOS(STATIC_1552(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i243, i358, matching1) -> f2361_0_loop_Load(EOS(STATIC_2361(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i243, i358) :|: TRUE && matching1 = 10 f2361_0_loop_Load(EOS(STATIC_2361(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i243, i358) -> f2385_0_loop_ConstantStackPush(EOS(STATIC_2385(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i358, i243) :|: TRUE && matching1 = 10 f2385_0_loop_ConstantStackPush(EOS(STATIC_2385(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i358, i243) -> f2403_0_loop_IntArithmetic(EOS(STATIC_2403(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i358, i243, 1) :|: TRUE && matching1 = 10 f2403_0_loop_IntArithmetic(EOS(STATIC_2403(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i358, i243, matching2) -> f2493_0_loop_Load(EOS(STATIC_2493(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i358, i243 + 1) :|: i243 >= 0 && matching1 = 10 && matching2 = 1 f2493_0_loop_Load(EOS(STATIC_2493(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i358, i519) -> f2553_0_loop_IntArithmetic(EOS(STATIC_2553(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i519, i358) :|: TRUE && matching1 = 10 f2553_0_loop_IntArithmetic(EOS(STATIC_2553(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i519, i358) -> f2583_0_loop_Store(EOS(STATIC_2583(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i519 + i358) :|: i519 > 0 && i358 >= 0 && matching1 = 10 f2583_0_loop_Store(EOS(STATIC_2583(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i530) -> f2593_0_loop_Load(EOS(STATIC_2593(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i530) :|: TRUE && matching1 = 10 f2593_0_loop_Load(EOS(STATIC_2593(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i530) -> f2606_0_loop_Store(EOS(STATIC_2606(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i530, i530) :|: TRUE && matching1 = 10 f2606_0_loop_Store(EOS(STATIC_2606(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i530, i530) -> f2625_0_loop_Load(EOS(STATIC_2625(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, 10, i530) :|: TRUE && matching1 = 10 f2625_0_loop_Load(EOS(STATIC_2625(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, matching1, i530) -> f2635_0_loop_Load(EOS(STATIC_2635(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, 10, i530, i530) :|: TRUE && matching1 = 10 f2635_0_loop_Load(EOS(STATIC_2635(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, matching1, i530, i530) -> f2667_0_loop_Load(EOS(STATIC_2667(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, i530, 10) :|: TRUE && matching1 = 10 f2667_0_loop_Load(EOS(STATIC_2667(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, i530, matching1) -> f2678_0_loop_InvokeMethod(EOS(STATIC_2678(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, 10, i530) :|: TRUE && matching1 = 10 f2678_0_loop_InvokeMethod(EOS(STATIC_2678(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, matching1, i530) -> f2728_0_loop_Load(EOS(STATIC_2728(java.lang.Object(ARRAY(i339)), i348)), i530, 10, i530, i530, 10, i530) :|: i530 >= 1 && i348 >= 1 && i348 <= i339 && matching1 = 10 f2678_0_loop_InvokeMethod(EOS(STATIC_2678(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, matching1, i530) -> f2728_1_loop_Load(EOS(STATIC_2728(java.lang.Object(ARRAY(i339)), i348)), i243, i242, i243, i530, 10, i530) :|: i530 >= 1 && i348 >= 1 && i348 <= i339 && matching1 = 10 f2728_0_loop_Load(EOS(STATIC_2728(java.lang.Object(ARRAY(i339)), i348)), i530, matching1, i530, i530, matching2, i530) -> f2735_0_loop_Load(EOS(STATIC_2735(java.lang.Object(ARRAY(i339)), i348)), i530, 10, i530, i530, 10, i530) :|: TRUE && matching1 = 10 && matching2 = 10 f2735_0_loop_Load(EOS(STATIC_2735(java.lang.Object(ARRAY(i339)), i348)), i530, matching1, i530, i530, matching2, i530) -> f1128_0_loop_Load(EOS(STATIC_1128(java.lang.Object(ARRAY(i339)), i348)), i530, 10, i530, i530, 10, i530) :|: TRUE && matching1 = 10 && matching2 = 10 f1128_0_loop_Load(EOS(STATIC_1128(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i242, i243) -> f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(o122sub), i240)), i241, i242, i243, i241, i243, i242) :|: TRUE f1357_0_random_LT(EOS(STATIC_1357(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, i240, i339) -> f1362_0_random_ConstantStackPush(EOS(STATIC_1362(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243) :|: i240 >= i339 f1362_0_random_ConstantStackPush(EOS(STATIC_1362(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243) -> f1364_0_random_Return(EOS(STATIC_1364(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, 0) :|: TRUE f1364_0_random_Return(EOS(STATIC_1364(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, matching1) -> f1367_0_loop_Store(EOS(STATIC_1367(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, 0) :|: TRUE && matching1 = 0 f1367_0_loop_Store(EOS(STATIC_1367(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, matching1) -> f1374_0_loop_ConstantStackPush(EOS(STATIC_1374(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, 0) :|: TRUE && matching1 = 0 f1374_0_loop_ConstantStackPush(EOS(STATIC_1374(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, matching1) -> f1379_0_loop_Store(EOS(STATIC_1379(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, 0, 10) :|: TRUE && matching1 = 0 f1379_0_loop_Store(EOS(STATIC_1379(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i243, matching1, matching2) -> f1387_0_loop_Load(EOS(STATIC_1387(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, i243, 0) :|: TRUE && matching1 = 0 && matching2 = 10 f1387_0_loop_Load(EOS(STATIC_1387(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, i243, matching2) -> f1394_0_loop_ConstantStackPush(EOS(STATIC_1394(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, 0, i243) :|: TRUE && matching1 = 10 && matching2 = 0 f1394_0_loop_ConstantStackPush(EOS(STATIC_1394(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, matching2, i243) -> f1403_0_loop_IntArithmetic(EOS(STATIC_1403(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, 0, i243, 1) :|: TRUE && matching1 = 10 && matching2 = 0 f1403_0_loop_IntArithmetic(EOS(STATIC_1403(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, matching2, i243, matching3) -> f1412_0_loop_Load(EOS(STATIC_1412(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, 0, i243 + 1) :|: i243 >= 0 && matching1 = 10 && matching2 = 0 && matching3 = 1 f1412_0_loop_Load(EOS(STATIC_1412(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, matching2, i347) -> f1420_0_loop_IntArithmetic(EOS(STATIC_1420(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, i347, 0) :|: TRUE && matching1 = 10 && matching2 = 0 f1420_0_loop_IntArithmetic(EOS(STATIC_1420(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, i347, matching2) -> f1428_0_loop_Store(EOS(STATIC_1428(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, i347 + 0) :|: i347 > 0 && matching1 = 10 && matching2 = 0 f1428_0_loop_Store(EOS(STATIC_1428(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, i347) -> f1432_0_loop_Load(EOS(STATIC_1432(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, i347) :|: TRUE && matching1 = 10 f1432_0_loop_Load(EOS(STATIC_1432(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, i347) -> f1442_0_loop_Store(EOS(STATIC_1442(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, i347, i347) :|: TRUE && matching1 = 10 f1442_0_loop_Store(EOS(STATIC_1442(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, i347, i347) -> f1448_0_loop_Load(EOS(STATIC_1448(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, 10, i347) :|: TRUE && matching1 = 10 f1448_0_loop_Load(EOS(STATIC_1448(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, matching1, i347) -> f1454_0_loop_Load(EOS(STATIC_1454(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, 10, i347, i347) :|: TRUE && matching1 = 10 f1454_0_loop_Load(EOS(STATIC_1454(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, matching1, i347, i347) -> f1457_0_loop_Load(EOS(STATIC_1457(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, i347, 10) :|: TRUE && matching1 = 10 f1457_0_loop_Load(EOS(STATIC_1457(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, i347, matching1) -> f1468_0_loop_InvokeMethod(EOS(STATIC_1468(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, 10, i347) :|: TRUE && matching1 = 10 f1468_0_loop_InvokeMethod(EOS(STATIC_1468(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, matching1, i347) -> f1472_0_loop_Load(EOS(STATIC_1472(java.lang.Object(ARRAY(i339)), i240)), i347, 10, i347, i347, 10, i347) :|: i347 >= 1 && i240 >= i339 && i347 > i243 && matching1 = 10 f1468_0_loop_InvokeMethod(EOS(STATIC_1468(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, matching1, i347) -> f1472_1_loop_Load(EOS(STATIC_1472(java.lang.Object(ARRAY(i339)), i240)), i243, i242, i243, i347, 10, i347) :|: i347 >= 1 && i240 >= i339 && i347 > i243 && matching1 = 10 f1472_0_loop_Load(EOS(STATIC_1472(java.lang.Object(ARRAY(i339)), i240)), i347, matching1, i347, i347, matching2, i347) -> f1476_0_loop_Load(EOS(STATIC_1476(java.lang.Object(ARRAY(i339)), i240)), i347, 10, i347, i347, 10, i347) :|: TRUE && matching1 = 10 && matching2 = 10 f1476_0_loop_Load(EOS(STATIC_1476(java.lang.Object(ARRAY(i339)), i240)), i347, matching1, i347, i347, matching2, i347) -> f1128_0_loop_Load(EOS(STATIC_1128(java.lang.Object(ARRAY(i339)), i240)), i347, 10, i347, i347, 10, i347) :|: TRUE && matching1 = 10 && matching2 = 10 Combined rules. Obtained 4 IRulesP rules: f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(ARRAY(i339:0)), i240:0)), i241:0, i242:0, i241:0, i241:0, i241:0, i242:0) -> f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(ARRAY(i339:0)), i240:0 + 1)), i241:0 + 1 + i358:0, 10, i241:0 + 1 + i358:0, i241:0 + 1 + i358:0, i241:0 + 1 + i358:0, 10) :|: i241:0 > -1 && i242:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 > i240:0 && i240:0 > -1 && i358:0 > -1 && i339:0 >= i240:0 + 1 && i241:0 + 1 + i358:0 >= 1 f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(ARRAY(i339:0)), i240:0)), i241:0, i242:0, i241:0, i241:0, i241:0, i242:0) -> f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(ARRAY(i339:0)), i240:0)), i241:0 + 1, 10, i241:0 + 1, i241:0 + 1, i241:0 + 1, 10) :|: i241:0 > -1 && i242:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 <= i240:0 && i241:0 + 1 > i241:0 Removed following non-SCC rules: f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(ARRAY(i339:0)), i240:0)), i241:0, i242:0, i241:0, i241:0, i241:0, i242:0) -> f2728_1_loop_Load(EOS(STATIC_2728(java.lang.Object(ARRAY(i339:0)), i240:0 + 1)), i241:0, i242:0, i241:0, i241:0 + 1 + i358:0, 10, i241:0 + 1 + i358:0) :|: i241:0 > -1 && i242:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 > i240:0 && i240:0 > -1 && i358:0 > -1 && i339:0 >= i240:0 + 1 && i241:0 + 1 + i358:0 >= 1 f1140_0_loop_Load(EOS(STATIC_1140(java.lang.Object(ARRAY(i339:0)), i240:0)), i241:0, i242:0, i241:0, i241:0, i241:0, i242:0) -> f1472_1_loop_Load(EOS(STATIC_1472(java.lang.Object(ARRAY(i339:0)), i240:0)), i241:0, i242:0, i241:0, i241:0 + 1, 10, i241:0 + 1) :|: i241:0 > -1 && i242:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 <= i240:0 && i241:0 + 1 > i241:0 Filtered duplicate arguments: f1140_0_loop_Load(x1, x2, x3, x4, x5, x6, x7) -> f1140_0_loop_Load(x1, x6, x7) Finished conversion. Obtained 2 rules.P rules: f1140_0_loop_Load(i241:0, i242:0, i339:0, i240:0) -> f1140_0_loop_Load(i241:0 + 1 + i358:0, 10, i339:0, i240:0 + 1) :|: i242:0 > -1 && i241:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 > i240:0 && i240:0 > -1 && i358:0 > -1 && i241:0 + 1 + i358:0 >= 1 && i339:0 >= i240:0 + 1 f1140_0_loop_Load(i241:0, i242:0, i339:0, i240:0) -> f1140_0_loop_Load(i241:0 + 1, 10, i339:0, i240:0) :|: i242:0 > -1 && i241:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i241:0 + 1 > i241:0 && i339:0 <= i240:0 ---------------------------------------- (8) Obligation: Rules: f1140_0_loop_Load(i241:0, i242:0, i339:0, i240:0) -> f1140_0_loop_Load(i241:0 + 1 + i358:0, 10, i339:0, i240:0 + 1) :|: i242:0 > -1 && i241:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 > i240:0 && i240:0 > -1 && i358:0 > -1 && i241:0 + 1 + i358:0 >= 1 && i339:0 >= i240:0 + 1 f1140_0_loop_Load(x, x1, x2, x3) -> f1140_0_loop_Load(x + 1, 10, x2, x3) :|: x1 > -1 && x > -1 && x1 - x >= 1 && x2 > -1 && x + 1 > x && x2 <= x3 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f1140_0_loop_Load(i241:0, i242:0, i339:0, i240:0) -> f1140_0_loop_Load(arith, 10, i339:0, arith1) :|: i242:0 > -1 && i241:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 > i240:0 && i240:0 > -1 && i358:0 > -1 && i241:0 + 1 + i358:0 >= 1 && i339:0 >= i240:0 + 1 && arith = i241:0 + 1 + i358:0 && arith1 = i240:0 + 1 f1140_0_loop_Load(x4, x5, x6, x7) -> f1140_0_loop_Load(x8, 10, x6, x7) :|: x5 > -1 && x4 > -1 && x5 - x4 >= 1 && x6 > -1 && x4 + 1 > x4 && x6 <= x7 && x8 = x4 + 1 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1140_0_loop_Load(i241:0, i242:0, i339:0, i240:0) -> f1140_0_loop_Load(arith, 10, i339:0, arith1) :|: i242:0 > -1 && i241:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 > i240:0 && i240:0 > -1 && i358:0 > -1 && i241:0 + 1 + i358:0 >= 1 && i339:0 >= i240:0 + 1 && arith = i241:0 + 1 + i358:0 && arith1 = i240:0 + 1 (2) f1140_0_loop_Load(x4, x5, x6, x7) -> f1140_0_loop_Load(x8, 10, x6, x7) :|: x5 > -1 && x4 > -1 && x5 - x4 >= 1 && x6 > -1 && x4 + 1 > x4 && x6 <= x7 && x8 = x4 + 1 Arcs: (1) -> (1), (2) (2) -> (2) This digraph is fully evaluated! ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1140_0_loop_Load(i241:0, i242:0, i339:0, i240:0) -> f1140_0_loop_Load(arith, 10, i339:0, arith1) :|: i242:0 > -1 && i241:0 > -1 && i242:0 - i241:0 >= 1 && i339:0 > -1 && i339:0 > i240:0 && i240:0 > -1 && i358:0 > -1 && i241:0 + 1 + i358:0 >= 1 && i339:0 >= i240:0 + 1 && arith = i241:0 + 1 + i358:0 && arith1 = i240:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1140_0_loop_Load(i241:0:0, i242:0:0, i339:0:0, i240:0:0) -> f1140_0_loop_Load(i241:0:0 + 1 + i358:0:0, 10, i339:0:0, i240:0:0 + 1) :|: i241:0:0 + 1 + i358:0:0 >= 1 && i339:0:0 >= i240:0:0 + 1 && i358:0:0 > -1 && i240:0:0 > -1 && i339:0:0 > i240:0:0 && i339:0:0 > -1 && i242:0:0 - i241:0:0 >= 1 && i241:0:0 > -1 && i242:0:0 > -1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1140_0_loop_Load(INTEGER, VARIABLE, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1140_0_loop_Load(i241:0:0, i242:0:0, i339:0:0, i240:0:0) -> f1140_0_loop_Load(c, c1, i339:0:0, c2) :|: c2 = i240:0:0 + 1 && (c1 = 10 && c = i241:0:0 + 1 + i358:0:0) && (i241:0:0 + 1 + i358:0:0 >= 1 && i339:0:0 >= i240:0:0 + 1 && i358:0:0 > -1 && i240:0:0 > -1 && i339:0:0 > i240:0:0 && i339:0:0 > -1 && i242:0:0 - i241:0:0 >= 1 && i241:0:0 > -1 && i242:0:0 > -1) ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1140_0_loop_Load ] = f1140_0_loop_Load_3 + -1*f1140_0_loop_Load_4 The following rules are decreasing: f1140_0_loop_Load(i241:0:0, i242:0:0, i339:0:0, i240:0:0) -> f1140_0_loop_Load(c, c1, i339:0:0, c2) :|: c2 = i240:0:0 + 1 && (c1 = 10 && c = i241:0:0 + 1 + i358:0:0) && (i241:0:0 + 1 + i358:0:0 >= 1 && i339:0:0 >= i240:0:0 + 1 && i358:0:0 > -1 && i240:0:0 > -1 && i339:0:0 > i240:0:0 && i339:0:0 > -1 && i242:0:0 - i241:0:0 >= 1 && i241:0:0 > -1 && i242:0:0 > -1) The following rules are bounded: f1140_0_loop_Load(i241:0:0, i242:0:0, i339:0:0, i240:0:0) -> f1140_0_loop_Load(c, c1, i339:0:0, c2) :|: c2 = i240:0:0 + 1 && (c1 = 10 && c = i241:0:0 + 1 + i358:0:0) && (i241:0:0 + 1 + i358:0:0 >= 1 && i339:0:0 >= i240:0:0 + 1 && i358:0:0 > -1 && i240:0:0 > -1 && i339:0:0 > i240:0:0 && i339:0:0 > -1 && i242:0:0 - i241:0:0 >= 1 && i241:0:0 > -1 && i242:0:0 > -1) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Termination digraph: Nodes: (1) f1140_0_loop_Load(x4, x5, x6, x7) -> f1140_0_loop_Load(x8, 10, x6, x7) :|: x5 > -1 && x4 > -1 && x5 - x4 >= 1 && x6 > -1 && x4 + 1 > x4 && x6 <= x7 && x8 = x4 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (21) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (22) Obligation: Rules: f1140_0_loop_Load(x4:0, x5:0, x6:0, x7:0) -> f1140_0_loop_Load(x4:0 + 1, 10, x6:0, x7:0) :|: x4:0 + 1 > x4:0 && x7:0 >= x6:0 && x6:0 > -1 && x5:0 - x4:0 >= 1 && x4:0 > -1 && x5:0 > -1 ---------------------------------------- (23) IRSwTChainingProof (EQUIVALENT) Chaining! ---------------------------------------- (24) Obligation: Rules: f1140_0_loop_Load(x, x1, x2, x3) -> f1140_0_loop_Load(x + 2, 10, x2, x3) :|: TRUE && x3 + -1 * x2 >= 0 && x2 >= 0 && x1 + -1 * x >= 1 && x >= 0 && x1 >= 0 && -1 * x >= -8 && 0 >= -10 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1140_0_loop_Load(x, x1, x2, x3) -> f1140_0_loop_Load(x + 2, 10, x2, x3) :|: TRUE && x3 + -1 * x2 >= 0 && x2 >= 0 && x1 + -1 * x >= 1 && x >= 0 && x1 >= 0 && -1 * x >= -8 && 0 >= -10 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1140_0_loop_Load(x, x1, x2, x3) -> f1140_0_loop_Load(x + 2, 10, x2, x3) :|: TRUE && x3 + -1 * x2 >= 0 && x2 >= 0 && x1 + -1 * x >= 1 && x >= 0 && x1 >= 0 && -1 * x >= -8 && 0 >= -10 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1140_0_loop_Load(x:0, x1:0, x2:0, x3:0) -> f1140_0_loop_Load(x:0 + 2, 10, x2:0, x3:0) :|: x1:0 > -1 && -8 <= -1 * x:0 && x:0 > -1 && x1:0 + -1 * x:0 >= 1 && x3:0 + -1 * x2:0 >= 0 && x2:0 > -1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1140_0_loop_Load(INTEGER, VARIABLE, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1140_0_loop_Load(x:0, x1:0, x2:0, x3:0) -> f1140_0_loop_Load(c, c1, x2:0, x3:0) :|: c1 = 10 && c = x:0 + 2 && (x1:0 > -1 && -8 <= -1 * x:0 && x:0 > -1 && x1:0 + -1 * x:0 >= 1 && x3:0 + -1 * x2:0 >= 0 && x2:0 > -1) ---------------------------------------- (31) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1140_0_loop_Load ] = -1/2*f1140_0_loop_Load_1 The following rules are decreasing: f1140_0_loop_Load(x:0, x1:0, x2:0, x3:0) -> f1140_0_loop_Load(c, c1, x2:0, x3:0) :|: c1 = 10 && c = x:0 + 2 && (x1:0 > -1 && -8 <= -1 * x:0 && x:0 > -1 && x1:0 + -1 * x:0 >= 1 && x3:0 + -1 * x2:0 >= 0 && x2:0 > -1) The following rules are bounded: f1140_0_loop_Load(x:0, x1:0, x2:0, x3:0) -> f1140_0_loop_Load(c, c1, x2:0, x3:0) :|: c1 = 10 && c = x:0 + 2 && (x1:0 > -1 && -8 <= -1 * x:0 && x:0 > -1 && x1:0 + -1 * x:0 >= 1 && x3:0 + -1 * x2:0 >= 0 && x2:0 > -1) ---------------------------------------- (32) YES