(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_24 (Apple Inc.) Main-Class: Parts
public class Parts {

public static int parts(int p, int q) {
if (p <= 0) return 1;
else if (q <= 0) return 0;
else if (q > p) return parts(p, p);
else return parts(p-q, q) + parts(p, q-1);
}

public static void main(String args[]) {
for (int p = 0; p <= args.length; p++)
for (int q = 0; q <= args.length; q++)
parts(p, q);
}
}

(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

Termination Graph based on JBC Program:
Parts.main([Ljava/lang/String;)V: Graph of 84 nodes with 1 SCC.

Parts.parts(II)I: Graph of 82 nodes with 0 SCCs.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 2 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Parts.parts(II)I
SCC calls the following helper methods: Parts.parts(II)I
Performed SCC analyses: UsedFieldsAnalysis

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 49 rules for P and 39 rules for R.


P rules:
674_0_parts_GT(EOS(STATIC_674), i74, i70, i74) → 678_0_parts_GT(EOS(STATIC_678), i74, i70, i74)
678_0_parts_GT(EOS(STATIC_678), i74, i70, i74) → 682_0_parts_Load(EOS(STATIC_682), i74, i70) | >(i74, 0)
682_0_parts_Load(EOS(STATIC_682), i74, i70) → 687_0_parts_GT(EOS(STATIC_687), i74, i70, i70)
687_0_parts_GT(EOS(STATIC_687), i74, i76, i76) → 693_0_parts_GT(EOS(STATIC_693), i74, i76, i76)
693_0_parts_GT(EOS(STATIC_693), i74, i76, i76) → 703_0_parts_Load(EOS(STATIC_703), i74, i76) | >(i76, 0)
703_0_parts_Load(EOS(STATIC_703), i74, i76) → 708_0_parts_Load(EOS(STATIC_708), i74, i76, i76)
708_0_parts_Load(EOS(STATIC_708), i74, i76, i76) → 715_0_parts_LE(EOS(STATIC_715), i74, i76, i76, i74)
715_0_parts_LE(EOS(STATIC_715), i74, i76, i76, i74) → 725_0_parts_LE(EOS(STATIC_725), i74, i76, i76, i74)
715_0_parts_LE(EOS(STATIC_715), i74, i76, i76, i74) → 726_0_parts_LE(EOS(STATIC_726), i74, i76, i76, i74)
725_0_parts_LE(EOS(STATIC_725), i74, i76, i76, i74) → 731_0_parts_Load(EOS(STATIC_731), i74, i76) | <=(i76, i74)
731_0_parts_Load(EOS(STATIC_731), i74, i76) → 747_0_parts_Load(EOS(STATIC_747), i74, i76, i74)
747_0_parts_Load(EOS(STATIC_747), i74, i76, i74) → 753_0_parts_IntArithmetic(EOS(STATIC_753), i74, i76, i74, i76)
753_0_parts_IntArithmetic(EOS(STATIC_753), i74, i76, i74, i76) → 758_0_parts_Load(EOS(STATIC_758), i74, i76, -(i74, i76)) | &&(>(i74, 0), >(i76, 0))
758_0_parts_Load(EOS(STATIC_758), i74, i76, i86) → 763_0_parts_InvokeMethod(EOS(STATIC_763), i74, i76, i86, i76)
763_0_parts_InvokeMethod(EOS(STATIC_763), i74, i76, i86, i76) → 769_1_parts_InvokeMethod(769_0_parts_Load(EOS(STATIC_769), i86, i76), i74, i76, i86, i76)
769_0_parts_Load(EOS(STATIC_769), i86, i76) → 775_0_parts_Load(EOS(STATIC_775), i86, i76)
769_1_parts_InvokeMethod(684_0_parts_Return(EOS(STATIC_684), i96, i97, matching1), i74, i97, i96, i97) → 799_0_parts_Return(EOS(STATIC_799), i74, i97, i96, i97, i96, i97, 1) | =(matching1, 1)
769_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), i615, i616, i568), i74, i616, i615, i616) → 1403_0_parts_Return(EOS(STATIC_1403), i74, i616, i615, i616, i615, i616, i568)
769_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), i670, i671, i623), i74, i671, i670, i671) → 1440_0_parts_Return(EOS(STATIC_1440), i74, i671, i670, i671, i670, i671, i623)
769_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), i727), i74, i735, i734, i735) → 1506_0_parts_Return(EOS(STATIC_1506), i74, i735, i734, i735, i727)
775_0_parts_Load(EOS(STATIC_775), i86, i76) → 671_0_parts_Load(EOS(STATIC_671), i86, i76)
671_0_parts_Load(EOS(STATIC_671), i69, i70) → 674_0_parts_GT(EOS(STATIC_674), i69, i70, i69)
799_0_parts_Return(EOS(STATIC_799), i74, i97, i96, i97, i96, i97, matching1) → 804_0_parts_Load(EOS(STATIC_804), i74, i97, 1) | =(matching1, 1)
804_0_parts_Load(EOS(STATIC_804), i74, i97, matching1) → 885_0_parts_Load(EOS(STATIC_885), i74, i97, 1) | =(matching1, 1)
885_0_parts_Load(EOS(STATIC_885), i74, i118, matching1) → 926_0_parts_Load(EOS(STATIC_926), i74, i118, 1) | =(matching1, 1)
926_0_parts_Load(EOS(STATIC_926), i74, i132, matching1) → 1069_0_parts_Load(EOS(STATIC_1069), i74, i132, 1) | =(matching1, 1)
1069_0_parts_Load(EOS(STATIC_1069), i74, i211, i212) → 1120_0_parts_Load(EOS(STATIC_1120), i74, i211, i212)
1120_0_parts_Load(EOS(STATIC_1120), i74, i282, i284) → 1226_0_parts_Load(EOS(STATIC_1226), i74, i282, i284)
1226_0_parts_Load(EOS(STATIC_1226), i74, i397, i398) → 1268_0_parts_Load(EOS(STATIC_1268), i74, i397, i398)
1268_0_parts_Load(EOS(STATIC_1268), i74, i469, i471) → 1372_0_parts_Load(EOS(STATIC_1372), i74, i469, i471)
1372_0_parts_Load(EOS(STATIC_1372), i74, i577, i578) → 1419_0_parts_Load(EOS(STATIC_1419), i74, i577, i578)
1419_0_parts_Load(EOS(STATIC_1419), i74, i633, i635) → 1424_0_parts_Load(EOS(STATIC_1424), i633, i635, i74)
1424_0_parts_Load(EOS(STATIC_1424), i633, i635, i74) → 1435_0_parts_ConstantStackPush(EOS(STATIC_1435), i635, i74, i633)
1435_0_parts_ConstantStackPush(EOS(STATIC_1435), i635, i74, i633) → 1444_0_parts_IntArithmetic(EOS(STATIC_1444), i635, i74, i633, 1)
1444_0_parts_IntArithmetic(EOS(STATIC_1444), i635, i74, i633, matching1) → 1448_0_parts_InvokeMethod(EOS(STATIC_1448), i635, i74, -(i633, 1)) | &&(>(i633, 0), =(matching1, 1))
1448_0_parts_InvokeMethod(EOS(STATIC_1448), i635, i74, i685) → 1449_1_parts_InvokeMethod(1449_0_parts_Load(EOS(STATIC_1449), i74, i685), i635, i74, i685)
1449_0_parts_Load(EOS(STATIC_1449), i74, i685) → 1450_0_parts_Load(EOS(STATIC_1450), i74, i685)
1450_0_parts_Load(EOS(STATIC_1450), i74, i685) → 671_0_parts_Load(EOS(STATIC_671), i74, i685)
1403_0_parts_Return(EOS(STATIC_1403), i74, i616, i615, i616, i615, i616, i568) → 1404_0_parts_Return(EOS(STATIC_1404), i74, i616, i615, i616, i615, i616, i568)
1404_0_parts_Return(EOS(STATIC_1404), i74, i633, i634, i633, i634, i633, i635) → 1419_0_parts_Load(EOS(STATIC_1419), i74, i633, i635)
1440_0_parts_Return(EOS(STATIC_1440), i74, i671, i670, i671, i670, i671, i623) → 1404_0_parts_Return(EOS(STATIC_1404), i74, i671, i670, i671, i670, i671, i623)
1506_0_parts_Return(EOS(STATIC_1506), i74, i735, i734, i735, i727) → 1357_0_parts_Return(EOS(STATIC_1357), i74, i735, i734, i735, i727)
1357_0_parts_Return(EOS(STATIC_1357), i74, i577, i579, i577, i578) → 1372_0_parts_Load(EOS(STATIC_1372), i74, i577, i578)
726_0_parts_LE(EOS(STATIC_726), i74, i76, i76, i74) → 733_0_parts_Load(EOS(STATIC_733), i74, i76) | >(i76, i74)
733_0_parts_Load(EOS(STATIC_733), i74, i76) → 749_0_parts_Load(EOS(STATIC_749), i74, i76, i74)
749_0_parts_Load(EOS(STATIC_749), i74, i76, i74) → 755_0_parts_InvokeMethod(EOS(STATIC_755), i74, i76, i74, i74)
755_0_parts_InvokeMethod(EOS(STATIC_755), i74, i76, i74, i74) → 760_1_parts_InvokeMethod(760_0_parts_Load(EOS(STATIC_760), i74, i74), i74, i76, i74, i74)
760_0_parts_Load(EOS(STATIC_760), i74, i74) → 765_0_parts_Load(EOS(STATIC_765), i74, i74)
765_0_parts_Load(EOS(STATIC_765), i74, i74) → 671_0_parts_Load(EOS(STATIC_671), i74, i74)
R rules:
674_0_parts_GT(EOS(STATIC_674), i73, i70, i73) → 677_0_parts_GT(EOS(STATIC_677), i73, i70, i73)
677_0_parts_GT(EOS(STATIC_677), i73, i70, i73) → 680_0_parts_ConstantStackPush(EOS(STATIC_680), i73, i70) | <=(i73, 0)
680_0_parts_ConstantStackPush(EOS(STATIC_680), i73, i70) → 684_0_parts_Return(EOS(STATIC_684), i73, i70, 1)
687_0_parts_GT(EOS(STATIC_687), i74, matching1, matching2) → 692_0_parts_GT(EOS(STATIC_692), i74, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
692_0_parts_GT(EOS(STATIC_692), i74, matching1, matching2) → 700_0_parts_ConstantStackPush(EOS(STATIC_700), i74, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
700_0_parts_ConstantStackPush(EOS(STATIC_700), i74, matching1) → 706_0_parts_Return(EOS(STATIC_706), i74, 0, 0) | =(matching1, 0)
760_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), i613, i613, i568), i613, i76, i613, i613) → 1397_0_parts_Return(EOS(STATIC_1397), i613, i76, i613, i613, i613, i613, i568)
760_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), i668, i668, i623), i668, i76, i668, i668) → 1439_0_parts_Return(EOS(STATIC_1439), i668, i76, i668, i668, i668, i668, i623)
760_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), i727), i733, i76, i733, i733) → 1504_0_parts_Return(EOS(STATIC_1504), i733, i76, i733, i733, i727)
876_0_parts_Return(EOS(STATIC_876), i116, i76, i116, i116, matching1) → 1044_0_parts_Return(EOS(STATIC_1044), i116, i76, i116, i116, 1) | =(matching1, 1)
877_0_parts_Return(EOS(STATIC_877), i74, i118, i117, i118, matching1) → 1051_0_parts_Return(EOS(STATIC_1051), i74, i118, i117, i118, 1) | =(matching1, 1)
912_0_parts_Return(EOS(STATIC_912), i129, i76, i129, i129, i129, i129, matching1) → 1096_0_parts_Return(EOS(STATIC_1096), i129, i76, i129, i129, i129, i129, 1) | =(matching1, 1)
913_0_parts_Return(EOS(STATIC_913), i74, i132, i131, i132, i131, i132, matching1) → 1104_0_parts_Return(EOS(STATIC_1104), i74, i132, i131, i132, i131, i132, 1) | =(matching1, 1)
1044_0_parts_Return(EOS(STATIC_1044), i199, i76, i199, i199, i200) → 1207_0_parts_Return(EOS(STATIC_1207), i199, i76, i199, i199, i200)
1051_0_parts_Return(EOS(STATIC_1051), i74, i211, i213, i211, i212) → 1212_0_parts_Return(EOS(STATIC_1212), i74, i211, i213, i211, i212)
1096_0_parts_Return(EOS(STATIC_1096), i271, i76, i271, i271, i271, i271, i272) → 1248_0_parts_Return(EOS(STATIC_1248), i271, i76, i271, i271, i271, i271, i272)
1104_0_parts_Return(EOS(STATIC_1104), i74, i282, i283, i282, i283, i282, i284) → 1254_0_parts_Return(EOS(STATIC_1254), i74, i282, i283, i282, i283, i282, i284)
1207_0_parts_Return(EOS(STATIC_1207), i385, i76, i385, i385, i386) → 1349_0_parts_Return(EOS(STATIC_1349), i385, i76, i385, i385, i386)
1212_0_parts_Return(EOS(STATIC_1212), i74, i397, i399, i397, i398) → 1357_0_parts_Return(EOS(STATIC_1357), i74, i397, i399, i397, i398)
1248_0_parts_Return(EOS(STATIC_1248), i458, i76, i458, i458, i458, i458, i459) → 1398_0_parts_Return(EOS(STATIC_1398), i458, i76, i458, i458, i458, i458, i459)
1254_0_parts_Return(EOS(STATIC_1254), i74, i469, i470, i469, i470, i469, i471) → 1404_0_parts_Return(EOS(STATIC_1404), i74, i469, i470, i469, i470, i469, i471)
1349_0_parts_Return(EOS(STATIC_1349), i567, i76, i567, i567, i568) → 1370_0_parts_Return(EOS(STATIC_1370), i567, i76, i568)
1370_0_parts_Return(EOS(STATIC_1370), i567, i76, i568) → 1416_0_parts_Return(EOS(STATIC_1416), i567, i76, i568)
1397_0_parts_Return(EOS(STATIC_1397), i613, i76, i613, i613, i613, i613, i568) → 1398_0_parts_Return(EOS(STATIC_1398), i613, i76, i613, i613, i613, i613, i568)
1398_0_parts_Return(EOS(STATIC_1398), i622, i76, i622, i622, i622, i622, i623) → 1416_0_parts_Return(EOS(STATIC_1416), i622, i76, i623)
1439_0_parts_Return(EOS(STATIC_1439), i668, i76, i668, i668, i668, i668, i623) → 1398_0_parts_Return(EOS(STATIC_1398), i668, i76, i668, i668, i668, i668, i623)
1449_1_parts_InvokeMethod(706_0_parts_Return(EOS(STATIC_706), i689, matching1, matching2), i635, i689, matching3) → 1460_0_parts_Return(EOS(STATIC_1460), i635, i689, 0, i689, 0, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1449_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), i690, i691, i568), i635, i690, i691) → 1461_0_parts_Return(EOS(STATIC_1461), i635, i690, i691, i690, i691, i568)
1449_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), i692, i693, i623), i635, i692, i693) → 1464_0_parts_Return(EOS(STATIC_1464), i635, i692, i693, i692, i693, i623)
1449_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), i727), i635, i739, i740) → 1510_0_parts_Return(EOS(STATIC_1510), i635, i739, i740, i727)
1460_0_parts_Return(EOS(STATIC_1460), i635, i689, matching1, i689, matching2, matching3) → 1465_0_parts_IntArithmetic(EOS(STATIC_1465), i635, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1461_0_parts_Return(EOS(STATIC_1461), i635, i690, i691, i690, i691, i568) → 1467_0_parts_IntArithmetic(EOS(STATIC_1467), i635, i568)
1464_0_parts_Return(EOS(STATIC_1464), i635, i692, i693, i692, i693, i623) → 1461_0_parts_Return(EOS(STATIC_1461), i635, i692, i693, i692, i693, i623)
1465_0_parts_IntArithmetic(EOS(STATIC_1465), i635, matching1) → 1467_0_parts_IntArithmetic(EOS(STATIC_1467), i635, 0) | =(matching1, 0)
1467_0_parts_IntArithmetic(EOS(STATIC_1467), i635, i568) → 1490_0_parts_IntArithmetic(EOS(STATIC_1490), i635, i568)
1487_0_parts_Return(EOS(STATIC_1487), i635, i715, i716, i703) → 1490_0_parts_IntArithmetic(EOS(STATIC_1490), i635, i703)
1490_0_parts_IntArithmetic(EOS(STATIC_1490), i635, i703) → 1492_0_parts_Return(EOS(STATIC_1492), +(i635, i703))
1504_0_parts_Return(EOS(STATIC_1504), i733, i76, i733, i733, i727) → 1349_0_parts_Return(EOS(STATIC_1349), i733, i76, i733, i733, i727)
1510_0_parts_Return(EOS(STATIC_1510), i635, i739, i740, i727) → 1487_0_parts_Return(EOS(STATIC_1487), i635, i739, i740, i727)

Combined rules. Obtained 6 conditional rules for P and 8 conditional rules for R.


P rules:
674_0_parts_GT(EOS(STATIC_674), x0, x1, x0) → 769_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), -(x0, x1), x1, -(x0, x1)), x0, x1, -(x0, x1), x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
769_1_parts_InvokeMethod(684_0_parts_Return(EOS(STATIC_684), x0, x1, 1), x3, x1, x0, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x3, -(x1, 1), x3), 1, x3, -(x1, 1)) | >(x1, 0)
769_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), x0, x1, x2), x3, x1, x0, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x3, -(x1, 1), x3), x2, x3, -(x1, 1)) | >(x1, 0)
769_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), x0, x1, x2), x3, x1, x0, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x3, -(x1, 1), x3), x2, x3, -(x1, 1)) | >(x1, 0)
769_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), x0), x1, x2, x3, x2) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x1, -(x2, 1), x1), x0, x1, -(x2, 1)) | >(x2, 0)
674_0_parts_GT(EOS(STATIC_674), x0, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x0, x0, x0), x0, x1, x0, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
R rules:
674_0_parts_GT(EOS(STATIC_674), x0, x1, x0) → 684_0_parts_Return(EOS(STATIC_684), x0, x1, 1) | <=(x0, 0)
760_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), x0, x0, x1), x0, x2, x0, x0) → 1416_0_parts_Return(EOS(STATIC_1416), x0, x2, x1)
760_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), x0, x0, x1), x0, x2, x0, x0) → 1416_0_parts_Return(EOS(STATIC_1416), x0, x2, x1)
760_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), x0), x1, x2, x1, x1) → 1416_0_parts_Return(EOS(STATIC_1416), x1, x2, x0)
1449_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), x0, x1, x2), x3, x0, x1) → 1492_0_parts_Return(EOS(STATIC_1492), +(x3, x2))
1449_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), x0, x1, x2), x3, x0, x1) → 1492_0_parts_Return(EOS(STATIC_1492), +(x3, x2))
1449_1_parts_InvokeMethod(706_0_parts_Return(EOS(STATIC_706), x0, 0, 0), arith[1], x0, 0) → 1492_0_parts_Return(EOS(STATIC_1492), arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), x0), x1, x2, x3) → 1492_0_parts_Return(EOS(STATIC_1492), +(x1, x0))

Filtered ground terms:



674_0_parts_GT(x1, x2, x3, x4) → 674_0_parts_GT(x2, x3, x4)
Cond_674_0_parts_GT1(x1, x2, x3, x4, x5) → Cond_674_0_parts_GT1(x1, x3, x4, x5)
1492_0_parts_Return(x1, x2) → 1492_0_parts_Return(x2)
1416_0_parts_Return(x1, x2, x3, x4) → 1416_0_parts_Return(x2, x3, x4)
1370_0_parts_Return(x1, x2, x3, x4) → 1370_0_parts_Return(x2, x3, x4)
684_0_parts_Return(x1, x2, x3, x4) → 684_0_parts_Return(x2, x3)
Cond_674_0_parts_GT(x1, x2, x3, x4, x5) → Cond_674_0_parts_GT(x1, x3, x4, x5)
706_0_parts_Return(x1, x2, x3, x4) → 706_0_parts_Return(x2)

Filtered duplicate args:



674_0_parts_GT(x1, x2, x3) → 674_0_parts_GT(x2, x3)
Cond_674_0_parts_GT(x1, x2, x3, x4) → Cond_674_0_parts_GT(x1, x3, x4)
769_1_parts_InvokeMethod(x1, x2, x3, x4, x5) → 769_1_parts_InvokeMethod(x1, x2, x4, x5)
Cond_769_1_parts_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod(x1, x2, x3)
Cond_769_1_parts_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod1(x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod2(x1, x2, x3)
Cond_769_1_parts_InvokeMethod3(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod3(x1, x2, x3, x5, x6)
Cond_674_0_parts_GT1(x1, x2, x3, x4) → Cond_674_0_parts_GT1(x1, x3, x4)
760_1_parts_InvokeMethod(x1, x2, x3, x4, x5) → 760_1_parts_InvokeMethod(x1, x3, x5)

Filtered unneeded arguments:



1449_1_parts_InvokeMethod(x1, x2, x3, x4) → 1449_1_parts_InvokeMethod(x1, x3, x4)
Cond_769_1_parts_InvokeMethod3(x1, x2, x3, x4, x5) → Cond_769_1_parts_InvokeMethod3(x1, x3, x5)
1370_0_parts_Return(x1, x2, x3) → 1370_0_parts_Return(x1, x2)
1416_0_parts_Return(x1, x2, x3) → 1416_0_parts_Return(x1, x2)
684_0_parts_Return(x1, x2) → 684_0_parts_Return(x2)

Combined rules. Obtained 6 conditional rules for P and 8 conditional rules for R.


P rules:
674_0_parts_GT(x1, x0) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
769_1_parts_InvokeMethod(684_0_parts_Return(x1), x3, x0, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(-(x1, 1), x3), x3, -(x1, 1)) | >(x1, 0)
769_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x3, x0, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(-(x1, 1), x3), x3, -(x1, 1)) | >(x1, 0)
769_1_parts_InvokeMethod(1416_0_parts_Return(x0, x1), x3, x0, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(-(x1, 1), x3), x3, -(x1, 1)) | >(x1, 0)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x3, x2) → 1449_1_parts_InvokeMethod(674_0_parts_GT(-(x2, 1), x1), x1, -(x2, 1)) | >(x2, 0)
674_0_parts_GT(x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
R rules:
674_0_parts_GT(x1, x0) → 684_0_parts_Return(x1) | <=(x0, 0)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1416_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1416_0_parts_Return(x0, x0), x2, x0) → 1416_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1416_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(+(x3, x2))
1449_1_parts_InvokeMethod(1416_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(+(x3, x2))
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(+(x1, x0))

Performed bisimulation on rules. Used the following equivalence classes: {[1370_0_parts_Return_2, 1416_0_parts_Return_2]=1370_0_parts_Return_2, [684_0_parts_Return_1, 706_0_parts_Return_1]=684_0_parts_Return_1, [Cond_769_1_parts_InvokeMethod1_5, Cond_769_1_parts_InvokeMethod2_5]=Cond_769_1_parts_InvokeMethod1_5}


Finished conversion. Obtained 11 rules for P and 7 rules for R. System has predefined symbols.


P rules:
674_0_PARTS_GT(x1, x0) → COND_674_0_PARTS_GT(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0)
COND_674_0_PARTS_GT(TRUE, x1, x0) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1)
COND_674_0_PARTS_GT(TRUE, x1, x0) → 674_0_PARTS_GT(x1, -(x0, x1))
769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1), x3, x0, x1) → COND_769_1_PARTS_INVOKEMETHOD(>(x1, 0), 684_0_parts_Return(x1), x3, x0, x1)
COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1), x3, x0, x1) → 674_0_PARTS_GT(-(x1, 1), x3)
769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0, x1), x3, x0, x1) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1, 0), 1370_0_parts_Return(x0, x1), x3, x0, x1)
COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0, x1), x3, x0, x1) → 674_0_PARTS_GT(-(x1, 1), x3)
769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0), x1, x3, x2) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2, 0), 1492_0_parts_Return(x0), x1, x3, x2)
COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0), x1, x3, x2) → 674_0_PARTS_GT(-(x2, 1), x1)
674_0_PARTS_GT(x1, x0) → COND_674_0_PARTS_GT1(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)
COND_674_0_PARTS_GT1(TRUE, x1, x0) → 674_0_PARTS_GT(x0, x0)
R rules:
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(<=(x0, 0), x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1370_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1370_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(+(x3, x2))
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(+(x1, x0))

(7) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1370_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1370_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(1): COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(2): COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], x0[2] - x1[2])
(3): 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(x1[3] > 0, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(4): COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(x1[4] - 1, x3[4])
(5): 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(x1[5] > 0, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
(6): COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(x1[6] - 1, x3[6])
(7): 769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_769_1_PARTS_INVOKEMETHOD3(x2[7] > 0, 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])
(8): COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 674_0_PARTS_GT(x2[8] - 1, x1[8])
(9): 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(10): COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(1) -> (3), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 684_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(1) -> (5), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1370_0_parts_Return(x0[5], x1[5])∧x0[1]* x3[5]x0[1] - x1[1]* x0[5]x1[1]* x1[5])


(1) -> (7), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1492_0_parts_Return(x0[7])∧x0[1]* x1[7]x0[1] - x1[1]* x3[7]x1[1]* x2[7])


(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(2) -> (9), if (x1[2]* x1[9]x0[2] - x1[2]* x0[9])


(3) -> (4), if (x1[3] > 0684_0_parts_Return(x1[3]) →* 684_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(5) -> (6), if (x1[5] > 01370_0_parts_Return(x0[5], x1[5]) →* 1370_0_parts_Return(x0[6], x1[6])∧x3[5]* x3[6]x0[5]* x0[6]x1[5]* x1[6])


(6) -> (0), if (x1[6] - 1* x1[0]x3[6]* x0[0])


(6) -> (9), if (x1[6] - 1* x1[9]x3[6]* x0[9])


(7) -> (8), if (x2[7] > 01492_0_parts_Return(x0[7]) →* 1492_0_parts_Return(x0[8])∧x1[7]* x1[8]x3[7]* x3[8]x2[7]* x2[8])


(8) -> (0), if (x2[8] - 1* x1[0]x1[8]* x0[0])


(8) -> (9), if (x2[8] - 1* x1[9]x1[8]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])



The set Q consists of the following terms:
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)

(8) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: true Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@23c6e30f Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 674_0_PARTS_GT(x1, x0) → COND_674_0_PARTS_GT(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) which results in the following constraint:

    (1)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUE674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])) which results in the following constraint:

    (7)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (7) using rule (IV) which results in the following new constraint:

    (8)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUE674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (11) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (12)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)







For Pair COND_674_0_PARTS_GT(TRUE, x1, x0) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) which results in the following constraint:

    (13)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_parts_GT(x1[1], -(x0[1], x1[1]))=684_0_parts_Return(x1[3])∧x0[1]=x3[3]-(x0[1], x1[1])=x0[3]x1[1]=x1[3]COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (13) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (14)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_674_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=684_0_parts_Return(x1[0]) ⇒ COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (17) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (18)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) which results in the following constraint:

    (19)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_parts_GT(x1[1], -(x0[1], x1[1]))=1370_0_parts_Return(x0[5], x1[5])∧x0[1]=x3[5]-(x0[1], x1[1])=x0[5]x1[1]=x1[5]COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (19) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (20)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_674_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=1370_0_parts_Return(-(x0[0], x1[0]), x1[0]) ⇒ COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) which results in the following constraint:

    (25)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_parts_GT(x1[1], -(x0[1], x1[1]))=1492_0_parts_Return(x0[7])∧x0[1]=x1[7]-(x0[1], x1[1])=x3[7]x1[1]=x2[7]COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (25) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (26)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_674_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=1492_0_parts_Return(x0[7]) ⇒ COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (26) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (27)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (27) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (28)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (28) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (29)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧[(-1)bso_60] ≥ 0)



    We simplified constraint (29) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (30)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)







For Pair COND_674_0_PARTS_GT(TRUE, x1, x0) → 674_0_PARTS_GT(x1, -(x0, x1)) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (31)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[0]1-(x0[2], x1[2])=x0[0]1COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (31) using rules (III), (IV) which results in the following new constraint:

    (32)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥674_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (32) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (33)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (33) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (34)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (34) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (35)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (35) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (36)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (37)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[9]-(x0[2], x1[2])=x0[9]COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (37) using rules (III), (IV) which results in the following new constraint:

    (38)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥674_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (38) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (39)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (39) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (40)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (40) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (41)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧[(-1)bso_62] ≥ 0)



    We simplified constraint (41) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (42)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)







For Pair 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1), x3, x0, x1) → COND_769_1_PARTS_INVOKEMETHOD(>(x1, 0), 684_0_parts_Return(x1), x3, x0, x1) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]) which results in the following constraint:

    (43)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (43) using rules (I), (II), (IV) which results in the following new constraint:

    (44)    (>(x1[3], 0)=TRUE769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [bni_63]x0[3] ≥ 0∧[(-1)bso_64] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [bni_63]x0[3] ≥ 0∧[(-1)bso_64] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [bni_63]x0[3] ≥ 0∧[(-1)bso_64] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 ≥ 0∧[bni_63] ≥ 0∧0 ≥ 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_64] ≥ 0)







For Pair COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1), x3, x0, x1) → 674_0_PARTS_GT(-(x1, 1), x3) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (49)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[0]x3[4]=x0[0]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (49) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (50)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (50) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (51)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [bni_65]x0[3] ≥ 0∧[(-1)bso_66] + x0[3] ≥ 0)



    We simplified constraint (51) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (52)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [bni_65]x0[3] ≥ 0∧[(-1)bso_66] + x0[3] ≥ 0)



    We simplified constraint (52) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (53)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [bni_65]x0[3] ≥ 0∧[(-1)bso_66] + x0[3] ≥ 0)



    We simplified constraint (53) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (54)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_65] ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)



  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (55)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[9]x3[4]=x0[9]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (55) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (56)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (56) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (57)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [bni_65]x0[3] ≥ 0∧[(-1)bso_66] + x0[3] ≥ 0)



    We simplified constraint (57) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (58)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [bni_65]x0[3] ≥ 0∧[(-1)bso_66] + x0[3] ≥ 0)



    We simplified constraint (58) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (59)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [bni_65]x0[3] ≥ 0∧[(-1)bso_66] + x0[3] ≥ 0)



    We simplified constraint (59) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (60)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_65] ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)







For Pair 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0, x1), x3, x0, x1) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1, 0), 1370_0_parts_Return(x0, x1), x3, x0, x1) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6]) which results in the following constraint:

    (61)    (>(x1[5], 0)=TRUE1370_0_parts_Return(x0[5], x1[5])=1370_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥))



    We simplified constraint (61) using rules (I), (II), (IV) which results in the following new constraint:

    (62)    (>(x1[5], 0)=TRUE769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥))



    We simplified constraint (62) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (63)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [bni_67]x0[5] ≥ 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (63) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (64)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [bni_67]x0[5] ≥ 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (64) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (65)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [bni_67]x0[5] ≥ 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (65) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (66)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧0 ≥ 0∧[bni_67] ≥ 0∧0 ≥ 0∧[(-1)bni_67 + (-1)Bound*bni_67] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_68] ≥ 0)







For Pair COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0, x1), x3, x0, x1) → 674_0_PARTS_GT(-(x1, 1), x3) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (67)    (>(x1[5], 0)=TRUE1370_0_parts_Return(x0[5], x1[5])=1370_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]-(x1[6], 1)=x1[0]x3[6]=x0[0]COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥674_0_PARTS_GT(-(x1[6], 1), x3[6])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (67) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (68)    (>(x1[5], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥674_0_PARTS_GT(-(x1[5], 1), x3[5])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (68) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (69)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (69) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (70)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (70) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (71)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (71) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (72)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)



  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (73)    (>(x1[5], 0)=TRUE1370_0_parts_Return(x0[5], x1[5])=1370_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]-(x1[6], 1)=x1[9]x3[6]=x0[9]COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥674_0_PARTS_GT(-(x1[6], 1), x3[6])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (73) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (74)    (>(x1[5], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥674_0_PARTS_GT(-(x1[5], 1), x3[5])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (74) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (75)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (75) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (76)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (76) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (77)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [bni_69]x0[5] ≥ 0∧[(-1)bso_70] + x0[5] ≥ 0)



    We simplified constraint (77) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (78)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)







For Pair 769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0), x1, x3, x2) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2, 0), 1492_0_parts_Return(x0), x1, x3, x2) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]), COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 674_0_PARTS_GT(-(x2[8], 1), x1[8]) which results in the following constraint:

    (79)    (>(x2[7], 0)=TRUE1492_0_parts_Return(x0[7])=1492_0_parts_Return(x0[8])∧x1[7]=x1[8]x3[7]=x3[8]x2[7]=x2[8]769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥))



    We simplified constraint (79) using rules (I), (II), (IV) which results in the following new constraint:

    (80)    (>(x2[7], 0)=TRUE769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥))



    We simplified constraint (80) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (81)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[bni_71 + (-1)Bound*bni_71] + [bni_71]x3[7] ≥ 0∧[1 + (-1)bso_72] ≥ 0)



    We simplified constraint (81) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (82)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[bni_71 + (-1)Bound*bni_71] + [bni_71]x3[7] ≥ 0∧[1 + (-1)bso_72] ≥ 0)



    We simplified constraint (82) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (83)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧[bni_71 + (-1)Bound*bni_71] + [bni_71]x3[7] ≥ 0∧[1 + (-1)bso_72] ≥ 0)



    We simplified constraint (83) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (84)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧0 ≥ 0∧[bni_71] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[bni_71 + (-1)Bound*bni_71] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_72] ≥ 0)







For Pair COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0), x1, x3, x2) → 674_0_PARTS_GT(-(x2, 1), x1) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]), COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 674_0_PARTS_GT(-(x2[8], 1), x1[8]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (85)    (>(x2[7], 0)=TRUE1492_0_parts_Return(x0[7])=1492_0_parts_Return(x0[8])∧x1[7]=x1[8]x3[7]=x3[8]x2[7]=x2[8]-(x2[8], 1)=x1[0]x1[8]=x0[0]COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥674_0_PARTS_GT(-(x2[8], 1), x1[8])∧(UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (85) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (86)    (>(x2[7], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥674_0_PARTS_GT(-(x2[7], 1), x1[7])∧(UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (86) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (87)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)Bound*bni_73] + [bni_73]x3[7] ≥ 0∧[1 + (-1)bso_74] + x3[7] ≥ 0)



    We simplified constraint (87) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (88)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)Bound*bni_73] + [bni_73]x3[7] ≥ 0∧[1 + (-1)bso_74] + x3[7] ≥ 0)



    We simplified constraint (88) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (89)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)Bound*bni_73] + [bni_73]x3[7] ≥ 0∧[1 + (-1)bso_74] + x3[7] ≥ 0)



    We simplified constraint (89) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (90)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧0 ≥ 0∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_73] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_74] ≥ 0)



  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]), COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 674_0_PARTS_GT(-(x2[8], 1), x1[8]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (91)    (>(x2[7], 0)=TRUE1492_0_parts_Return(x0[7])=1492_0_parts_Return(x0[8])∧x1[7]=x1[8]x3[7]=x3[8]x2[7]=x2[8]-(x2[8], 1)=x1[9]x1[8]=x0[9]COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8])≥674_0_PARTS_GT(-(x2[8], 1), x1[8])∧(UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (91) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (92)    (>(x2[7], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])≥674_0_PARTS_GT(-(x2[7], 1), x1[7])∧(UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥))



    We simplified constraint (92) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (93)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)Bound*bni_73] + [bni_73]x3[7] ≥ 0∧[1 + (-1)bso_74] + x3[7] ≥ 0)



    We simplified constraint (93) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (94)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)Bound*bni_73] + [bni_73]x3[7] ≥ 0∧[1 + (-1)bso_74] + x3[7] ≥ 0)



    We simplified constraint (94) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (95)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧[(-1)Bound*bni_73] + [bni_73]x3[7] ≥ 0∧[1 + (-1)bso_74] + x3[7] ≥ 0)



    We simplified constraint (95) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (96)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧0 ≥ 0∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_73] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_74] ≥ 0)







For Pair 674_0_PARTS_GT(x1, x0) → COND_674_0_PARTS_GT1(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]), COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]) which results in the following constraint:

    (97)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUEx1[9]=x1[10]x0[9]=x0[10]674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (97) using rule (IV) which results in the following new constraint:

    (98)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUE674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (98) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (99)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧[(-1)bso_76] ≥ 0)



    We simplified constraint (99) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (100)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧[(-1)bso_76] ≥ 0)



    We simplified constraint (100) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (101)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧[(-1)bso_76] ≥ 0)



    We simplified constraint (101) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (102)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_76] ≥ 0)







For Pair COND_674_0_PARTS_GT1(TRUE, x1, x0) → 674_0_PARTS_GT(x0, x0) the following chains were created:
  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (103)    (x0[10]=x1[0]x0[10]=x0[0]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (103) using rule (IV) which results in the following new constraint:

    (104)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (104) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (105)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (105) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (106)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (106) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (107)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (107) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (108)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)



  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (109)    (x0[10]=x1[9]x0[10]=x0[9]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (109) using rule (IV) which results in the following new constraint:

    (110)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (110) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (111)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (111) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (112)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (112) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (113)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧[(-1)bso_78] ≥ 0)



    We simplified constraint (113) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (114)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 674_0_PARTS_GT(x1, x0) → COND_674_0_PARTS_GT(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)

  • COND_674_0_PARTS_GT(TRUE, x1, x0) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1, -(x0, x1)), x0, -(x0, x1), x1)
    • (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)

  • COND_674_0_PARTS_GT(TRUE, x1, x0) → 674_0_PARTS_GT(x1, -(x0, x1))
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_62] ≥ 0)

  • 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1), x3, x0, x1) → COND_769_1_PARTS_INVOKEMETHOD(>(x1, 0), 684_0_parts_Return(x1), x3, x0, x1)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 ≥ 0∧[bni_63] ≥ 0∧0 ≥ 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_64] ≥ 0)

  • COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1), x3, x0, x1) → 674_0_PARTS_GT(-(x1, 1), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_65] ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_65] ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)

  • 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0, x1), x3, x0, x1) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1, 0), 1370_0_parts_Return(x0, x1), x3, x0, x1)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧0 ≥ 0∧[bni_67] ≥ 0∧0 ≥ 0∧[(-1)bni_67 + (-1)Bound*bni_67] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_68] ≥ 0)

  • COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0, x1), x3, x0, x1) → 674_0_PARTS_GT(-(x1, 1), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[bni_69] ≥ 0∧0 ≥ 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_70] ≥ 0)

  • 769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0), x1, x3, x2) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2, 0), 1492_0_parts_Return(x0), x1, x3, x2)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])), ≥)∧0 ≥ 0∧[bni_71] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[bni_71 + (-1)Bound*bni_71] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_72] ≥ 0)

  • COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0), x1, x3, x2) → 674_0_PARTS_GT(-(x2, 1), x1)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧0 ≥ 0∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_73] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_74] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x2[8], 1), x1[8])), ≥)∧0 ≥ 0∧[bni_73] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_73] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_74] ≥ 0)

  • 674_0_PARTS_GT(x1, x0) → COND_674_0_PARTS_GT1(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_75 + (-1)Bound*bni_75] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_76] ≥ 0)

  • COND_674_0_PARTS_GT1(TRUE, x1, x0) → 674_0_PARTS_GT(x0, x0)
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_77] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_78] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers with natural coefficients for non-tuple symbols [NONINF][POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(674_0_parts_GT(x1, x2)) = [2]x2   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = x3   
POL(<=(x1, x2)) = 0   
POL(0) = 0   
POL(684_0_parts_Return(x1)) = 0   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = 0   
POL(1370_0_parts_Return(x1, x2)) = 0   
POL(1492_0_parts_Return(x1)) = [1]   
POL(1449_1_parts_InvokeMethod(x1, x2, x3)) = 0   
POL(+(x1, x2)) = 0   
POL(674_0_PARTS_GT(x1, x2)) = [-1]   
POL(COND_674_0_PARTS_GT(x1, x2, x3)) = [-1] + [-1]x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = 0   
POL(769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + x3 + [2]x1   
POL(-(x1, x2)) = 0   
POL(COND_769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x2   
POL(1) = 0   
POL(COND_769_1_PARTS_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x2   
POL(COND_769_1_PARTS_INVOKEMETHOD3(x1, x2, x3, x4, x5)) = [1] + x4 + [-1]x2   
POL(COND_674_0_PARTS_GT1(x1, x2, x3)) = [-1]   

The following pairs are in P>:

769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])
COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 674_0_PARTS_GT(-(x2[8], 1), x1[8])

The following pairs are in Pbound:

674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6])
769_1_PARTS_INVOKEMETHOD(1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7]) → COND_769_1_PARTS_INVOKEMETHOD3(>(x2[7], 0), 1492_0_parts_Return(x0[7]), x1[7], x3[7], x2[7])
COND_769_1_PARTS_INVOKEMETHOD3(TRUE, 1492_0_parts_Return(x0[8]), x1[8], x3[8], x2[8]) → 674_0_PARTS_GT(-(x2[8], 1), x1[8])
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])

The following pairs are in P:

674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6])
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

At least the following rules have been oriented under context sensitive arithmetic replacement:

&&(TRUE, TRUE)1TRUE1
&&(TRUE, FALSE)1FALSE1
&&(FALSE, TRUE)1FALSE1
&&(FALSE, FALSE)1FALSE1
674_0_parts_GT(x1, x0)1Cond_674_0_parts_GT(<=(x0, 0), x1, x0)1
Cond_674_0_parts_GT(TRUE, x1, x0)1684_0_parts_Return(x1)1

(9) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1370_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1370_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(1): COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(2): COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], x0[2] - x1[2])
(3): 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(x1[3] > 0, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(4): COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(x1[4] - 1, x3[4])
(5): 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(x1[5] > 0, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
(6): COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(x1[6] - 1, x3[6])
(9): 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(10): COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(6) -> (0), if (x1[6] - 1* x1[0]x3[6]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(1) -> (3), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 684_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(3) -> (4), if (x1[3] > 0684_0_parts_Return(x1[3]) →* 684_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(1) -> (5), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 1370_0_parts_Return(x0[5], x1[5])∧x0[1]* x3[5]x0[1] - x1[1]* x0[5]x1[1]* x1[5])


(5) -> (6), if (x1[5] > 01370_0_parts_Return(x0[5], x1[5]) →* 1370_0_parts_Return(x0[6], x1[6])∧x3[5]* x3[6]x0[5]* x0[6]x1[5]* x1[6])


(2) -> (9), if (x1[2]* x1[9]x0[2] - x1[2]* x0[9])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(6) -> (9), if (x1[6] - 1* x1[9]x3[6]* x0[9])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])



The set Q consists of the following terms:
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)

(10) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: true Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@23c6e30f Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) which results in the following constraint:

    (1)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUE674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_52] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])) which results in the following constraint:

    (7)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (7) using rule (IV) which results in the following new constraint:

    (8)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUE674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧[(-1)bso_52] ≥ 0)



    We simplified constraint (11) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (12)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_52] ≥ 0)







For Pair COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) which results in the following constraint:

    (13)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_parts_GT(x1[1], -(x0[1], x1[1]))=684_0_parts_Return(x1[3])∧x0[1]=x3[3]-(x0[1], x1[1])=x0[3]x1[1]=x1[3]COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (13) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (14)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_674_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=684_0_parts_Return(x1[0]) ⇒ COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (17) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (18)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_54] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) which results in the following constraint:

    (19)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_parts_GT(x1[1], -(x0[1], x1[1]))=1370_0_parts_Return(x0[5], x1[5])∧x0[1]=x3[5]-(x0[1], x1[1])=x0[5]x1[1]=x1[5]COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (19) using rules (III), (IV), (REWRITING) which results in the following new constraint:

    (20)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECond_674_0_parts_GT(<=(-(x0[0], x1[0]), 0), x1[0], -(x0[0], x1[0]))=1370_0_parts_Return(-(x0[0], x1[0]), x1[0]) ⇒ COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧[(-1)bso_54] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_54] ≥ 0)







For Pair COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (25)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[0]1-(x0[2], x1[2])=x0[0]1COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (25) using rules (III), (IV) which results in the following new constraint:

    (26)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥674_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (26) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (27)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (27) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (28)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (28) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (29)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (29) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (30)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_56] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (31)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[9]-(x0[2], x1[2])=x0[9]COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (31) using rules (III), (IV) which results in the following new constraint:

    (32)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥674_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (32) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (33)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (33) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (34)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (34) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (35)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧[(-1)bso_56] ≥ 0)



    We simplified constraint (35) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (36)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_56] ≥ 0)







For Pair 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]) which results in the following constraint:

    (37)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (37) using rules (I), (II), (IV) which results in the following new constraint:

    (38)    (>(x1[3], 0)=TRUE769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (38) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (39)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x0[3] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (39) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (40)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x0[3] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (40) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (41)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)bni_57 + (-1)Bound*bni_57] + [bni_57]x0[3] ≥ 0∧[(-1)bso_58] ≥ 0)



    We simplified constraint (41) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (42)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 ≥ 0∧[bni_57] ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)







For Pair COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (43)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[0]x3[4]=x0[0]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (43) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (44)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [bni_59]x0[3] ≥ 0∧[(-1)bso_60] + x0[3] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [bni_59]x0[3] ≥ 0∧[(-1)bso_60] + x0[3] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [bni_59]x0[3] ≥ 0∧[(-1)bso_60] + x0[3] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_59] ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)



  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (49)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[9]x3[4]=x0[9]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (49) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (50)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (50) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (51)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [bni_59]x0[3] ≥ 0∧[(-1)bso_60] + x0[3] ≥ 0)



    We simplified constraint (51) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (52)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [bni_59]x0[3] ≥ 0∧[(-1)bso_60] + x0[3] ≥ 0)



    We simplified constraint (52) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (53)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [bni_59]x0[3] ≥ 0∧[(-1)bso_60] + x0[3] ≥ 0)



    We simplified constraint (53) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (54)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_59] ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)







For Pair 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6]) which results in the following constraint:

    (55)    (>(x1[5], 0)=TRUE1370_0_parts_Return(x0[5], x1[5])=1370_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥))



    We simplified constraint (55) using rules (I), (II), (IV) which results in the following new constraint:

    (56)    (>(x1[5], 0)=TRUE769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥))



    We simplified constraint (56) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (57)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[bni_61 + (-1)Bound*bni_61] + [(2)bni_61]x0[5] ≥ 0∧[1 + (-1)bso_62] ≥ 0)



    We simplified constraint (57) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (58)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[bni_61 + (-1)Bound*bni_61] + [(2)bni_61]x0[5] ≥ 0∧[1 + (-1)bso_62] ≥ 0)



    We simplified constraint (58) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (59)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧[bni_61 + (-1)Bound*bni_61] + [(2)bni_61]x0[5] ≥ 0∧[1 + (-1)bso_62] ≥ 0)



    We simplified constraint (59) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (60)    (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧0 ≥ 0∧[(2)bni_61] ≥ 0∧0 ≥ 0∧[bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_62] ≥ 0)







For Pair COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (61)    (>(x1[5], 0)=TRUE1370_0_parts_Return(x0[5], x1[5])=1370_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]-(x1[6], 1)=x1[0]x3[6]=x0[0]COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥674_0_PARTS_GT(-(x1[6], 1), x3[6])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (61) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (62)    (>(x1[5], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥674_0_PARTS_GT(-(x1[5], 1), x3[5])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (62) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (63)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)Bound*bni_63] + [(2)bni_63]x0[5] ≥ 0∧[1 + (-1)bso_64] + [2]x0[5] ≥ 0)



    We simplified constraint (63) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (64)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)Bound*bni_63] + [(2)bni_63]x0[5] ≥ 0∧[1 + (-1)bso_64] + [2]x0[5] ≥ 0)



    We simplified constraint (64) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (65)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)Bound*bni_63] + [(2)bni_63]x0[5] ≥ 0∧[1 + (-1)bso_64] + [2]x0[5] ≥ 0)



    We simplified constraint (65) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (66)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[(2)bni_63] ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_64] ≥ 0∧[1] ≥ 0)



  • We consider the chain 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]), COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (67)    (>(x1[5], 0)=TRUE1370_0_parts_Return(x0[5], x1[5])=1370_0_parts_Return(x0[6], x1[6])∧x3[5]=x3[6]x0[5]=x0[6]x1[5]=x1[6]-(x1[6], 1)=x1[9]x3[6]=x0[9]COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6])≥674_0_PARTS_GT(-(x1[6], 1), x3[6])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (67) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (68)    (>(x1[5], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])≥674_0_PARTS_GT(-(x1[5], 1), x3[5])∧(UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥))



    We simplified constraint (68) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (69)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)Bound*bni_63] + [(2)bni_63]x0[5] ≥ 0∧[1 + (-1)bso_64] + [2]x0[5] ≥ 0)



    We simplified constraint (69) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (70)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)Bound*bni_63] + [(2)bni_63]x0[5] ≥ 0∧[1 + (-1)bso_64] + [2]x0[5] ≥ 0)



    We simplified constraint (70) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (71)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧[(-1)Bound*bni_63] + [(2)bni_63]x0[5] ≥ 0∧[1 + (-1)bso_64] + [2]x0[5] ≥ 0)



    We simplified constraint (71) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (72)    (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[(2)bni_63] ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_64] ≥ 0∧[1] ≥ 0)







For Pair 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]), COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]) which results in the following constraint:

    (73)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUEx1[9]=x1[10]x0[9]=x0[10]674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (73) using rule (IV) which results in the following new constraint:

    (74)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUE674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (74) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (75)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (75) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (76)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (76) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (77)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧[(-1)bso_66] ≥ 0)



    We simplified constraint (77) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (78)    (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)







For Pair COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]) the following chains were created:
  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (79)    (x0[10]=x1[0]x0[10]=x0[0]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (79) using rule (IV) which results in the following new constraint:

    (80)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (80) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (81)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (81) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (82)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (82) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (83)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (83) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (84)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_68] ≥ 0)



  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (85)    (x0[10]=x1[9]x0[10]=x0[9]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (85) using rule (IV) which results in the following new constraint:

    (86)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (86) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (87)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (87) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (88)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (88) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (89)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧[(-1)bso_68] ≥ 0)



    We simplified constraint (89) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (90)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_68] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
    • (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_52] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_51 + (-1)Bound*bni_51] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_52] ≥ 0)

  • COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
    • (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_54] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_53 + (-1)Bound*bni_53] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_54] ≥ 0)

  • COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_56] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_55 + (-1)Bound*bni_55] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_56] ≥ 0)

  • 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
    • (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 ≥ 0∧[bni_57] ≥ 0∧0 ≥ 0∧[(-1)bni_57 + (-1)Bound*bni_57] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_58] ≥ 0)

  • COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_59] ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 ≥ 0∧[bni_59] ≥ 0∧0 ≥ 0∧[(-1)bni_59 + (-1)Bound*bni_59] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧0 ≥ 0∧[(-1)bso_60] ≥ 0)

  • 769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
    • (0 ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])), ≥)∧0 ≥ 0∧[(2)bni_61] ≥ 0∧0 ≥ 0∧[bni_61 + (-1)Bound*bni_61] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_62] ≥ 0)

  • COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6])
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[(2)bni_63] ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_64] ≥ 0∧[1] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[6], 1), x3[6])), ≥)∧0 ≥ 0∧[(2)bni_63] ≥ 0∧0 ≥ 0∧[(-1)Bound*bni_63] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1 + (-1)bso_64] ≥ 0∧[1] ≥ 0)

  • 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
    • (0 ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_66] ≥ 0)

  • COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_68] ≥ 0)
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_67] = 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_68] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers with natural coefficients for non-tuple symbols [NONINF][POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(674_0_parts_GT(x1, x2)) = 0   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = 0   
POL(<=(x1, x2)) = 0   
POL(0) = 0   
POL(684_0_parts_Return(x1)) = 0   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = 0   
POL(1370_0_parts_Return(x1, x2)) = [2] + x1   
POL(1492_0_parts_Return(x1)) = 0   
POL(1449_1_parts_InvokeMethod(x1, x2, x3)) = 0   
POL(+(x1, x2)) = 0   
POL(674_0_PARTS_GT(x1, x2)) = [-1]   
POL(COND_674_0_PARTS_GT(x1, x2, x3)) = [-1] + x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = 0   
POL(769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + x3 + x1   
POL(-(x1, x2)) = 0   
POL(COND_769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x2   
POL(1) = 0   
POL(COND_769_1_PARTS_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [2]x4   
POL(COND_674_0_PARTS_GT1(x1, x2, x3)) = [-1] + [2]x1   

The following pairs are in P>:

769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6])

The following pairs are in Pbound:

674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
769_1_PARTS_INVOKEMETHOD(1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5]) → COND_769_1_PARTS_INVOKEMETHOD1(>(x1[5], 0), 1370_0_parts_Return(x0[5], x1[5]), x3[5], x0[5], x1[5])
COND_769_1_PARTS_INVOKEMETHOD1(TRUE, 1370_0_parts_Return(x0[6], x1[6]), x3[6], x0[6], x1[6]) → 674_0_PARTS_GT(-(x1[6], 1), x3[6])
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])

The following pairs are in P:

674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

At least the following rules have been oriented under context sensitive arithmetic replacement:

&&(TRUE, TRUE)1TRUE1
&&(TRUE, FALSE)1FALSE1
&&(FALSE, TRUE)1FALSE1
&&(FALSE, FALSE)1FALSE1
674_0_parts_GT(x1, x0)1Cond_674_0_parts_GT(<=(x0, 0), x1, x0)1
Cond_674_0_parts_GT(TRUE, x1, x0)1684_0_parts_Return(x1)1

(11) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1370_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1370_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(1): COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(2): COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], x0[2] - x1[2])
(3): 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(x1[3] > 0, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(4): COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(x1[4] - 1, x3[4])
(9): 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(10): COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

(2) -> (0), if (x1[2]* x1[0]x0[2] - x1[2]* x0[0])


(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(0) -> (2), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[2]x0[0]* x0[2])


(1) -> (3), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 684_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(3) -> (4), if (x1[3] > 0684_0_parts_Return(x1[3]) →* 684_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(2) -> (9), if (x1[2]* x1[9]x0[2] - x1[2]* x0[9])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])



The set Q consists of the following terms:
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)

(12) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@56650022 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) which results in the following constraint:

    (1)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUE674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x1[0] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])) which results in the following constraint:

    (9)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (9) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (10)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUE674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (11)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (11) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (12)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (12) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (13)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (14) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (15)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (16)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x1[0] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)







For Pair COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) which results in the following constraint:

    (17)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_parts_GT(x1[1], -(x0[1], x1[1]))=684_0_parts_Return(x1[3])∧x0[1]=x3[3]-(x0[1], x1[1])=x0[3]x1[1]=x1[3]COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (17) using rules (III), (IV), (VII), (IDP_BOOLEAN), (REWRITING) which results in the following new constraint:

    (18)    (<=(-(x0[0], x1[0]), 0)=x0-(x0[0], x1[0])=x1Cond_674_0_parts_GT(x0, x1[0], x1)=684_0_parts_Return(x1[0])∧>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (18) using rule (V) (with possible (I) afterwards) using induction on Cond_674_0_parts_GT(x0, x1[0], x1)=684_0_parts_Return(x1[0]) which results in the following new constraint:

    (19)    (684_0_parts_Return(x3)=684_0_parts_Return(x3)∧<=(-(x0[0], x3), 0)=TRUE-(x0[0], x3)=x2>(x0[0], 0)=TRUE>(x3, 0)=TRUE<=(x3, x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x3, x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x3, x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x3, -(x0[0], x3)), x0[0], -(x0[0], x3), x3)∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (19) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (20)    (<=(-(x0[0], x3), 0)=TRUE>(x0[0], 0)=TRUE>(x3, 0)=TRUE<=(x3, x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x3, x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x3, x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x3, -(x0[0], x3)), x0[0], -(x0[0], x3), x3)∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[bni_52 + (-1)Bound*bni_52] + [bni_52]x0[0] ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[bni_52 + (-1)Bound*bni_52] + [bni_52]x0[0] ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[bni_52 + (-1)Bound*bni_52] + [bni_52]x0[0] ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (23) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (24)    ([-1] + [-1]x0[0] + x3 ≥ 0∧x0[0] ≥ 0∧x3 + [-1] ≥ 0∧[1] + x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(2)bni_52 + (-1)Bound*bni_52] + [bni_52]x0[0] ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (24) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (25)    (x3 ≥ 0∧x0[0] ≥ 0∧x0[0] + x3 ≥ 0∧[-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(2)bni_52 + (-1)Bound*bni_52] + [bni_52]x0[0] ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (25) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (26)    (0 ≥ 0∧x0[0] ≥ 0∧x0[0] ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(2)bni_52 + (-1)Bound*bni_52] + [bni_52]x0[0] ≥ 0∧[(-1)bso_53] ≥ 0)







For Pair COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (27)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[0]1-(x0[2], x1[2])=x0[0]1COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (27) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (28)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥674_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (28) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (29)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (29) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (30)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (30) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (31)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (31) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (32)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (32) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (33)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[1 + (-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (33) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (34)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x1[0] + [bni_54]x0[0] ≥ 0∧[1 + (-1)bso_55] + x1[0] ≥ 0)



  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2])), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (35)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[2]x0[0]=x0[2]x1[2]=x1[9]-(x0[2], x1[2])=x0[9]COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[2], x0[2])≥674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (35) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (36)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥674_0_PARTS_GT(x1[0], -(x0[0], x1[0]))∧(UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥))



    We simplified constraint (36) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (37)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (37) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (38)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (38) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (39)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (39) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (40)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (40) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (41)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[1 + (-1)bso_55] + x1[0] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x1[0] + [bni_54]x0[0] ≥ 0∧[1 + (-1)bso_55] + x1[0] ≥ 0)







For Pair 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]) which results in the following constraint:

    (43)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (43) using rules (I), (II), (IV) which results in the following new constraint:

    (44)    (>(x1[3], 0)=TRUE769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[bni_56 + (-1)Bound*bni_56] + [bni_56]x3[3] ≥ 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[bni_56 + (-1)Bound*bni_56] + [bni_56]x3[3] ≥ 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[bni_56 + (-1)Bound*bni_56] + [bni_56]x3[3] ≥ 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧[bni_56] = 0∧[bni_56 + (-1)Bound*bni_56] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (49)    (x1[3] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧[bni_56] = 0∧[bni_56 + (-1)Bound*bni_56] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)







For Pair COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (50)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[0]x3[4]=x0[0]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (50) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (51)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (51) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (52)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[bni_58 + (-1)Bound*bni_58] + [bni_58]x3[3] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (52) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (53)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[bni_58 + (-1)Bound*bni_58] + [bni_58]x3[3] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (53) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (54)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[bni_58 + (-1)Bound*bni_58] + [bni_58]x3[3] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (54) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (55)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[bni_58] = 0∧[bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (55) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (56)    (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[bni_58] = 0∧[bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)



  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (57)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[9]x3[4]=x0[9]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (57) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (58)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (59)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[bni_58 + (-1)Bound*bni_58] + [bni_58]x3[3] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (60)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[bni_58 + (-1)Bound*bni_58] + [bni_58]x3[3] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (61)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[bni_58 + (-1)Bound*bni_58] + [bni_58]x3[3] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (62)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[bni_58] = 0∧[bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (62) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (63)    (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[bni_58] = 0∧[bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)







For Pair 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]), COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]) which results in the following constraint:

    (64)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUEx1[9]=x1[10]x0[9]=x0[10]674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (64) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (65)    (>(x0[9], 0)=TRUE>(x1[9], x0[9])=TRUE>(x1[9], 0)=TRUE674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (65) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (66)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[bni_60 + (-1)Bound*bni_60] + [bni_60]x0[9] ≥ 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (66) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (67)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[bni_60 + (-1)Bound*bni_60] + [bni_60]x0[9] ≥ 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (67) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (68)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[bni_60 + (-1)Bound*bni_60] + [bni_60]x0[9] ≥ 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (68) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (69)    (x0[9] ≥ 0∧x1[9] + [-2] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(2)bni_60 + (-1)Bound*bni_60] + [bni_60]x0[9] ≥ 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (69) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (70)    (x0[9] ≥ 0∧x1[9] ≥ 0∧[1] + x0[9] + x1[9] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(2)bni_60 + (-1)Bound*bni_60] + [bni_60]x0[9] ≥ 0∧[(-1)bso_61] ≥ 0)







For Pair COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]) the following chains were created:
  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (71)    (x0[10]=x1[0]x0[10]=x0[0]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (71) using rule (IV) which results in the following new constraint:

    (72)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (72) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (73)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (73) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (74)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (74) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (75)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (75) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (76)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧0 = 0∧0 = 0∧[(-1)bso_63] ≥ 0)



  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (77)    (x0[10]=x1[9]x0[10]=x0[9]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (77) using rule (IV) which results in the following new constraint:

    (78)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (78) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (79)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (79) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (80)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (80) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (81)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (81) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (82)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧0 = 0∧0 = 0∧[(-1)bso_63] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x1[0] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(2)bni_50 + (-1)Bound*bni_50] + [bni_50]x1[0] + [bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)

  • COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
    • (0 ≥ 0∧x0[0] ≥ 0∧x0[0] ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(2)bni_52 + (-1)Bound*bni_52] + [bni_52]x0[0] ≥ 0∧[(-1)bso_53] ≥ 0)

  • COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x1[0] + [bni_54]x0[0] ≥ 0∧[1 + (-1)bso_55] + x1[0] ≥ 0)
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))), ≥)∧[(2)bni_54 + (-1)Bound*bni_54] + [bni_54]x1[0] + [bni_54]x0[0] ≥ 0∧[1 + (-1)bso_55] + x1[0] ≥ 0)

  • 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
    • (x1[3] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧[bni_56] = 0∧[bni_56 + (-1)Bound*bni_56] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)

  • COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
    • (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[bni_58] = 0∧[bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)
    • (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[bni_58] = 0∧[bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)

  • 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
    • (x0[9] ≥ 0∧x1[9] ≥ 0∧[1] + x0[9] + x1[9] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(2)bni_60 + (-1)Bound*bni_60] + [bni_60]x0[9] ≥ 0∧[(-1)bso_61] ≥ 0)

  • COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧0 = 0∧0 = 0∧[(-1)bso_63] ≥ 0)
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_62] = 0∧0 = 0∧0 = 0∧[(-1)bso_63] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = [3]   
POL(674_0_parts_GT(x1, x2)) = [1] + [-1]x1   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = [1] + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(684_0_parts_Return(x1)) = [1] + [-1]x1   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1   
POL(1370_0_parts_Return(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(1492_0_parts_Return(x1)) = [-1] + [-1]x1   
POL(1449_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1   
POL(+(x1, x2)) = x1 + x2   
POL(674_0_PARTS_GT(x1, x2)) = [1] + x2   
POL(COND_674_0_PARTS_GT(x1, x2, x3)) = [1] + x3   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4)) = [2] + [-1]x4 + x2 + [-1]x1   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(COND_769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [2] + [-1]x5 + x3 + [-1]x2   
POL(1) = [1]   
POL(COND_674_0_PARTS_GT1(x1, x2, x3)) = [1] + x3 + [-1]x1   

The following pairs are in P>:

COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))

The following pairs are in Pbound:

674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
COND_674_0_PARTS_GT(TRUE, x1[2], x0[2]) → 674_0_PARTS_GT(x1[2], -(x0[2], x1[2]))
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])

The following pairs are in P:

674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

At least the following rules have been oriented under context sensitive arithmetic replacement:

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1
674_0_parts_GT(x1, x0)1Cond_674_0_parts_GT(<=(x0, 0), x1, x0)1
Cond_674_0_parts_GT(TRUE, x1, x0)1684_0_parts_Return(x1)1

(13) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1370_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1370_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(1): COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(3): 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(x1[3] > 0, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(4): COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(x1[4] - 1, x3[4])
(9): 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0, x1[9], x0[9])
(10): COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(1) -> (3), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 684_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])


(3) -> (4), if (x1[3] > 0684_0_parts_Return(x1[3]) →* 684_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])


(4) -> (9), if (x1[4] - 1* x1[9]x3[4]* x0[9])


(10) -> (9), if (x0[10]* x1[9]x0[10]* x0[9])


(9) -> (10), if (x1[9] > x0[9] && x1[9] > 0 && x0[9] > 0x1[9]* x1[10]x0[9]* x0[10])



The set Q consists of the following terms:
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)

(14) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@56650022 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) which results in the following constraint:

    (1)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUE674_0_PARTS_GT(x1[0], x0[0])≥NonInfC∧674_0_PARTS_GT(x1[0], x0[0])≥COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])∧(UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_50] + [(-1)bni_50]x0[0] + [bni_50]x1[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_50] + [(-1)bni_50]x0[0] + [bni_50]x1[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0∧x1[0] + [-1] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_50] + [(-1)bni_50]x0[0] + [bni_50]x1[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0∧x1[0] + [-1] ≥ 0∧[1] + x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_50 + (-1)bni_50] + [(-1)bni_50]x0[0] + [bni_50]x1[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_50] + [(-1)bni_50]x0[0] + [bni_50]x1[0] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_50] + [(-1)bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)







For Pair COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]), COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1]), 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) which results in the following constraint:

    (9)    (&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0))=TRUEx1[0]=x1[1]x0[0]=x0[1]674_0_parts_GT(x1[1], -(x0[1], x1[1]))=684_0_parts_Return(x1[3])∧x0[1]=x3[3]-(x0[1], x1[1])=x0[3]x1[1]=x1[3]COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[1], x0[1])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (9) using rules (III), (IV), (VII), (IDP_BOOLEAN), (REWRITING) which results in the following new constraint:

    (10)    (<=(-(x0[0], x1[0]), 0)=x0-(x0[0], x1[0])=x1Cond_674_0_parts_GT(x0, x1[0], x1)=684_0_parts_Return(x1[0])∧>(x0[0], 0)=TRUE>(x1[0], 0)=TRUE<=(x1[0], x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x1[0], x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[0], -(x0[0], x1[0])), x0[0], -(x0[0], x1[0]), x1[0])∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (10) using rule (V) (with possible (I) afterwards) using induction on Cond_674_0_parts_GT(x0, x1[0], x1)=684_0_parts_Return(x1[0]) which results in the following new constraint:

    (11)    (684_0_parts_Return(x3)=684_0_parts_Return(x3)∧<=(-(x0[0], x3), 0)=TRUE-(x0[0], x3)=x2>(x0[0], 0)=TRUE>(x3, 0)=TRUE<=(x3, x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x3, x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x3, x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x3, -(x0[0], x3)), x0[0], -(x0[0], x3), x3)∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (11) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:

    (12)    (<=(-(x0[0], x3), 0)=TRUE>(x0[0], 0)=TRUE>(x3, 0)=TRUE<=(x3, x0[0])=TRUECOND_674_0_PARTS_GT(TRUE, x3, x0[0])≥NonInfC∧COND_674_0_PARTS_GT(TRUE, x3, x0[0])≥769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x3, -(x0[0], x3)), x0[0], -(x0[0], x3), x3)∧(UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥))



    We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (13)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_52] + [(-1)bni_52]x0[0] + [bni_52]x3 ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (14)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_52] + [(-1)bni_52]x0[0] + [bni_52]x3 ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (15)    ([-1]x0[0] + x3 ≥ 0∧x0[0] + [-1] ≥ 0∧x3 + [-1] ≥ 0∧x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_52] + [(-1)bni_52]x0[0] + [bni_52]x3 ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (16)    ([-1] + [-1]x0[0] + x3 ≥ 0∧x0[0] ≥ 0∧x3 + [-1] ≥ 0∧[1] + x0[0] + [-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_52 + (-1)bni_52] + [(-1)bni_52]x0[0] + [bni_52]x3 ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (16) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (17)    (x3 ≥ 0∧x0[0] ≥ 0∧x0[0] + x3 ≥ 0∧[-1]x3 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_52] + [bni_52]x3 ≥ 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (17) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (18)    (0 ≥ 0∧x0[0] ≥ 0∧x0[0] ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_52] ≥ 0∧[(-1)bso_53] ≥ 0)







For Pair 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]) which results in the following constraint:

    (19)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (19) using rules (I), (II), (IV) which results in the following new constraint:

    (20)    (>(x1[3], 0)=TRUE769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])∧(UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)Bound*bni_54] + [bni_54]x1[3] + [(-1)bni_54]x3[3] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)Bound*bni_54] + [bni_54]x1[3] + [(-1)bni_54]x3[3] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧[(-1)Bound*bni_54] + [bni_54]x1[3] + [(-1)bni_54]x3[3] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧[(-1)bni_54] = 0∧[(-1)Bound*bni_54] + [bni_54]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (24) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (25)    (x1[3] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧[(-1)bni_54] = 0∧[(-1)Bound*bni_54 + bni_54] + [bni_54]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)







For Pair COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]) the following chains were created:
  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (26)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[0]x3[4]=x0[0]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (26) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (27)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (27) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (28)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)Bound*bni_56] + [bni_56]x1[3] + [(-1)bni_56]x3[3] ≥ 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (28) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (29)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)Bound*bni_56] + [bni_56]x1[3] + [(-1)bni_56]x3[3] ≥ 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (29) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (30)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)Bound*bni_56] + [bni_56]x1[3] + [(-1)bni_56]x3[3] ≥ 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (30) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (31)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[(-1)bni_56] = 0∧[(-1)Bound*bni_56] + [bni_56]x1[3] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (31) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (32)    (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[(-1)bni_56] = 0∧[(-1)Bound*bni_56 + bni_56] + [bni_56]x1[3] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_57] ≥ 0)



  • We consider the chain 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]), COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (33)    (>(x1[3], 0)=TRUE684_0_parts_Return(x1[3])=684_0_parts_Return(x1[4])∧x3[3]=x3[4]x0[3]=x0[4]x1[3]=x1[4]-(x1[4], 1)=x1[9]x3[4]=x0[9]COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4])≥674_0_PARTS_GT(-(x1[4], 1), x3[4])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (33) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (34)    (>(x1[3], 0)=TRUECOND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥NonInfC∧COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])≥674_0_PARTS_GT(-(x1[3], 1), x3[3])∧(UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥))



    We simplified constraint (34) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (35)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)Bound*bni_56] + [bni_56]x1[3] + [(-1)bni_56]x3[3] ≥ 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (35) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (36)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)Bound*bni_56] + [bni_56]x1[3] + [(-1)bni_56]x3[3] ≥ 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (36) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (37)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧[(-1)Bound*bni_56] + [bni_56]x1[3] + [(-1)bni_56]x3[3] ≥ 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (37) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (38)    (x1[3] + [-1] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[(-1)bni_56] = 0∧[(-1)Bound*bni_56] + [bni_56]x1[3] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_57] ≥ 0)



    We simplified constraint (38) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (39)    (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[(-1)bni_56] = 0∧[(-1)Bound*bni_56 + bni_56] + [bni_56]x1[3] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_57] ≥ 0)







For Pair 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) the following chains were created:
  • We consider the chain 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]), COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]) which results in the following constraint:

    (40)    (&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0))=TRUEx1[9]=x1[10]x0[9]=x0[10]674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (40) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (41)    (>(x0[9], 0)=TRUE>(x1[9], x0[9])=TRUE>(x1[9], 0)=TRUE674_0_PARTS_GT(x1[9], x0[9])≥NonInfC∧674_0_PARTS_GT(x1[9], x0[9])≥COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])∧(UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥))



    We simplified constraint (41) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (42)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)Bound*bni_58] + [(-1)bni_58]x0[9] + [bni_58]x1[9] ≥ 0∧[(-1)bso_59] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (42) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (43)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)Bound*bni_58] + [(-1)bni_58]x0[9] + [bni_58]x1[9] ≥ 0∧[(-1)bso_59] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (43) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (44)    (x0[9] + [-1] ≥ 0∧x1[9] + [-1] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)Bound*bni_58] + [(-1)bni_58]x0[9] + [bni_58]x1[9] ≥ 0∧[(-1)bso_59] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (44) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (45)    (x0[9] ≥ 0∧x1[9] + [-2] + [-1]x0[9] ≥ 0∧x1[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)Bound*bni_58 + (-1)bni_58] + [(-1)bni_58]x0[9] + [bni_58]x1[9] ≥ 0∧[-1 + (-1)bso_59] + [-1]x0[9] + x1[9] ≥ 0)



    We simplified constraint (45) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (46)    (x0[9] ≥ 0∧x1[9] ≥ 0∧[1] + x0[9] + x1[9] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)Bound*bni_58 + bni_58] + [bni_58]x1[9] ≥ 0∧[1 + (-1)bso_59] + x1[9] ≥ 0)







For Pair COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]) the following chains were created:
  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0]) which results in the following constraint:

    (47)    (x0[10]=x1[0]x0[10]=x0[0]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (47) using rule (IV) which results in the following new constraint:

    (48)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (48) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (49)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (49) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (50)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (50) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (51)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (51) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (52)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)



  • We consider the chain COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10]), 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9]) which results in the following constraint:

    (53)    (x0[10]=x1[9]x0[10]=x0[9]COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (53) using rule (IV) which results in the following new constraint:

    (54)    (COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥NonInfC∧COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10])≥674_0_PARTS_GT(x0[10], x0[10])∧(UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥))



    We simplified constraint (54) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (55)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (55) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (56)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (56) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (57)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (57) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (58)    ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
    • (x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])), ≥)∧[(-1)Bound*bni_50] + [(-1)bni_50]x0[0] ≥ 0∧[(-1)bso_51] ≥ 0)

  • COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
    • (0 ≥ 0∧x0[0] ≥ 0∧x0[0] ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])), ≥)∧[(-1)Bound*bni_52] ≥ 0∧[(-1)bso_53] ≥ 0)

  • 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
    • (x1[3] ≥ 0 ⇒ (UIncreasing(COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])), ≥)∧0 = 0∧[(-1)bni_54] = 0∧[(-1)Bound*bni_54 + bni_54] + [bni_54]x1[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)

  • COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
    • (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[(-1)bni_56] = 0∧[(-1)Bound*bni_56 + bni_56] + [bni_56]x1[3] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_57] ≥ 0)
    • (x1[3] ≥ 0 ⇒ (UIncreasing(674_0_PARTS_GT(-(x1[4], 1), x3[4])), ≥)∧0 = 0∧[(-1)bni_56] = 0∧[(-1)Bound*bni_56 + bni_56] + [bni_56]x1[3] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_57] ≥ 0)

  • 674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])
    • (x0[9] ≥ 0∧x1[9] ≥ 0∧[1] + x0[9] + x1[9] ≥ 0 ⇒ (UIncreasing(COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])), ≥)∧[(-1)Bound*bni_58 + bni_58] + [bni_58]x1[9] ≥ 0∧[1 + (-1)bso_59] + x1[9] ≥ 0)

  • COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)
    • ((UIncreasing(674_0_PARTS_GT(x0[10], x0[10])), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(674_0_parts_GT(x1, x2)) = [-1] + [-1]x1   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = [-1] + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(684_0_parts_Return(x1)) = [-1] + [-1]x1   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1   
POL(1370_0_parts_Return(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(1492_0_parts_Return(x1)) = [-1] + [-1]x1   
POL(1449_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1   
POL(+(x1, x2)) = x1 + x2   
POL(674_0_PARTS_GT(x1, x2)) = [-1]x2 + x1   
POL(COND_674_0_PARTS_GT(x1, x2, x3)) = [-1]x3 + x2 + [-1]x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x2 + [-1]x1   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(COND_769_1_PARTS_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x3 + [-1]x2   
POL(1) = [1]   
POL(COND_674_0_PARTS_GT1(x1, x2, x3)) = 0   

The following pairs are in P>:

COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(-(x1[4], 1), x3[4])
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])

The following pairs are in Pbound:

COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
674_0_PARTS_GT(x1[9], x0[9]) → COND_674_0_PARTS_GT1(&&(&&(>(x1[9], x0[9]), >(x1[9], 0)), >(x0[9], 0)), x1[9], x0[9])

The following pairs are in P:

674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(&&(&&(>(x1[0], 0), <=(x1[0], x0[0])), >(x0[0], 0)), x1[0], x0[0])
COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], -(x0[1], x1[1])), x0[1], -(x0[1], x1[1]), x1[1])
769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(>(x1[3], 0), 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

At least the following rules have been oriented under context sensitive arithmetic replacement:

&&(TRUE, TRUE)1TRUE1
&&(TRUE, FALSE)1FALSE1
&&(FALSE, TRUE)1FALSE1
&&(FALSE, FALSE)1FALSE1
Cond_674_0_parts_GT(<=(x0, 0), x1, x0)1674_0_parts_GT(x1, x0)1
Cond_674_0_parts_GT(TRUE, x1, x0)1684_0_parts_Return(x1)1

(15) Complex Obligation (AND)

(16) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1370_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1370_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(1): COND_674_0_PARTS_GT(TRUE, x1[1], x0[1]) → 769_1_PARTS_INVOKEMETHOD(674_0_parts_GT(x1[1], x0[1] - x1[1]), x0[1], x0[1] - x1[1], x1[1])
(3): 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(x1[3] > 0, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(10): COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(0) -> (1), if (x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0x1[0]* x1[1]x0[0]* x0[1])


(1) -> (3), if (674_0_parts_GT(x1[1], x0[1] - x1[1]) →* 684_0_parts_Return(x1[3])∧x0[1]* x3[3]x0[1] - x1[1]* x0[3]x1[1]* x1[3])



The set Q consists of the following terms:
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)

(17) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes.

(18) TRUE

(19) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1370_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1370_0_parts_Return(x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x3) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 674_0_PARTS_GT(x1[0], x0[0]) → COND_674_0_PARTS_GT(x1[0] > 0 && x1[0] <= x0[0] && x0[0] > 0, x1[0], x0[0])
(3): 769_1_PARTS_INVOKEMETHOD(684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3]) → COND_769_1_PARTS_INVOKEMETHOD(x1[3] > 0, 684_0_parts_Return(x1[3]), x3[3], x0[3], x1[3])
(4): COND_769_1_PARTS_INVOKEMETHOD(TRUE, 684_0_parts_Return(x1[4]), x3[4], x0[4], x1[4]) → 674_0_PARTS_GT(x1[4] - 1, x3[4])
(10): COND_674_0_PARTS_GT1(TRUE, x1[10], x0[10]) → 674_0_PARTS_GT(x0[10], x0[10])

(4) -> (0), if (x1[4] - 1* x1[0]x3[4]* x0[0])


(10) -> (0), if (x0[10]* x1[0]x0[10]* x0[0])


(3) -> (4), if (x1[3] > 0684_0_parts_Return(x1[3]) →* 684_0_parts_Return(x1[4])∧x3[3]* x3[4]x0[3]* x0[4]x1[3]* x1[4])



The set Q consists of the following terms:
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0, x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0), x0, 0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)

(20) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 less nodes.

(21) TRUE

(22) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Parts.main([Ljava/lang/String;)V
SCC calls the following helper methods: Parts.parts(II)I
Performed SCC analyses: UsedFieldsAnalysis

(23) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 51 rules for P and 90 rules for R.


P rules:
439_0_main_Load(EOS(STATIC_439), java.lang.Object(ARRAY(i1)), i29, i29) → 441_0_main_ArrayLength(EOS(STATIC_441), java.lang.Object(ARRAY(i1)), i29, i29, java.lang.Object(ARRAY(i1)))
441_0_main_ArrayLength(EOS(STATIC_441), java.lang.Object(ARRAY(i1)), i29, i29, java.lang.Object(ARRAY(i1))) → 443_0_main_GT(EOS(STATIC_443), java.lang.Object(ARRAY(i1)), i29, i29, i1) | >=(i1, 0)
443_0_main_GT(EOS(STATIC_443), java.lang.Object(ARRAY(i1)), i29, i29, i1) → 446_0_main_GT(EOS(STATIC_446), java.lang.Object(ARRAY(i1)), i29, i29, i1)
446_0_main_GT(EOS(STATIC_446), java.lang.Object(ARRAY(i1)), i29, i29, i1) → 450_0_main_ConstantStackPush(EOS(STATIC_450), java.lang.Object(ARRAY(i1)), i29) | <=(i29, i1)
450_0_main_ConstantStackPush(EOS(STATIC_450), java.lang.Object(ARRAY(i1)), i29) → 454_0_main_Store(EOS(STATIC_454), java.lang.Object(ARRAY(i1)), i29, 0)
454_0_main_Store(EOS(STATIC_454), java.lang.Object(ARRAY(i1)), i29, matching1) → 456_0_main_Load(EOS(STATIC_456), java.lang.Object(ARRAY(i1)), i29, 0) | =(matching1, 0)
456_0_main_Load(EOS(STATIC_456), java.lang.Object(ARRAY(i1)), i29, matching1) → 523_0_main_Load(EOS(STATIC_523), java.lang.Object(ARRAY(i1)), i29, 0) | =(matching1, 0)
523_0_main_Load(EOS(STATIC_523), java.lang.Object(ARRAY(i1)), i39, i40) → 614_0_main_Load(EOS(STATIC_614), java.lang.Object(ARRAY(i1)), i39, i40)
614_0_main_Load(EOS(STATIC_614), java.lang.Object(ARRAY(i1)), i56, i57) → 744_0_main_Load(EOS(STATIC_744), java.lang.Object(ARRAY(i1)), i56, i57)
744_0_main_Load(EOS(STATIC_744), java.lang.Object(ARRAY(i1)), i81, i82) → 752_0_main_Load(EOS(STATIC_752), java.lang.Object(ARRAY(i1)), i81, i82, i82)
752_0_main_Load(EOS(STATIC_752), java.lang.Object(ARRAY(i1)), i81, i82, i82) → 757_0_main_ArrayLength(EOS(STATIC_757), java.lang.Object(ARRAY(i1)), i81, i82, i82, java.lang.Object(ARRAY(i1)))
757_0_main_ArrayLength(EOS(STATIC_757), java.lang.Object(ARRAY(i1)), i81, i82, i82, java.lang.Object(ARRAY(i1))) → 762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(i1)), i81, i82, i82, i1) | >=(i1, 0)
762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(i1)), i81, i82, i82, i1) → 767_0_main_GT(EOS(STATIC_767), java.lang.Object(ARRAY(i1)), i81, i82, i82, i1)
762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(i1)), i81, i82, i82, i1) → 768_0_main_GT(EOS(STATIC_768), java.lang.Object(ARRAY(i1)), i81, i82, i82, i1)
767_0_main_GT(EOS(STATIC_767), java.lang.Object(ARRAY(i1)), i81, i82, i82, i1) → 771_0_main_Inc(EOS(STATIC_771), java.lang.Object(ARRAY(i1)), i81) | >(i82, i1)
771_0_main_Inc(EOS(STATIC_771), java.lang.Object(ARRAY(i1)), i81) → 780_0_main_JMP(EOS(STATIC_780), java.lang.Object(ARRAY(i1)), +(i81, 1))
780_0_main_JMP(EOS(STATIC_780), java.lang.Object(ARRAY(i1)), i92) → 788_0_main_Load(EOS(STATIC_788), java.lang.Object(ARRAY(i1)), i92)
788_0_main_Load(EOS(STATIC_788), java.lang.Object(ARRAY(i1)), i92) → 436_0_main_Load(EOS(STATIC_436), java.lang.Object(ARRAY(i1)), i92)
436_0_main_Load(EOS(STATIC_436), java.lang.Object(ARRAY(i1)), i29) → 439_0_main_Load(EOS(STATIC_439), java.lang.Object(ARRAY(i1)), i29, i29)
768_0_main_GT(EOS(STATIC_768), java.lang.Object(ARRAY(i1)), i81, i82, i82, i1) → 773_0_main_Load(EOS(STATIC_773), java.lang.Object(ARRAY(i1)), i81, i82) | <=(i82, i1)
773_0_main_Load(EOS(STATIC_773), java.lang.Object(ARRAY(i1)), i81, i82) → 782_0_main_Load(EOS(STATIC_782), java.lang.Object(ARRAY(i1)), i81, i82, i81)
782_0_main_Load(EOS(STATIC_782), java.lang.Object(ARRAY(i1)), i81, i82, i81) → 790_0_main_InvokeMethod(EOS(STATIC_790), java.lang.Object(ARRAY(i1)), i81, i82, i81, i82)
790_0_main_InvokeMethod(EOS(STATIC_790), java.lang.Object(ARRAY(i1)), i81, i82, i81, i82) → 798_1_main_InvokeMethod(798_0_parts_Load(EOS(STATIC_798), i81, i82), java.lang.Object(ARRAY(i1)), i81, i82, i81, i82)
798_1_main_InvokeMethod(684_0_parts_Return(EOS(STATIC_684), i102, i103, matching1), java.lang.Object(ARRAY(i1)), i102, i103, i102, i103) → 818_0_parts_Return(EOS(STATIC_818), java.lang.Object(ARRAY(i1)), i102, i103, i102, i103, i102, i103, 1) | =(matching1, 1)
798_1_main_InvokeMethod(706_0_parts_Return(EOS(STATIC_706), i104, matching1, matching2), java.lang.Object(ARRAY(i1)), i104, matching3, i104, matching4) → 819_0_parts_Return(EOS(STATIC_819), java.lang.Object(ARRAY(i1)), i104, 0, i104, 0, i104, 0, 0) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
798_1_main_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), i617, i618, i568), java.lang.Object(ARRAY(i1)), i617, i618, i617, i618) → 1409_0_parts_Return(EOS(STATIC_1409), java.lang.Object(ARRAY(i1)), i617, i618, i617, i618, i617, i618, i568)
798_1_main_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), i672, i673, i623), java.lang.Object(ARRAY(i1)), i672, i673, i672, i673) → 1443_0_parts_Return(EOS(STATIC_1443), java.lang.Object(ARRAY(i1)), i672, i673, i672, i673, i672, i673, i623)
798_1_main_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), i727), java.lang.Object(ARRAY(i1)), i736, i737, i736, i737) → 1508_0_parts_Return(EOS(STATIC_1508), java.lang.Object(ARRAY(i1)), i736, i737, i736, i737, i727)
818_0_parts_Return(EOS(STATIC_818), java.lang.Object(ARRAY(i1)), i102, i103, i102, i103, i102, i103, matching1) → 823_0_main_StackPop(EOS(STATIC_823), java.lang.Object(ARRAY(i1)), i102, i103, 1) | =(matching1, 1)
823_0_main_StackPop(EOS(STATIC_823), java.lang.Object(ARRAY(i1)), i102, i103, matching1) → 829_0_main_Inc(EOS(STATIC_829), java.lang.Object(ARRAY(i1)), i102, i103) | =(matching1, 1)
829_0_main_Inc(EOS(STATIC_829), java.lang.Object(ARRAY(i1)), i102, i103) → 835_0_main_JMP(EOS(STATIC_835), java.lang.Object(ARRAY(i1)), i102, +(i103, 1)) | >=(i103, 0)
835_0_main_JMP(EOS(STATIC_835), java.lang.Object(ARRAY(i1)), i102, i106) → 843_0_main_Load(EOS(STATIC_843), java.lang.Object(ARRAY(i1)), i102, i106)
843_0_main_Load(EOS(STATIC_843), java.lang.Object(ARRAY(i1)), i102, i106) → 744_0_main_Load(EOS(STATIC_744), java.lang.Object(ARRAY(i1)), i102, i106)
819_0_parts_Return(EOS(STATIC_819), java.lang.Object(ARRAY(i1)), i104, matching1, i104, matching2, i104, matching3, matching4) → 826_0_main_StackPop(EOS(STATIC_826), java.lang.Object(ARRAY(i1)), i104, 0, 0) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
826_0_main_StackPop(EOS(STATIC_826), java.lang.Object(ARRAY(i1)), i104, matching1, matching2) → 832_0_main_Inc(EOS(STATIC_832), java.lang.Object(ARRAY(i1)), i104, 0) | &&(=(matching1, 0), =(matching2, 0))
832_0_main_Inc(EOS(STATIC_832), java.lang.Object(ARRAY(i1)), i104, matching1) → 838_0_main_JMP(EOS(STATIC_838), java.lang.Object(ARRAY(i1)), i104, 1) | =(matching1, 0)
838_0_main_JMP(EOS(STATIC_838), java.lang.Object(ARRAY(i1)), i104, matching1) → 846_0_main_Load(EOS(STATIC_846), java.lang.Object(ARRAY(i1)), i104, 1) | =(matching1, 1)
846_0_main_Load(EOS(STATIC_846), java.lang.Object(ARRAY(i1)), i104, matching1) → 744_0_main_Load(EOS(STATIC_744), java.lang.Object(ARRAY(i1)), i104, 1) | =(matching1, 1)
1409_0_parts_Return(EOS(STATIC_1409), java.lang.Object(ARRAY(i1)), i617, i618, i617, i618, i617, i618, i568) → 1410_0_parts_Return(EOS(STATIC_1410), java.lang.Object(ARRAY(i1)), i617, i618, i617, i618, i617, i618, i568)
1410_0_parts_Return(EOS(STATIC_1410), java.lang.Object(ARRAY(i1)), i648, i649, i648, i649, i648, i649, i650) → 1421_0_main_StackPop(EOS(STATIC_1421), java.lang.Object(ARRAY(i1)), i648, i649, i650)
1421_0_main_StackPop(EOS(STATIC_1421), java.lang.Object(ARRAY(i1)), i648, i649, i650) → 1426_0_main_Inc(EOS(STATIC_1426), java.lang.Object(ARRAY(i1)), i648, i649)
1426_0_main_Inc(EOS(STATIC_1426), java.lang.Object(ARRAY(i1)), i648, i649) → 1437_0_main_JMP(EOS(STATIC_1437), java.lang.Object(ARRAY(i1)), i648, +(i649, 1)) | >(i649, 0)
1437_0_main_JMP(EOS(STATIC_1437), java.lang.Object(ARRAY(i1)), i648, i674) → 1446_0_main_Load(EOS(STATIC_1446), java.lang.Object(ARRAY(i1)), i648, i674)
1446_0_main_Load(EOS(STATIC_1446), java.lang.Object(ARRAY(i1)), i648, i674) → 744_0_main_Load(EOS(STATIC_744), java.lang.Object(ARRAY(i1)), i648, i674)
1443_0_parts_Return(EOS(STATIC_1443), java.lang.Object(ARRAY(i1)), i672, i673, i672, i673, i672, i673, i623) → 1410_0_parts_Return(EOS(STATIC_1410), java.lang.Object(ARRAY(i1)), i672, i673, i672, i673, i672, i673, i623)
1508_0_parts_Return(EOS(STATIC_1508), java.lang.Object(ARRAY(i1)), i736, i737, i736, i737, i727) → 1365_0_parts_Return(EOS(STATIC_1365), java.lang.Object(ARRAY(i1)), i736, i737, i736, i737, i727)
1365_0_parts_Return(EOS(STATIC_1365), java.lang.Object(ARRAY(i1)), i590, i591, i590, i591, i589) → 1376_0_main_StackPop(EOS(STATIC_1376), java.lang.Object(ARRAY(i1)), i590, i591, i589)
1376_0_main_StackPop(EOS(STATIC_1376), java.lang.Object(ARRAY(i1)), i590, i591, i589) → 1381_0_main_Inc(EOS(STATIC_1381), java.lang.Object(ARRAY(i1)), i590, i591)
1381_0_main_Inc(EOS(STATIC_1381), java.lang.Object(ARRAY(i1)), i590, i591) → 1393_0_main_JMP(EOS(STATIC_1393), java.lang.Object(ARRAY(i1)), i590, +(i591, 1)) | >(i591, 0)
1393_0_main_JMP(EOS(STATIC_1393), java.lang.Object(ARRAY(i1)), i590, i619) → 1413_0_main_Load(EOS(STATIC_1413), java.lang.Object(ARRAY(i1)), i590, i619)
1413_0_main_Load(EOS(STATIC_1413), java.lang.Object(ARRAY(i1)), i590, i619) → 744_0_main_Load(EOS(STATIC_744), java.lang.Object(ARRAY(i1)), i590, i619)
R rules:
798_0_parts_Load(EOS(STATIC_798), i81, i82) → 802_0_parts_Load(EOS(STATIC_802), i81, i82)
802_0_parts_Load(EOS(STATIC_802), i81, i82) → 671_0_parts_Load(EOS(STATIC_671), i81, i82)
765_0_parts_Load(EOS(STATIC_765), i74, i74) → 671_0_parts_Load(EOS(STATIC_671), i74, i74)
775_0_parts_Load(EOS(STATIC_775), i76) → 671_0_parts_Load(EOS(STATIC_671), i86, i76)
1450_0_parts_Load(EOS(STATIC_1450), i74) → 671_0_parts_Load(EOS(STATIC_671), i74, i685)
671_0_parts_Load(EOS(STATIC_671), i69, i70) → 674_0_parts_GT(EOS(STATIC_674), i69, i70, i69)
674_0_parts_GT(EOS(STATIC_674), i73, i70, i73) → 677_0_parts_GT(EOS(STATIC_677), i73, i70, i73)
674_0_parts_GT(EOS(STATIC_674), i74, i70, i74) → 678_0_parts_GT(EOS(STATIC_678), i74, i70, i74)
677_0_parts_GT(EOS(STATIC_677), i73, i70, i73) → 680_0_parts_ConstantStackPush(EOS(STATIC_680), i73, i70) | <=(i73, 0)
678_0_parts_GT(EOS(STATIC_678), i74, i70, i74) → 682_0_parts_Load(EOS(STATIC_682), i74, i70) | >(i74, 0)
680_0_parts_ConstantStackPush(EOS(STATIC_680), i73, i70) → 684_0_parts_Return(EOS(STATIC_684), i73, i70, 1)
682_0_parts_Load(EOS(STATIC_682), i74, i70) → 687_0_parts_GT(EOS(STATIC_687), i74, i70, i70)
687_0_parts_GT(EOS(STATIC_687), i74, matching1, matching2) → 692_0_parts_GT(EOS(STATIC_692), i74, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
687_0_parts_GT(EOS(STATIC_687), i74, i76, i76) → 693_0_parts_GT(EOS(STATIC_693), i74, i76, i76)
692_0_parts_GT(EOS(STATIC_692), i74, matching1, matching2) → 700_0_parts_ConstantStackPush(EOS(STATIC_700), i74, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
693_0_parts_GT(EOS(STATIC_693), i74, i76, i76) → 703_0_parts_Load(EOS(STATIC_703), i74, i76) | >(i76, 0)
700_0_parts_ConstantStackPush(EOS(STATIC_700), i74, matching1) → 706_0_parts_Return(EOS(STATIC_706), i74, 0, 0) | =(matching1, 0)
703_0_parts_Load(EOS(STATIC_703), i74, i76) → 708_0_parts_Load(EOS(STATIC_708), i74, i76, i76)
708_0_parts_Load(EOS(STATIC_708), i74, i76, i76) → 715_0_parts_LE(EOS(STATIC_715), i74, i76, i76, i74)
715_0_parts_LE(EOS(STATIC_715), i74, i76, i76, i74) → 725_0_parts_LE(EOS(STATIC_725), i74, i76, i76, i74)
715_0_parts_LE(EOS(STATIC_715), i74, i76, i76, i74) → 726_0_parts_LE(EOS(STATIC_726), i74, i76, i76, i74)
725_0_parts_LE(EOS(STATIC_725), i74, i76, i76, i74) → 731_0_parts_Load(EOS(STATIC_731), i74, i76) | <=(i76, i74)
726_0_parts_LE(EOS(STATIC_726), i74, i76, i76, i74) → 733_0_parts_Load(EOS(STATIC_733), i74, i76) | >(i76, i74)
731_0_parts_Load(EOS(STATIC_731), i74, i76) → 747_0_parts_Load(EOS(STATIC_747), i74, i76, i74)
733_0_parts_Load(EOS(STATIC_733), i74, i76) → 749_0_parts_Load(EOS(STATIC_749), i74, i76, i74)
747_0_parts_Load(EOS(STATIC_747), i74, i76, i74) → 753_0_parts_IntArithmetic(EOS(STATIC_753), i74, i76, i74, i76)
749_0_parts_Load(EOS(STATIC_749), i74, i76, i74) → 755_0_parts_InvokeMethod(EOS(STATIC_755), i74, i76, i74, i74)
753_0_parts_IntArithmetic(EOS(STATIC_753), i74, i76, i74, i76) → 758_0_parts_Load(EOS(STATIC_758), i74, i76) | &&(>(i74, 0), >(i76, 0))
755_0_parts_InvokeMethod(EOS(STATIC_755), i74, i76, i74, i74) → 760_1_parts_InvokeMethod(760_0_parts_Load(EOS(STATIC_760), i74, i74), i74, i76, i74, i74)
758_0_parts_Load(EOS(STATIC_758), i74, i76) → 763_0_parts_InvokeMethod(EOS(STATIC_763), i74, i76, i76)
760_0_parts_Load(EOS(STATIC_760), i74, i74) → 765_0_parts_Load(EOS(STATIC_765), i74, i74)
760_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), i613, i613, i568), i613, i76, i613, i613) → 1397_0_parts_Return(EOS(STATIC_1397), i613, i76, i613, i613, i613, i613, i568)
760_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), i668, i668, i623), i668, i76, i668, i668) → 1439_0_parts_Return(EOS(STATIC_1439), i668, i76, i668, i668, i668, i668, i623)
760_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), i727), i733, i76, i733, i733) → 1504_0_parts_Return(EOS(STATIC_1504), i733, i76, i733, i733, i727)
763_0_parts_InvokeMethod(EOS(STATIC_763), i74, i76, i76) → 769_1_parts_InvokeMethod(769_0_parts_Load(EOS(STATIC_769), i76), i74, i76, i76)
769_0_parts_Load(EOS(STATIC_769), i76) → 775_0_parts_Load(EOS(STATIC_775), i76)
769_1_parts_InvokeMethod(684_0_parts_Return(EOS(STATIC_684), i96, i97, matching1), i74, i97, i97) → 799_0_parts_Return(EOS(STATIC_799), i74, i97, i97, i97, 1) | =(matching1, 1)
769_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), i615, i616, i568), i74, i616, i616) → 1403_0_parts_Return(EOS(STATIC_1403), i74, i616, i616, i616, i568)
769_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), i670, i671, i623), i74, i671, i671) → 1440_0_parts_Return(EOS(STATIC_1440), i74, i671, i671, i671, i623)
769_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), i727), i74, i735, i735) → 1506_0_parts_Return(EOS(STATIC_1506), i74, i735, i735, i727)
799_0_parts_Return(EOS(STATIC_799), i74, i97, i97, i97, matching1) → 804_0_parts_Load(EOS(STATIC_804), i74, i97, 1) | =(matching1, 1)
804_0_parts_Load(EOS(STATIC_804), i74, i97, matching1) → 885_0_parts_Load(EOS(STATIC_885), i74, i97, 1) | =(matching1, 1)
876_0_parts_Return(EOS(STATIC_876), i116, i76, i116, i116, matching1) → 1044_0_parts_Return(EOS(STATIC_1044), i116, i76, i116, i116, 1) | =(matching1, 1)
877_0_parts_Return(EOS(STATIC_877), i74, i118, i118, matching1) → 1051_0_parts_Return(EOS(STATIC_1051), i74, i118, i118, 1) | =(matching1, 1)
885_0_parts_Load(EOS(STATIC_885), i74, i118, matching1) → 926_0_parts_Load(EOS(STATIC_926), i74, i118, 1) | =(matching1, 1)
912_0_parts_Return(EOS(STATIC_912), i129, i76, i129, i129, i129, i129, matching1) → 1096_0_parts_Return(EOS(STATIC_1096), i129, i76, i129, i129, i129, i129, 1) | =(matching1, 1)
913_0_parts_Return(EOS(STATIC_913), i74, i132, i132, i132, matching1) → 1104_0_parts_Return(EOS(STATIC_1104), i74, i132, i132, i132, 1) | =(matching1, 1)
926_0_parts_Load(EOS(STATIC_926), i74, i132, matching1) → 1069_0_parts_Load(EOS(STATIC_1069), i74, i132, 1) | =(matching1, 1)
1044_0_parts_Return(EOS(STATIC_1044), i199, i76, i199, i199, i200) → 1207_0_parts_Return(EOS(STATIC_1207), i199, i76, i199, i199, i200)
1051_0_parts_Return(EOS(STATIC_1051), i74, i211, i211, i212) → 1212_0_parts_Return(EOS(STATIC_1212), i74, i211, i211, i212)
1069_0_parts_Load(EOS(STATIC_1069), i74, i211, i212) → 1120_0_parts_Load(EOS(STATIC_1120), i74, i211, i212)
1096_0_parts_Return(EOS(STATIC_1096), i271, i76, i271, i271, i271, i271, i272) → 1248_0_parts_Return(EOS(STATIC_1248), i271, i76, i271, i271, i271, i271, i272)
1104_0_parts_Return(EOS(STATIC_1104), i74, i282, i282, i282, i284) → 1254_0_parts_Return(EOS(STATIC_1254), i74, i282, i282, i282, i284)
1120_0_parts_Load(EOS(STATIC_1120), i74, i282, i284) → 1226_0_parts_Load(EOS(STATIC_1226), i74, i282, i284)
1207_0_parts_Return(EOS(STATIC_1207), i385, i76, i385, i385, i386) → 1349_0_parts_Return(EOS(STATIC_1349), i385, i76, i385, i385, i386)
1212_0_parts_Return(EOS(STATIC_1212), i74, i397, i397, i398) → 1357_0_parts_Return(EOS(STATIC_1357), i74, i397, i397, i398)
1226_0_parts_Load(EOS(STATIC_1226), i74, i397, i398) → 1268_0_parts_Load(EOS(STATIC_1268), i74, i397, i398)
1248_0_parts_Return(EOS(STATIC_1248), i458, i76, i458, i458, i458, i458, i459) → 1398_0_parts_Return(EOS(STATIC_1398), i458, i76, i458, i458, i458, i458, i459)
1254_0_parts_Return(EOS(STATIC_1254), i74, i469, i469, i469, i471) → 1404_0_parts_Return(EOS(STATIC_1404), i74, i469, i469, i469, i471)
1268_0_parts_Load(EOS(STATIC_1268), i74, i469, i471) → 1372_0_parts_Load(EOS(STATIC_1372), i74, i469, i471)
1349_0_parts_Return(EOS(STATIC_1349), i567, i76, i567, i567, i568) → 1370_0_parts_Return(EOS(STATIC_1370), i567, i76, i568)
1357_0_parts_Return(EOS(STATIC_1357), i74, i577, i577, i578) → 1372_0_parts_Load(EOS(STATIC_1372), i74, i577, i578)
1370_0_parts_Return(EOS(STATIC_1370), i567, i76, i568) → 1416_0_parts_Return(EOS(STATIC_1416), i567, i76, i568)
1372_0_parts_Load(EOS(STATIC_1372), i74, i577, i578) → 1419_0_parts_Load(EOS(STATIC_1419), i74, i577, i578)
1397_0_parts_Return(EOS(STATIC_1397), i613, i76, i613, i613, i613, i613, i568) → 1398_0_parts_Return(EOS(STATIC_1398), i613, i76, i613, i613, i613, i613, i568)
1398_0_parts_Return(EOS(STATIC_1398), i622, i76, i622, i622, i622, i622, i623) → 1416_0_parts_Return(EOS(STATIC_1416), i622, i76, i623)
1403_0_parts_Return(EOS(STATIC_1403), i74, i616, i616, i616, i568) → 1404_0_parts_Return(EOS(STATIC_1404), i74, i616, i616, i616, i568)
1404_0_parts_Return(EOS(STATIC_1404), i74, i633, i633, i633, i635) → 1419_0_parts_Load(EOS(STATIC_1419), i74, i633, i635)
1419_0_parts_Load(EOS(STATIC_1419), i74, i633, i635) → 1424_0_parts_Load(EOS(STATIC_1424), i633, i635, i74)
1424_0_parts_Load(EOS(STATIC_1424), i633, i635, i74) → 1435_0_parts_ConstantStackPush(EOS(STATIC_1435), i635, i74, i633)
1435_0_parts_ConstantStackPush(EOS(STATIC_1435), i635, i74, i633) → 1444_0_parts_IntArithmetic(EOS(STATIC_1444), i635, i74, i633)
1439_0_parts_Return(EOS(STATIC_1439), i668, i76, i668, i668, i668, i668, i623) → 1398_0_parts_Return(EOS(STATIC_1398), i668, i76, i668, i668, i668, i668, i623)
1440_0_parts_Return(EOS(STATIC_1440), i74, i671, i671, i671, i623) → 1404_0_parts_Return(EOS(STATIC_1404), i74, i671, i671, i671, i623)
1444_0_parts_IntArithmetic(EOS(STATIC_1444), i635, i74, i633) → 1448_0_parts_InvokeMethod(EOS(STATIC_1448), i635, i74) | >(i633, 0)
1448_0_parts_InvokeMethod(EOS(STATIC_1448), i635, i74) → 1449_1_parts_InvokeMethod(1449_0_parts_Load(EOS(STATIC_1449), i74), i635, i74)
1449_0_parts_Load(EOS(STATIC_1449), i74) → 1450_0_parts_Load(EOS(STATIC_1450), i74)
1449_1_parts_InvokeMethod(706_0_parts_Return(EOS(STATIC_706), i689, matching1, matching2), i635, i689) → 1460_0_parts_Return(EOS(STATIC_1460), i635, i689, 0, i689, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1449_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), i690, i691, i568), i635, i690) → 1461_0_parts_Return(EOS(STATIC_1461), i635, i690, i690, i568)
1449_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), i692, i693, i623), i635, i692) → 1464_0_parts_Return(EOS(STATIC_1464), i635, i692, i692, i623)
1449_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), i727), i635, i739) → 1510_0_parts_Return(EOS(STATIC_1510), i635, i739, i727)
1460_0_parts_Return(EOS(STATIC_1460), i635, i689, matching1, i689, matching2, matching3) → 1465_0_parts_IntArithmetic(EOS(STATIC_1465), i635, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1461_0_parts_Return(EOS(STATIC_1461), i635, i690, i690, i568) → 1467_0_parts_IntArithmetic(EOS(STATIC_1467), i635, i568)
1464_0_parts_Return(EOS(STATIC_1464), i635, i692, i692, i623) → 1461_0_parts_Return(EOS(STATIC_1461), i635, i692, i692, i623)
1465_0_parts_IntArithmetic(EOS(STATIC_1465), i635, matching1) → 1467_0_parts_IntArithmetic(EOS(STATIC_1467), i635, 0) | =(matching1, 0)
1467_0_parts_IntArithmetic(EOS(STATIC_1467), i635, i568) → 1490_0_parts_IntArithmetic(EOS(STATIC_1490), i635, i568)
1487_0_parts_Return(EOS(STATIC_1487), i635, i715, i703) → 1490_0_parts_IntArithmetic(EOS(STATIC_1490), i635, i703)
1490_0_parts_IntArithmetic(EOS(STATIC_1490), i635, i703) → 1492_0_parts_Return(EOS(STATIC_1492), +(i635, i703))
1504_0_parts_Return(EOS(STATIC_1504), i733, i76, i733, i733, i727) → 1349_0_parts_Return(EOS(STATIC_1349), i733, i76, i733, i733, i727)
1506_0_parts_Return(EOS(STATIC_1506), i74, i735, i735, i727) → 1357_0_parts_Return(EOS(STATIC_1357), i74, i735, i735, i727)
1510_0_parts_Return(EOS(STATIC_1510), i635, i739, i727) → 1487_0_parts_Return(EOS(STATIC_1487), i635, i739, i727)

Combined rules. Obtained 7 conditional rules for P and 16 conditional rules for R.


P rules:
762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x0)), x1, x2, x2, x0) → 762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x0)), +(x1, 1), 0, 0, x0) | &&(&&(>(x2, x0), >(+(x0, 1), 0)), >=(x0, +(x1, 1)))
762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x0)), x1, x2, x2, x0) → 798_1_main_InvokeMethod(798_0_parts_Load(EOS(STATIC_798), x1, x2), java.lang.Object(ARRAY(x0)), x1, x2, x1, x2) | <=(x2, x0)
798_1_main_InvokeMethod(684_0_parts_Return(EOS(STATIC_684), x0, x1, 1), java.lang.Object(ARRAY(x3)), x0, x1, x0, x1) → 762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x3)), x0, +(x1, 1), +(x1, 1), x3) | &&(>(+(x3, 1), 0), >(+(x1, 1), 0))
798_1_main_InvokeMethod(706_0_parts_Return(EOS(STATIC_706), x0, 0, 0), java.lang.Object(ARRAY(x3)), x0, 0, x0, 0) → 762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x3)), x0, 1, 1, x3) | >(+(x3, 1), 0)
798_1_main_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), x0, x1, x2), java.lang.Object(ARRAY(x3)), x0, x1, x0, x1) → 762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x3)), x0, +(x1, 1), +(x1, 1), x3) | &&(>(+(x3, 1), 0), >(x1, 0))
798_1_main_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), x0, x1, x2), java.lang.Object(ARRAY(x3)), x0, x1, x0, x1) → 762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x3)), x0, +(x1, 1), +(x1, 1), x3) | &&(>(+(x3, 1), 0), >(x1, 0))
798_1_main_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), x0), java.lang.Object(ARRAY(x1)), x2, x3, x2, x3) → 762_0_main_GT(EOS(STATIC_762), java.lang.Object(ARRAY(x1)), x2, +(x3, 1), +(x3, 1), x1) | &&(>(x3, 0), >(+(x1, 1), 0))
R rules:
798_0_parts_Load(EOS(STATIC_798), x0, x1) → 674_0_parts_GT(EOS(STATIC_674), x0, x1, x0)
674_0_parts_GT(EOS(STATIC_674), x0, x1, x0) → 684_0_parts_Return(EOS(STATIC_684), x0, x1, 1) | <=(x0, 0)
674_0_parts_GT(EOS(STATIC_674), x0, 0, x0) → 706_0_parts_Return(EOS(STATIC_706), x0, 0, 0) | >(x0, 0)
674_0_parts_GT(EOS(STATIC_674), x0, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x0, x0, x0), x0, x1, x0, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
674_0_parts_GT(EOS(STATIC_674), x0, x1, x0) → 769_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x2, x1, x2), x0, x1, x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
760_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), x0, x0, x1), x0, x2, x0, x0) → 1416_0_parts_Return(EOS(STATIC_1416), x0, x2, x1)
760_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), x0, x0, x1), x0, x2, x0, x0) → 1416_0_parts_Return(EOS(STATIC_1416), x0, x2, x1)
760_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), x0), x1, x2, x1, x1) → 1416_0_parts_Return(EOS(STATIC_1416), x1, x2, x0)
769_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), x0, x1, x2), x3, x1, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x3, x4, x3), x2, x3) | >(x1, 0)
769_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), x0, x1, x2), x3, x1, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x3, x4, x3), x2, x3) | >(x1, 0)
769_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), x0), x1, x2, x2) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x1, x3, x1), x0, x1) | >(x2, 0)
769_1_parts_InvokeMethod(684_0_parts_Return(EOS(STATIC_684), x0, x1, 1), x3, x1, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(EOS(STATIC_674), x3, x4, x3), 1, x3) | >(x1, 0)
1449_1_parts_InvokeMethod(1370_0_parts_Return(EOS(STATIC_1370), x0, x1, x2), x3, x0) → 1492_0_parts_Return(EOS(STATIC_1492), +(x3, x2))
1449_1_parts_InvokeMethod(1416_0_parts_Return(EOS(STATIC_1416), x0, x1, x2), x3, x0) → 1492_0_parts_Return(EOS(STATIC_1492), +(x3, x2))
1449_1_parts_InvokeMethod(706_0_parts_Return(EOS(STATIC_706), x0, 0, 0), arith[1], x0) → 1492_0_parts_Return(EOS(STATIC_1492), arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(EOS(STATIC_1492), x0), x1, x2) → 1492_0_parts_Return(EOS(STATIC_1492), +(x1, x0))

Filtered ground terms:



762_0_main_GT(x1, x2, x3, x4, x5, x6) → 762_0_main_GT(x2, x3, x4, x5, x6)
1492_0_parts_Return(x1, x2) → 1492_0_parts_Return(x2)
1416_0_parts_Return(x1, x2, x3, x4) → 1416_0_parts_Return(x2, x3, x4)
1370_0_parts_Return(x1, x2, x3, x4) → 1370_0_parts_Return(x2, x3, x4)
Cond_798_1_main_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_798_1_main_InvokeMethod1(x1, x2, x3, x4, x6)
706_0_parts_Return(x1, x2, x3, x4) → 706_0_parts_Return(x2)
684_0_parts_Return(x1, x2, x3, x4) → 684_0_parts_Return(x2, x3)
798_0_parts_Load(x1, x2, x3) → 798_0_parts_Load(x2, x3)
Cond_762_0_main_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_762_0_main_GT1(x1, x3, x4, x5, x6, x7)
Cond_762_0_main_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_762_0_main_GT(x1, x3, x4, x5, x6, x7)
674_0_parts_GT(x1, x2, x3, x4) → 674_0_parts_GT(x2, x3, x4)
Cond_674_0_parts_GT3(x1, x2, x3, x4, x5, x6) → Cond_674_0_parts_GT3(x1, x3, x4, x5, x6)
Cond_674_0_parts_GT2(x1, x2, x3, x4, x5) → Cond_674_0_parts_GT2(x1, x3, x4, x5)
Cond_674_0_parts_GT1(x1, x2, x3, x4, x5) → Cond_674_0_parts_GT1(x1, x3, x5)
Cond_674_0_parts_GT(x1, x2, x3, x4, x5) → Cond_674_0_parts_GT(x1, x3, x4, x5)

Filtered duplicate args:



762_0_main_GT(x1, x2, x3, x4, x5) → 762_0_main_GT(x1, x2, x4)
Cond_762_0_main_GT(x1, x2, x3, x4, x5, x6) → Cond_762_0_main_GT(x1, x2, x3, x5)
Cond_762_0_main_GT1(x1, x2, x3, x4, x5, x6) → Cond_762_0_main_GT1(x1, x2, x3, x5)
798_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → 798_1_main_InvokeMethod(x1, x2, x5, x6)
Cond_798_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_798_1_main_InvokeMethod(x1, x2, x3)
Cond_798_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_798_1_main_InvokeMethod1(x1, x2, x3)
Cond_798_1_main_InvokeMethod2(x1, x2, x3, x4, x5, x6, x7) → Cond_798_1_main_InvokeMethod2(x1, x2, x3)
Cond_798_1_main_InvokeMethod3(x1, x2, x3, x4, x5, x6, x7) → Cond_798_1_main_InvokeMethod3(x1, x2, x3)
Cond_798_1_main_InvokeMethod4(x1, x2, x3, x4, x5, x6, x7) → Cond_798_1_main_InvokeMethod4(x1, x2, x3, x6, x7)
674_0_parts_GT(x1, x2, x3) → 674_0_parts_GT(x2, x3)
Cond_674_0_parts_GT(x1, x2, x3, x4) → Cond_674_0_parts_GT(x1, x3, x4)
Cond_674_0_parts_GT1(x1, x2, x3) → Cond_674_0_parts_GT1(x1, x3)
Cond_674_0_parts_GT2(x1, x2, x3, x4) → Cond_674_0_parts_GT2(x1, x3, x4)
760_1_parts_InvokeMethod(x1, x2, x3, x4, x5) → 760_1_parts_InvokeMethod(x1, x3, x5)
Cond_674_0_parts_GT3(x1, x2, x3, x4, x5) → Cond_674_0_parts_GT3(x1, x3, x4, x5)
769_1_parts_InvokeMethod(x1, x2, x3, x4) → 769_1_parts_InvokeMethod(x1, x2, x4)
Cond_769_1_parts_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod(x1, x2, x3, x6)
Cond_769_1_parts_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod1(x1, x2, x3, x6)
Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x5, x6)
Cond_769_1_parts_InvokeMethod3(x1, x2, x3, x4, x5, x6) → Cond_769_1_parts_InvokeMethod3(x1, x2, x3, x6)

Filtered unneeded arguments:



Cond_762_0_main_GT(x1, x2, x3, x4) → Cond_762_0_main_GT(x1, x2, x3)
Cond_798_1_main_InvokeMethod4(x1, x2, x3, x4, x5) → Cond_798_1_main_InvokeMethod4(x1, x3, x4, x5)
1370_0_parts_Return(x1, x2, x3) → 1370_0_parts_Return(x1, x2)
1416_0_parts_Return(x1, x2, x3) → 1416_0_parts_Return(x1, x2)
Cond_769_1_parts_InvokeMethod(x1, x2, x3, x4) → Cond_769_1_parts_InvokeMethod(x1, x3, x4)
1449_1_parts_InvokeMethod(x1, x2, x3) → 1449_1_parts_InvokeMethod(x1, x3)
Cond_769_1_parts_InvokeMethod1(x1, x2, x3, x4) → Cond_769_1_parts_InvokeMethod1(x1, x3, x4)
Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_769_1_parts_InvokeMethod2(x1, x3, x5)
Cond_769_1_parts_InvokeMethod3(x1, x2, x3, x4) → Cond_769_1_parts_InvokeMethod3(x1, x3, x4)

Combined rules. Obtained 7 conditional rules for P and 16 conditional rules for R.


P rules:
762_0_main_GT(java.lang.Object(ARRAY(x0)), x1, x2) → 762_0_main_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0) | &&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1))
762_0_main_GT(java.lang.Object(ARRAY(x0)), x1, x2) → 798_1_main_InvokeMethod(798_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2) | <=(x2, x0)
798_1_main_InvokeMethod(684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_main_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) | &&(>(x3, -1), >(x1, -1))
798_1_main_InvokeMethod(706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 762_0_main_GT(java.lang.Object(ARRAY(x3)), x0, 1) | >(x3, -1)
798_1_main_InvokeMethod(1370_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_main_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) | &&(>(x3, -1), >(x1, 0))
798_1_main_InvokeMethod(1416_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_main_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) | &&(>(x3, -1), >(x1, 0))
798_1_main_InvokeMethod(1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 762_0_main_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1)) | &&(>(x3, 0), >(x1, -1))
R rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → 684_0_parts_Return(x0, x1) | <=(x0, 0)
674_0_parts_GT(0, x0) → 706_0_parts_Return(x0) | >(x0, 0)
674_0_parts_GT(x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0) | &&(&&(>(x1, x0), >(x1, 0)), >(x0, 0))
674_0_parts_GT(x1, x0) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1) | &&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0))
760_1_parts_InvokeMethod(1370_0_parts_Return(x0, x0), x2, x0) → 1416_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1416_0_parts_Return(x0, x0), x2, x0) → 1416_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 1416_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x3, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3) | >(x1, 0)
769_1_parts_InvokeMethod(1416_0_parts_Return(x0, x1), x3, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3) | >(x1, 0)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1) | >(x2, 0)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3) | >(x1, 0)
1449_1_parts_InvokeMethod(1370_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(+(x3, x2))
1449_1_parts_InvokeMethod(1416_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(+(x3, x2))
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(+(x1, x0))

Performed bisimulation on rules. Used the following equivalence classes: {[684_0_parts_Return_2, 1370_0_parts_Return_2, 1416_0_parts_Return_2]=684_0_parts_Return_2, [Cond_798_1_main_InvokeMethod2_5, Cond_798_1_main_InvokeMethod3_5]=Cond_798_1_main_InvokeMethod2_5, [Cond_769_1_parts_InvokeMethod_5, Cond_769_1_parts_InvokeMethod1_5, Cond_769_1_parts_InvokeMethod3_5]=Cond_769_1_parts_InvokeMethod_5}


Finished conversion. Obtained 12 rules for P and 18 rules for R. System has predefined symbols.


P rules:
762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_762_0_MAIN_GT(&&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1, x2)
COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0)
762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_762_0_MAIN_GT1(<=(x2, x0), java.lang.Object(ARRAY(x0)), x1, x2)
COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2)
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3, -1), >(x1, -1)), 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3, -1), 706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0)
COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, 1)
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3, -1), >(x1, 0)), 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3, 0), >(x1, -1)), 1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3)
COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1))
R rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(<=(x0, 0), x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(>(x0, 0), 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(>(x1, 0), 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(>(x2, 0), 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(+(x3, x2))
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(+(x1, x0))

(24) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_762_0_MAIN_GT(x2[0] > x0[0] && x0[0] >= x1[0] + 1 && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])
(1): COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), x1[1] + 1, 0)
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(6): 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(7): COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(0) -> (1), if (x2[0] > x0[0] && x0[0] >= x1[0] + 1 && x0[0] > -1java.lang.Object(ARRAY(x0[0])) →* java.lang.Object(ARRAY(x0[1]))∧x1[0]* x1[1]x2[0]* x2[1])


(1) -> (0), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[0]))∧x1[1] + 1* x1[0]0* x2[0])


(1) -> (2), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[2]))∧x1[1] + 1* x1[2]0* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(3) -> (6), if (798_0_parts_Load(x1[3], x2[3]) →* 706_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(5) -> (0), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[0]))∧x0[5]* x1[0]x1[5] + 1* x2[0])


(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(6) -> (7), if (x3[6] > -1706_0_parts_Return(x0[6]) →* 706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(7) -> (0), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[0]))∧x0[7]* x1[0]1* x2[0])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(9) -> (0), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[0]))∧x0[9]* x1[0]x1[9] + 1* x2[0])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])


(11) -> (0), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[0]))∧x2[11]* x1[0]x3[11] + 1* x2[0])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(25) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@44ea2ca9 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_762_0_MAIN_GT(&&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]), COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0) which results in the following constraint:

    (1)    (&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1))=TRUEjava.lang.Object(ARRAY(x0[0]))=java.lang.Object(ARRAY(x0[1]))∧x1[0]=x1[1]x2[0]=x2[1]762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])∧(UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥))



    We simplified constraint (1) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x0[0], -1)=TRUE>(x2[0], x0[0])=TRUE>=(x0[0], +(x1[0], 1))=TRUE762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])≥COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])∧(UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [(-1)bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (7)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [(-1)bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)


    (8)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (9)    ([1] + x1[0] + x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[bni_38 + (-1)Bound*bni_38] + [bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)







For Pair COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0) the following chains were created:
  • We consider the chain COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0) which results in the following constraint:

    (10)    (COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1])≥NonInfC∧COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥))



    We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (11)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (11) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (12)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (12) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (13)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (13) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (14)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)







For Pair 762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_762_0_MAIN_GT1(<=(x2, x0), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (15)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (15) using rules (I), (II), (IV) which results in the following new constraint:

    (16)    (<=(x2[2], x0[2])=TRUE762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (17)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[2] + [(2)bni_42]x0[2] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (18)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[2] + [(2)bni_42]x0[2] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (19)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[2] + [(2)bni_42]x0[2] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (20)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (21)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (22)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)


    (23)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)







For Pair COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (24)    (COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (24) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (25)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (25) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (26)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (26) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (27)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (28)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3, -1), >(x1, -1)), 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (29)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE684_0_parts_Return(x0[4], x1[4])=684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (29) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (30)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x0[4] + [(2)bni_46]x3[4] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x0[4] + [(2)bni_46]x3[4] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x0[4] + [(2)bni_46]x3[4] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (34)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46] = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]x3[4] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (35)    (COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (35) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (36)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧[(-1)bso_49] ≥ 0)



    We simplified constraint (36) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (37)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧[(-1)bso_49] ≥ 0)



    We simplified constraint (37) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (38)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧[(-1)bso_49] ≥ 0)



    We simplified constraint (38) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (39)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_49] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3, -1), 706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0), COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (40)    (>(x3[6], -1)=TRUE706_0_parts_Return(x0[6])=706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6]))=java.lang.Object(ARRAY(x3[7]))∧x0[6]=x0[7]798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (40) using rules (I), (II), (IV) which results in the following new constraint:

    (41)    (>(x3[6], -1)=TRUE798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (41) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (42)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]x0[6] + [(2)bni_50]x3[6] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (42) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (43)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]x0[6] + [(2)bni_50]x3[6] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (43) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (44)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50 + (-1)Bound*bni_50] + [(-1)bni_50]x0[6] + [(2)bni_50]x3[6] ≥ 0∧[(-1)bso_51] ≥ 0)



    We simplified constraint (44) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (45)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50] = 0∧[(-1)bni_50 + (-1)Bound*bni_50] + [(2)bni_50]x3[6] ≥ 0∧0 = 0∧[(-1)bso_51] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, 1) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (46)    (COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥))



    We simplified constraint (46) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (47)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (47) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (48)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (48) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (49)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧[(-1)bso_53] ≥ 0)



    We simplified constraint (49) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (50)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧0 = 0∧0 = 0∧[(-1)bso_53] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3, -1), >(x1, 0)), 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (51)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE684_0_parts_Return(x0[8], x1[8])=684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (51) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (52)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (52) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (53)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]x0[8] + [(2)bni_54]x3[8] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (53) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (54)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]x0[8] + [(2)bni_54]x3[8] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (54) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (55)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [(-1)bni_54]x0[8] + [(2)bni_54]x3[8] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (55) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (56)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] + [(2)bni_54]x3[8] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (56) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (57)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] + [(2)bni_54]x3[8] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (58)    (COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (59)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (60)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (61)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧[(-1)bso_57] ≥ 0)



    We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (62)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3, 0), >(x1, -1)), 1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (63)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE1492_0_parts_Return(x0[10])=1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (63) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (64)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (64) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (65)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(-1)bni_58]x2[10] + [(2)bni_58]x1[10] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (65) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (66)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(-1)bni_58]x2[10] + [(2)bni_58]x1[10] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (66) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (67)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(-1)bni_58]x2[10] + [(2)bni_58]x1[10] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (67) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (68)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧[(-1)bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]x1[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (68) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (69)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧[(-1)bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]x1[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (70)    (COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (70) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (71)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (71) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (72)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (72) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (73)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧[(-1)bso_61] ≥ 0)



    We simplified constraint (73) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (74)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_762_0_MAIN_GT(&&(&&(>(x2, x0), >=(x0, +(x1, 1))), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1, x2)
    • (x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(2)bni_38]x0[0] + [bni_38]x1[0] ≥ 0∧[(-1)bso_39] ≥ 0)
    • ([1] + x1[0] + x0[0] ≥ 0∧x2[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])), ≥)∧[bni_38 + (-1)Bound*bni_38] + [bni_38]x1[0] + [(2)bni_38]x0[0] ≥ 0∧[(-1)bso_39] ≥ 0)

  • COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), +(x1, 1), 0)
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)

  • 762_0_MAIN_GT(java.lang.Object(ARRAY(x0)), x1, x2) → COND_762_0_MAIN_GT1(<=(x2, x0), java.lang.Object(ARRAY(x0)), x1, x2)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_42] = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]x2[2] + [(2)bni_42]x0[2] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)

  • COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1, x2), java.lang.Object(ARRAY(x0)), x1, x2)
    • ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3, -1), >(x1, -1)), 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_46] = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]x3[4] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_48] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_49] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3, -1), 706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0)
    • (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_50] = 0∧[(-1)bni_50 + (-1)Bound*bni_50] + [(2)bni_50]x3[6] ≥ 0∧0 = 0∧[(-1)bso_51] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0), java.lang.Object(ARRAY(x3)), x0, 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, 1)
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_52] = 0∧0 = 0∧0 = 0∧[(-1)bso_53] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3, -1), >(x1, 0)), 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1)
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] + [(2)bni_54]x3[8] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0, x1), java.lang.Object(ARRAY(x3)), x0, x1) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3)), x0, +(x1, 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_56] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3, 0), >(x1, -1)), 1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3)
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧[(-1)bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]x1[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_59] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0), java.lang.Object(ARRAY(x1)), x2, x3) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1)), x2, +(x3, 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_60] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(798_0_parts_Load(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(674_0_parts_GT(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = [-1]x3 + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(684_0_parts_Return(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_674_0_parts_GT1(x1, x2, x3)) = [1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(706_0_parts_Return(x1)) = x1   
POL(Cond_674_0_parts_GT2(x1, x2, x3)) = [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3 + [-1]x2   
POL(Cond_674_0_parts_GT3(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(769_1_parts_InvokeMethod(x1, x2, x3)) = [1] + [-1]x2 + [-1]x3   
POL(1492_0_parts_Return(x1)) = x1   
POL(Cond_769_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3   
POL(1449_1_parts_InvokeMethod(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [-1]x4 + [-1]x3   
POL(+(x1, x2)) = x1 + x2   
POL(762_0_MAIN_GT(x1, x2, x3)) = [-1] + [-1]x2 + [2]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(COND_762_0_MAIN_GT(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(>=(x1, x2)) = [-1]   
POL(1) = [1]   
POL(-1) = [-1]   
POL(COND_762_0_MAIN_GT1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(COND_798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   
POL(COND_798_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   
POL(COND_798_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   
POL(COND_798_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [2]x3   

The following pairs are in P>:

COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), +(x1[1], 1), 0)

The following pairs are in Pbound:

762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])

The following pairs are in P:

762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_762_0_MAIN_GT(&&(&&(>(x2[0], x0[0]), >=(x0[0], +(x1[0], 1))), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])
762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))

At least the following rules have been oriented under context sensitive arithmetic replacement:

798_0_parts_Load(x0, x1)1674_0_parts_GT(x1, x0)1
Cond_674_0_parts_GT(<=(x0, 0), x1, x0)1674_0_parts_GT(x1, x0)1
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)1Cond_769_1_parts_InvokeMethod2(>(x2, 0), 1492_0_parts_Return(x0), x1, x2, x3)1

(26) Complex Obligation (AND)

(27) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[0])), x1[0], x2[0]) → COND_762_0_MAIN_GT(x2[0] > x0[0] && x0[0] >= x1[0] + 1 && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0], x2[0])
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(6): 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(7): COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(5) -> (0), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[0]))∧x0[5]* x1[0]x1[5] + 1* x2[0])


(7) -> (0), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[0]))∧x0[7]* x1[0]1* x2[0])


(9) -> (0), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[0]))∧x0[9]* x1[0]x1[9] + 1* x2[0])


(11) -> (0), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[0]))∧x2[11]* x1[0]x3[11] + 1* x2[0])


(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (798_0_parts_Load(x1[3], x2[3]) →* 706_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -1706_0_parts_Return(x0[6]) →* 706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(28) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(29) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(6): 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (798_0_parts_Load(x1[3], x2[3]) →* 706_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -1706_0_parts_Return(x0[6]) →* 706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(30) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@44ea2ca9 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (1)    (COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_29] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (6)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE1492_0_parts_Return(x0[10])=1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (6) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (7)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (12)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-2)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (13)    (COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (13) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (14)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (15)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (15) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (16)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (16) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (17)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (18)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE684_0_parts_Return(x0[8], x1[8])=684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (18) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (19)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (19) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (20)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (20) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (21)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (22)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (22) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (23)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧0 = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (23) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (24)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-2)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧0 = 0∧[(-1)bso_35] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (25)    (COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥))



    We simplified constraint (25) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (26)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧[1 + (-1)bso_37] ≥ 0)



    We simplified constraint (26) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (27)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧[1 + (-1)bso_37] ≥ 0)



    We simplified constraint (27) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (28)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧[1 + (-1)bso_37] ≥ 0)



    We simplified constraint (28) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (29)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_37] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0), COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (30)    (>(x3[6], -1)=TRUE706_0_parts_Return(x0[6])=706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6]))=java.lang.Object(ARRAY(x3[7]))∧x0[6]=x0[7]798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (30) using rules (I), (II), (IV) which results in the following new constraint:

    (31)    (>(x3[6], -1)=TRUE798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (31) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (32)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (32) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (33)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (33) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (34)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (34) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (35)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧0 = 0∧[(-1)bso_39] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (36)    (COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (36) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (37)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (37) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (38)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (38) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (39)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧[1 + (-1)bso_41] ≥ 0)



    We simplified constraint (39) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (40)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (41)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE684_0_parts_Return(x0[4], x1[4])=684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (41) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (42)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (42) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (43)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (43) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (44)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (44) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (45)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧[(-1)bso_43] ≥ 0)



    We simplified constraint (45) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (46)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)







For Pair COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) the following chains were created:
  • We consider the chain COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (47)    (COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (47) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (48)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (48) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (49)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (49) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (50)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧[(-1)bso_45] ≥ 0)



    We simplified constraint (50) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (51)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)







For Pair 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (52)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (52) using rules (I), (II), (IV) which results in the following new constraint:

    (53)    (<=(x2[2], x0[2])=TRUE762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (53) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (54)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (54) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (55)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (55) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (56)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (56) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (57)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [(-1)bni_46]x2[2] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (57) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (58)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)



    We simplified constraint (58) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (59)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)


    (60)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_28] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_29] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-2)bni_30 + (-1)Bound*bni_30] + [bni_30]x1[10] + [(-1)bni_30]x3[10] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_32] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-2)bni_34 + (-1)Bound*bni_34] + [(-1)bni_34]x1[8] + [bni_34]x3[8] ≥ 0∧0 = 0∧[(-1)bso_35] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_36] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_37] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
    • (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)bni_38 + (-1)Bound*bni_38] + [bni_38]x3[6] ≥ 0∧0 = 0∧[(-1)bso_39] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_40] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_41] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)bni_42 + (-1)Bound*bni_42] + [(-1)bni_42]x1[4] + [bni_42]x3[4] ≥ 0∧0 = 0∧[(-1)bso_43] ≥ 0)

  • COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
    • ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_44] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)

  • 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[2] ≥ 0∧0 = 0∧[(-1)bso_47] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(798_0_parts_Load(x1, x2)) = [-1]x2 + [-1]x1   
POL(674_0_parts_GT(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(684_0_parts_Return(x1, x2)) = [2] + [-1]x1 + [-1]x2   
POL(Cond_674_0_parts_GT1(x1, x2, x3)) = [-1] + [2]x3   
POL(>(x1, x2)) = [-1]   
POL(706_0_parts_Return(x1)) = x1   
POL(Cond_674_0_parts_GT2(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = [2] + [-1]x1 + [-1]x3 + [-1]x2   
POL(Cond_674_0_parts_GT3(x1, x2, x3, x4)) = [1] + [-1]x3 + [-1]x2   
POL(769_1_parts_InvokeMethod(x1, x2, x3)) = [1] + x1 + [-1]x2 + [-1]x3   
POL(1492_0_parts_Return(x1)) = x1   
POL(Cond_769_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(1449_1_parts_InvokeMethod(x1, x2)) = [2] + [-1]x1 + [-1]x2   
POL(Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + x2   
POL(+(x1, x2)) = x1 + x2   
POL(COND_798_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = [-1] + x3 + [-1]x5   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(762_0_MAIN_GT(x1, x2, x3)) = [-1] + [-1]x3 + x1   
POL(1) = [1]   
POL(798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + x2 + [-1]x4   
POL(-1) = [-1]   
POL(COND_798_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [-1] + x3 + [-1]x5   
POL(COND_798_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1] + x3   
POL(COND_798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x3 + [-1]x5   
POL(COND_762_0_MAIN_GT1(x1, x2, x3, x4)) = [-1] + x2 + [-1]x4   

The following pairs are in P>:

COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))

The following pairs are in Pbound:

798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

The following pairs are in P:

798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

At least the following rules have been oriented under context sensitive arithmetic replacement:

798_0_parts_Load(x0, x1)1674_0_parts_GT(x1, x0)1
674_0_parts_GT(x1, x0)1Cond_674_0_parts_GT(<=(x0, 0), x1, x0)1
674_0_parts_GT(x1, x0)1Cond_674_0_parts_GT2(&&(&&(>(x1, x0), >(x1, 0)), >(x0, 0)), x1, x0)1
Cond_674_0_parts_GT3(&&(&&(>(x1, 0), <=(x1, x0)), >(x0, 0)), x1, x0, x2)1674_0_parts_GT(x1, x0)1
684_0_parts_Return(x0, x1)1Cond_674_0_parts_GT(TRUE, x1, x0)1

(31) Complex Obligation (AND)

(32) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(6): 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(3) -> (6), if (798_0_parts_Load(x1[3], x2[3]) →* 706_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(33) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 6 less nodes.

(34) TRUE

(35) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])

(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(36) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 8 less nodes.

(37) TRUE

(38) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(1): COND_762_0_MAIN_GT(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1], x2[1]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[1])), x1[1] + 1, 0)
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(6): 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(7): COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(1) -> (2), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[2]))∧x1[1] + 1* x1[2]0* x2[2])


(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (798_0_parts_Load(x1[3], x2[3]) →* 706_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -1706_0_parts_Return(x0[6]) →* 706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(39) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(40) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(6): 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(x3[6] > -1, 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (6), if (798_0_parts_Load(x1[3], x2[3]) →* 706_0_parts_Return(x0[6])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[6]))∧x1[3]* x0[6]x2[3]* 0)


(6) -> (7), if (x3[6] > -1706_0_parts_Return(x0[6]) →* 706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6])) →* java.lang.Object(ARRAY(x3[7]))∧x0[6]* x0[7])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(41) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@44ea2ca9 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (1)    (COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧[(-1)bso_26] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_26] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (6)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE1492_0_parts_Return(x0[10])=1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (6) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (7)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_27] + [(-1)bni_27]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (12)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_27 + (-1)bni_27] + [(-1)bni_27]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (13)    (COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (13) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (14)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧[(-1)bso_30] ≥ 0)



    We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (15)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧[(-1)bso_30] ≥ 0)



    We simplified constraint (15) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (16)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧[(-1)bso_30] ≥ 0)



    We simplified constraint (16) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (17)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (18)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE684_0_parts_Return(x0[8], x1[8])=684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (18) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (19)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (19) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (20)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (20) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (21)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (22)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (22) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (23)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_31] + [(-1)bni_31]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_32] ≥ 0)



    We simplified constraint (23) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (24)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_31 + (-1)bni_31] + [(-1)bni_31]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_32] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (25)    (COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0)≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥))



    We simplified constraint (25) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (26)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧[(-1)bso_34] ≥ 0)



    We simplified constraint (26) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (27)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧[(-1)bso_34] ≥ 0)



    We simplified constraint (27) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (28)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧[(-1)bso_34] ≥ 0)



    We simplified constraint (28) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (29)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧0 = 0∧0 = 0∧[(-1)bso_34] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0), COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1) which results in the following constraint:

    (30)    (>(x3[6], -1)=TRUE706_0_parts_Return(x0[6])=706_0_parts_Return(x0[7])∧java.lang.Object(ARRAY(x3[6]))=java.lang.Object(ARRAY(x3[7]))∧x0[6]=x0[7]798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (30) using rules (I), (II), (IV) which results in the following new constraint:

    (31)    (>(x3[6], -1)=TRUE798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥NonInfC∧798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)≥COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥))



    We simplified constraint (31) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (32)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)Bound*bni_35] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (32) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (33)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)Bound*bni_35] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (33) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (34)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧[(-1)Bound*bni_35] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (34) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (35)    (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_35] ≥ 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (36)    (COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (36) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (37)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (37) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (38)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (38) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (39)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (39) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (40)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_38] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (41)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE684_0_parts_Return(x0[4], x1[4])=684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (41) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (42)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (42) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (43)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (43) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (44)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (44) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (45)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧[1 + (-1)bso_40] ≥ 0)



    We simplified constraint (45) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (46)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧0 = 0∧[1 + (-1)bso_40] ≥ 0)







For Pair COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) the following chains were created:
  • We consider the chain COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (47)    (COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (47) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (48)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (48) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (49)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (49) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (50)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (50) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (51)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_42] ≥ 0)







For Pair 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (52)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (52) using rules (I), (II), (IV) which results in the following new constraint:

    (53)    (<=(x2[2], x0[2])=TRUE762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (53) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (54)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (54) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (55)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (55) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (56)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (56) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (57)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (57) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (58)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)



    We simplified constraint (58) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (59)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)


    (60)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_25] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_26] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_27 + (-1)bni_27] + [(-1)bni_27]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_29] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_31 + (-1)bni_31] + [(-1)bni_31]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_32] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)), ≥)∧[bni_33] = 0∧0 = 0∧0 = 0∧[(-1)bso_34] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
    • (x3[6] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_35] ≥ 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_37] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_38] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[(-1)Bound*bni_39] + [(-1)bni_39]x1[4] ≥ 0∧0 = 0∧[1 + (-1)bso_40] ≥ 0)

  • COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
    • ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_41] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_42] ≥ 0)

  • 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [(-1)bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[(-1)Bound*bni_43] + [bni_43]x2[2] ≥ 0∧0 = 0∧[(-1)bso_44] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(798_0_parts_Load(x1, x2)) = [-1] + [-1]x2 + x1   
POL(674_0_parts_GT(x1, x2)) = [-1] + x1 + x2   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = [1] + x3 + [-1]x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(684_0_parts_Return(x1, x2)) = [-1] + x1 + [-1]x2   
POL(Cond_674_0_parts_GT1(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(706_0_parts_Return(x1)) = x1   
POL(Cond_674_0_parts_GT2(x1, x2, x3)) = [1] + x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x1 + x3 + [-1]x2   
POL(Cond_674_0_parts_GT3(x1, x2, x3, x4)) = [-1] + x3 + [-1]x2   
POL(769_1_parts_InvokeMethod(x1, x2, x3)) = [1] + x2 + [-1]x3   
POL(1492_0_parts_Return(x1)) = x1   
POL(Cond_769_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + x3   
POL(1449_1_parts_InvokeMethod(x1, x2)) = [2] + [-1]x1 + x2   
POL(Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + x3   
POL(+(x1, x2)) = x1 + x2   
POL(COND_798_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = [-1] + [-1]x5   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(762_0_MAIN_GT(x1, x2, x3)) = [-1]x3   
POL(1) = [1]   
POL(798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1]x4   
POL(-1) = [-1]   
POL(COND_798_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [-1] + [-1]x5   
POL(COND_798_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4, x5)) = [-1]   
POL(COND_798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x5   
POL(COND_762_0_MAIN_GT1(x1, x2, x3, x4)) = [-1]x4   

The following pairs are in P>:

798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])

The following pairs are in Pbound:

798_1_MAIN_INVOKEMETHOD(706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0) → COND_798_1_MAIN_INVOKEMETHOD1(>(x3[6], -1), 706_0_parts_Return(x0[6]), java.lang.Object(ARRAY(x3[6])), x0[6], 0)

The following pairs are in P:

COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

At least the following rules have been oriented under context sensitive arithmetic replacement:

769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)1Cond_674_0_parts_GT3(TRUE, x1, x0, x2)1
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1)1Cond_769_1_parts_InvokeMethod(>(x1, 0), 684_0_parts_Return(x0, x1), x3, x1, x4)1
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)1Cond_769_1_parts_InvokeMethod2(>(x2, 0), 1492_0_parts_Return(x0), x1, x2, x3)1

(42) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(7): COND_798_1_MAIN_INVOKEMETHOD1(TRUE, 706_0_parts_Return(x0[7]), java.lang.Object(ARRAY(x3[7])), x0[7], 0) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[7])), x0[7], 1)
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(7) -> (2), if (java.lang.Object(ARRAY(x3[7])) →* java.lang.Object(ARRAY(x0[2]))∧x0[7]* x1[2]1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(43) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(44) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(9) -> (2), if (java.lang.Object(ARRAY(x3[9])) →* java.lang.Object(ARRAY(x0[2]))∧x0[9]* x1[2]x1[9] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(45) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@44ea2ca9 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]), COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (1)    (&&(>(x3[10], 0), >(x1[10], -1))=TRUE1492_0_parts_Return(x0[10])=1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10]))=java.lang.Object(ARRAY(x1[11]))∧x2[10]=x2[11]x3[10]=x3[11]798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (1) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>(x3[10], 0)=TRUE>(x1[10], -1)=TRUE798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])≥COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (x3[10] + [-1] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[bni_24 + (-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (8)    (COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧[1 + (-1)bso_27] ≥ 0)



    We simplified constraint (11) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (12)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_27] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]), COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1)) which results in the following constraint:

    (13)    (&&(>(x3[8], -1), >(x1[8], 0))=TRUE684_0_parts_Return(x0[8], x1[8])=684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8]))=java.lang.Object(ARRAY(x3[9]))∧x0[8]=x0[9]x1[8]=x1[9]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (13) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (14)    (>(x3[8], -1)=TRUE>(x1[8], 0)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])≥COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (17) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (18)    (x3[8] ≥ 0∧x1[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[bni_28 + (-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)



    We simplified constraint (18) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (19)    (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (20)    (COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧[(-1)bso_31] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)







For Pair 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) the following chains were created:
  • We consider the chain 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]), COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1)) which results in the following constraint:

    (25)    (&&(>(x3[4], -1), >(x1[4], -1))=TRUE684_0_parts_Return(x0[4], x1[4])=684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4]))=java.lang.Object(ARRAY(x3[5]))∧x0[4]=x0[5]x1[4]=x1[5]798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (25) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (26)    (>(x3[4], -1)=TRUE>(x1[4], -1)=TRUE798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥NonInfC∧798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])≥COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])∧(UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥))



    We simplified constraint (26) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (27)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (27) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (28)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (28) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (29)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧[1 + (-1)bso_33] ≥ 0)



    We simplified constraint (29) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (30)    (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)







For Pair COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) the following chains were created:
  • We consider the chain COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (31)    (COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])∧(UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥))



    We simplified constraint (31) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (32)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (32) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (33)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (33) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (34)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (34) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (35)    ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)







For Pair 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) which results in the following constraint:

    (36)    (<=(x2[2], x0[2])=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (36) using rules (I), (II), (IV) which results in the following new constraint:

    (37)    (<=(x2[2], x0[2])=TRUE762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (x0[2] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [(-1)bni_36]x2[2] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (x0[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)



    We simplified constraint (42) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (43)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)


    (44)    (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)







For Pair COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) the following chains were created:
  • We consider the chain COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1)) which results in the following constraint:

    (45)    (COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥NonInfC∧COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11])≥762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))∧(UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥))



    We simplified constraint (45) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (46)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (46) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (47)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (47) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (48)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (48) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (49)    ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
    • (x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_24] + [bni_24]x1[10] + [(-1)bni_24]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))), ≥)∧[bni_26] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_27] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
    • (x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [(-1)bni_28]x1[8] + [bni_28]x3[8] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))), ≥)∧[bni_30] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

  • 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
    • (x3[4] ≥ 0∧x1[4] ≥ 0 ⇒ (UIncreasing(COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])), ≥)∧0 = 0∧[bni_32 + (-1)Bound*bni_32] + [(-1)bni_32]x1[4] + [bni_32]x3[4] ≥ 0∧0 = 0∧[1 + (-1)bso_33] ≥ 0)

  • COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
    • ((UIncreasing(798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])), ≥)∧[bni_34] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)

  • 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)
    • (x0[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧0 = 0∧[bni_36 + (-1)Bound*bni_36] + [bni_36]x0[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)

  • COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))
    • ((UIncreasing(762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))), ≥)∧[bni_38] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(798_0_parts_Load(x1, x2)) = x2 + [-1]x1   
POL(674_0_parts_GT(x1, x2)) = [1] + [-1]x1 + [-1]x2   
POL(Cond_674_0_parts_GT(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(684_0_parts_Return(x1, x2)) = [-1]x1 + x2   
POL(Cond_674_0_parts_GT1(x1, x2, x3)) = [2] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(706_0_parts_Return(x1)) = x1   
POL(Cond_674_0_parts_GT2(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(&&(x1, x2)) = [-1]   
POL(760_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3 + x2   
POL(Cond_674_0_parts_GT3(x1, x2, x3, x4)) = [-1] + [-1]x3 + x2   
POL(769_1_parts_InvokeMethod(x1, x2, x3)) = [-1] + x1 + [-1]x2 + x3   
POL(1492_0_parts_Return(x1)) = x1   
POL(Cond_769_1_parts_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x3 + x2   
POL(1449_1_parts_InvokeMethod(x1, x2)) = [-1] + x1 + [-1]x2   
POL(Cond_769_1_parts_InvokeMethod2(x1, x2, x3, x4, x5)) = [-1] + x4 + [-1]x3 + x2   
POL(+(x1, x2)) = x1 + x2   
POL(798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [1] + x2 + [-1]x4   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(COND_798_1_MAIN_INVOKEMETHOD4(x1, x2, x3, x4, x5)) = x3 + [-1]x5   
POL(-1) = [-1]   
POL(COND_798_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4, x5)) = [1] + x3 + [-1]x5   
POL(762_0_MAIN_GT(x1, x2, x3)) = [1] + [-1]x3 + x1   
POL(1) = [1]   
POL(COND_798_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = x3 + [-1]x5   
POL(COND_762_0_MAIN_GT1(x1, x2, x3, x4)) = [1] + x2 + [-1]x4   

The following pairs are in P>:

798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(&&(>(x3[10], 0), >(x1[10], -1)), 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], +(x1[9], 1))
798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(&&(>(x3[4], -1), >(x1[4], -1)), 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])

The following pairs are in Pbound:

762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

The following pairs are in P:

798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(&&(>(x3[8], -1), >(x1[8], 0)), 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], +(x1[5], 1))
COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(<=(x2[2], x0[2]), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], +(x3[11], 1))

At least the following rules have been oriented under context sensitive arithmetic replacement:

Cond_674_0_parts_GT1(>(x0, 0), 0, x0)1674_0_parts_GT(0, x0)1
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1)1Cond_769_1_parts_InvokeMethod(>(x1, 0), 684_0_parts_Return(x0, x1), x3, x1, x4)1
Cond_769_1_parts_InvokeMethod2(>(x2, 0), 1492_0_parts_Return(x0), x1, x2, x3)1769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)1
684_0_parts_Return(x0, x2)1760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0)1
684_0_parts_Return(x0, x1)1Cond_674_0_parts_GT(TRUE, x1, x0)1

(46) Complex Obligation (AND)

(47) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(2): 762_0_MAIN_GT(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_762_0_MAIN_GT1(x2[2] <= x0[2], java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(5) -> (2), if (java.lang.Object(ARRAY(x3[5])) →* java.lang.Object(ARRAY(x0[2]))∧x0[5]* x1[2]x1[5] + 1* x2[2])


(11) -> (2), if (java.lang.Object(ARRAY(x1[11])) →* java.lang.Object(ARRAY(x0[2]))∧x2[11]* x1[2]x3[11] + 1* x2[2])


(2) -> (3), if (x2[2] <= x0[2]java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(48) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.

(49) TRUE

(50) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
798_0_parts_Load(x0, x1) → 674_0_parts_GT(x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT(x0 <= 0, x1, x0)
Cond_674_0_parts_GT(TRUE, x1, x0) → 684_0_parts_Return(x0, x1)
674_0_parts_GT(0, x0) → Cond_674_0_parts_GT1(x0 > 0, 0, x0)
Cond_674_0_parts_GT1(TRUE, 0, x0) → 706_0_parts_Return(x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT2(x1 > x0 && x1 > 0 && x0 > 0, x1, x0)
Cond_674_0_parts_GT2(TRUE, x1, x0) → 760_1_parts_InvokeMethod(674_0_parts_GT(x0, x0), x1, x0)
674_0_parts_GT(x1, x0) → Cond_674_0_parts_GT3(x1 > 0 && x1 <= x0 && x0 > 0, x1, x0, x2)
Cond_674_0_parts_GT3(TRUE, x1, x0, x2) → 769_1_parts_InvokeMethod(674_0_parts_GT(x1, x2), x0, x1)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x2, x0) → 684_0_parts_Return(x0, x2)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2, x1) → 684_0_parts_Return(x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x3, x1) → Cond_769_1_parts_InvokeMethod(x1 > 0, 684_0_parts_Return(x0, x1), x3, x1, x4)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x3, x1, x4) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x4, x3), x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2) → Cond_769_1_parts_InvokeMethod2(x2 > 0, 1492_0_parts_Return(x0), x1, x2, x3)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3) → 1449_1_parts_InvokeMethod(674_0_parts_GT(x3, x1), x1)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0) → 1492_0_parts_Return(x3 + x2)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0) → 1492_0_parts_Return(arith[1])
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x2) → 1492_0_parts_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(10): 798_1_MAIN_INVOKEMETHOD(1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10]) → COND_798_1_MAIN_INVOKEMETHOD4(x3[10] > 0 && x1[10] > -1, 1492_0_parts_Return(x0[10]), java.lang.Object(ARRAY(x1[10])), x2[10], x3[10])
(9): COND_798_1_MAIN_INVOKEMETHOD2(TRUE, 684_0_parts_Return(x0[9], x1[9]), java.lang.Object(ARRAY(x3[9])), x0[9], x1[9]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[9])), x0[9], x1[9] + 1)
(8): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8]) → COND_798_1_MAIN_INVOKEMETHOD2(x3[8] > -1 && x1[8] > 0, 684_0_parts_Return(x0[8], x1[8]), java.lang.Object(ARRAY(x3[8])), x0[8], x1[8])
(5): COND_798_1_MAIN_INVOKEMETHOD(TRUE, 684_0_parts_Return(x0[5], x1[5]), java.lang.Object(ARRAY(x3[5])), x0[5], x1[5]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x3[5])), x0[5], x1[5] + 1)
(4): 798_1_MAIN_INVOKEMETHOD(684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4]) → COND_798_1_MAIN_INVOKEMETHOD(x3[4] > -1 && x1[4] > -1, 684_0_parts_Return(x0[4], x1[4]), java.lang.Object(ARRAY(x3[4])), x0[4], x1[4])
(3): COND_762_0_MAIN_GT1(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 798_1_MAIN_INVOKEMETHOD(798_0_parts_Load(x1[3], x2[3]), java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])
(11): COND_798_1_MAIN_INVOKEMETHOD4(TRUE, 1492_0_parts_Return(x0[11]), java.lang.Object(ARRAY(x1[11])), x2[11], x3[11]) → 762_0_MAIN_GT(java.lang.Object(ARRAY(x1[11])), x2[11], x3[11] + 1)

(3) -> (4), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[4], x1[4])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[4]))∧x1[3]* x0[4]x2[3]* x1[4])


(4) -> (5), if (x3[4] > -1 && x1[4] > -1684_0_parts_Return(x0[4], x1[4]) →* 684_0_parts_Return(x0[5], x1[5])∧java.lang.Object(ARRAY(x3[4])) →* java.lang.Object(ARRAY(x3[5]))∧x0[4]* x0[5]x1[4]* x1[5])


(3) -> (8), if (798_0_parts_Load(x1[3], x2[3]) →* 684_0_parts_Return(x0[8], x1[8])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x3[8]))∧x1[3]* x0[8]x2[3]* x1[8])


(8) -> (9), if (x3[8] > -1 && x1[8] > 0684_0_parts_Return(x0[8], x1[8]) →* 684_0_parts_Return(x0[9], x1[9])∧java.lang.Object(ARRAY(x3[8])) →* java.lang.Object(ARRAY(x3[9]))∧x0[8]* x0[9]x1[8]* x1[9])


(3) -> (10), if (798_0_parts_Load(x1[3], x2[3]) →* 1492_0_parts_Return(x0[10])∧java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x1[10]))∧x1[3]* x2[10]x2[3]* x3[10])


(10) -> (11), if (x3[10] > 0 && x1[10] > -11492_0_parts_Return(x0[10]) →* 1492_0_parts_Return(x0[11])∧java.lang.Object(ARRAY(x1[10])) →* java.lang.Object(ARRAY(x1[11]))∧x2[10]* x2[11]x3[10]* x3[11])



The set Q consists of the following terms:
798_0_parts_Load(x0, x1)
674_0_parts_GT(x0, x1)
Cond_674_0_parts_GT(TRUE, x0, x1)
Cond_674_0_parts_GT1(TRUE, 0, x0)
Cond_674_0_parts_GT2(TRUE, x0, x1)
Cond_674_0_parts_GT3(TRUE, x0, x1, x2)
760_1_parts_InvokeMethod(684_0_parts_Return(x0, x0), x1, x0)
760_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
769_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x2, x1)
Cond_769_1_parts_InvokeMethod(TRUE, 684_0_parts_Return(x0, x1), x2, x1, x3)
769_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1, x2)
Cond_769_1_parts_InvokeMethod2(TRUE, 1492_0_parts_Return(x0), x1, x2, x3)
1449_1_parts_InvokeMethod(684_0_parts_Return(x0, x1), x0)
1449_1_parts_InvokeMethod(706_0_parts_Return(x0), x0)
1449_1_parts_InvokeMethod(1492_0_parts_Return(x0), x1)

(51) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 7 less nodes.

(52) TRUE