(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: TriTas
public class TriTas {
static int N;
static int[] a;
static int nTas = 0;

static void Ajouter(int v) {
int i,j;
nTas++;
i = nTas - 1;
while (i > 0 && a[(i - 1)/2] <= v){
a[i] = a[(i - 1)/2];
j = (i - 1)/2;
if (j >= i) break; else i = j;
}
a[i] = v;
}

static int Maximum() {
return a[0];
}

static void Supprimer() {
int i, j, v;
a[0] = a[nTas - 1];
nTas--;
i = 0; v = a[0];
while (2 * i + 1 < nTas)
{
j = 2*i + 1;
if (j + 1 < nTas)
if (a[j + 1] > a[j])
j++;
if (v >= a[j]) break;
a[i] = a[j];
i = j;
}
a[i] = v;
}

static void HeapSort(){
int i, v;
nTas = 0;
for (i = 0; i < N; i++)
Ajouter(a[i]);
for (i = N - 1; i >= 0; i--)
{
v = Maximum();
Supprimer();
a[i]=v;
}
}

public static void main(String[] args){
Random.args = args;
N = args.length;
a = new int[N];
for (int i = 0; i < N; i++)
a[i] = Random.random();
//for (int i = 0; i < N; i++)
// System.out.print(a[i]+" ");
//System.out.println();
HeapSort();
//for (int i = 0; i < N; i++)
// System.out.print(a[i]+" ");
//System.out.println();
}
}

public class Random {
static String[] args;
static int index = 0;

public static int random() {
if (index >= args.length)
return 0;

String string = args[index];
index++;
return string.length();
}
}


(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

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

TriTas.HeapSort()V: Graph of 161 nodes with 2 SCCs.

TriTas.Ajouter(I)V: Graph of 213 nodes with 1 SCC.

TriTas.Supprimer()V: Graph of 286 nodes with 1 SCC.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 5 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: TriTas.Supprimer()V
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 61 rules for P and 0 rules for R.


P rules:
5518_0_Supprimer_Load(EOS(STATIC_5518(i1216)), i1791, i1147, matching1) → 5519_0_Supprimer_IntArithmetic(EOS(STATIC_5519(i1216)), i1791, i1147, 2, i1791) | =(matching1, 2)
5519_0_Supprimer_IntArithmetic(EOS(STATIC_5519(i1216)), i1791, i1147, matching1, i1791) → 5520_0_Supprimer_ConstantStackPush(EOS(STATIC_5520(i1216)), i1791, i1147, *(2, i1791)) | =(matching1, 2)
5520_0_Supprimer_ConstantStackPush(EOS(STATIC_5520(i1216)), i1791, i1147, i1793) → 5522_0_Supprimer_IntArithmetic(EOS(STATIC_5522(i1216)), i1791, i1147, i1793, 1)
5522_0_Supprimer_IntArithmetic(EOS(STATIC_5522(i1216)), i1791, i1147, i1793, matching1) → 5523_0_Supprimer_FieldAccess(EOS(STATIC_5523(i1216)), i1791, i1147, +(i1793, 1)) | &&(>=(i1793, 0), =(matching1, 1))
5523_0_Supprimer_FieldAccess(EOS(STATIC_5523(i1216)), i1791, i1147, i1794) → 5524_0_Supprimer_GE(EOS(STATIC_5524(i1216)), i1791, i1147, i1794, i1216)
5524_0_Supprimer_GE(EOS(STATIC_5524(i1216)), i1791, i1147, i1794, i1216) → 5526_0_Supprimer_GE(EOS(STATIC_5526(i1216)), i1791, i1147, i1794, i1216)
5526_0_Supprimer_GE(EOS(STATIC_5526(i1216)), i1791, i1147, i1794, i1216) → 5529_0_Supprimer_ConstantStackPush(EOS(STATIC_5529(i1216)), i1791, i1147) | <(i1794, i1216)
5529_0_Supprimer_ConstantStackPush(EOS(STATIC_5529(i1216)), i1791, i1147) → 5531_0_Supprimer_Load(EOS(STATIC_5531(i1216)), i1791, i1147, 2)
5531_0_Supprimer_Load(EOS(STATIC_5531(i1216)), i1791, i1147, matching1) → 5533_0_Supprimer_IntArithmetic(EOS(STATIC_5533(i1216)), i1791, i1147, 2, i1791) | =(matching1, 2)
5533_0_Supprimer_IntArithmetic(EOS(STATIC_5533(i1216)), i1791, i1147, matching1, i1791) → 5536_0_Supprimer_ConstantStackPush(EOS(STATIC_5536(i1216)), i1791, i1147, *(2, i1791)) | =(matching1, 2)
5536_0_Supprimer_ConstantStackPush(EOS(STATIC_5536(i1216)), i1791, i1147, i1795) → 5539_0_Supprimer_IntArithmetic(EOS(STATIC_5539(i1216)), i1791, i1147, i1795, 1)
5539_0_Supprimer_IntArithmetic(EOS(STATIC_5539(i1216)), i1791, i1147, i1795, matching1) → 5543_0_Supprimer_Store(EOS(STATIC_5543(i1216)), i1791, i1147, +(i1795, 1)) | &&(>=(i1795, 0), =(matching1, 1))
5543_0_Supprimer_Store(EOS(STATIC_5543(i1216)), i1791, i1147, i1796) → 5546_0_Supprimer_Load(EOS(STATIC_5546(i1216)), i1791, i1796, i1147)
5546_0_Supprimer_Load(EOS(STATIC_5546(i1216)), i1791, i1796, i1147) → 5550_0_Supprimer_ConstantStackPush(EOS(STATIC_5550(i1216)), i1791, i1796, i1147, i1796)
5550_0_Supprimer_ConstantStackPush(EOS(STATIC_5550(i1216)), i1791, i1796, i1147, i1796) → 5553_0_Supprimer_IntArithmetic(EOS(STATIC_5553(i1216)), i1791, i1796, i1147, i1796, 1)
5553_0_Supprimer_IntArithmetic(EOS(STATIC_5553(i1216)), i1791, i1796, i1147, i1796, matching1) → 5555_0_Supprimer_FieldAccess(EOS(STATIC_5555(i1216)), i1791, i1796, i1147, +(i1796, 1)) | &&(>(i1796, 0), =(matching1, 1))
5555_0_Supprimer_FieldAccess(EOS(STATIC_5555(i1216)), i1791, i1796, i1147, i1808) → 5558_0_Supprimer_GE(EOS(STATIC_5558(i1216)), i1791, i1796, i1147, i1808, i1216)
5558_0_Supprimer_GE(EOS(STATIC_5558(i1216)), i1791, i1796, i1147, i1808, i1216) → 5560_0_Supprimer_GE(EOS(STATIC_5560(i1216)), i1791, i1796, i1147, i1808, i1216)
5558_0_Supprimer_GE(EOS(STATIC_5558(i1216)), i1791, i1796, i1147, i1808, i1216) → 5561_0_Supprimer_GE(EOS(STATIC_5561(i1216)), i1791, i1796, i1147, i1808, i1216)
5560_0_Supprimer_GE(EOS(STATIC_5560(i1216)), i1791, i1796, i1147, i1808, i1216) → 5563_0_Supprimer_Load(EOS(STATIC_5563(i1216)), i1791, i1796, i1147) | >=(i1808, i1216)
5563_0_Supprimer_Load(EOS(STATIC_5563(i1216)), i1791, i1796, i1147) → 5634_0_Supprimer_Load(EOS(STATIC_5634(i1216)), i1791, i1796, i1147)
5634_0_Supprimer_Load(EOS(STATIC_5634(i1216)), i1791, i1796, i1147) → 5643_0_Supprimer_FieldAccess(EOS(STATIC_5643(i1216)), i1791, i1796, i1147, i1147)
5643_0_Supprimer_FieldAccess(EOS(STATIC_5643(i1216)), i1791, i1796, i1147, i1147) → 5648_0_Supprimer_Load(EOS(STATIC_5648(i1216)), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)))
5648_0_Supprimer_Load(EOS(STATIC_5648(i1216)), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215))) → 5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655(i1216)), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655(i1216)), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5664_0_Supprimer_ArrayAccess(EOS(STATIC_5664(i1216)), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5664_0_Supprimer_ArrayAccess(EOS(STATIC_5664(i1216)), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5669_0_Supprimer_LT(EOS(STATIC_5669(i1216)), i1791, i1796, i1147, i1147, i1874) | <(i1796, i1215)
5669_0_Supprimer_LT(EOS(STATIC_5669(i1216)), i1791, i1796, i1147, i1147, i1874) → 5676_0_Supprimer_LT(EOS(STATIC_5676(i1216)), i1791, i1796, i1147, i1147, i1874)
5676_0_Supprimer_LT(EOS(STATIC_5676(i1216)), i1791, i1796, i1147, i1147, i1874) → 5682_0_Supprimer_FieldAccess(EOS(STATIC_5682(i1216)), i1791, i1796, i1147) | <(i1147, i1874)
5682_0_Supprimer_FieldAccess(EOS(STATIC_5682(i1216)), i1791, i1796, i1147) → 5688_0_Supprimer_Load(EOS(STATIC_5688(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)))
5688_0_Supprimer_Load(EOS(STATIC_5688(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215))) → 5694_0_Supprimer_FieldAccess(EOS(STATIC_5694(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5694_0_Supprimer_FieldAccess(EOS(STATIC_5694(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5701_0_Supprimer_Load(EOS(STATIC_5701(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)))
5701_0_Supprimer_Load(EOS(STATIC_5701(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215))) → 5708_0_Supprimer_ArrayAccess(EOS(STATIC_5708(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5708_0_Supprimer_ArrayAccess(EOS(STATIC_5708(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5714_0_Supprimer_ArrayAccess(EOS(STATIC_5714(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5714_0_Supprimer_ArrayAccess(EOS(STATIC_5714(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5723_0_Supprimer_ArrayAccess(EOS(STATIC_5723(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) | <(i1796, i1215)
5723_0_Supprimer_ArrayAccess(EOS(STATIC_5723(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5734_0_Supprimer_ArrayAccess(EOS(STATIC_5734(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5734_0_Supprimer_ArrayAccess(EOS(STATIC_5734(i1216)), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5743_0_Supprimer_Load(EOS(STATIC_5743(i1216)), i1796, i1147) | <(i1791, i1215)
5743_0_Supprimer_Load(EOS(STATIC_5743(i1216)), i1796, i1147) → 5754_0_Supprimer_Store(EOS(STATIC_5754(i1216)), i1147, i1796)
5754_0_Supprimer_Store(EOS(STATIC_5754(i1216)), i1147, i1796) → 5765_0_Supprimer_JMP(EOS(STATIC_5765(i1216)), i1796, i1147)
5765_0_Supprimer_JMP(EOS(STATIC_5765(i1216)), i1796, i1147) → 5775_0_Supprimer_ConstantStackPush(EOS(STATIC_5775(i1216)), i1796, i1147)
5775_0_Supprimer_ConstantStackPush(EOS(STATIC_5775(i1216)), i1796, i1147) → 5514_0_Supprimer_ConstantStackPush(EOS(STATIC_5514(i1216)), i1796, i1147)
5514_0_Supprimer_ConstantStackPush(EOS(STATIC_5514(i1216)), i1791, i1147) → 5518_0_Supprimer_Load(EOS(STATIC_5518(i1216)), i1791, i1147, 2)
5561_0_Supprimer_GE(EOS(STATIC_5561(i1216)), i1791, i1796, i1147, i1808, i1216) → 5564_0_Supprimer_FieldAccess(EOS(STATIC_5564(i1216)), i1791, i1796, i1147) | <(i1808, i1216)
5564_0_Supprimer_FieldAccess(EOS(STATIC_5564(i1216)), i1791, i1796, i1147) → 5568_0_Supprimer_Load(EOS(STATIC_5568(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)))
5568_0_Supprimer_Load(EOS(STATIC_5568(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215))) → 5572_0_Supprimer_ConstantStackPush(EOS(STATIC_5572(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5572_0_Supprimer_ConstantStackPush(EOS(STATIC_5572(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5574_0_Supprimer_IntArithmetic(EOS(STATIC_5574(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796, 1)
5574_0_Supprimer_IntArithmetic(EOS(STATIC_5574(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796, matching1) → 5580_0_Supprimer_ArrayAccess(EOS(STATIC_5580(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), +(i1796, 1)) | &&(>(i1796, 0), =(matching1, 1))
5580_0_Supprimer_ArrayAccess(EOS(STATIC_5580(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5585_0_Supprimer_ArrayAccess(EOS(STATIC_5585(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5585_0_Supprimer_ArrayAccess(EOS(STATIC_5585(i1216)), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5590_0_Supprimer_FieldAccess(EOS(STATIC_5590(i1216)), i1791, i1796, i1147, i1823) | <(i1821, i1215)
5590_0_Supprimer_FieldAccess(EOS(STATIC_5590(i1216)), i1791, i1796, i1147, i1823) → 5599_0_Supprimer_Load(EOS(STATIC_5599(i1216)), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)))
5599_0_Supprimer_Load(EOS(STATIC_5599(i1216)), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215))) → 5605_0_Supprimer_ArrayAccess(EOS(STATIC_5605(i1216)), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5605_0_Supprimer_ArrayAccess(EOS(STATIC_5605(i1216)), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5611_0_Supprimer_ArrayAccess(EOS(STATIC_5611(i1216)), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5611_0_Supprimer_ArrayAccess(EOS(STATIC_5611(i1216)), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5619_0_Supprimer_LE(EOS(STATIC_5619(i1216)), i1791, i1796, i1147, i1823, i1844) | <(i1796, i1215)
5619_0_Supprimer_LE(EOS(STATIC_5619(i1216)), i1791, i1796, i1147, i1823, i1844) → 5625_0_Supprimer_LE(EOS(STATIC_5625(i1216)), i1791, i1796, i1147, i1823, i1844)
5619_0_Supprimer_LE(EOS(STATIC_5619(i1216)), i1791, i1796, i1147, i1823, i1844) → 5626_0_Supprimer_LE(EOS(STATIC_5626(i1216)), i1791, i1796, i1147, i1823, i1844)
5625_0_Supprimer_LE(EOS(STATIC_5625(i1216)), i1791, i1796, i1147, i1823, i1844) → 5634_0_Supprimer_Load(EOS(STATIC_5634(i1216)), i1791, i1796, i1147) | <=(i1823, i1844)
5626_0_Supprimer_LE(EOS(STATIC_5626(i1216)), i1791, i1796, i1147, i1823, i1844) → 5635_0_Supprimer_Inc(EOS(STATIC_5635(i1216)), i1791, i1796, i1147) | >(i1823, i1844)
5635_0_Supprimer_Inc(EOS(STATIC_5635(i1216)), i1791, i1796, i1147) → 5644_0_Supprimer_Load(EOS(STATIC_5644(i1216)), i1791, +(i1796, 1), i1147) | >(i1796, 0)
5644_0_Supprimer_Load(EOS(STATIC_5644(i1216)), i1791, i1853, i1147) → 5649_0_Supprimer_FieldAccess(EOS(STATIC_5649(i1216)), i1791, i1853, i1147, i1147)
5649_0_Supprimer_FieldAccess(EOS(STATIC_5649(i1216)), i1791, i1853, i1147, i1147) → 5657_0_Supprimer_Load(EOS(STATIC_5657(i1216)), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)))
5657_0_Supprimer_Load(EOS(STATIC_5657(i1216)), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215))) → 5666_0_Supprimer_ArrayAccess(EOS(STATIC_5666(i1216)), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1853)
5666_0_Supprimer_ArrayAccess(EOS(STATIC_5666(i1216)), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1853) → 5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655(i1216)), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1853)
R rules:

Combined rules. Obtained 3 conditional rules for P and 0 conditional rules for R.


P rules:
5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), x1, x2, 2) → 5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), +(*(2, x1), 1), x2, 2) | &&(&&(>(x0, +(*(2, x1), 1)), <=(x0, +(*(2, x1), 2))), <=(0, *(2, x1)))
5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), x1, x2, 2) → 5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), +(*(2, x1), 1), x2, 2) | &&(&&(>(x0, +(*(2, x1), 2)), >(x0, +(*(2, x1), 1))), <=(0, *(2, x1)))
5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), x1, x2, 2) → 5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), +(*(2, x1), 2), x2, 2) | &&(&&(>(x0, +(*(2, x1), 2)), >(x0, +(*(2, x1), 1))), <=(0, *(2, x1)))
R rules:

Filtered ground terms:



5518_0_Supprimer_Load(x1, x2, x3, x4) → 5518_0_Supprimer_Load(x1, x2, x3)
Cond_5518_0_Supprimer_Load2(x1, x2, x3, x4, x5) → Cond_5518_0_Supprimer_Load2(x1, x2, x3, x4)
Cond_5518_0_Supprimer_Load1(x1, x2, x3, x4, x5) → Cond_5518_0_Supprimer_Load1(x1, x2, x3, x4)
Cond_5518_0_Supprimer_Load(x1, x2, x3, x4, x5) → Cond_5518_0_Supprimer_Load(x1, x2, x3, x4)

Filtered unneeded arguments:



Cond_5518_0_Supprimer_Load(x1, x2, x3, x4) → Cond_5518_0_Supprimer_Load(x1, x2, x3)
Cond_5518_0_Supprimer_Load1(x1, x2, x3, x4) → Cond_5518_0_Supprimer_Load1(x1, x2, x3)
Cond_5518_0_Supprimer_Load2(x1, x2, x3, x4) → Cond_5518_0_Supprimer_Load2(x1, x2, x3)
5518_0_Supprimer_Load(x1, x2, x3) → 5518_0_Supprimer_Load(x1, x2)

Combined rules. Obtained 3 conditional rules for P and 0 conditional rules for R.


P rules:
5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), x1) → 5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), +(*(2, x1), 1)) | &&(&&(>(x0, +(*(2, x1), 1)), <=(x0, +(*(2, x1), 2))), <=(0, *(2, x1)))
5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), x1) → 5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), +(*(2, x1), 1)) | &&(&&(>(x0, +(*(2, x1), 2)), >(x0, +(*(2, x1), 1))), <=(0, *(2, x1)))
5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), x1) → 5518_0_Supprimer_Load(EOS(STATIC_5518(x0)), +(*(2, x1), 2)) | &&(&&(>(x0, +(*(2, x1), 2)), >(x0, +(*(2, x1), 1))), <=(0, *(2, x1)))
R rules:

Performed bisimulation on rules. Used the following equivalence classes: {[Cond_5518_0_Supprimer_Load1_3, Cond_5518_0_Supprimer_Load2_3]=Cond_5518_0_Supprimer_Load1_3}


Finished conversion. Obtained 5 rules for P and 0 rules for R. System has predefined symbols.


P rules:
5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), x1) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0, +(*(2, x1), 1)), <=(x0, +(*(2, x1), 2))), <=(0, *(2, x1))), EOS(STATIC_5518(x0)), x1)
COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 1))
5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), x1) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0, +(*(2, x1), 2)), >(x0, +(*(2, x1), 1))), <=(0, *(2, x1))), EOS(STATIC_5518(x0)), x1)
COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 1))
COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 2))
R rules:

(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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(x0[0] > 2 * x1[0] + 1 && x0[0] <= 2 * x1[0] + 2 && 0 <= 2 * x1[0], EOS(STATIC_5518(x0[0])), x1[0])
(1): COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), 2 * x1[1] + 1)
(2): 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(x0[2] > 2 * x1[2] + 2 && x0[2] > 2 * x1[2] + 1 && 0 <= 2 * x1[2], EOS(STATIC_5518(x0[2])), x1[2])
(3): COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), 2 * x1[3] + 1)
(4): COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), 2 * x1[4] + 2)

(0) -> (1), if (x0[0] > 2 * x1[0] + 1 && x0[0] <= 2 * x1[0] + 2 && 0 <= 2 * x1[0]EOS(STATIC_5518(x0[0])) →* EOS(STATIC_5518(x0[1]))∧x1[0]* x1[1])


(1) -> (0), if (EOS(STATIC_5518(x0[1])) →* EOS(STATIC_5518(x0[0]))∧2 * x1[1] + 1* x1[0])


(1) -> (2), if (EOS(STATIC_5518(x0[1])) →* EOS(STATIC_5518(x0[2]))∧2 * x1[1] + 1* x1[2])


(2) -> (3), if (x0[2] > 2 * x1[2] + 2 && x0[2] > 2 * x1[2] + 1 && 0 <= 2 * x1[2]EOS(STATIC_5518(x0[2])) →* EOS(STATIC_5518(x0[3]))∧x1[2]* x1[3])


(2) -> (4), if (x0[2] > 2 * x1[2] + 2 && x0[2] > 2 * x1[2] + 1 && 0 <= 2 * x1[2]EOS(STATIC_5518(x0[2])) →* EOS(STATIC_5518(x0[4]))∧x1[2]* x1[4])


(3) -> (0), if (EOS(STATIC_5518(x0[3])) →* EOS(STATIC_5518(x0[0]))∧2 * x1[3] + 1* x1[0])


(3) -> (2), if (EOS(STATIC_5518(x0[3])) →* EOS(STATIC_5518(x0[2]))∧2 * x1[3] + 1* x1[2])


(4) -> (0), if (EOS(STATIC_5518(x0[4])) →* EOS(STATIC_5518(x0[0]))∧2 * x1[4] + 2* x1[0])


(4) -> (2), if (EOS(STATIC_5518(x0[4])) →* EOS(STATIC_5518(x0[2]))∧2 * x1[4] + 2* x1[2])



The set Q is empty.

(8) 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@6b0ebbd1 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 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), x1) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0, +(*(2, x1), 1)), <=(x0, +(*(2, x1), 2))), <=(0, *(2, x1))), EOS(STATIC_5518(x0)), x1) the following chains were created:
  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0]), COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1)) which results in the following constraint:

    (1)    (&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0])))=TRUEEOS(STATIC_5518(x0[0]))=EOS(STATIC_5518(x0[1]))∧x1[0]=x1[1]5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0])≥NonInfC∧5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0])≥COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])∧(UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥))



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

    (2)    (<=(0, *(2, x1[0]))=TRUE>(x0[0], +(*(2, x1[0]), 1))=TRUE<=(x0[0], +(*(2, x1[0]), 2))=TRUE5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0])≥NonInfC∧5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0])≥COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])∧(UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥))



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

    (3)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥)∧[bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x1[0] + [bni_21]x0[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (4)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥)∧[bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x1[0] + [bni_21]x0[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (5)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥)∧[bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x1[0] + [bni_21]x0[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (6)    ([2]x1[0] ≥ 0∧x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥)∧[(3)bni_21 + (-1)Bound*bni_21] + [bni_21]x1[0] + [bni_21]x0[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (7)    ([2]x1[0] ≥ 0∧0 ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥)∧[(3)bni_21 + (-1)Bound*bni_21] + [bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (8)    (0 ≥ 0∧0 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥)∧[(3)bni_21 + (-1)Bound*bni_21] + [bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)







For Pair COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 1)) the following chains were created:
  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0]), COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1)), 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0]) which results in the following constraint:

    (9)    (&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0])))=TRUEEOS(STATIC_5518(x0[0]))=EOS(STATIC_5518(x0[1]))∧x1[0]=x1[1]EOS(STATIC_5518(x0[1]))=EOS(STATIC_5518(x0[0]1))∧+(*(2, x1[1]), 1)=x1[0]1COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥))



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

    (10)    (<=(0, *(2, x1[0]))=TRUE>(x0[0], +(*(2, x1[0]), 1))=TRUE<=(x0[0], +(*(2, x1[0]), 2))=TRUECOND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[0])), x1[0])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[0])), x1[0])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), +(*(2, x1[0]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥))



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

    (11)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (12)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (13)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (14)    ([2]x1[0] ≥ 0∧x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (15)    ([2]x1[0] ≥ 0∧0 ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (16)    (0 ≥ 0∧0 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0]), COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1)), 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]) which results in the following constraint:

    (17)    (&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0])))=TRUEEOS(STATIC_5518(x0[0]))=EOS(STATIC_5518(x0[1]))∧x1[0]=x1[1]EOS(STATIC_5518(x0[1]))=EOS(STATIC_5518(x0[2]))∧+(*(2, x1[1]), 1)=x1[2]COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥))



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

    (18)    (<=(0, *(2, x1[0]))=TRUE>(x0[0], +(*(2, x1[0]), 1))=TRUE<=(x0[0], +(*(2, x1[0]), 2))=TRUECOND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[0])), x1[0])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[0])), x1[0])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), +(*(2, x1[0]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥))



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

    (19)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (20)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (21)    ([2]x1[0] ≥ 0∧x0[0] + [-2] + [-2]x1[0] ≥ 0∧[2]x1[0] + [2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (22)    ([2]x1[0] ≥ 0∧x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (23)    ([2]x1[0] ≥ 0∧0 ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)



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

    (24)    (0 ≥ 0∧0 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)







For Pair 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), x1) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0, +(*(2, x1), 2)), >(x0, +(*(2, x1), 1))), <=(0, *(2, x1))), EOS(STATIC_5518(x0)), x1) the following chains were created:
  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]), COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1)) which results in the following constraint:

    (25)    (&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2])))=TRUEEOS(STATIC_5518(x0[2]))=EOS(STATIC_5518(x0[3]))∧x1[2]=x1[3]5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])∧(UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥))



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

    (26)    (<=(0, *(2, x1[2]))=TRUE>(x0[2], +(*(2, x1[2]), 2))=TRUE>(x0[2], +(*(2, x1[2]), 1))=TRUE5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])∧(UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥))



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

    (27)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (28)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (29)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (30)    ([2]x1[2] ≥ 0∧x0[2] ≥ 0∧[1] + x0[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[(4)bni_25 + (-1)Bound*bni_25] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (31)    (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[(4)bni_25 + (-1)Bound*bni_25] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]), COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2)) which results in the following constraint:

    (32)    (&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2])))=TRUEEOS(STATIC_5518(x0[2]))=EOS(STATIC_5518(x0[4]))∧x1[2]=x1[4]5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])∧(UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥))



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

    (33)    (<=(0, *(2, x1[2]))=TRUE>(x0[2], +(*(2, x1[2]), 2))=TRUE>(x0[2], +(*(2, x1[2]), 1))=TRUE5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2])≥COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])∧(UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥))



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

    (34)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (35)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (36)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (37)    ([2]x1[2] ≥ 0∧x0[2] ≥ 0∧[1] + x0[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[(4)bni_25 + (-1)Bound*bni_25] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (38)    (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[(4)bni_25 + (-1)Bound*bni_25] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)







For Pair COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 1)) the following chains were created:
  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]), COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1)), 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0]) which results in the following constraint:

    (39)    (&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2])))=TRUEEOS(STATIC_5518(x0[2]))=EOS(STATIC_5518(x0[3]))∧x1[2]=x1[3]EOS(STATIC_5518(x0[3]))=EOS(STATIC_5518(x0[0]))∧+(*(2, x1[3]), 1)=x1[0]COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥))



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

    (40)    (<=(0, *(2, x1[2]))=TRUE>(x0[2], +(*(2, x1[2]), 2))=TRUE>(x0[2], +(*(2, x1[2]), 1))=TRUECOND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), +(*(2, x1[2]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥))



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

    (41)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (42)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (43)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (44)    ([2]x1[2] ≥ 0∧x0[2] ≥ 0∧[1] + x0[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (45)    (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]), COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1)), 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]) which results in the following constraint:

    (46)    (&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2])))=TRUEEOS(STATIC_5518(x0[2]))=EOS(STATIC_5518(x0[3]))∧x1[2]=x1[3]EOS(STATIC_5518(x0[3]))=EOS(STATIC_5518(x0[2]1))∧+(*(2, x1[3]), 1)=x1[2]1COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥))



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

    (47)    (<=(0, *(2, x1[2]))=TRUE>(x0[2], +(*(2, x1[2]), 2))=TRUE>(x0[2], +(*(2, x1[2]), 1))=TRUECOND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), +(*(2, x1[2]), 1))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥))



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

    (48)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (49)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (50)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (51)    ([2]x1[2] ≥ 0∧x0[2] ≥ 0∧[1] + x0[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)



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

    (52)    (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)







For Pair COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 2)) the following chains were created:
  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]), COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2)), 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0]) which results in the following constraint:

    (53)    (&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2])))=TRUEEOS(STATIC_5518(x0[2]))=EOS(STATIC_5518(x0[4]))∧x1[2]=x1[4]EOS(STATIC_5518(x0[4]))=EOS(STATIC_5518(x0[0]))∧+(*(2, x1[4]), 2)=x1[0]COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥))



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

    (54)    (<=(0, *(2, x1[2]))=TRUE>(x0[2], +(*(2, x1[2]), 2))=TRUE>(x0[2], +(*(2, x1[2]), 1))=TRUECOND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), +(*(2, x1[2]), 2))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥))



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

    (55)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (56)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (57)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (58)    ([2]x1[2] ≥ 0∧x0[2] ≥ 0∧[1] + x0[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[(4)bni_29 + (-1)Bound*bni_29] + [bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (59)    (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[(4)bni_29 + (-1)Bound*bni_29] + [bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



  • We consider the chain 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]), COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2)), 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2]) which results in the following constraint:

    (60)    (&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2])))=TRUEEOS(STATIC_5518(x0[2]))=EOS(STATIC_5518(x0[4]))∧x1[2]=x1[4]EOS(STATIC_5518(x0[4]))=EOS(STATIC_5518(x0[2]1))∧+(*(2, x1[4]), 2)=x1[2]1COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥))



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

    (61)    (<=(0, *(2, x1[2]))=TRUE>(x0[2], +(*(2, x1[2]), 2))=TRUE>(x0[2], +(*(2, x1[2]), 1))=TRUECOND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥NonInfC∧COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[2])), x1[2])≥5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), +(*(2, x1[2]), 2))∧(UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥))



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

    (62)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (63)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (64)    ([2]x1[2] ≥ 0∧x0[2] + [-3] + [-2]x1[2] ≥ 0∧x0[2] + [-2] + [-2]x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (65)    ([2]x1[2] ≥ 0∧x0[2] ≥ 0∧[1] + x0[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[(4)bni_29 + (-1)Bound*bni_29] + [bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)



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

    (66)    (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[(4)bni_29 + (-1)Bound*bni_29] + [bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), x1) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0, +(*(2, x1), 1)), <=(x0, +(*(2, x1), 2))), <=(0, *(2, x1))), EOS(STATIC_5518(x0)), x1)
    • (0 ≥ 0∧0 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])), ≥)∧[(3)bni_21 + (-1)Bound*bni_21] + [bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)

  • COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 1))
    • (0 ≥ 0∧0 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)
    • (0 ≥ 0∧0 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [bni_23]x1[0] ≥ 0∧[1 + (-1)bso_24] + x1[0] ≥ 0)

  • 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), x1) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0, +(*(2, x1), 2)), >(x0, +(*(2, x1), 1))), <=(0, *(2, x1))), EOS(STATIC_5518(x0)), x1)
    • (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[(4)bni_25 + (-1)Bound*bni_25] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)
    • (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])), ≥)∧[(4)bni_25 + (-1)Bound*bni_25] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)

  • COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 1))
    • (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)
    • (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[1 + (-1)bso_28] + x1[2] ≥ 0)

  • COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0)), x1) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0)), +(*(2, x1), 2))
    • (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[(4)bni_29 + (-1)Bound*bni_29] + [bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 0)
    • (x0[2] ≥ 0∧[1] + x0[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))), ≥)∧[(4)bni_29 + (-1)Bound*bni_29] + [bni_29]x1[2] + [bni_29]x0[2] ≥ 0∧[2 + (-1)bso_30] + x1[2] ≥ 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(5518_0_SUPPRIMER_LOAD(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(EOS(x1)) = [-1] + x1   
POL(STATIC_5518(x1)) = [-1] + [-1]x1   
POL(COND_5518_0_SUPPRIMER_LOAD(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(*(x1, x2)) = x1·x2   
POL(2) = [2]   
POL(1) = [1]   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(COND_5518_0_SUPPRIMER_LOAD1(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   

The following pairs are in P>:

COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))
COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))
COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))

The following pairs are in Pbound:

5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])
COND_5518_0_SUPPRIMER_LOAD(TRUE, EOS(STATIC_5518(x0[1])), x1[1]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[1])), +(*(2, x1[1]), 1))
5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])
COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[3])), x1[3]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[3])), +(*(2, x1[3]), 1))
COND_5518_0_SUPPRIMER_LOAD1(TRUE, EOS(STATIC_5518(x0[4])), x1[4]) → 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[4])), +(*(2, x1[4]), 2))

The following pairs are in P:

5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(&&(&&(>(x0[0], +(*(2, x1[0]), 1)), <=(x0[0], +(*(2, x1[0]), 2))), <=(0, *(2, x1[0]))), EOS(STATIC_5518(x0[0])), x1[0])
5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(&&(&&(>(x0[2], +(*(2, x1[2]), 2)), >(x0[2], +(*(2, x1[2]), 1))), <=(0, *(2, x1[2]))), EOS(STATIC_5518(x0[2])), x1[2])

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

(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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[0])), x1[0]) → COND_5518_0_SUPPRIMER_LOAD(x0[0] > 2 * x1[0] + 1 && x0[0] <= 2 * x1[0] + 2 && 0 <= 2 * x1[0], EOS(STATIC_5518(x0[0])), x1[0])
(2): 5518_0_SUPPRIMER_LOAD(EOS(STATIC_5518(x0[2])), x1[2]) → COND_5518_0_SUPPRIMER_LOAD1(x0[2] > 2 * x1[2] + 2 && x0[2] > 2 * x1[2] + 1 && 0 <= 2 * x1[2], EOS(STATIC_5518(x0[2])), x1[2])


The set Q is empty.

(10) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.

(11) TRUE

(12) Obligation:

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

(13) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 40 rules for P and 0 rules for R.


P rules:
2838_0_Ajouter_LE(EOS(STATIC_2838), i254, i459, i459) → 2861_0_Ajouter_LE(EOS(STATIC_2861), i254, i459, i459)
2861_0_Ajouter_LE(EOS(STATIC_2861), i254, i459, i459) → 2878_0_Ajouter_FieldAccess(EOS(STATIC_2878), i254, i459) | >(i459, 0)
2878_0_Ajouter_FieldAccess(EOS(STATIC_2878), i254, i459) → 2890_0_Ajouter_Load(EOS(STATIC_2890), i254, i459, java.lang.Object(ARRAY(i255)))
2890_0_Ajouter_Load(EOS(STATIC_2890), i254, i459, java.lang.Object(ARRAY(i255))) → 2901_0_Ajouter_ConstantStackPush(EOS(STATIC_2901), i254, i459, java.lang.Object(ARRAY(i255)), i459)
2901_0_Ajouter_ConstantStackPush(EOS(STATIC_2901), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 2913_0_Ajouter_IntArithmetic(EOS(STATIC_2913), i254, i459, java.lang.Object(ARRAY(i255)), i459, 1)
2913_0_Ajouter_IntArithmetic(EOS(STATIC_2913), i254, i459, java.lang.Object(ARRAY(i255)), i459, matching1) → 2925_0_Ajouter_ConstantStackPush(EOS(STATIC_2925), i254, i459, java.lang.Object(ARRAY(i255)), -(i459, 1)) | &&(>(i459, 0), =(matching1, 1))
2925_0_Ajouter_ConstantStackPush(EOS(STATIC_2925), i254, i459, java.lang.Object(ARRAY(i255)), i475) → 2938_0_Ajouter_IntArithmetic(EOS(STATIC_2938), i254, i459, java.lang.Object(ARRAY(i255)), i475, 2)
2938_0_Ajouter_IntArithmetic(EOS(STATIC_2938), i254, i459, java.lang.Object(ARRAY(i255)), i475, matching1) → 2951_0_Ajouter_ArrayAccess(EOS(STATIC_2951), i254, i459, java.lang.Object(ARRAY(i255)), /(i475, 2)) | =(matching1, 2)
2951_0_Ajouter_ArrayAccess(EOS(STATIC_2951), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 2963_0_Ajouter_ArrayAccess(EOS(STATIC_2963), i254, i459, java.lang.Object(ARRAY(i255)), i483)
2963_0_Ajouter_ArrayAccess(EOS(STATIC_2963), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 2978_0_Ajouter_Load(EOS(STATIC_2978), i254, i459, i496) | <(i483, i255)
2978_0_Ajouter_Load(EOS(STATIC_2978), i254, i459, i496) → 2992_0_Ajouter_GT(EOS(STATIC_2992), i254, i459, i496, i254)
2992_0_Ajouter_GT(EOS(STATIC_2992), i254, i459, i496, i254) → 3007_0_Ajouter_GT(EOS(STATIC_3007), i254, i459, i496, i254)
3007_0_Ajouter_GT(EOS(STATIC_3007), i254, i459, i496, i254) → 3028_0_Ajouter_FieldAccess(EOS(STATIC_3028), i254, i459) | <=(i496, i254)
3028_0_Ajouter_FieldAccess(EOS(STATIC_3028), i254, i459) → 3049_0_Ajouter_Load(EOS(STATIC_3049), i254, i459, java.lang.Object(ARRAY(i255)))
3049_0_Ajouter_Load(EOS(STATIC_3049), i254, i459, java.lang.Object(ARRAY(i255))) → 3062_0_Ajouter_FieldAccess(EOS(STATIC_3062), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3062_0_Ajouter_FieldAccess(EOS(STATIC_3062), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3079_0_Ajouter_Load(EOS(STATIC_3079), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)))
3079_0_Ajouter_Load(EOS(STATIC_3079), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255))) → 3097_0_Ajouter_ConstantStackPush(EOS(STATIC_3097), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459)
3097_0_Ajouter_ConstantStackPush(EOS(STATIC_3097), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459) → 3118_0_Ajouter_IntArithmetic(EOS(STATIC_3118), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459, 1)
3118_0_Ajouter_IntArithmetic(EOS(STATIC_3118), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459, matching1) → 3141_0_Ajouter_ConstantStackPush(EOS(STATIC_3141), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), -(i459, 1)) | &&(>(i459, 0), =(matching1, 1))
3141_0_Ajouter_ConstantStackPush(EOS(STATIC_3141), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i530) → 3168_0_Ajouter_IntArithmetic(EOS(STATIC_3168), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i530, 2)
3168_0_Ajouter_IntArithmetic(EOS(STATIC_3168), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i530, matching1) → 3193_0_Ajouter_ArrayAccess(EOS(STATIC_3193), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), /(i530, 2)) | =(matching1, 2)
3193_0_Ajouter_ArrayAccess(EOS(STATIC_3193), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3220_0_Ajouter_ArrayAccess(EOS(STATIC_3220), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3220_0_Ajouter_ArrayAccess(EOS(STATIC_3220), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3270_0_Ajouter_ArrayAccess(EOS(STATIC_3270), i254, i459, java.lang.Object(ARRAY(i255)), i459) | <(i551, i255)
3270_0_Ajouter_ArrayAccess(EOS(STATIC_3270), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3296_0_Ajouter_ArrayAccess(EOS(STATIC_3296), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3296_0_Ajouter_ArrayAccess(EOS(STATIC_3296), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3329_0_Ajouter_Load(EOS(STATIC_3329), i254, i459) | <(i459, i255)
3329_0_Ajouter_Load(EOS(STATIC_3329), i254, i459) → 3366_0_Ajouter_ConstantStackPush(EOS(STATIC_3366), i254, i459, i459)
3366_0_Ajouter_ConstantStackPush(EOS(STATIC_3366), i254, i459, i459) → 3395_0_Ajouter_IntArithmetic(EOS(STATIC_3395), i254, i459, i459, 1)
3395_0_Ajouter_IntArithmetic(EOS(STATIC_3395), i254, i459, i459, matching1) → 3429_0_Ajouter_ConstantStackPush(EOS(STATIC_3429), i254, i459, -(i459, 1)) | &&(>(i459, 0), =(matching1, 1))
3429_0_Ajouter_ConstantStackPush(EOS(STATIC_3429), i254, i459, i627) → 3460_0_Ajouter_IntArithmetic(EOS(STATIC_3460), i254, i459, i627, 2)
3460_0_Ajouter_IntArithmetic(EOS(STATIC_3460), i254, i459, i627, matching1) → 3488_0_Ajouter_Store(EOS(STATIC_3488), i254, i459, /(i627, 2)) | =(matching1, 2)
3488_0_Ajouter_Store(EOS(STATIC_3488), i254, i459, i666) → 3518_0_Ajouter_Load(EOS(STATIC_3518), i254, i459, i666)
3518_0_Ajouter_Load(EOS(STATIC_3518), i254, i459, i666) → 3541_0_Ajouter_Load(EOS(STATIC_3541), i254, i459, i666, i666)
3541_0_Ajouter_Load(EOS(STATIC_3541), i254, i459, i666, i666) → 3579_0_Ajouter_LT(EOS(STATIC_3579), i254, i459, i666, i666, i459)
3579_0_Ajouter_LT(EOS(STATIC_3579), i254, i459, i666, i666, i459) → 3633_0_Ajouter_LT(EOS(STATIC_3633), i254, i459, i666, i666, i459)
3633_0_Ajouter_LT(EOS(STATIC_3633), i254, i459, i666, i666, i459) → 3667_0_Ajouter_Load(EOS(STATIC_3667), i254, i666) | <(i666, i459)
3667_0_Ajouter_Load(EOS(STATIC_3667), i254, i666) → 3702_0_Ajouter_Store(EOS(STATIC_3702), i254, i666)
3702_0_Ajouter_Store(EOS(STATIC_3702), i254, i666) → 3741_0_Ajouter_JMP(EOS(STATIC_3741), i254, i666)
3741_0_Ajouter_JMP(EOS(STATIC_3741), i254, i666) → 3778_0_Ajouter_Load(EOS(STATIC_3778), i254, i666)
3778_0_Ajouter_Load(EOS(STATIC_3778), i254, i666) → 2818_0_Ajouter_Load(EOS(STATIC_2818), i254, i666)
2818_0_Ajouter_Load(EOS(STATIC_2818), i254, i446) → 2838_0_Ajouter_LE(EOS(STATIC_2838), i254, i446, i446)
R rules:

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
2838_0_Ajouter_LE(EOS(STATIC_2838), x0, x1, x1) → 2838_0_Ajouter_LE(EOS(STATIC_2838), x0, /(-(x1, 1), 2), /(-(x1, 1), 2)) | &&(>(x1, 0), >(x1, /(-(x1, 1), 2)))
R rules:

Filtered ground terms:



2838_0_Ajouter_LE(x1, x2, x3, x4) → 2838_0_Ajouter_LE(x2, x3, x4)
EOS(x1) → EOS
Cond_2838_0_Ajouter_LE(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE(x1, x3, x4, x5)

Filtered duplicate args:



2838_0_Ajouter_LE(x1, x2, x3) → 2838_0_Ajouter_LE(x1, x3)
Cond_2838_0_Ajouter_LE(x1, x2, x3, x4) → Cond_2838_0_Ajouter_LE(x1, x2, x4)

Filtered unneeded arguments:



Cond_2838_0_Ajouter_LE(x1, x2, x3) → Cond_2838_0_Ajouter_LE(x1, x3)
2838_0_Ajouter_LE(x1, x2) → 2838_0_Ajouter_LE(x2)

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
2838_0_Ajouter_LE(x1) → 2838_0_Ajouter_LE(/(-(x1, 1), 2)) | &&(>(x1, 0), >(x1, /(-(x1, 1), 2)))
R rules:

Finished conversion. Obtained 2 rules for P and 0 rules for R. System has predefined symbols.


P rules:
2838_0_AJOUTER_LE(x1) → COND_2838_0_AJOUTER_LE(&&(>(x1, 0), >(x1, /(-(x1, 1), 2))), x1)
COND_2838_0_AJOUTER_LE(TRUE, x1) → 2838_0_AJOUTER_LE(/(-(x1, 1), 2))
R rules:

(14) 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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 2838_0_AJOUTER_LE(x1[0]) → COND_2838_0_AJOUTER_LE(x1[0] > 0 && x1[0] > x1[0] - 1 / 2, x1[0])
(1): COND_2838_0_AJOUTER_LE(TRUE, x1[1]) → 2838_0_AJOUTER_LE(x1[1] - 1 / 2)

(0) -> (1), if (x1[0] > 0 && x1[0] > x1[0] - 1 / 2x1[0]* x1[1])


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



The set Q is empty.

(15) 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@6b0ebbd1 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 2838_0_AJOUTER_LE(x1) → COND_2838_0_AJOUTER_LE(&&(>(x1, 0), >(x1, /(-(x1, 1), 2))), x1) the following chains were created:
  • We consider the chain 2838_0_AJOUTER_LE(x1[0]) → COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0]), COND_2838_0_AJOUTER_LE(TRUE, x1[1]) → 2838_0_AJOUTER_LE(/(-(x1[1], 1), 2)) which results in the following constraint:

    (1)    (&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2)))=TRUEx1[0]=x1[1]2838_0_AJOUTER_LE(x1[0])≥NonInfC∧2838_0_AJOUTER_LE(x1[0])≥COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])∧(UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥))



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

    (2)    (>(x1[0], 0)=TRUE>(x1[0], /(-(x1[0], 1), 2))=TRUE2838_0_AJOUTER_LE(x1[0])≥NonInfC∧2838_0_AJOUTER_LE(x1[0])≥COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])∧(UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥))



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

    (3)    (x1[0] + [-1] ≥ 0∧x1[0] + [-2] + max{x1[0] + [-1], [-1]x1[0] + [1]} ≥ 0 ⇒ (UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥)∧[(-1)Bound*bni_10] + [bni_10]x1[0] ≥ 0∧[(-1)bso_11] ≥ 0)



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

    (4)    (x1[0] + [-1] ≥ 0∧x1[0] + [-2] + max{x1[0] + [-1], [-1]x1[0] + [1]} ≥ 0 ⇒ (UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥)∧[(-1)Bound*bni_10] + [bni_10]x1[0] ≥ 0∧[(-1)bso_11] ≥ 0)



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

    (5)    (x1[0] + [-1] ≥ 0∧[2]x1[0] + [-2] ≥ 0∧[2]x1[0] + [-3] ≥ 0 ⇒ (UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥)∧[(-1)Bound*bni_10] + [bni_10]x1[0] ≥ 0∧[(-1)bso_11] ≥ 0)



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

    (6)    (x1[0] ≥ 0∧[2]x1[0] ≥ 0∧[-1] + [2]x1[0] ≥ 0 ⇒ (UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥)∧[(-1)Bound*bni_10 + bni_10] + [bni_10]x1[0] ≥ 0∧[(-1)bso_11] ≥ 0)



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

    (7)    (x1[0] ≥ 0∧[-1] + [2]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥)∧[(-1)Bound*bni_10 + bni_10] + [bni_10]x1[0] ≥ 0∧[(-1)bso_11] ≥ 0)







For Pair COND_2838_0_AJOUTER_LE(TRUE, x1) → 2838_0_AJOUTER_LE(/(-(x1, 1), 2)) the following chains were created:
  • We consider the chain 2838_0_AJOUTER_LE(x1[0]) → COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0]), COND_2838_0_AJOUTER_LE(TRUE, x1[1]) → 2838_0_AJOUTER_LE(/(-(x1[1], 1), 2)) which results in the following constraint:

    (8)    (&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2)))=TRUEx1[0]=x1[1]COND_2838_0_AJOUTER_LE(TRUE, x1[1])≥NonInfC∧COND_2838_0_AJOUTER_LE(TRUE, x1[1])≥2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))∧(UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥))



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

    (9)    (>(x1[0], 0)=TRUE>(x1[0], /(-(x1[0], 1), 2))=TRUECOND_2838_0_AJOUTER_LE(TRUE, x1[0])≥NonInfC∧COND_2838_0_AJOUTER_LE(TRUE, x1[0])≥2838_0_AJOUTER_LE(/(-(x1[0], 1), 2))∧(UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥))



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

    (10)    (x1[0] + [-1] ≥ 0∧x1[0] + [-2] + max{x1[0] + [-1], [-1]x1[0] + [1]} ≥ 0 ⇒ (UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [bni_12]x1[0] ≥ 0∧[(-1)bso_16] + x1[0] + [-1]max{x1[0] + [-1], [-1]x1[0] + [1]} ≥ 0)



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

    (11)    (x1[0] + [-1] ≥ 0∧x1[0] + [-2] + max{x1[0] + [-1], [-1]x1[0] + [1]} ≥ 0 ⇒ (UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [bni_12]x1[0] ≥ 0∧[(-1)bso_16] + x1[0] + [-1]max{x1[0] + [-1], [-1]x1[0] + [1]} ≥ 0)



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

    (12)    (x1[0] + [-1] ≥ 0∧[2]x1[0] + [-2] ≥ 0∧[2]x1[0] + [-3] ≥ 0 ⇒ (UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [bni_12]x1[0] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



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

    (13)    (x1[0] ≥ 0∧[2]x1[0] ≥ 0∧[-1] + [2]x1[0] ≥ 0 ⇒ (UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥)∧[(-1)Bound*bni_12] + [bni_12]x1[0] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



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

    (14)    (x1[0] ≥ 0∧[-1] + [2]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥)∧[(-1)Bound*bni_12] + [bni_12]x1[0] ≥ 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 2838_0_AJOUTER_LE(x1) → COND_2838_0_AJOUTER_LE(&&(>(x1, 0), >(x1, /(-(x1, 1), 2))), x1)
    • (x1[0] ≥ 0∧[-1] + [2]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])), ≥)∧[(-1)Bound*bni_10 + bni_10] + [bni_10]x1[0] ≥ 0∧[(-1)bso_11] ≥ 0)

  • COND_2838_0_AJOUTER_LE(TRUE, x1) → 2838_0_AJOUTER_LE(/(-(x1, 1), 2))
    • (x1[0] ≥ 0∧[-1] + [2]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))), ≥)∧[(-1)Bound*bni_12] + [bni_12]x1[0] ≥ 0∧[1 + (-1)bso_16] ≥ 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(2838_0_AJOUTER_LE(x1)) = x1   
POL(COND_2838_0_AJOUTER_LE(x1, x2)) = [-1] + x2 + [-1]x1   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(2) = [2]   

Polynomial Interpretations with Context Sensitive Arithemetic Replacement
POL(TermCSAR-Mode @ Context)

POL(/(x1, 2)-1 @ {}) = [-1]max{x1, [-1]x1} + [1]   
POL(/(x1, 2)1 @ {2838_0_AJOUTER_LE_1/0}) = max{x1, [-1]x1} + [-1]   

The following pairs are in P>:

COND_2838_0_AJOUTER_LE(TRUE, x1[1]) → 2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))

The following pairs are in Pbound:

2838_0_AJOUTER_LE(x1[0]) → COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])
COND_2838_0_AJOUTER_LE(TRUE, x1[1]) → 2838_0_AJOUTER_LE(/(-(x1[1], 1), 2))

The following pairs are in P:

2838_0_AJOUTER_LE(x1[0]) → COND_2838_0_AJOUTER_LE(&&(>(x1[0], 0), >(x1[0], /(-(x1[0], 1), 2))), x1[0])

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
/1

(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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 2838_0_AJOUTER_LE(x1[0]) → COND_2838_0_AJOUTER_LE(x1[0] > 0 && x1[0] > x1[0] - 1 / 2, x1[0])


The set Q is empty.

(17) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(18) TRUE

(19) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: TriTas.HeapSort()V
SCC calls the following helper methods: TriTas.Supprimer()V
Performed SCC analyses: UsedFieldsAnalysis

(20) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 22 rules for P and 282 rules for R.


P rules:
4238_0_HeapSort_LT(EOS(STATIC_4238), i955, i955) → 4253_0_HeapSort_LT(EOS(STATIC_4253), i955, i955)
4253_0_HeapSort_LT(EOS(STATIC_4253), i955, i955) → 4271_0_HeapSort_InvokeMethod(EOS(STATIC_4271), i955) | >=(i955, 0)
4271_0_HeapSort_InvokeMethod(EOS(STATIC_4271), i955) → 4285_0_Maximum_FieldAccess(EOS(STATIC_4285), i955)
4285_0_Maximum_FieldAccess(EOS(STATIC_4285), i955) → 4337_0_Maximum_ConstantStackPush(EOS(STATIC_4337), i955, java.lang.Object(ARRAY(i922)))
4337_0_Maximum_ConstantStackPush(EOS(STATIC_4337), i955, java.lang.Object(ARRAY(i922))) → 4359_0_Maximum_ArrayAccess(EOS(STATIC_4359), i955, java.lang.Object(ARRAY(i922)), 0)
4359_0_Maximum_ArrayAccess(EOS(STATIC_4359), i955, java.lang.Object(ARRAY(i1065)), matching1) → 4380_0_Maximum_ArrayAccess(EOS(STATIC_4380), i955, java.lang.Object(ARRAY(i1065)), 0) | =(matching1, 0)
4380_0_Maximum_ArrayAccess(EOS(STATIC_4380), i955, java.lang.Object(ARRAY(i1065)), matching1) → 4395_0_Maximum_Return(EOS(STATIC_4395), i955) | &&(<(0, i1065), =(matching1, 0))
4395_0_Maximum_Return(EOS(STATIC_4395), i955) → 4405_0_HeapSort_Store(EOS(STATIC_4405), i955)
4405_0_HeapSort_Store(EOS(STATIC_4405), i955) → 4417_0_HeapSort_InvokeMethod(EOS(STATIC_4417), i955)
4417_0_HeapSort_InvokeMethod(EOS(STATIC_4417), i955) → 4429_1_HeapSort_InvokeMethod(4429_0_Supprimer_FieldAccess(EOS(STATIC_4429)), i955)
4429_1_HeapSort_InvokeMethod(5725_0_Supprimer_Return(EOS(STATIC_5725)), i955) → 5757_0_Supprimer_Return(EOS(STATIC_5757), i955)
5757_0_Supprimer_Return(EOS(STATIC_5757), i955) → 4860_0_Supprimer_Return(EOS(STATIC_4860), i955)
4860_0_Supprimer_Return(EOS(STATIC_4860), i955) → 4865_0_HeapSort_FieldAccess(EOS(STATIC_4865), i955)
4865_0_HeapSort_FieldAccess(EOS(STATIC_4865), i955) → 4867_0_HeapSort_Load(EOS(STATIC_4867), i955, java.lang.Object(ARRAY(i1245)))
4867_0_HeapSort_Load(EOS(STATIC_4867), i955, java.lang.Object(ARRAY(i1245))) → 4872_0_HeapSort_Load(EOS(STATIC_4872), i955, java.lang.Object(ARRAY(i1245)), i955)
4872_0_HeapSort_Load(EOS(STATIC_4872), i955, java.lang.Object(ARRAY(i1245)), i955) → 4877_0_HeapSort_ArrayAccess(EOS(STATIC_4877), i955, java.lang.Object(ARRAY(i1245)), i955)
4877_0_HeapSort_ArrayAccess(EOS(STATIC_4877), i955, java.lang.Object(ARRAY(i1245)), i955) → 4880_0_HeapSort_ArrayAccess(EOS(STATIC_4880), i955, java.lang.Object(ARRAY(i1245)), i955)
4880_0_HeapSort_ArrayAccess(EOS(STATIC_4880), i955, java.lang.Object(ARRAY(i1245)), i955) → 4887_0_HeapSort_Inc(EOS(STATIC_4887), i955) | <(i955, i1245)
4887_0_HeapSort_Inc(EOS(STATIC_4887), i955) → 4893_0_HeapSort_JMP(EOS(STATIC_4893), +(i955, -1)) | >=(i955, 0)
4893_0_HeapSort_JMP(EOS(STATIC_4893), i1261) → 4898_0_HeapSort_Load(EOS(STATIC_4898), i1261)
4898_0_HeapSort_Load(EOS(STATIC_4898), i1261) → 4226_0_HeapSort_Load(EOS(STATIC_4226), i1261)
4226_0_HeapSort_Load(EOS(STATIC_4226), i947) → 4238_0_HeapSort_LT(EOS(STATIC_4238), i947, i947)
R rules:
4429_0_Supprimer_FieldAccess(EOS(STATIC_4429)) → 4436_0_Supprimer_FieldAccess(EOS(STATIC_4436))
4436_0_Supprimer_FieldAccess(EOS(STATIC_4436)) → 4462_0_Supprimer_FieldAccess(EOS(STATIC_4462))
4462_0_Supprimer_FieldAccess(EOS(STATIC_4462)) → 4467_0_Supprimer_ConstantStackPush(EOS(STATIC_4467), java.lang.Object(ARRAY(i1098)))
4467_0_Supprimer_ConstantStackPush(EOS(STATIC_4467), java.lang.Object(ARRAY(i1098))) → 4475_0_Supprimer_FieldAccess(EOS(STATIC_4475), java.lang.Object(ARRAY(i1098)), 0)
4475_0_Supprimer_FieldAccess(EOS(STATIC_4475), java.lang.Object(ARRAY(i1098)), matching1) → 4481_0_Supprimer_FieldAccess(EOS(STATIC_4481), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098))) | =(matching1, 0)
4481_0_Supprimer_FieldAccess(EOS(STATIC_4481), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098))) → 4486_0_Supprimer_ConstantStackPush(EOS(STATIC_4486), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1099) | =(matching1, 0)
4486_0_Supprimer_ConstantStackPush(EOS(STATIC_4486), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1099) → 4491_0_Supprimer_IntArithmetic(EOS(STATIC_4491), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1099, 1) | =(matching1, 0)
4491_0_Supprimer_IntArithmetic(EOS(STATIC_4491), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1099, matching2) → 4497_0_Supprimer_ArrayAccess(EOS(STATIC_4497), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), -(i1099, 1)) | &&(=(matching1, 0), =(matching2, 1))
4497_0_Supprimer_ArrayAccess(EOS(STATIC_4497), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4499_0_Supprimer_ArrayAccess(EOS(STATIC_4499), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4497_0_Supprimer_ArrayAccess(EOS(STATIC_4497), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4500_0_Supprimer_ArrayAccess(EOS(STATIC_4500), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4499_0_Supprimer_ArrayAccess(EOS(STATIC_4499), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4504_0_<init>_Load(EOS(STATIC_4504), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | &&(<=(i1133, -1), =(matching1, 0))
4500_0_Supprimer_ArrayAccess(EOS(STATIC_4500), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4505_0_Supprimer_ArrayAccess(EOS(STATIC_4505), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4500_0_Supprimer_ArrayAccess(EOS(STATIC_4500), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4506_0_Supprimer_ArrayAccess(EOS(STATIC_4506), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4504_0_<init>_Load(EOS(STATIC_4504), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4515_0_<init>_InvokeMethod(EOS(STATIC_4515), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4505_0_Supprimer_ArrayAccess(EOS(STATIC_4505), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4510_0_Supprimer_ArrayAccess(EOS(STATIC_4510), java.lang.Object(ARRAY(i1098)), 0) | &&(<(i1134, i1098), =(matching1, 0))
4506_0_Supprimer_ArrayAccess(EOS(STATIC_4506), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4511_0_<init>_Load(EOS(STATIC_4511), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | &&(>=(i1134, i1098), =(matching1, 0))
4510_0_Supprimer_ArrayAccess(EOS(STATIC_4510), java.lang.Object(ARRAY(i1098)), matching1) → 4517_0_Supprimer_FieldAccess(EOS(STATIC_4517)) | &&(<(0, i1098), =(matching1, 0))
4511_0_<init>_Load(EOS(STATIC_4511), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4523_0_<init>_InvokeMethod(EOS(STATIC_4523), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4515_0_<init>_InvokeMethod(EOS(STATIC_4515), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4521_0_<init>_Load(EOS(STATIC_4521), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4517_0_Supprimer_FieldAccess(EOS(STATIC_4517)) → 4522_0_Supprimer_ConstantStackPush(EOS(STATIC_4522), i1099)
4521_0_<init>_Load(EOS(STATIC_4521), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4534_0_<init>_InvokeMethod(EOS(STATIC_4534), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4522_0_Supprimer_ConstantStackPush(EOS(STATIC_4522), i1099) → 4529_0_Supprimer_IntArithmetic(EOS(STATIC_4529), i1099, 1)
4523_0_<init>_InvokeMethod(EOS(STATIC_4523), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4530_0_<init>_Load(EOS(STATIC_4530), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4529_0_Supprimer_IntArithmetic(EOS(STATIC_4529), i1099, matching1) → 4535_0_Supprimer_FieldAccess(EOS(STATIC_4535), -(i1099, 1)) | =(matching1, 1)
4530_0_<init>_Load(EOS(STATIC_4530), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4542_0_<init>_InvokeMethod(EOS(STATIC_4542), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4534_0_<init>_InvokeMethod(EOS(STATIC_4534), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4539_0_<init>_Load(EOS(STATIC_4539), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4535_0_Supprimer_FieldAccess(EOS(STATIC_4535), i1137) → 4540_0_Supprimer_ConstantStackPush(EOS(STATIC_4540))
4539_0_<init>_Load(EOS(STATIC_4539), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4552_0_<init>_InvokeMethod(EOS(STATIC_4552), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4540_0_Supprimer_ConstantStackPush(EOS(STATIC_4540)) → 4545_0_Supprimer_Store(EOS(STATIC_4545), 0)
4542_0_<init>_InvokeMethod(EOS(STATIC_4542), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4547_0_<init>_Load(EOS(STATIC_4547), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4545_0_Supprimer_Store(EOS(STATIC_4545), matching1) → 4553_0_Supprimer_FieldAccess(EOS(STATIC_4553), 0) | =(matching1, 0)
4547_0_<init>_Load(EOS(STATIC_4547), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4559_0_<init>_InvokeMethod(EOS(STATIC_4559), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4552_0_<init>_InvokeMethod(EOS(STATIC_4552), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4557_0_<init>_Load(EOS(STATIC_4557), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4553_0_Supprimer_FieldAccess(EOS(STATIC_4553), matching1) → 4558_0_Supprimer_ConstantStackPush(EOS(STATIC_4558), 0, java.lang.Object(ARRAY(i1098))) | =(matching1, 0)
4557_0_<init>_Load(EOS(STATIC_4557), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4566_0_<init>_InvokeMethod(EOS(STATIC_4566), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4558_0_Supprimer_ConstantStackPush(EOS(STATIC_4558), matching1, java.lang.Object(ARRAY(i1098))) → 4562_0_Supprimer_ArrayAccess(EOS(STATIC_4562), 0, java.lang.Object(ARRAY(i1098)), 0) | =(matching1, 0)
4559_0_<init>_InvokeMethod(EOS(STATIC_4559), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4563_0_<init>_Load(EOS(STATIC_4563), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4562_0_Supprimer_ArrayAccess(EOS(STATIC_4562), matching1, java.lang.Object(ARRAY(i1098)), matching2) → 4567_0_Supprimer_Store(EOS(STATIC_4567), 0, i1147) | &&(&&(<(0, i1098), =(matching1, 0)), =(matching2, 0))
4563_0_<init>_Load(EOS(STATIC_4563), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4572_0_<init>_InvokeMethod(EOS(STATIC_4572), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4566_0_<init>_InvokeMethod(EOS(STATIC_4566), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4570_0_<init>_Load(EOS(STATIC_4570), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4567_0_Supprimer_Store(EOS(STATIC_4567), matching1, i1147) → 4571_0_Supprimer_ConstantStackPush(EOS(STATIC_4571), 0, i1147) | =(matching1, 0)
4570_0_<init>_Load(EOS(STATIC_4570), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4579_0_<init>_InvokeMethod(EOS(STATIC_4579), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4571_0_Supprimer_ConstantStackPush(EOS(STATIC_4571), matching1, i1147) → 4799_0_Supprimer_ConstantStackPush(EOS(STATIC_4799), 0, i1147) | =(matching1, 0)
4572_0_<init>_InvokeMethod(EOS(STATIC_4572), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4576_0_<init>_Load(EOS(STATIC_4576), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4576_0_<init>_Load(EOS(STATIC_4576), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4585_0_<init>_InvokeMethod(EOS(STATIC_4585), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4579_0_<init>_InvokeMethod(EOS(STATIC_4579), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4582_0_<init>_Load(EOS(STATIC_4582), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4582_0_<init>_Load(EOS(STATIC_4582), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4587_0_<init>_Load(EOS(STATIC_4587), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4585_0_<init>_InvokeMethod(EOS(STATIC_4585), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4590_0_<init>_Load(EOS(STATIC_4590), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4587_0_<init>_Load(EOS(STATIC_4587), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4593_0_<init>_FieldAccess(EOS(STATIC_4593), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4590_0_<init>_Load(EOS(STATIC_4590), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4596_0_<init>_Load(EOS(STATIC_4596), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4593_0_<init>_FieldAccess(EOS(STATIC_4593), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4599_0_<init>_Load(EOS(STATIC_4599), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4596_0_<init>_Load(EOS(STATIC_4596), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4602_0_<init>_FieldAccess(EOS(STATIC_4602), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4599_0_<init>_Load(EOS(STATIC_4599), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4603_0_<init>_InvokeMethod(EOS(STATIC_4603), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4602_0_<init>_FieldAccess(EOS(STATIC_4602), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4608_0_<init>_Load(EOS(STATIC_4608), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4603_0_<init>_InvokeMethod(EOS(STATIC_4603), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4609_0_<init>_StackPop(EOS(STATIC_4609), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4608_0_<init>_Load(EOS(STATIC_4608), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4613_0_<init>_InvokeMethod(EOS(STATIC_4613), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4609_0_<init>_StackPop(EOS(STATIC_4609), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4615_0_<init>_Return(EOS(STATIC_4615), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4613_0_<init>_InvokeMethod(EOS(STATIC_4613), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4619_0_<init>_StackPop(EOS(STATIC_4619), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4615_0_<init>_Return(EOS(STATIC_4615), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4620_0_<init>_Return(EOS(STATIC_4620), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4619_0_<init>_StackPop(EOS(STATIC_4619), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4624_0_<init>_Return(EOS(STATIC_4624), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4620_0_<init>_Return(EOS(STATIC_4620), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4625_0_<init>_Return(EOS(STATIC_4625), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4624_0_<init>_Return(EOS(STATIC_4624), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4629_0_<init>_Return(EOS(STATIC_4629), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4625_0_<init>_Return(EOS(STATIC_4625), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4630_0_<init>_Return(EOS(STATIC_4630), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4629_0_<init>_Return(EOS(STATIC_4629), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4634_0_<init>_Return(EOS(STATIC_4634), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4630_0_<init>_Return(EOS(STATIC_4630), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4636_0_<init>_Return(EOS(STATIC_4636), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4634_0_<init>_Return(EOS(STATIC_4634), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4640_0_<init>_Return(EOS(STATIC_4640), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4636_0_<init>_Return(EOS(STATIC_4636), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1133) → 4641_0_Supprimer_ArrayAccess(EOS(STATIC_4641), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1133) | =(matching1, 0)
4640_0_<init>_Return(EOS(STATIC_4640), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4646_0_<init>_Return(EOS(STATIC_4646), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4646_0_<init>_Return(EOS(STATIC_4646), java.lang.Object(ARRAY(i1098)), matching1, java.lang.Object(ARRAY(i1098)), i1134) → 4652_0_Supprimer_ArrayAccess(EOS(STATIC_4652), java.lang.Object(ARRAY(i1098)), 0, java.lang.Object(ARRAY(i1098)), i1134) | =(matching1, 0)
4799_0_Supprimer_ConstantStackPush(EOS(STATIC_4799), i1217, i1147) → 5174_0_Supprimer_ConstantStackPush(EOS(STATIC_5174), i1217, i1147)
5174_0_Supprimer_ConstantStackPush(EOS(STATIC_5174), i1553, i1147) → 5514_0_Supprimer_ConstantStackPush(EOS(STATIC_5514), i1553, i1147)
5514_0_Supprimer_ConstantStackPush(EOS(STATIC_5514), i1791, i1147) → 5518_0_Supprimer_Load(EOS(STATIC_5518), i1791, i1147, 2)
5518_0_Supprimer_Load(EOS(STATIC_5518), i1791, i1147, matching1) → 5519_0_Supprimer_IntArithmetic(EOS(STATIC_5519), i1791, i1147, 2, i1791) | =(matching1, 2)
5519_0_Supprimer_IntArithmetic(EOS(STATIC_5519), i1791, i1147, matching1, i1791) → 5520_0_Supprimer_ConstantStackPush(EOS(STATIC_5520), i1791, i1147, *(2, i1791)) | =(matching1, 2)
5520_0_Supprimer_ConstantStackPush(EOS(STATIC_5520), i1791, i1147, i1793) → 5522_0_Supprimer_IntArithmetic(EOS(STATIC_5522), i1791, i1147, i1793, 1)
5522_0_Supprimer_IntArithmetic(EOS(STATIC_5522), i1791, i1147, i1793, matching1) → 5523_0_Supprimer_FieldAccess(EOS(STATIC_5523), i1791, i1147, +(i1793, 1)) | &&(>=(i1793, 0), =(matching1, 1))
5523_0_Supprimer_FieldAccess(EOS(STATIC_5523), i1791, i1147, i1794) → 5524_0_Supprimer_GE(EOS(STATIC_5524), i1791, i1147, i1794, i1216)
5524_0_Supprimer_GE(EOS(STATIC_5524), i1791, i1147, i1794, i1216) → 5525_0_Supprimer_GE(EOS(STATIC_5525), i1791, i1147, i1794, i1216)
5524_0_Supprimer_GE(EOS(STATIC_5524), i1791, i1147, i1794, i1216) → 5526_0_Supprimer_GE(EOS(STATIC_5526), i1791, i1147, i1794, i1216)
5525_0_Supprimer_GE(EOS(STATIC_5525), i1791, i1147, i1794, i1216) → 5527_0_Supprimer_FieldAccess(EOS(STATIC_5527), i1791, i1147) | >=(i1794, i1216)
5526_0_Supprimer_GE(EOS(STATIC_5526), i1791, i1147, i1794, i1216) → 5529_0_Supprimer_ConstantStackPush(EOS(STATIC_5529), i1791, i1147) | <(i1794, i1216)
5527_0_Supprimer_FieldAccess(EOS(STATIC_5527), i1791, i1147) → 5603_0_Supprimer_FieldAccess(EOS(STATIC_5603), i1791, i1147)
5529_0_Supprimer_ConstantStackPush(EOS(STATIC_5529), i1791, i1147) → 5531_0_Supprimer_Load(EOS(STATIC_5531), i1791, i1147, 2)
5531_0_Supprimer_Load(EOS(STATIC_5531), i1791, i1147, matching1) → 5533_0_Supprimer_IntArithmetic(EOS(STATIC_5533), i1791, i1147, 2, i1791) | =(matching1, 2)
5533_0_Supprimer_IntArithmetic(EOS(STATIC_5533), i1791, i1147, matching1, i1791) → 5536_0_Supprimer_ConstantStackPush(EOS(STATIC_5536), i1791, i1147, *(2, i1791)) | =(matching1, 2)
5536_0_Supprimer_ConstantStackPush(EOS(STATIC_5536), i1791, i1147, i1795) → 5539_0_Supprimer_IntArithmetic(EOS(STATIC_5539), i1791, i1147, i1795, 1)
5539_0_Supprimer_IntArithmetic(EOS(STATIC_5539), i1791, i1147, i1795, matching1) → 5543_0_Supprimer_Store(EOS(STATIC_5543), i1791, i1147, +(i1795, 1)) | &&(>=(i1795, 0), =(matching1, 1))
5543_0_Supprimer_Store(EOS(STATIC_5543), i1791, i1147, i1796) → 5546_0_Supprimer_Load(EOS(STATIC_5546), i1791, i1796, i1147)
5546_0_Supprimer_Load(EOS(STATIC_5546), i1791, i1796, i1147) → 5550_0_Supprimer_ConstantStackPush(EOS(STATIC_5550), i1791, i1796, i1147, i1796)
5550_0_Supprimer_ConstantStackPush(EOS(STATIC_5550), i1791, i1796, i1147, i1796) → 5553_0_Supprimer_IntArithmetic(EOS(STATIC_5553), i1791, i1796, i1147, i1796, 1)
5553_0_Supprimer_IntArithmetic(EOS(STATIC_5553), i1791, i1796, i1147, i1796, matching1) → 5555_0_Supprimer_FieldAccess(EOS(STATIC_5555), i1791, i1796, i1147, +(i1796, 1)) | &&(>(i1796, 0), =(matching1, 1))
5555_0_Supprimer_FieldAccess(EOS(STATIC_5555), i1791, i1796, i1147, i1808) → 5558_0_Supprimer_GE(EOS(STATIC_5558), i1791, i1796, i1147, i1808, i1216)
5558_0_Supprimer_GE(EOS(STATIC_5558), i1791, i1796, i1147, i1808, i1216) → 5560_0_Supprimer_GE(EOS(STATIC_5560), i1791, i1796, i1147, i1808, i1216)
5558_0_Supprimer_GE(EOS(STATIC_5558), i1791, i1796, i1147, i1808, i1216) → 5561_0_Supprimer_GE(EOS(STATIC_5561), i1791, i1796, i1147, i1808, i1216)
5560_0_Supprimer_GE(EOS(STATIC_5560), i1791, i1796, i1147, i1808, i1216) → 5563_0_Supprimer_Load(EOS(STATIC_5563), i1791, i1796, i1147) | >=(i1808, i1216)
5561_0_Supprimer_GE(EOS(STATIC_5561), i1791, i1796, i1147, i1808, i1216) → 5564_0_Supprimer_FieldAccess(EOS(STATIC_5564), i1791, i1796, i1147) | <(i1808, i1216)
5563_0_Supprimer_Load(EOS(STATIC_5563), i1791, i1796, i1147) → 5634_0_Supprimer_Load(EOS(STATIC_5634), i1791, i1796, i1147)
5564_0_Supprimer_FieldAccess(EOS(STATIC_5564), i1791, i1796, i1147) → 5568_0_Supprimer_Load(EOS(STATIC_5568), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)))
5568_0_Supprimer_Load(EOS(STATIC_5568), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215))) → 5572_0_Supprimer_ConstantStackPush(EOS(STATIC_5572), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5572_0_Supprimer_ConstantStackPush(EOS(STATIC_5572), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5574_0_Supprimer_IntArithmetic(EOS(STATIC_5574), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796, 1)
5574_0_Supprimer_IntArithmetic(EOS(STATIC_5574), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1796, matching1) → 5580_0_Supprimer_ArrayAccess(EOS(STATIC_5580), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), +(i1796, 1)) | &&(>(i1796, 0), =(matching1, 1))
5580_0_Supprimer_ArrayAccess(EOS(STATIC_5580), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5585_0_Supprimer_ArrayAccess(EOS(STATIC_5585), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5580_0_Supprimer_ArrayAccess(EOS(STATIC_5580), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5586_0_Supprimer_ArrayAccess(EOS(STATIC_5586), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5585_0_Supprimer_ArrayAccess(EOS(STATIC_5585), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5590_0_Supprimer_FieldAccess(EOS(STATIC_5590), i1791, i1796, i1147, i1823) | <(i1821, i1215)
5586_0_Supprimer_ArrayAccess(EOS(STATIC_5586), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5591_0_<init>_Load(EOS(STATIC_5591), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) | >=(i1821, i1215)
5590_0_Supprimer_FieldAccess(EOS(STATIC_5590), i1791, i1796, i1147, i1823) → 5599_0_Supprimer_Load(EOS(STATIC_5599), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)))
5591_0_<init>_Load(EOS(STATIC_5591), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5607_0_<init>_InvokeMethod(EOS(STATIC_5607), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5599_0_Supprimer_Load(EOS(STATIC_5599), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215))) → 5605_0_Supprimer_ArrayAccess(EOS(STATIC_5605), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5603_0_Supprimer_FieldAccess(EOS(STATIC_5603), i1791, i1147) → 5690_0_Supprimer_FieldAccess(EOS(STATIC_5690), i1791, i1147)
5605_0_Supprimer_ArrayAccess(EOS(STATIC_5605), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5611_0_Supprimer_ArrayAccess(EOS(STATIC_5611), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5605_0_Supprimer_ArrayAccess(EOS(STATIC_5605), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5612_0_Supprimer_ArrayAccess(EOS(STATIC_5612), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5607_0_<init>_InvokeMethod(EOS(STATIC_5607), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5613_0_<init>_Load(EOS(STATIC_5613), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5611_0_Supprimer_ArrayAccess(EOS(STATIC_5611), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5619_0_Supprimer_LE(EOS(STATIC_5619), i1791, i1796, i1147, i1823, i1844) | <(i1796, i1215)
5612_0_Supprimer_ArrayAccess(EOS(STATIC_5612), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5620_0_<init>_Load(EOS(STATIC_5620), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) | >=(i1796, i1215)
5613_0_<init>_Load(EOS(STATIC_5613), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5627_0_<init>_InvokeMethod(EOS(STATIC_5627), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5619_0_Supprimer_LE(EOS(STATIC_5619), i1791, i1796, i1147, i1823, i1844) → 5625_0_Supprimer_LE(EOS(STATIC_5625), i1791, i1796, i1147, i1823, i1844)
5619_0_Supprimer_LE(EOS(STATIC_5619), i1791, i1796, i1147, i1823, i1844) → 5626_0_Supprimer_LE(EOS(STATIC_5626), i1791, i1796, i1147, i1823, i1844)
5620_0_<init>_Load(EOS(STATIC_5620), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5637_0_<init>_InvokeMethod(EOS(STATIC_5637), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5625_0_Supprimer_LE(EOS(STATIC_5625), i1791, i1796, i1147, i1823, i1844) → 5634_0_Supprimer_Load(EOS(STATIC_5634), i1791, i1796, i1147) | <=(i1823, i1844)
5626_0_Supprimer_LE(EOS(STATIC_5626), i1791, i1796, i1147, i1823, i1844) → 5635_0_Supprimer_Inc(EOS(STATIC_5635), i1791, i1796, i1147) | >(i1823, i1844)
5627_0_<init>_InvokeMethod(EOS(STATIC_5627), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5638_0_<init>_Load(EOS(STATIC_5638), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5634_0_Supprimer_Load(EOS(STATIC_5634), i1791, i1796, i1147) → 5643_0_Supprimer_FieldAccess(EOS(STATIC_5643), i1791, i1796, i1147, i1147)
5635_0_Supprimer_Inc(EOS(STATIC_5635), i1791, i1796, i1147) → 5644_0_Supprimer_Load(EOS(STATIC_5644), i1791, +(i1796, 1), i1147) | >(i1796, 0)
5637_0_<init>_InvokeMethod(EOS(STATIC_5637), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5645_0_<init>_Load(EOS(STATIC_5645), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5638_0_<init>_Load(EOS(STATIC_5638), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5651_0_<init>_InvokeMethod(EOS(STATIC_5651), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5643_0_Supprimer_FieldAccess(EOS(STATIC_5643), i1791, i1796, i1147, i1147) → 5648_0_Supprimer_Load(EOS(STATIC_5648), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)))
5644_0_Supprimer_Load(EOS(STATIC_5644), i1791, i1853, i1147) → 5649_0_Supprimer_FieldAccess(EOS(STATIC_5649), i1791, i1853, i1147, i1147)
5645_0_<init>_Load(EOS(STATIC_5645), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5658_0_<init>_InvokeMethod(EOS(STATIC_5658), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5648_0_Supprimer_Load(EOS(STATIC_5648), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215))) → 5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5649_0_Supprimer_FieldAccess(EOS(STATIC_5649), i1791, i1853, i1147, i1147) → 5657_0_Supprimer_Load(EOS(STATIC_5657), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)))
5651_0_<init>_InvokeMethod(EOS(STATIC_5651), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5660_0_<init>_Load(EOS(STATIC_5660), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5664_0_Supprimer_ArrayAccess(EOS(STATIC_5664), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5665_0_Supprimer_ArrayAccess(EOS(STATIC_5665), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5657_0_Supprimer_Load(EOS(STATIC_5657), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215))) → 5666_0_Supprimer_ArrayAccess(EOS(STATIC_5666), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1853)
5658_0_<init>_InvokeMethod(EOS(STATIC_5658), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5667_0_<init>_Load(EOS(STATIC_5667), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5660_0_<init>_Load(EOS(STATIC_5660), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5672_0_<init>_InvokeMethod(EOS(STATIC_5672), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5664_0_Supprimer_ArrayAccess(EOS(STATIC_5664), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5669_0_Supprimer_LT(EOS(STATIC_5669), i1791, i1796, i1147, i1147, i1874) | <(i1796, i1215)
5665_0_Supprimer_ArrayAccess(EOS(STATIC_5665), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5670_0_<init>_Load(EOS(STATIC_5670), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) | >=(i1796, i1215)
5666_0_Supprimer_ArrayAccess(EOS(STATIC_5666), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1853) → 5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), i1791, i1853, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1853)
5667_0_<init>_Load(EOS(STATIC_5667), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5679_0_<init>_InvokeMethod(EOS(STATIC_5679), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5669_0_Supprimer_LT(EOS(STATIC_5669), i1791, i1796, i1147, i1147, i1874) → 5676_0_Supprimer_LT(EOS(STATIC_5676), i1791, i1796, i1147, i1147, i1874)
5669_0_Supprimer_LT(EOS(STATIC_5669), i1791, i1796, i1147, i1147, i1874) → 5677_0_Supprimer_LT(EOS(STATIC_5677), i1791, i1796, i1147, i1147, i1874)
5670_0_<init>_Load(EOS(STATIC_5670), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5686_0_<init>_InvokeMethod(EOS(STATIC_5686), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5672_0_<init>_InvokeMethod(EOS(STATIC_5672), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5680_0_<init>_Load(EOS(STATIC_5680), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5676_0_Supprimer_LT(EOS(STATIC_5676), i1791, i1796, i1147, i1147, i1874) → 5682_0_Supprimer_FieldAccess(EOS(STATIC_5682), i1791, i1796, i1147) | <(i1147, i1874)
5677_0_Supprimer_LT(EOS(STATIC_5677), i1791, i1796, i1147, i1147, i1874) → 5684_0_Supprimer_JMP(EOS(STATIC_5684), i1791, i1147) | >=(i1147, i1874)
5679_0_<init>_InvokeMethod(EOS(STATIC_5679), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5687_0_<init>_Load(EOS(STATIC_5687), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5680_0_<init>_Load(EOS(STATIC_5680), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5693_0_<init>_InvokeMethod(EOS(STATIC_5693), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5682_0_Supprimer_FieldAccess(EOS(STATIC_5682), i1791, i1796, i1147) → 5688_0_Supprimer_Load(EOS(STATIC_5688), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)))
5684_0_Supprimer_JMP(EOS(STATIC_5684), i1791, i1147) → 5690_0_Supprimer_FieldAccess(EOS(STATIC_5690), i1791, i1147)
5686_0_<init>_InvokeMethod(EOS(STATIC_5686), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5691_0_<init>_Load(EOS(STATIC_5691), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5687_0_<init>_Load(EOS(STATIC_5687), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5698_0_<init>_InvokeMethod(EOS(STATIC_5698), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5688_0_Supprimer_Load(EOS(STATIC_5688), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215))) → 5694_0_Supprimer_FieldAccess(EOS(STATIC_5694), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5690_0_Supprimer_FieldAccess(EOS(STATIC_5690), i1791, i1147) → 5696_0_Supprimer_Load(EOS(STATIC_5696), i1791, i1147, java.lang.Object(ARRAY(i1215)))
5691_0_<init>_Load(EOS(STATIC_5691), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5704_0_<init>_InvokeMethod(EOS(STATIC_5704), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5693_0_<init>_InvokeMethod(EOS(STATIC_5693), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5699_0_<init>_Load(EOS(STATIC_5699), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5694_0_Supprimer_FieldAccess(EOS(STATIC_5694), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5701_0_Supprimer_Load(EOS(STATIC_5701), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)))
5696_0_Supprimer_Load(EOS(STATIC_5696), i1791, i1147, java.lang.Object(ARRAY(i1215))) → 5702_0_Supprimer_Load(EOS(STATIC_5702), i1147, java.lang.Object(ARRAY(i1215)), i1791)
5698_0_<init>_InvokeMethod(EOS(STATIC_5698), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5705_0_<init>_Load(EOS(STATIC_5705), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5699_0_<init>_Load(EOS(STATIC_5699), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5707_0_<init>_Load(EOS(STATIC_5707), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5701_0_Supprimer_Load(EOS(STATIC_5701), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215))) → 5708_0_Supprimer_ArrayAccess(EOS(STATIC_5708), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5702_0_Supprimer_Load(EOS(STATIC_5702), i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5710_0_Supprimer_ArrayAccess(EOS(STATIC_5710), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5704_0_<init>_InvokeMethod(EOS(STATIC_5704), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5711_0_<init>_Load(EOS(STATIC_5711), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5705_0_<init>_Load(EOS(STATIC_5705), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5719_0_<init>_InvokeMethod(EOS(STATIC_5719), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5707_0_<init>_Load(EOS(STATIC_5707), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5712_0_<init>_FieldAccess(EOS(STATIC_5712), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5708_0_Supprimer_ArrayAccess(EOS(STATIC_5708), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5714_0_Supprimer_ArrayAccess(EOS(STATIC_5714), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5708_0_Supprimer_ArrayAccess(EOS(STATIC_5708), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5715_0_Supprimer_ArrayAccess(EOS(STATIC_5715), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5710_0_Supprimer_ArrayAccess(EOS(STATIC_5710), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5716_0_Supprimer_ArrayAccess(EOS(STATIC_5716), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5710_0_Supprimer_ArrayAccess(EOS(STATIC_5710), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5717_0_Supprimer_ArrayAccess(EOS(STATIC_5717), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5711_0_<init>_Load(EOS(STATIC_5711), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5729_0_<init>_InvokeMethod(EOS(STATIC_5729), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5712_0_<init>_FieldAccess(EOS(STATIC_5712), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5722_0_<init>_Load(EOS(STATIC_5722), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5714_0_Supprimer_ArrayAccess(EOS(STATIC_5714), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5723_0_Supprimer_ArrayAccess(EOS(STATIC_5723), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) | <(i1796, i1215)
5715_0_Supprimer_ArrayAccess(EOS(STATIC_5715), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5724_0_<init>_Load(EOS(STATIC_5724), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) | >=(i1796, i1215)
5716_0_Supprimer_ArrayAccess(EOS(STATIC_5716), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5725_0_Supprimer_Return(EOS(STATIC_5725)) | <(i1791, i1215)
5717_0_Supprimer_ArrayAccess(EOS(STATIC_5717), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5727_0_<init>_Load(EOS(STATIC_5727), java.lang.Object(ARRAY(i1215)), i1791, i1147) | >=(i1791, i1215)
5719_0_<init>_InvokeMethod(EOS(STATIC_5719), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5731_0_<init>_Load(EOS(STATIC_5731), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5722_0_<init>_Load(EOS(STATIC_5722), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5733_0_<init>_InvokeMethod(EOS(STATIC_5733), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5723_0_Supprimer_ArrayAccess(EOS(STATIC_5723), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5734_0_Supprimer_ArrayAccess(EOS(STATIC_5734), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5723_0_Supprimer_ArrayAccess(EOS(STATIC_5723), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5735_0_Supprimer_ArrayAccess(EOS(STATIC_5735), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5724_0_<init>_Load(EOS(STATIC_5724), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5746_0_<init>_InvokeMethod(EOS(STATIC_5746), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5727_0_<init>_Load(EOS(STATIC_5727), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5750_0_<init>_InvokeMethod(EOS(STATIC_5750), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5729_0_<init>_InvokeMethod(EOS(STATIC_5729), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5738_0_<init>_Load(EOS(STATIC_5738), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5731_0_<init>_Load(EOS(STATIC_5731), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5739_0_<init>_Load(EOS(STATIC_5739), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5733_0_<init>_InvokeMethod(EOS(STATIC_5733), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5741_0_<init>_StackPop(EOS(STATIC_5741), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5734_0_Supprimer_ArrayAccess(EOS(STATIC_5734), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5743_0_Supprimer_Load(EOS(STATIC_5743), i1796, i1147) | <(i1791, i1215)
5735_0_Supprimer_ArrayAccess(EOS(STATIC_5735), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5744_0_<init>_Load(EOS(STATIC_5744), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) | >=(i1791, i1215)
5738_0_<init>_Load(EOS(STATIC_5738), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5760_0_<init>_InvokeMethod(EOS(STATIC_5760), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5739_0_<init>_Load(EOS(STATIC_5739), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5751_0_<init>_FieldAccess(EOS(STATIC_5751), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5741_0_<init>_StackPop(EOS(STATIC_5741), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5753_0_<init>_Return(EOS(STATIC_5753), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5743_0_Supprimer_Load(EOS(STATIC_5743), i1796, i1147) → 5754_0_Supprimer_Store(EOS(STATIC_5754), i1147, i1796)
5744_0_<init>_Load(EOS(STATIC_5744), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5768_0_<init>_InvokeMethod(EOS(STATIC_5768), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5746_0_<init>_InvokeMethod(EOS(STATIC_5746), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5755_0_<init>_Load(EOS(STATIC_5755), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5750_0_<init>_InvokeMethod(EOS(STATIC_5750), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5758_0_<init>_Load(EOS(STATIC_5758), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5751_0_<init>_FieldAccess(EOS(STATIC_5751), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5763_0_<init>_Load(EOS(STATIC_5763), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5753_0_<init>_Return(EOS(STATIC_5753), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5764_0_<init>_Return(EOS(STATIC_5764), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5754_0_Supprimer_Store(EOS(STATIC_5754), i1147, i1796) → 5765_0_Supprimer_JMP(EOS(STATIC_5765), i1796, i1147)
5755_0_<init>_Load(EOS(STATIC_5755), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5779_0_<init>_InvokeMethod(EOS(STATIC_5779), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5758_0_<init>_Load(EOS(STATIC_5758), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5781_0_<init>_InvokeMethod(EOS(STATIC_5781), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5760_0_<init>_InvokeMethod(EOS(STATIC_5760), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5769_0_<init>_Load(EOS(STATIC_5769), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5763_0_<init>_Load(EOS(STATIC_5763), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5772_0_<init>_InvokeMethod(EOS(STATIC_5772), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5764_0_<init>_Return(EOS(STATIC_5764), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5773_0_<init>_Return(EOS(STATIC_5773), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5765_0_Supprimer_JMP(EOS(STATIC_5765), i1796, i1147) → 5775_0_Supprimer_ConstantStackPush(EOS(STATIC_5775), i1796, i1147)
5768_0_<init>_InvokeMethod(EOS(STATIC_5768), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5776_0_<init>_Load(EOS(STATIC_5776), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5769_0_<init>_Load(EOS(STATIC_5769), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5790_0_<init>_InvokeMethod(EOS(STATIC_5790), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5772_0_<init>_InvokeMethod(EOS(STATIC_5772), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5783_0_<init>_StackPop(EOS(STATIC_5783), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5773_0_<init>_Return(EOS(STATIC_5773), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5785_0_<init>_Return(EOS(STATIC_5785), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5775_0_Supprimer_ConstantStackPush(EOS(STATIC_5775), i1796, i1147) → 5514_0_Supprimer_ConstantStackPush(EOS(STATIC_5514), i1796, i1147)
5776_0_<init>_Load(EOS(STATIC_5776), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5796_0_<init>_InvokeMethod(EOS(STATIC_5796), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5779_0_<init>_InvokeMethod(EOS(STATIC_5779), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5786_0_<init>_Load(EOS(STATIC_5786), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5781_0_<init>_InvokeMethod(EOS(STATIC_5781), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5787_0_<init>_Load(EOS(STATIC_5787), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5783_0_<init>_StackPop(EOS(STATIC_5783), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5792_0_<init>_Return(EOS(STATIC_5792), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5785_0_<init>_Return(EOS(STATIC_5785), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5793_0_<init>_Return(EOS(STATIC_5793), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5786_0_<init>_Load(EOS(STATIC_5786), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5805_0_<init>_InvokeMethod(EOS(STATIC_5805), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5787_0_<init>_Load(EOS(STATIC_5787), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5808_0_<init>_InvokeMethod(EOS(STATIC_5808), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5790_0_<init>_InvokeMethod(EOS(STATIC_5790), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5798_0_<init>_Load(EOS(STATIC_5798), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5792_0_<init>_Return(EOS(STATIC_5792), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5800_0_<init>_Return(EOS(STATIC_5800), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5793_0_<init>_Return(EOS(STATIC_5793), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821) → 5802_0_Supprimer_ArrayAccess(EOS(STATIC_5802), i1791, i1796, i1147, java.lang.Object(ARRAY(i1215)), i1821)
5796_0_<init>_InvokeMethod(EOS(STATIC_5796), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5803_0_<init>_Load(EOS(STATIC_5803), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5798_0_<init>_Load(EOS(STATIC_5798), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5810_0_<init>_Load(EOS(STATIC_5810), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5800_0_<init>_Return(EOS(STATIC_5800), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5812_0_<init>_Return(EOS(STATIC_5812), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5803_0_<init>_Load(EOS(STATIC_5803), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5823_0_<init>_InvokeMethod(EOS(STATIC_5823), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5805_0_<init>_InvokeMethod(EOS(STATIC_5805), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5814_0_<init>_Load(EOS(STATIC_5814), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5808_0_<init>_InvokeMethod(EOS(STATIC_5808), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5815_0_<init>_Load(EOS(STATIC_5815), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5810_0_<init>_Load(EOS(STATIC_5810), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5817_0_<init>_FieldAccess(EOS(STATIC_5817), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5812_0_<init>_Return(EOS(STATIC_5812), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5819_0_<init>_Return(EOS(STATIC_5819), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5814_0_<init>_Load(EOS(STATIC_5814), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5833_0_<init>_InvokeMethod(EOS(STATIC_5833), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5815_0_<init>_Load(EOS(STATIC_5815), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5835_0_<init>_InvokeMethod(EOS(STATIC_5835), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5817_0_<init>_FieldAccess(EOS(STATIC_5817), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5826_0_<init>_Load(EOS(STATIC_5826), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5819_0_<init>_Return(EOS(STATIC_5819), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5828_0_<init>_Return(EOS(STATIC_5828), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5823_0_<init>_InvokeMethod(EOS(STATIC_5823), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5830_0_<init>_Load(EOS(STATIC_5830), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5826_0_<init>_Load(EOS(STATIC_5826), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5837_0_<init>_InvokeMethod(EOS(STATIC_5837), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5828_0_<init>_Return(EOS(STATIC_5828), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796) → 5839_0_Supprimer_ArrayAccess(EOS(STATIC_5839), i1791, i1796, i1147, i1823, java.lang.Object(ARRAY(i1215)), i1796)
5830_0_<init>_Load(EOS(STATIC_5830), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5851_0_<init>_InvokeMethod(EOS(STATIC_5851), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5833_0_<init>_InvokeMethod(EOS(STATIC_5833), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5842_0_<init>_Load(EOS(STATIC_5842), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5835_0_<init>_InvokeMethod(EOS(STATIC_5835), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5843_0_<init>_Load(EOS(STATIC_5843), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5837_0_<init>_InvokeMethod(EOS(STATIC_5837), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5845_0_<init>_StackPop(EOS(STATIC_5845), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5842_0_<init>_Load(EOS(STATIC_5842), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5858_0_<init>_InvokeMethod(EOS(STATIC_5858), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5843_0_<init>_Load(EOS(STATIC_5843), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5861_0_<init>_InvokeMethod(EOS(STATIC_5861), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5845_0_<init>_StackPop(EOS(STATIC_5845), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5853_0_<init>_Return(EOS(STATIC_5853), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5851_0_<init>_InvokeMethod(EOS(STATIC_5851), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5856_0_<init>_Load(EOS(STATIC_5856), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5853_0_<init>_Return(EOS(STATIC_5853), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5863_0_<init>_Return(EOS(STATIC_5863), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5856_0_<init>_Load(EOS(STATIC_5856), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5879_0_<init>_InvokeMethod(EOS(STATIC_5879), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5858_0_<init>_InvokeMethod(EOS(STATIC_5858), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5869_0_<init>_Load(EOS(STATIC_5869), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5861_0_<init>_InvokeMethod(EOS(STATIC_5861), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5872_0_<init>_Load(EOS(STATIC_5872), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5863_0_<init>_Return(EOS(STATIC_5863), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5874_0_<init>_Return(EOS(STATIC_5874), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5869_0_<init>_Load(EOS(STATIC_5869), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5882_0_<init>_Load(EOS(STATIC_5882), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5872_0_<init>_Load(EOS(STATIC_5872), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5885_0_<init>_Load(EOS(STATIC_5885), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5874_0_<init>_Return(EOS(STATIC_5874), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5887_0_<init>_Return(EOS(STATIC_5887), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5879_0_<init>_InvokeMethod(EOS(STATIC_5879), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5892_0_<init>_Load(EOS(STATIC_5892), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5882_0_<init>_Load(EOS(STATIC_5882), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5895_0_<init>_FieldAccess(EOS(STATIC_5895), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5885_0_<init>_Load(EOS(STATIC_5885), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5899_0_<init>_FieldAccess(EOS(STATIC_5899), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5887_0_<init>_Return(EOS(STATIC_5887), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5901_0_<init>_Return(EOS(STATIC_5901), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5892_0_<init>_Load(EOS(STATIC_5892), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5907_0_<init>_Load(EOS(STATIC_5907), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5895_0_<init>_FieldAccess(EOS(STATIC_5895), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5910_0_<init>_Load(EOS(STATIC_5910), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5899_0_<init>_FieldAccess(EOS(STATIC_5899), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5913_0_<init>_Load(EOS(STATIC_5913), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5901_0_<init>_Return(EOS(STATIC_5901), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796) → 5915_0_Supprimer_ArrayAccess(EOS(STATIC_5915), i1791, i1796, i1147, i1147, java.lang.Object(ARRAY(i1215)), i1796)
5907_0_<init>_Load(EOS(STATIC_5907), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5921_0_<init>_FieldAccess(EOS(STATIC_5921), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5910_0_<init>_Load(EOS(STATIC_5910), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5924_0_<init>_InvokeMethod(EOS(STATIC_5924), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5913_0_<init>_Load(EOS(STATIC_5913), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5927_0_<init>_InvokeMethod(EOS(STATIC_5927), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5921_0_<init>_FieldAccess(EOS(STATIC_5921), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5932_0_<init>_Load(EOS(STATIC_5932), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5924_0_<init>_InvokeMethod(EOS(STATIC_5924), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5934_0_<init>_StackPop(EOS(STATIC_5934), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5927_0_<init>_InvokeMethod(EOS(STATIC_5927), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5938_0_<init>_StackPop(EOS(STATIC_5938), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5932_0_<init>_Load(EOS(STATIC_5932), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5943_0_<init>_InvokeMethod(EOS(STATIC_5943), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5934_0_<init>_StackPop(EOS(STATIC_5934), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5945_0_<init>_Return(EOS(STATIC_5945), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5938_0_<init>_StackPop(EOS(STATIC_5938), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5949_0_<init>_Return(EOS(STATIC_5949), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5943_0_<init>_InvokeMethod(EOS(STATIC_5943), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5953_0_<init>_StackPop(EOS(STATIC_5953), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5945_0_<init>_Return(EOS(STATIC_5945), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5956_0_<init>_Return(EOS(STATIC_5956), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5949_0_<init>_Return(EOS(STATIC_5949), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5959_0_<init>_Return(EOS(STATIC_5959), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5953_0_<init>_StackPop(EOS(STATIC_5953), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5965_0_<init>_Return(EOS(STATIC_5965), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5956_0_<init>_Return(EOS(STATIC_5956), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5968_0_<init>_Return(EOS(STATIC_5968), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5959_0_<init>_Return(EOS(STATIC_5959), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5971_0_<init>_Return(EOS(STATIC_5971), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5965_0_<init>_Return(EOS(STATIC_5965), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5976_0_<init>_Return(EOS(STATIC_5976), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5968_0_<init>_Return(EOS(STATIC_5968), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5979_0_<init>_Return(EOS(STATIC_5979), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5971_0_<init>_Return(EOS(STATIC_5971), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5982_0_<init>_Return(EOS(STATIC_5982), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5976_0_<init>_Return(EOS(STATIC_5976), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5986_0_<init>_Return(EOS(STATIC_5986), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5979_0_<init>_Return(EOS(STATIC_5979), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5988_0_<init>_Return(EOS(STATIC_5988), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5982_0_<init>_Return(EOS(STATIC_5982), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 5990_0_<init>_Return(EOS(STATIC_5990), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5986_0_<init>_Return(EOS(STATIC_5986), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 5996_0_<init>_Return(EOS(STATIC_5996), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
5988_0_<init>_Return(EOS(STATIC_5988), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796) → 5998_0_Supprimer_ArrayAccess(EOS(STATIC_5998), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791, java.lang.Object(ARRAY(i1215)), i1796)
5990_0_<init>_Return(EOS(STATIC_5990), java.lang.Object(ARRAY(i1215)), i1791, i1147) → 6000_0_Supprimer_ArrayAccess(EOS(STATIC_6000), java.lang.Object(ARRAY(i1215)), i1791, i1147)
5996_0_<init>_Return(EOS(STATIC_5996), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 6002_0_<init>_Return(EOS(STATIC_6002), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)
6002_0_<init>_Return(EOS(STATIC_6002), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791) → 6006_0_Supprimer_ArrayAccess(EOS(STATIC_6006), i1796, i1147, java.lang.Object(ARRAY(i1215)), i1791)

Combined rules. Obtained 1 conditional rules for P and 15 conditional rules for R.


P rules:
4429_1_HeapSort_InvokeMethod(5725_0_Supprimer_Return(EOS(STATIC_5725)), x0) → 4429_1_HeapSort_InvokeMethod(4429_0_Supprimer_FieldAccess(EOS(STATIC_4429)), +(x0, -1)) | >(+(x0, 1), 1)
R rules:
4429_0_Supprimer_FieldAccess(EOS(STATIC_4429)) → 4641_0_Supprimer_ArrayAccess(EOS(STATIC_4641), java.lang.Object(ARRAY(x0)), 0, java.lang.Object(ARRAY(x0)), -(x1, 1)) | <=(x1, 0)
4429_0_Supprimer_FieldAccess(EOS(STATIC_4429)) → 4652_0_Supprimer_ArrayAccess(EOS(STATIC_4652), java.lang.Object(ARRAY(x0)), 0, java.lang.Object(ARRAY(x0)), -(x1, 1)) | <=(x0, -(x1, 1))
4429_0_Supprimer_FieldAccess(EOS(STATIC_4429)) → 5524_0_Supprimer_GE(EOS(STATIC_5524), 0, x0, 1, x1)
5524_0_Supprimer_GE(EOS(STATIC_5524), x0, x1, x2, x3) → 5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), x0, +(*(2, x0), 1), x1, x1, java.lang.Object(ARRAY(x4)), +(*(2, x0), 1)) | &&(>(x3, x2), <=(0, *(2, x0)))
5524_0_Supprimer_GE(EOS(STATIC_5524), x0, x1, x2, x3) → 5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), x0, +(*(2, x0), 2), x1, x1, java.lang.Object(ARRAY(x4)), +(*(2, x0), 2)) | &&(>(x3, x2), <=(0, *(2, x0)))
5524_0_Supprimer_GE(EOS(STATIC_5524), x0, x1, x2, x3) → 5710_0_Supprimer_ArrayAccess(EOS(STATIC_5710), java.lang.Object(ARRAY(x4)), x0, x1) | <=(x3, x2)
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), x0, x1, x2, x2, java.lang.Object(ARRAY(x3)), x1) → 5710_0_Supprimer_ArrayAccess(EOS(STATIC_5710), java.lang.Object(ARRAY(x4)), x0, x2) | >(x3, x1)
5710_0_Supprimer_ArrayAccess(EOS(STATIC_5710), java.lang.Object(ARRAY(x0)), x1, x2) → 5725_0_Supprimer_Return(EOS(STATIC_5725)) | <(x1, x0)
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), x0, x1, x2, x2, java.lang.Object(ARRAY(x3)), x1) → 5524_0_Supprimer_GE(EOS(STATIC_5524), x1, x2, +(*(2, x1), 1), x4) | &&(>(x3, x1), <=(0, *(2, x1)))
5524_0_Supprimer_GE(EOS(STATIC_5524), x0, x1, x2, x3) → 5802_0_Supprimer_ArrayAccess(EOS(STATIC_5802), x0, +(*(2, x0), 1), x1, java.lang.Object(ARRAY(x4)), +(*(2, x0), 2)) | &&(&&(<=(x4, +(*(2, x0), 2)), >(x3, x2)), <=(0, *(2, x0)))
5524_0_Supprimer_GE(EOS(STATIC_5524), x0, x1, x2, x3) → 5839_0_Supprimer_ArrayAccess(EOS(STATIC_5839), x0, +(*(2, x0), 1), x1, x4, java.lang.Object(ARRAY(x5)), +(*(2, x0), 1)) | &&(&&(<=(x5, +(*(2, x0), 1)), >(x3, x2)), <=(0, *(2, x0)))
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), x0, x1, x2, x2, java.lang.Object(ARRAY(x3)), x1) → 5915_0_Supprimer_ArrayAccess(EOS(STATIC_5915), x0, x1, x2, x2, java.lang.Object(ARRAY(x3)), x1) | <=(x3, x1)
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), x0, x1, x2, x2, java.lang.Object(ARRAY(x3)), x1) → 5998_0_Supprimer_ArrayAccess(EOS(STATIC_5998), x1, x2, java.lang.Object(ARRAY(x4)), x0, java.lang.Object(ARRAY(x4)), x1) | &&(<=(x4, x1), >(x3, x1))
5710_0_Supprimer_ArrayAccess(EOS(STATIC_5710), java.lang.Object(ARRAY(x0)), x1, x2) → 6000_0_Supprimer_ArrayAccess(EOS(STATIC_6000), java.lang.Object(ARRAY(x0)), x1, x2) | >=(x1, x0)
5655_0_Supprimer_ArrayAccess(EOS(STATIC_5655), x0, x1, x2, x2, java.lang.Object(ARRAY(x3)), x1) → 6006_0_Supprimer_ArrayAccess(EOS(STATIC_6006), x1, x2, java.lang.Object(ARRAY(x4)), x0) | &&(&&(>(x4, x1), <=(x4, x0)), >(x3, x1))

Filtered ground terms:



4429_0_Supprimer_FieldAccess(x1) → 4429_0_Supprimer_FieldAccess
Cond_4429_1_HeapSort_InvokeMethod(x1, x2, x3) → Cond_4429_1_HeapSort_InvokeMethod(x1, x3)
5725_0_Supprimer_Return(x1) → 5725_0_Supprimer_Return
6006_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5) → 6006_0_Supprimer_ArrayAccess(x2, x3, x4, x5)
Cond_5655_0_Supprimer_ArrayAccess4(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_5655_0_Supprimer_ArrayAccess4(x1, x3, x4, x5, x6, x7, x8, x9)
5655_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5655_0_Supprimer_ArrayAccess(x2, x3, x4, x5, x6, x7)
6000_0_Supprimer_ArrayAccess(x1, x2, x3, x4) → 6000_0_Supprimer_ArrayAccess(x2, x3, x4)
Cond_5710_0_Supprimer_ArrayAccess1(x1, x2, x3, x4, x5) → Cond_5710_0_Supprimer_ArrayAccess1(x1, x3, x4, x5)
5710_0_Supprimer_ArrayAccess(x1, x2, x3, x4) → 5710_0_Supprimer_ArrayAccess(x2, x3, x4)
5998_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5998_0_Supprimer_ArrayAccess(x2, x3, x4, x5, x6, x7)
Cond_5655_0_Supprimer_ArrayAccess3(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_5655_0_Supprimer_ArrayAccess3(x1, x3, x4, x5, x6, x7, x8, x9)
5915_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5915_0_Supprimer_ArrayAccess(x2, x3, x4, x5, x6, x7)
Cond_5655_0_Supprimer_ArrayAccess2(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_5655_0_Supprimer_ArrayAccess2(x1, x3, x4, x5, x6, x7, x8)
5839_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5839_0_Supprimer_ArrayAccess(x2, x3, x4, x5, x6, x7)
Cond_5524_0_Supprimer_GE4(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_5524_0_Supprimer_GE4(x1, x3, x4, x5, x6, x7, x8)
5524_0_Supprimer_GE(x1, x2, x3, x4, x5) → 5524_0_Supprimer_GE(x2, x3, x4, x5)
5802_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5802_0_Supprimer_ArrayAccess(x2, x3, x4, x5, x6)
Cond_5524_0_Supprimer_GE3(x1, x2, x3, x4, x5, x6, x7) → Cond_5524_0_Supprimer_GE3(x1, x3, x4, x5, x6, x7)
Cond_5655_0_Supprimer_ArrayAccess1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_5655_0_Supprimer_ArrayAccess1(x1, x3, x4, x5, x6, x7, x8, x9)
Cond_5710_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5) → Cond_5710_0_Supprimer_ArrayAccess(x1, x3, x4, x5)
Cond_5655_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_5655_0_Supprimer_ArrayAccess(x1, x3, x4, x5, x6, x7, x8, x9)
Cond_5524_0_Supprimer_GE2(x1, x2, x3, x4, x5, x6, x7) → Cond_5524_0_Supprimer_GE2(x1, x3, x4, x5, x6, x7)
Cond_5524_0_Supprimer_GE1(x1, x2, x3, x4, x5, x6, x7) → Cond_5524_0_Supprimer_GE1(x1, x3, x4, x5, x6, x7)
Cond_5524_0_Supprimer_GE(x1, x2, x3, x4, x5, x6, x7) → Cond_5524_0_Supprimer_GE(x1, x3, x4, x5, x6, x7)
4652_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5) → 4652_0_Supprimer_ArrayAccess(x2, x4, x5)
Cond_4429_0_Supprimer_FieldAccess1(x1, x2, x3, x4) → Cond_4429_0_Supprimer_FieldAccess1(x1, x3, x4)
4641_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5) → 4641_0_Supprimer_ArrayAccess(x2, x4, x5)
Cond_4429_0_Supprimer_FieldAccess(x1, x2, x3, x4) → Cond_4429_0_Supprimer_FieldAccess(x1, x3, x4)

Filtered duplicate args:



4641_0_Supprimer_ArrayAccess(x1, x2, x3) → 4641_0_Supprimer_ArrayAccess(x2, x3)
4652_0_Supprimer_ArrayAccess(x1, x2, x3) → 4652_0_Supprimer_ArrayAccess(x2, x3)
5655_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5655_0_Supprimer_ArrayAccess(x1, x4, x5, x6)
Cond_5655_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_5655_0_Supprimer_ArrayAccess(x1, x2, x5, x6, x7, x8)
Cond_5655_0_Supprimer_ArrayAccess1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_5655_0_Supprimer_ArrayAccess1(x1, x2, x5, x6, x7, x8)
5802_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5) → 5802_0_Supprimer_ArrayAccess(x2, x3, x4, x5)
5839_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5839_0_Supprimer_ArrayAccess(x3, x4, x5, x6)
Cond_5655_0_Supprimer_ArrayAccess2(x1, x2, x3, x4, x5, x6, x7) → Cond_5655_0_Supprimer_ArrayAccess2(x1, x2, x5, x6, x7)
5915_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5915_0_Supprimer_ArrayAccess(x1, x4, x5, x6)
Cond_5655_0_Supprimer_ArrayAccess3(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_5655_0_Supprimer_ArrayAccess3(x1, x2, x5, x6, x7, x8)
5998_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5998_0_Supprimer_ArrayAccess(x2, x4, x5, x6)
Cond_5655_0_Supprimer_ArrayAccess4(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_5655_0_Supprimer_ArrayAccess4(x1, x2, x5, x6, x7, x8)

Filtered unneeded arguments:



Cond_4429_0_Supprimer_FieldAccess(x1, x2, x3) → Cond_4429_0_Supprimer_FieldAccess(x1)
Cond_4429_0_Supprimer_FieldAccess1(x1, x2, x3) → Cond_4429_0_Supprimer_FieldAccess1(x1)
Cond_5524_0_Supprimer_GE(x1, x2, x3, x4, x5, x6) → Cond_5524_0_Supprimer_GE(x1, x2, x6)
Cond_5524_0_Supprimer_GE1(x1, x2, x3, x4, x5, x6) → Cond_5524_0_Supprimer_GE1(x1, x2, x6)
Cond_5524_0_Supprimer_GE2(x1, x2, x3, x4, x5, x6) → Cond_5524_0_Supprimer_GE2(x1, x2, x6)
Cond_5655_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5, x6) → Cond_5655_0_Supprimer_ArrayAccess(x1, x2, x6)
Cond_5710_0_Supprimer_ArrayAccess(x1, x2, x3, x4) → Cond_5710_0_Supprimer_ArrayAccess(x1)
Cond_5655_0_Supprimer_ArrayAccess1(x1, x2, x3, x4, x5, x6) → Cond_5655_0_Supprimer_ArrayAccess1(x1, x5, x6)
Cond_5524_0_Supprimer_GE3(x1, x2, x3, x4, x5, x6) → Cond_5524_0_Supprimer_GE3(x1)
Cond_5524_0_Supprimer_GE4(x1, x2, x3, x4, x5, x6, x7) → Cond_5524_0_Supprimer_GE4(x1)
Cond_5655_0_Supprimer_ArrayAccess2(x1, x2, x3, x4, x5) → Cond_5655_0_Supprimer_ArrayAccess2(x1)
Cond_5655_0_Supprimer_ArrayAccess3(x1, x2, x3, x4, x5, x6) → Cond_5655_0_Supprimer_ArrayAccess3(x1)
Cond_5710_0_Supprimer_ArrayAccess1(x1, x2, x3, x4) → Cond_5710_0_Supprimer_ArrayAccess1(x1)
Cond_5655_0_Supprimer_ArrayAccess4(x1, x2, x3, x4, x5, x6) → Cond_5655_0_Supprimer_ArrayAccess4(x1)
5524_0_Supprimer_GE(x1, x2, x3, x4) → 5524_0_Supprimer_GE(x1, x3, x4)
5655_0_Supprimer_ArrayAccess(x1, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x1, x3, x4)
5710_0_Supprimer_ArrayAccess(x1, x2, x3) → 5710_0_Supprimer_ArrayAccess(x1, x2)

Combined rules. Obtained 1 conditional rules for P and 15 conditional rules for R.


P rules:
4429_1_HeapSort_InvokeMethod(5725_0_Supprimer_Return, x0) → 4429_1_HeapSort_InvokeMethod(4429_0_Supprimer_FieldAccess, +(x0, -1)) | >(x0, 0)
R rules:
4429_0_Supprimer_FieldAccess4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), -(x1, 1)) | <=(x1, 0)
4429_0_Supprimer_FieldAccess4652_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), -(x1, 1)) | <=(x0, -(x1, 1))
4429_0_Supprimer_FieldAccess5524_0_Supprimer_GE(0, 1, x1)
5524_0_Supprimer_GE(x0, x2, x3) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), +(*(2, x0), 1)) | &&(>(x3, x2), <=(0, *(2, x0)))
5524_0_Supprimer_GE(x0, x2, x3) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), +(*(2, x0), 2)) | &&(>(x3, x2), <=(0, *(2, x0)))
5524_0_Supprimer_GE(x0, x2, x3) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0) | <=(x3, x2)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0) | >(x3, x1)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → 5725_0_Supprimer_Return | <(x1, x0)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → 5524_0_Supprimer_GE(x1, +(*(2, x1), 1), x4) | &&(>(x3, x1), <=(0, *(2, x1)))
5524_0_Supprimer_GE(x0, x2, x3) → 5802_0_Supprimer_ArrayAccess(+(*(2, x0), 1), x1, java.lang.Object(ARRAY(x4)), +(*(2, x0), 2)) | &&(&&(<=(x4, +(*(2, x0), 2)), >(x3, x2)), <=(0, *(2, x0)))
5524_0_Supprimer_GE(x0, x2, x3) → 5839_0_Supprimer_ArrayAccess(x1, x4, java.lang.Object(ARRAY(x5)), +(*(2, x0), 1)) | &&(&&(<=(x5, +(*(2, x0), 1)), >(x3, x2)), <=(0, *(2, x0)))
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → 5915_0_Supprimer_ArrayAccess(x0, x2, java.lang.Object(ARRAY(x3)), x1) | <=(x3, x1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → 5998_0_Supprimer_ArrayAccess(x2, x0, java.lang.Object(ARRAY(x4)), x1) | &&(<=(x4, x1), >(x3, x1))
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → 6000_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1, x2) | >=(x1, x0)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → 6006_0_Supprimer_ArrayAccess(x1, x2, java.lang.Object(ARRAY(x4)), x0) | &&(&&(>(x4, x1), <=(x4, x0)), >(x3, x1))

Performed bisimulation on rules. Used the following equivalence classes: {[4641_0_Supprimer_ArrayAccess_2, 4652_0_Supprimer_ArrayAccess_2]=4641_0_Supprimer_ArrayAccess_2, [Cond_5524_0_Supprimer_GE_5, Cond_5524_0_Supprimer_GE1_5]=Cond_5524_0_Supprimer_GE_5, [5915_0_Supprimer_ArrayAccess_4, 5998_0_Supprimer_ArrayAccess_4, 6006_0_Supprimer_ArrayAccess_4]=5915_0_Supprimer_ArrayAccess_4}


Finished conversion. Obtained 2 rules for P and 28 rules for R. System has predefined symbols.


P rules:
4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0) → COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0, 0), 5725_0_Supprimer_Return, x0)
COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0, -1))
R rules:
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess(<=(x1, 0), x0, x1)
Cond_4429_0_Supprimer_FieldAccess(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), -(x1, 1))
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess1(<=(x0, -(x1, 1)), x0, x1)
Cond_4429_0_Supprimer_FieldAccess1(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), -(x1, 1))
4429_0_Supprimer_FieldAccess5524_0_Supprimer_GE(0, 1, x1)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE(&&(>(x3, x2), <=(0, *(2, x0))), x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), +(*(2, x0), 1))
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), +(*(2, x0), 2))
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE2(<=(x3, x2), x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE2(TRUE, x0, x2, x3, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess(>(x3, x1), x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess(<(x1, x0), java.lang.Object(ARRAY(x0)), x1)
Cond_5710_0_Supprimer_ArrayAccess(TRUE, java.lang.Object(ARRAY(x0)), x1) → 5725_0_Supprimer_Return
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess1(&&(>(x3, x1), <=(0, *(2, x1))), x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess1(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5524_0_Supprimer_GE(x1, +(*(2, x1), 1), x4)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE3(&&(&&(<=(x4, +(*(2, x0), 2)), >(x3, x2)), <=(0, *(2, x0))), x0, x2, x3, x1, x4)
Cond_5524_0_Supprimer_GE3(TRUE, x0, x2, x3, x1, x4) → 5802_0_Supprimer_ArrayAccess(+(*(2, x0), 1), x1, java.lang.Object(ARRAY(x4)), +(*(2, x0), 2))
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE4(&&(&&(<=(x5, +(*(2, x0), 1)), >(x3, x2)), <=(0, *(2, x0))), x0, x2, x3, x1, x4, x5)
Cond_5524_0_Supprimer_GE4(TRUE, x0, x2, x3, x1, x4, x5) → 5839_0_Supprimer_ArrayAccess(x1, x4, java.lang.Object(ARRAY(x5)), +(*(2, x0), 1))
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess2(<=(x3, x1), x0, java.lang.Object(ARRAY(x3)), x1, x2)
Cond_5655_0_Supprimer_ArrayAccess2(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2) → 5915_0_Supprimer_ArrayAccess(x0, x2, java.lang.Object(ARRAY(x3)), x1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess3(&&(<=(x4, x1), >(x3, x1)), x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess3(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x2, x0, java.lang.Object(ARRAY(x4)), x1)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess1(>=(x1, x0), java.lang.Object(ARRAY(x0)), x1, x2)
Cond_5710_0_Supprimer_ArrayAccess1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 6000_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1, x2)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess4(&&(&&(>(x4, x1), <=(x4, x0)), >(x3, x1)), x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess4(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x1, x2, java.lang.Object(ARRAY(x4)), x0)

(21) 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:
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess(x1 <= 0, x0, x1)
Cond_4429_0_Supprimer_FieldAccess(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1 - 1)
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess1(x0 <= x1 - 1, x0, x1)
Cond_4429_0_Supprimer_FieldAccess1(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1 - 1)
4429_0_Supprimer_FieldAccess5524_0_Supprimer_GE(0, 1, x1)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE(x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), 2 * x0 + 1)
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), 2 * x0 + 2)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE2(x3 <= x2, x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE2(TRUE, x0, x2, x3, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess(x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess(x1 < x0, java.lang.Object(ARRAY(x0)), x1)
Cond_5710_0_Supprimer_ArrayAccess(TRUE, java.lang.Object(ARRAY(x0)), x1) → 5725_0_Supprimer_Return
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess1(x3 > x1 && 0 <= 2 * x1, x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess1(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5524_0_Supprimer_GE(x1, 2 * x1 + 1, x4)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE3(x4 <= 2 * x0 + 2 && x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x1, x4)
Cond_5524_0_Supprimer_GE3(TRUE, x0, x2, x3, x1, x4) → 5802_0_Supprimer_ArrayAccess(2 * x0 + 1, x1, java.lang.Object(ARRAY(x4)), 2 * x0 + 2)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE4(x5 <= 2 * x0 + 1 && x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x1, x4, x5)
Cond_5524_0_Supprimer_GE4(TRUE, x0, x2, x3, x1, x4, x5) → 5839_0_Supprimer_ArrayAccess(x1, x4, java.lang.Object(ARRAY(x5)), 2 * x0 + 1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess2(x3 <= x1, x0, java.lang.Object(ARRAY(x3)), x1, x2)
Cond_5655_0_Supprimer_ArrayAccess2(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2) → 5915_0_Supprimer_ArrayAccess(x0, x2, java.lang.Object(ARRAY(x3)), x1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess3(x4 <= x1 && x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess3(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x2, x0, java.lang.Object(ARRAY(x4)), x1)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess1(x1 >= x0, java.lang.Object(ARRAY(x0)), x1, x2)
Cond_5710_0_Supprimer_ArrayAccess1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 6000_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1, x2)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess4(x4 > x1 && x4 <= x0 && x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess4(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x1, x2, java.lang.Object(ARRAY(x4)), x0)

The integer pair graph contains the following rules and edges:
(0): 4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0]) → COND_4429_1_HEAPSORT_INVOKEMETHOD(x0[0] > 0, 5725_0_Supprimer_Return, x0[0])
(1): COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0[1]) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, x0[1] + -1)

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


(1) -> (0), if (4429_0_Supprimer_FieldAccess* 5725_0_Supprimer_Returnx0[1] + -1* x0[0])



The set Q consists of the following terms:
4429_0_Supprimer_FieldAccess
Cond_4429_0_Supprimer_FieldAccess(TRUE, x0, x1)
Cond_4429_0_Supprimer_FieldAccess1(TRUE, x0, x1)
5524_0_Supprimer_GE(x0, x1, x2)
Cond_5524_0_Supprimer_GE(TRUE, x0, x1, x2, x3)
Cond_5524_0_Supprimer_GE2(TRUE, x0, x1, x2, x3)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x1)), x2)
Cond_5655_0_Supprimer_ArrayAccess(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1)
Cond_5710_0_Supprimer_ArrayAccess(TRUE, java.lang.Object(ARRAY(x0)), x1)
Cond_5655_0_Supprimer_ArrayAccess1(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
Cond_5524_0_Supprimer_GE3(TRUE, x0, x1, x2, x3, x4)
Cond_5524_0_Supprimer_GE4(TRUE, x0, x1, x2, x3, x4, x5)
Cond_5655_0_Supprimer_ArrayAccess2(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
Cond_5655_0_Supprimer_ArrayAccess3(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3, x4)
Cond_5710_0_Supprimer_ArrayAccess1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2)
Cond_5655_0_Supprimer_ArrayAccess4(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3, x4)

(22) 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@117a26fe 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 4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0) → COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0, 0), 5725_0_Supprimer_Return, x0) the following chains were created:
  • We consider the chain 4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0]) → COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0]), COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0[1]) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0])≥NonInfC∧4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0])≥COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])∧(UIncreasing(COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])), ≥))



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

    (2)    (>(x0[0], 0)=TRUE4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0])≥NonInfC∧4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0])≥COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])∧(UIncreasing(COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])), ≥))



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

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])), ≥)∧[(-1)Bound*bni_56] + [(2)bni_56]x0[0] ≥ 0∧[(-1)bso_57] ≥ 0)



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

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])), ≥)∧[(-1)Bound*bni_56] + [(2)bni_56]x0[0] ≥ 0∧[(-1)bso_57] ≥ 0)



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

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])), ≥)∧[(-1)Bound*bni_56] + [(2)bni_56]x0[0] ≥ 0∧[(-1)bso_57] ≥ 0)



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

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])), ≥)∧[(-1)Bound*bni_56 + (2)bni_56] + [(2)bni_56]x0[0] ≥ 0∧[(-1)bso_57] ≥ 0)







For Pair COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0, -1)) the following chains were created:
  • We consider the chain COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0[1]) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1)) which results in the following constraint:

    (7)    (COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0[1])≥NonInfC∧COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0[1])≥4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))∧(UIncreasing(4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))), ≥))



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

    (8)    ((UIncreasing(4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))), ≥)∧[bni_58] = 0∧[2 + (-1)bso_59] ≥ 0)



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

    (9)    ((UIncreasing(4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))), ≥)∧[bni_58] = 0∧[2 + (-1)bso_59] ≥ 0)



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

    (10)    ((UIncreasing(4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))), ≥)∧[bni_58] = 0∧[2 + (-1)bso_59] ≥ 0)



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

    (11)    ((UIncreasing(4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))), ≥)∧[bni_58] = 0∧0 = 0∧[2 + (-1)bso_59] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0) → COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0, 0), 5725_0_Supprimer_Return, x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])), ≥)∧[(-1)Bound*bni_56 + (2)bni_56] + [(2)bni_56]x0[0] ≥ 0∧[(-1)bso_57] ≥ 0)

  • COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0, -1))
    • ((UIncreasing(4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))), ≥)∧[bni_58] = 0∧0 = 0∧[2 + (-1)bso_59] ≥ 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(4429_0_Supprimer_FieldAccess) = [-1]   
POL(Cond_4429_0_Supprimer_FieldAccess(x1, x2, x3)) = [-1] + [-1]x3   
POL(<=(x1, x2)) = [-1]   
POL(0) = 0   
POL(4641_0_Supprimer_ArrayAccess(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(Cond_4429_0_Supprimer_FieldAccess1(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(5524_0_Supprimer_GE(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1   
POL(Cond_5524_0_Supprimer_GE(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(*(x1, x2)) = x1·x2   
POL(2) = [2]   
POL(5655_0_Supprimer_ArrayAccess(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1   
POL(+(x1, x2)) = x1 + x2   
POL(Cond_5524_0_Supprimer_GE2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + [-1]x2   
POL(5710_0_Supprimer_ArrayAccess(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(Cond_5655_0_Supprimer_ArrayAccess(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + [-1]x2   
POL(Cond_5710_0_Supprimer_ArrayAccess(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(<(x1, x2)) = [-1]   
POL(5725_0_Supprimer_Return) = [-1]   
POL(Cond_5655_0_Supprimer_ArrayAccess1(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + [-1]x2   
POL(Cond_5524_0_Supprimer_GE3(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [-1]x4 + [-1]x3 + [-1]x2   
POL(5802_0_Supprimer_ArrayAccess(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + [-1]x1   
POL(Cond_5524_0_Supprimer_GE4(x1, x2, x3, x4, x5, x6, x7)) = [-1] + [-1]x7 + [-1]x4 + [-1]x3 + [-1]x2   
POL(5839_0_Supprimer_ArrayAccess(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3   
POL(Cond_5655_0_Supprimer_ArrayAccess2(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3 + [-1]x2   
POL(5915_0_Supprimer_ArrayAccess(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + [-1]x1 + [-1]x2   
POL(Cond_5655_0_Supprimer_ArrayAccess3(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [-1]x4 + [-1]x3 + [-1]x2   
POL(Cond_5710_0_Supprimer_ArrayAccess1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(>=(x1, x2)) = [-1]   
POL(6000_0_Supprimer_ArrayAccess(x1, x2, x3)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_5655_0_Supprimer_ArrayAccess4(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [-1]x4 + [-1]x3 + [-1]x2   
POL(4429_1_HEAPSORT_INVOKEMETHOD(x1, x2)) = [2]x2   
POL(COND_4429_1_HEAPSORT_INVOKEMETHOD(x1, x2, x3)) = [2]x3   
POL(-1) = [-1]   

The following pairs are in P>:

COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0[1]) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, +(x0[1], -1))

The following pairs are in Pbound:

4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0]) → COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])

The following pairs are in P:

4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0]) → COND_4429_1_HEAPSORT_INVOKEMETHOD(>(x0[0], 0), 5725_0_Supprimer_Return, x0[0])

There are no usable rules.

(23) Complex Obligation (AND)

(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:
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess(x1 <= 0, x0, x1)
Cond_4429_0_Supprimer_FieldAccess(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1 - 1)
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess1(x0 <= x1 - 1, x0, x1)
Cond_4429_0_Supprimer_FieldAccess1(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1 - 1)
4429_0_Supprimer_FieldAccess5524_0_Supprimer_GE(0, 1, x1)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE(x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), 2 * x0 + 1)
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), 2 * x0 + 2)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE2(x3 <= x2, x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE2(TRUE, x0, x2, x3, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess(x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess(x1 < x0, java.lang.Object(ARRAY(x0)), x1)
Cond_5710_0_Supprimer_ArrayAccess(TRUE, java.lang.Object(ARRAY(x0)), x1) → 5725_0_Supprimer_Return
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess1(x3 > x1 && 0 <= 2 * x1, x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess1(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5524_0_Supprimer_GE(x1, 2 * x1 + 1, x4)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE3(x4 <= 2 * x0 + 2 && x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x1, x4)
Cond_5524_0_Supprimer_GE3(TRUE, x0, x2, x3, x1, x4) → 5802_0_Supprimer_ArrayAccess(2 * x0 + 1, x1, java.lang.Object(ARRAY(x4)), 2 * x0 + 2)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE4(x5 <= 2 * x0 + 1 && x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x1, x4, x5)
Cond_5524_0_Supprimer_GE4(TRUE, x0, x2, x3, x1, x4, x5) → 5839_0_Supprimer_ArrayAccess(x1, x4, java.lang.Object(ARRAY(x5)), 2 * x0 + 1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess2(x3 <= x1, x0, java.lang.Object(ARRAY(x3)), x1, x2)
Cond_5655_0_Supprimer_ArrayAccess2(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2) → 5915_0_Supprimer_ArrayAccess(x0, x2, java.lang.Object(ARRAY(x3)), x1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess3(x4 <= x1 && x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess3(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x2, x0, java.lang.Object(ARRAY(x4)), x1)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess1(x1 >= x0, java.lang.Object(ARRAY(x0)), x1, x2)
Cond_5710_0_Supprimer_ArrayAccess1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 6000_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1, x2)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess4(x4 > x1 && x4 <= x0 && x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess4(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x1, x2, java.lang.Object(ARRAY(x4)), x0)

The integer pair graph contains the following rules and edges:
(0): 4429_1_HEAPSORT_INVOKEMETHOD(5725_0_Supprimer_Return, x0[0]) → COND_4429_1_HEAPSORT_INVOKEMETHOD(x0[0] > 0, 5725_0_Supprimer_Return, x0[0])


The set Q consists of the following terms:
4429_0_Supprimer_FieldAccess
Cond_4429_0_Supprimer_FieldAccess(TRUE, x0, x1)
Cond_4429_0_Supprimer_FieldAccess1(TRUE, x0, x1)
5524_0_Supprimer_GE(x0, x1, x2)
Cond_5524_0_Supprimer_GE(TRUE, x0, x1, x2, x3)
Cond_5524_0_Supprimer_GE2(TRUE, x0, x1, x2, x3)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x1)), x2)
Cond_5655_0_Supprimer_ArrayAccess(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1)
Cond_5710_0_Supprimer_ArrayAccess(TRUE, java.lang.Object(ARRAY(x0)), x1)
Cond_5655_0_Supprimer_ArrayAccess1(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
Cond_5524_0_Supprimer_GE3(TRUE, x0, x1, x2, x3, x4)
Cond_5524_0_Supprimer_GE4(TRUE, x0, x1, x2, x3, x4, x5)
Cond_5655_0_Supprimer_ArrayAccess2(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
Cond_5655_0_Supprimer_ArrayAccess3(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3, x4)
Cond_5710_0_Supprimer_ArrayAccess1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2)
Cond_5655_0_Supprimer_ArrayAccess4(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3, x4)

(25) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(26) TRUE

(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:
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess(x1 <= 0, x0, x1)
Cond_4429_0_Supprimer_FieldAccess(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1 - 1)
4429_0_Supprimer_FieldAccessCond_4429_0_Supprimer_FieldAccess1(x0 <= x1 - 1, x0, x1)
Cond_4429_0_Supprimer_FieldAccess1(TRUE, x0, x1) → 4641_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1 - 1)
4429_0_Supprimer_FieldAccess5524_0_Supprimer_GE(0, 1, x1)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE(x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), 2 * x0 + 1)
Cond_5524_0_Supprimer_GE(TRUE, x0, x2, x3, x4) → 5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x4)), 2 * x0 + 2)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE2(x3 <= x2, x0, x2, x3, x4)
Cond_5524_0_Supprimer_GE2(TRUE, x0, x2, x3, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess(x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x4)), x0)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess(x1 < x0, java.lang.Object(ARRAY(x0)), x1)
Cond_5710_0_Supprimer_ArrayAccess(TRUE, java.lang.Object(ARRAY(x0)), x1) → 5725_0_Supprimer_Return
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess1(x3 > x1 && 0 <= 2 * x1, x0, java.lang.Object(ARRAY(x3)), x1, x4)
Cond_5655_0_Supprimer_ArrayAccess1(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x4) → 5524_0_Supprimer_GE(x1, 2 * x1 + 1, x4)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE3(x4 <= 2 * x0 + 2 && x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x1, x4)
Cond_5524_0_Supprimer_GE3(TRUE, x0, x2, x3, x1, x4) → 5802_0_Supprimer_ArrayAccess(2 * x0 + 1, x1, java.lang.Object(ARRAY(x4)), 2 * x0 + 2)
5524_0_Supprimer_GE(x0, x2, x3) → Cond_5524_0_Supprimer_GE4(x5 <= 2 * x0 + 1 && x3 > x2 && 0 <= 2 * x0, x0, x2, x3, x1, x4, x5)
Cond_5524_0_Supprimer_GE4(TRUE, x0, x2, x3, x1, x4, x5) → 5839_0_Supprimer_ArrayAccess(x1, x4, java.lang.Object(ARRAY(x5)), 2 * x0 + 1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess2(x3 <= x1, x0, java.lang.Object(ARRAY(x3)), x1, x2)
Cond_5655_0_Supprimer_ArrayAccess2(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2) → 5915_0_Supprimer_ArrayAccess(x0, x2, java.lang.Object(ARRAY(x3)), x1)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess3(x4 <= x1 && x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess3(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x2, x0, java.lang.Object(ARRAY(x4)), x1)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1) → Cond_5710_0_Supprimer_ArrayAccess1(x1 >= x0, java.lang.Object(ARRAY(x0)), x1, x2)
Cond_5710_0_Supprimer_ArrayAccess1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 6000_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1, x2)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x3)), x1) → Cond_5655_0_Supprimer_ArrayAccess4(x4 > x1 && x4 <= x0 && x3 > x1, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4)
Cond_5655_0_Supprimer_ArrayAccess4(TRUE, x0, java.lang.Object(ARRAY(x3)), x1, x2, x4) → 5915_0_Supprimer_ArrayAccess(x1, x2, java.lang.Object(ARRAY(x4)), x0)

The integer pair graph contains the following rules and edges:
(1): COND_4429_1_HEAPSORT_INVOKEMETHOD(TRUE, 5725_0_Supprimer_Return, x0[1]) → 4429_1_HEAPSORT_INVOKEMETHOD(4429_0_Supprimer_FieldAccess, x0[1] + -1)


The set Q consists of the following terms:
4429_0_Supprimer_FieldAccess
Cond_4429_0_Supprimer_FieldAccess(TRUE, x0, x1)
Cond_4429_0_Supprimer_FieldAccess1(TRUE, x0, x1)
5524_0_Supprimer_GE(x0, x1, x2)
Cond_5524_0_Supprimer_GE(TRUE, x0, x1, x2, x3)
Cond_5524_0_Supprimer_GE2(TRUE, x0, x1, x2, x3)
5655_0_Supprimer_ArrayAccess(x0, java.lang.Object(ARRAY(x1)), x2)
Cond_5655_0_Supprimer_ArrayAccess(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
5710_0_Supprimer_ArrayAccess(java.lang.Object(ARRAY(x0)), x1)
Cond_5710_0_Supprimer_ArrayAccess(TRUE, java.lang.Object(ARRAY(x0)), x1)
Cond_5655_0_Supprimer_ArrayAccess1(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
Cond_5524_0_Supprimer_GE3(TRUE, x0, x1, x2, x3, x4)
Cond_5524_0_Supprimer_GE4(TRUE, x0, x1, x2, x3, x4, x5)
Cond_5655_0_Supprimer_ArrayAccess2(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3)
Cond_5655_0_Supprimer_ArrayAccess3(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3, x4)
Cond_5710_0_Supprimer_ArrayAccess1(TRUE, java.lang.Object(ARRAY(x0)), x1, x2)
Cond_5655_0_Supprimer_ArrayAccess4(TRUE, x0, java.lang.Object(ARRAY(x1)), x2, x3, x4)

(28) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(29) TRUE

(30) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: TriTas.HeapSort()V
SCC calls the following helper methods: TriTas.Ajouter(I)V
Performed SCC analyses: UsedFieldsAnalysis

(31) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 19 rules for P and 212 rules for R.


P rules:
4125_0_HeapSort_FieldAccess(EOS(STATIC_4125(i922)), i925, i925) → 4138_0_HeapSort_GE(EOS(STATIC_4138(i922)), i925, i925, i922)
4138_0_HeapSort_GE(EOS(STATIC_4138(i922)), i925, i925, i922) → 4150_0_HeapSort_GE(EOS(STATIC_4150(i922)), i925, i925, i922)
4150_0_HeapSort_GE(EOS(STATIC_4150(i922)), i925, i925, i922) → 4169_0_HeapSort_FieldAccess(EOS(STATIC_4169(i922)), i925) | <(i925, i922)
4169_0_HeapSort_FieldAccess(EOS(STATIC_4169(i922)), i925) → 4185_0_HeapSort_Load(EOS(STATIC_4185(i922)), i925, java.lang.Object(ARRAY(i922)))
4185_0_HeapSort_Load(EOS(STATIC_4185(i922)), i925, java.lang.Object(ARRAY(i922))) → 4199_0_HeapSort_ArrayAccess(EOS(STATIC_4199(i922)), i925, java.lang.Object(ARRAY(i922)), i925)
4199_0_HeapSort_ArrayAccess(EOS(STATIC_4199(i922)), i925, java.lang.Object(ARRAY(i922)), i925) → 4214_0_HeapSort_ArrayAccess(EOS(STATIC_4214(i922)), i925, java.lang.Object(ARRAY(i922)), i925)
4214_0_HeapSort_ArrayAccess(EOS(STATIC_4214(i922)), i925, java.lang.Object(ARRAY(i922)), i925) → 4227_0_HeapSort_InvokeMethod(EOS(STATIC_4227(i922)), i925, i948) | <(i925, i922)
4227_0_HeapSort_InvokeMethod(EOS(STATIC_4227(i922)), i925, i948) → 4239_1_HeapSort_InvokeMethod(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(i922)), i948), i925, i948)
4239_1_HeapSort_InvokeMethod(2949_0_Ajouter_Return(EOS(STATIC_2949(i966))), i925, i964) → 4308_0_Ajouter_Return(EOS(STATIC_4308(i966)), i925, i964)
4239_1_HeapSort_InvokeMethod(3115_0_Ajouter_Return(EOS(STATIC_3115(i970))), i925, i968) → 4310_0_Ajouter_Return(EOS(STATIC_4310(i970)), i925, i968)
4239_1_HeapSort_InvokeMethod(3938_0_Ajouter_Return(EOS(STATIC_3938(i986))), i925, i984) → 4319_0_Ajouter_Return(EOS(STATIC_4319(i986)), i925, i984)
4308_0_Ajouter_Return(EOS(STATIC_4308(i966)), i925, i964) → 4311_0_Ajouter_Return(EOS(STATIC_4311(i966)), i925, i964)
4311_0_Ajouter_Return(EOS(STATIC_4311(i1004)), i925, i1006) → 4338_0_HeapSort_Inc(EOS(STATIC_4338(i1004)), i925)
4338_0_HeapSort_Inc(EOS(STATIC_4338(i1004)), i925) → 4360_0_HeapSort_JMP(EOS(STATIC_4360(i1004)), +(i925, 1)) | >=(i925, 0)
4360_0_HeapSort_JMP(EOS(STATIC_4360(i1004)), i1049) → 4382_0_HeapSort_Load(EOS(STATIC_4382(i1004)), i1049)
4382_0_HeapSort_Load(EOS(STATIC_4382(i1004)), i1049) → 4104_0_HeapSort_Load(EOS(STATIC_4104(i1004)), i1049)
4104_0_HeapSort_Load(EOS(STATIC_4104(i922)), i925) → 4125_0_HeapSort_FieldAccess(EOS(STATIC_4125(i922)), i925, i925)
4310_0_Ajouter_Return(EOS(STATIC_4310(i970)), i925, i968) → 4311_0_Ajouter_Return(EOS(STATIC_4311(i970)), i925, i968)
4319_0_Ajouter_Return(EOS(STATIC_4319(i986)), i925, i984) → 4311_0_Ajouter_Return(EOS(STATIC_4311(i986)), i925, i984)
R rules:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(i922)), i948) → 4255_0_Ajouter_FieldAccess(EOS(STATIC_4255(i922)), i948)
4255_0_Ajouter_FieldAccess(EOS(STATIC_4255(i922)), i948) → 1784_0_Ajouter_FieldAccess(EOS(STATIC_1784(i922)), i948)
1784_0_Ajouter_FieldAccess(EOS(STATIC_1784(i255)), i254) → 1800_0_Ajouter_ConstantStackPush(EOS(STATIC_1800(i255)), i254, i256)
1800_0_Ajouter_ConstantStackPush(EOS(STATIC_1800(i255)), i254, i256) → 1812_0_Ajouter_IntArithmetic(EOS(STATIC_1812(i255)), i254, i256, 1)
1812_0_Ajouter_IntArithmetic(EOS(STATIC_1812(i255)), i254, i256, matching1) → 1825_0_Ajouter_FieldAccess(EOS(STATIC_1825(i255)), i254, +(i256, 1)) | =(matching1, 1)
1825_0_Ajouter_FieldAccess(EOS(STATIC_1825(i255)), i254, i259) → 1838_0_Ajouter_FieldAccess(EOS(STATIC_1838(i255)), i254)
1838_0_Ajouter_FieldAccess(EOS(STATIC_1838(i255)), i254) → 1848_0_Ajouter_ConstantStackPush(EOS(STATIC_1848(i255)), i254, i259)
1848_0_Ajouter_ConstantStackPush(EOS(STATIC_1848(i255)), i254, i259) → 1861_0_Ajouter_IntArithmetic(EOS(STATIC_1861(i255)), i254, i259, 1)
1861_0_Ajouter_IntArithmetic(EOS(STATIC_1861(i255)), i254, i259, matching1) → 1876_0_Ajouter_Store(EOS(STATIC_1876(i255)), i254, -(i259, 1)) | =(matching1, 1)
1876_0_Ajouter_Store(EOS(STATIC_1876(i255)), i254, i271) → 1888_0_Ajouter_Load(EOS(STATIC_1888(i255)), i254, i271)
1888_0_Ajouter_Load(EOS(STATIC_1888(i255)), i254, i271) → 2818_0_Ajouter_Load(EOS(STATIC_2818(i255)), i254, i271)
2818_0_Ajouter_Load(EOS(STATIC_2818(i255)), i254, i446) → 2838_0_Ajouter_LE(EOS(STATIC_2838(i255)), i254, i446, i446)
2838_0_Ajouter_LE(EOS(STATIC_2838(i255)), i254, i458, i458) → 2860_0_Ajouter_LE(EOS(STATIC_2860(i255)), i254, i458, i458)
2838_0_Ajouter_LE(EOS(STATIC_2838(i255)), i254, i459, i459) → 2861_0_Ajouter_LE(EOS(STATIC_2861(i255)), i254, i459, i459)
2860_0_Ajouter_LE(EOS(STATIC_2860(i255)), i254, i458, i458) → 2876_0_Ajouter_FieldAccess(EOS(STATIC_2876(i255)), i254, i458) | <=(i458, 0)
2861_0_Ajouter_LE(EOS(STATIC_2861(i255)), i254, i459, i459) → 2878_0_Ajouter_FieldAccess(EOS(STATIC_2878(i255)), i254, i459) | >(i459, 0)
2876_0_Ajouter_FieldAccess(EOS(STATIC_2876(i255)), i254, i458) → 2888_0_Ajouter_Load(EOS(STATIC_2888(i255)), i254, i458, java.lang.Object(ARRAY(i255)))
2878_0_Ajouter_FieldAccess(EOS(STATIC_2878(i255)), i254, i459) → 2890_0_Ajouter_Load(EOS(STATIC_2890(i255)), i254, i459, java.lang.Object(ARRAY(i255)))
2888_0_Ajouter_Load(EOS(STATIC_2888(i255)), i254, i458, java.lang.Object(ARRAY(i255))) → 2899_0_Ajouter_Load(EOS(STATIC_2899(i255)), i254, java.lang.Object(ARRAY(i255)), i458)
2890_0_Ajouter_Load(EOS(STATIC_2890(i255)), i254, i459, java.lang.Object(ARRAY(i255))) → 2901_0_Ajouter_ConstantStackPush(EOS(STATIC_2901(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
2899_0_Ajouter_Load(EOS(STATIC_2899(i255)), i254, java.lang.Object(ARRAY(i255)), i458) → 2912_0_Ajouter_ArrayAccess(EOS(STATIC_2912(i255)), java.lang.Object(ARRAY(i255)), i458, i254)
2901_0_Ajouter_ConstantStackPush(EOS(STATIC_2901(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 2913_0_Ajouter_IntArithmetic(EOS(STATIC_2913(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, 1)
2912_0_Ajouter_ArrayAccess(EOS(STATIC_2912(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 2922_0_Ajouter_ArrayAccess(EOS(STATIC_2922(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
2912_0_Ajouter_ArrayAccess(EOS(STATIC_2912(i255)), java.lang.Object(ARRAY(i255)), matching1, i254) → 2923_0_Ajouter_ArrayAccess(EOS(STATIC_2923(i255)), java.lang.Object(ARRAY(i255)), 0, i254) | =(matching1, 0)
2913_0_Ajouter_IntArithmetic(EOS(STATIC_2913(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, matching1) → 2925_0_Ajouter_ConstantStackPush(EOS(STATIC_2925(i255)), i254, i459, java.lang.Object(ARRAY(i255)), -(i459, 1)) | &&(>(i459, 0), =(matching1, 1))
2922_0_Ajouter_ArrayAccess(EOS(STATIC_2922(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 2934_0_<init>_Load(EOS(STATIC_2934(i255)), java.lang.Object(ARRAY(i255)), i474, i254) | <=(i474, -1)
2923_0_Ajouter_ArrayAccess(EOS(STATIC_2923(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 2935_0_Ajouter_ArrayAccess(EOS(STATIC_2935(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
2923_0_Ajouter_ArrayAccess(EOS(STATIC_2923(i477)), java.lang.Object(ARRAY(i477)), matching1, i254) → 2936_0_Ajouter_ArrayAccess(EOS(STATIC_2936(i477)), java.lang.Object(ARRAY(i477)), 0, i254) | =(matching1, 0)
2925_0_Ajouter_ConstantStackPush(EOS(STATIC_2925(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i475) → 2938_0_Ajouter_IntArithmetic(EOS(STATIC_2938(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i475, 2)
2934_0_<init>_Load(EOS(STATIC_2934(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 2960_0_<init>_InvokeMethod(EOS(STATIC_2960(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
2935_0_Ajouter_ArrayAccess(EOS(STATIC_2935(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 2948_0_<init>_Load(EOS(STATIC_2948(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | &&(&&(>=(0, 0), <=(i476, 0)), =(matching1, 0))
2936_0_Ajouter_ArrayAccess(EOS(STATIC_2936(i477)), java.lang.Object(ARRAY(i477)), matching1, i254) → 2949_0_Ajouter_Return(EOS(STATIC_2949(i477))) | &&(<(0, i477), =(matching1, 0))
2938_0_Ajouter_IntArithmetic(EOS(STATIC_2938(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i475, matching1) → 2951_0_Ajouter_ArrayAccess(EOS(STATIC_2951(i255)), i254, i459, java.lang.Object(ARRAY(i255)), /(i475, 2)) | =(matching1, 2)
2948_0_<init>_Load(EOS(STATIC_2948(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 2975_0_<init>_InvokeMethod(EOS(STATIC_2975(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
2949_0_Ajouter_Return(EOS(STATIC_2949(i477))) → 3115_0_Ajouter_Return(EOS(STATIC_3115(i477)))
2951_0_Ajouter_ArrayAccess(EOS(STATIC_2951(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 2963_0_Ajouter_ArrayAccess(EOS(STATIC_2963(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
2951_0_Ajouter_ArrayAccess(EOS(STATIC_2951(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 2964_0_Ajouter_ArrayAccess(EOS(STATIC_2964(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
2960_0_<init>_InvokeMethod(EOS(STATIC_2960(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 2973_0_<init>_Load(EOS(STATIC_2973(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
2963_0_Ajouter_ArrayAccess(EOS(STATIC_2963(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 2978_0_Ajouter_Load(EOS(STATIC_2978(i255)), i254, i459, i496) | <(i483, i255)
2964_0_Ajouter_ArrayAccess(EOS(STATIC_2964(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 2980_0_<init>_Load(EOS(STATIC_2980(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) | >=(i483, i255)
2973_0_<init>_Load(EOS(STATIC_2973(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3004_0_<init>_InvokeMethod(EOS(STATIC_3004(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
2975_0_<init>_InvokeMethod(EOS(STATIC_2975(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 2989_0_<init>_Load(EOS(STATIC_2989(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
2978_0_Ajouter_Load(EOS(STATIC_2978(i255)), i254, i459, i496) → 2992_0_Ajouter_GT(EOS(STATIC_2992(i255)), i254, i459, i496, i254)
2980_0_<init>_Load(EOS(STATIC_2980(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3011_0_<init>_InvokeMethod(EOS(STATIC_3011(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
2989_0_<init>_Load(EOS(STATIC_2989(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3024_0_<init>_InvokeMethod(EOS(STATIC_3024(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
2992_0_Ajouter_GT(EOS(STATIC_2992(i255)), i254, i459, i496, i254) → 3006_0_Ajouter_GT(EOS(STATIC_3006(i255)), i254, i459, i496, i254)
2992_0_Ajouter_GT(EOS(STATIC_2992(i255)), i254, i459, i496, i254) → 3007_0_Ajouter_GT(EOS(STATIC_3007(i255)), i254, i459, i496, i254)
3004_0_<init>_InvokeMethod(EOS(STATIC_3004(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3022_0_<init>_Load(EOS(STATIC_3022(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3006_0_Ajouter_GT(EOS(STATIC_3006(i255)), i254, i459, i496, i254) → 3027_0_Ajouter_FieldAccess(EOS(STATIC_3027(i255)), i254, i459) | >(i496, i254)
3007_0_Ajouter_GT(EOS(STATIC_3007(i255)), i254, i459, i496, i254) → 3028_0_Ajouter_FieldAccess(EOS(STATIC_3028(i255)), i254, i459) | <=(i496, i254)
3011_0_<init>_InvokeMethod(EOS(STATIC_3011(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3030_0_<init>_Load(EOS(STATIC_3030(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3022_0_<init>_Load(EOS(STATIC_3022(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3058_0_<init>_InvokeMethod(EOS(STATIC_3058(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3024_0_<init>_InvokeMethod(EOS(STATIC_3024(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3041_0_<init>_Load(EOS(STATIC_3041(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3027_0_Ajouter_FieldAccess(EOS(STATIC_3027(i255)), i254, i459) → 3704_0_Ajouter_FieldAccess(EOS(STATIC_3704(i255)), i254, i459)
3028_0_Ajouter_FieldAccess(EOS(STATIC_3028(i255)), i254, i459) → 3049_0_Ajouter_Load(EOS(STATIC_3049(i255)), i254, i459, java.lang.Object(ARRAY(i255)))
3030_0_<init>_Load(EOS(STATIC_3030(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3066_0_<init>_InvokeMethod(EOS(STATIC_3066(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3041_0_<init>_Load(EOS(STATIC_3041(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3074_0_<init>_InvokeMethod(EOS(STATIC_3074(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3049_0_Ajouter_Load(EOS(STATIC_3049(i255)), i254, i459, java.lang.Object(ARRAY(i255))) → 3062_0_Ajouter_FieldAccess(EOS(STATIC_3062(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3058_0_<init>_InvokeMethod(EOS(STATIC_3058(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3073_0_<init>_Load(EOS(STATIC_3073(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3062_0_Ajouter_FieldAccess(EOS(STATIC_3062(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3079_0_Ajouter_Load(EOS(STATIC_3079(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)))
3066_0_<init>_InvokeMethod(EOS(STATIC_3066(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3080_0_<init>_Load(EOS(STATIC_3080(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3073_0_<init>_Load(EOS(STATIC_3073(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3110_0_<init>_InvokeMethod(EOS(STATIC_3110(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3074_0_<init>_InvokeMethod(EOS(STATIC_3074(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3091_0_<init>_Load(EOS(STATIC_3091(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3079_0_Ajouter_Load(EOS(STATIC_3079(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255))) → 3097_0_Ajouter_ConstantStackPush(EOS(STATIC_3097(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459)
3080_0_<init>_Load(EOS(STATIC_3080(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3121_0_<init>_InvokeMethod(EOS(STATIC_3121(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3091_0_<init>_Load(EOS(STATIC_3091(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3136_0_<init>_InvokeMethod(EOS(STATIC_3136(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3097_0_Ajouter_ConstantStackPush(EOS(STATIC_3097(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459) → 3118_0_Ajouter_IntArithmetic(EOS(STATIC_3118(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459, 1)
3110_0_<init>_InvokeMethod(EOS(STATIC_3110(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3134_0_<init>_Load(EOS(STATIC_3134(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3115_0_Ajouter_Return(EOS(STATIC_3115(i255))) → 3938_0_Ajouter_Return(EOS(STATIC_3938(i255)))
3118_0_Ajouter_IntArithmetic(EOS(STATIC_3118(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i459, matching1) → 3141_0_Ajouter_ConstantStackPush(EOS(STATIC_3141(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), -(i459, 1)) | &&(>(i459, 0), =(matching1, 1))
3121_0_<init>_InvokeMethod(EOS(STATIC_3121(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3142_0_<init>_Load(EOS(STATIC_3142(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3134_0_<init>_Load(EOS(STATIC_3134(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3187_0_<init>_InvokeMethod(EOS(STATIC_3187(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3136_0_<init>_InvokeMethod(EOS(STATIC_3136(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3160_0_<init>_Load(EOS(STATIC_3160(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3141_0_Ajouter_ConstantStackPush(EOS(STATIC_3141(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i530) → 3168_0_Ajouter_IntArithmetic(EOS(STATIC_3168(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i530, 2)
3142_0_<init>_Load(EOS(STATIC_3142(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3196_0_<init>_InvokeMethod(EOS(STATIC_3196(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3160_0_<init>_Load(EOS(STATIC_3160(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3215_0_<init>_InvokeMethod(EOS(STATIC_3215(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3168_0_Ajouter_IntArithmetic(EOS(STATIC_3168(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i530, matching1) → 3193_0_Ajouter_ArrayAccess(EOS(STATIC_3193(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), /(i530, 2)) | =(matching1, 2)
3187_0_<init>_InvokeMethod(EOS(STATIC_3187(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3213_0_<init>_Load(EOS(STATIC_3213(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3193_0_Ajouter_ArrayAccess(EOS(STATIC_3193(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3220_0_Ajouter_ArrayAccess(EOS(STATIC_3220(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3193_0_Ajouter_ArrayAccess(EOS(STATIC_3193(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3221_0_Ajouter_ArrayAccess(EOS(STATIC_3221(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3196_0_<init>_InvokeMethod(EOS(STATIC_3196(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3222_0_<init>_Load(EOS(STATIC_3222(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3213_0_<init>_Load(EOS(STATIC_3213(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3260_0_<init>_Load(EOS(STATIC_3260(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3215_0_<init>_InvokeMethod(EOS(STATIC_3215(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3262_0_<init>_Load(EOS(STATIC_3262(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3220_0_Ajouter_ArrayAccess(EOS(STATIC_3220(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3270_0_Ajouter_ArrayAccess(EOS(STATIC_3270(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) | <(i551, i255)
3221_0_Ajouter_ArrayAccess(EOS(STATIC_3221(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3271_0_<init>_Load(EOS(STATIC_3271(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) | >=(i551, i255)
3222_0_<init>_Load(EOS(STATIC_3222(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3300_0_<init>_InvokeMethod(EOS(STATIC_3300(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3260_0_<init>_Load(EOS(STATIC_3260(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3287_0_<init>_FieldAccess(EOS(STATIC_3287(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3262_0_<init>_Load(EOS(STATIC_3262(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3288_0_<init>_Load(EOS(STATIC_3288(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3270_0_Ajouter_ArrayAccess(EOS(STATIC_3270(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3296_0_Ajouter_ArrayAccess(EOS(STATIC_3296(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3270_0_Ajouter_ArrayAccess(EOS(STATIC_3270(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3297_0_Ajouter_ArrayAccess(EOS(STATIC_3297(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3271_0_<init>_Load(EOS(STATIC_3271(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3334_0_<init>_InvokeMethod(EOS(STATIC_3334(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3287_0_<init>_FieldAccess(EOS(STATIC_3287(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3322_0_<init>_Load(EOS(STATIC_3322(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3288_0_<init>_Load(EOS(STATIC_3288(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3323_0_<init>_FieldAccess(EOS(STATIC_3323(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3296_0_Ajouter_ArrayAccess(EOS(STATIC_3296(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3329_0_Ajouter_Load(EOS(STATIC_3329(i255)), i254, i459) | <(i459, i255)
3297_0_Ajouter_ArrayAccess(EOS(STATIC_3297(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3330_0_<init>_Load(EOS(STATIC_3330(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) | >=(i459, i255)
3300_0_<init>_InvokeMethod(EOS(STATIC_3300(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3336_0_<init>_Load(EOS(STATIC_3336(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3322_0_<init>_Load(EOS(STATIC_3322(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3349_0_<init>_InvokeMethod(EOS(STATIC_3349(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3323_0_<init>_FieldAccess(EOS(STATIC_3323(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3352_0_<init>_Load(EOS(STATIC_3352(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3329_0_Ajouter_Load(EOS(STATIC_3329(i255)), i254, i459) → 3366_0_Ajouter_ConstantStackPush(EOS(STATIC_3366(i255)), i254, i459, i459)
3330_0_<init>_Load(EOS(STATIC_3330(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3399_0_<init>_InvokeMethod(EOS(STATIC_3399(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3334_0_<init>_InvokeMethod(EOS(STATIC_3334(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3367_0_<init>_Load(EOS(STATIC_3367(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3336_0_<init>_Load(EOS(STATIC_3336(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3370_0_<init>_Load(EOS(STATIC_3370(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3349_0_<init>_InvokeMethod(EOS(STATIC_3349(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3384_0_<init>_StackPop(EOS(STATIC_3384(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3352_0_<init>_Load(EOS(STATIC_3352(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3385_0_<init>_InvokeMethod(EOS(STATIC_3385(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3366_0_Ajouter_ConstantStackPush(EOS(STATIC_3366(i255)), i254, i459, i459) → 3395_0_Ajouter_IntArithmetic(EOS(STATIC_3395(i255)), i254, i459, i459, 1)
3367_0_<init>_Load(EOS(STATIC_3367(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3434_0_<init>_InvokeMethod(EOS(STATIC_3434(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3370_0_<init>_Load(EOS(STATIC_3370(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3402_0_<init>_FieldAccess(EOS(STATIC_3402(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3384_0_<init>_StackPop(EOS(STATIC_3384(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3420_0_<init>_Return(EOS(STATIC_3420(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3385_0_<init>_InvokeMethod(EOS(STATIC_3385(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3422_0_<init>_StackPop(EOS(STATIC_3422(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3395_0_Ajouter_IntArithmetic(EOS(STATIC_3395(i255)), i254, i459, i459, matching1) → 3429_0_Ajouter_ConstantStackPush(EOS(STATIC_3429(i255)), i254, i459, -(i459, 1)) | &&(>(i459, 0), =(matching1, 1))
3399_0_<init>_InvokeMethod(EOS(STATIC_3399(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3431_0_<init>_Load(EOS(STATIC_3431(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3402_0_<init>_FieldAccess(EOS(STATIC_3402(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3438_0_<init>_Load(EOS(STATIC_3438(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3420_0_<init>_Return(EOS(STATIC_3420(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3452_0_<init>_Return(EOS(STATIC_3452(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3422_0_<init>_StackPop(EOS(STATIC_3422(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3453_0_<init>_Return(EOS(STATIC_3453(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3429_0_Ajouter_ConstantStackPush(EOS(STATIC_3429(i255)), i254, i459, i627) → 3460_0_Ajouter_IntArithmetic(EOS(STATIC_3460(i255)), i254, i459, i627, 2)
3431_0_<init>_Load(EOS(STATIC_3431(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3492_0_<init>_InvokeMethod(EOS(STATIC_3492(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3434_0_<init>_InvokeMethod(EOS(STATIC_3434(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3461_0_<init>_Load(EOS(STATIC_3461(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3438_0_<init>_Load(EOS(STATIC_3438(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3464_0_<init>_InvokeMethod(EOS(STATIC_3464(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3452_0_<init>_Return(EOS(STATIC_3452(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3476_0_<init>_Return(EOS(STATIC_3476(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3453_0_<init>_Return(EOS(STATIC_3453(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3478_0_<init>_Return(EOS(STATIC_3478(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3460_0_Ajouter_IntArithmetic(EOS(STATIC_3460(i255)), i254, i459, i627, matching1) → 3488_0_Ajouter_Store(EOS(STATIC_3488(i255)), i254, i459, /(i627, 2)) | =(matching1, 2)
3461_0_<init>_Load(EOS(STATIC_3461(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3523_0_<init>_InvokeMethod(EOS(STATIC_3523(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3464_0_<init>_InvokeMethod(EOS(STATIC_3464(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3494_0_<init>_StackPop(EOS(STATIC_3494(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3476_0_<init>_Return(EOS(STATIC_3476(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3513_0_<init>_Return(EOS(STATIC_3513(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3478_0_<init>_Return(EOS(STATIC_3478(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3515_0_<init>_Return(EOS(STATIC_3515(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3488_0_Ajouter_Store(EOS(STATIC_3488(i255)), i254, i459, i666) → 3518_0_Ajouter_Load(EOS(STATIC_3518(i255)), i254, i459, i666)
3492_0_<init>_InvokeMethod(EOS(STATIC_3492(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3519_0_<init>_Load(EOS(STATIC_3519(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3494_0_<init>_StackPop(EOS(STATIC_3494(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3525_0_<init>_Return(EOS(STATIC_3525(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3513_0_<init>_Return(EOS(STATIC_3513(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3534_0_<init>_Return(EOS(STATIC_3534(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3515_0_<init>_Return(EOS(STATIC_3515(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3535_0_<init>_Return(EOS(STATIC_3535(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3518_0_Ajouter_Load(EOS(STATIC_3518(i255)), i254, i459, i666) → 3541_0_Ajouter_Load(EOS(STATIC_3541(i255)), i254, i459, i666, i666)
3519_0_<init>_Load(EOS(STATIC_3519(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3586_0_<init>_InvokeMethod(EOS(STATIC_3586(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3523_0_<init>_InvokeMethod(EOS(STATIC_3523(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3543_0_<init>_Load(EOS(STATIC_3543(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3525_0_<init>_Return(EOS(STATIC_3525(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3545_0_<init>_Return(EOS(STATIC_3545(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3534_0_<init>_Return(EOS(STATIC_3534(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 3568_0_Ajouter_ArrayAccess(EOS(STATIC_3568(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3535_0_<init>_Return(EOS(STATIC_3535(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3570_0_<init>_Return(EOS(STATIC_3570(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3541_0_Ajouter_Load(EOS(STATIC_3541(i255)), i254, i459, i666, i666) → 3579_0_Ajouter_LT(EOS(STATIC_3579(i255)), i254, i459, i666, i666, i459)
3543_0_<init>_Load(EOS(STATIC_3543(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3640_0_<init>_InvokeMethod(EOS(STATIC_3640(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3545_0_<init>_Return(EOS(STATIC_3545(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3590_0_<init>_Return(EOS(STATIC_3590(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3568_0_Ajouter_ArrayAccess(EOS(STATIC_3568(i255)), java.lang.Object(ARRAY(i255)), i474, i254) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4443(i255)), java.lang.Object(ARRAY(i255)), i474, i254)
3570_0_<init>_Return(EOS(STATIC_3570(i476)), java.lang.Object(ARRAY(i476)), matching1, i254) → 3625_0_Ajouter_ArrayAccess(EOS(STATIC_3625(i476)), java.lang.Object(ARRAY(i476)), 0, i254) | =(matching1, 0)
3579_0_Ajouter_LT(EOS(STATIC_3579(i255)), i254, i459, i666, i666, i459) → 3633_0_Ajouter_LT(EOS(STATIC_3633(i255)), i254, i459, i666, i666, i459)
3579_0_Ajouter_LT(EOS(STATIC_3579(i255)), i254, i459, i666, i666, i459) → 3634_0_Ajouter_LT(EOS(STATIC_3634(i255)), i254, i459, i666, i666, i459)
3586_0_<init>_InvokeMethod(EOS(STATIC_3586(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3636_0_<init>_Load(EOS(STATIC_3636(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3590_0_<init>_Return(EOS(STATIC_3590(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3642_0_<init>_Return(EOS(STATIC_3642(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3633_0_Ajouter_LT(EOS(STATIC_3633(i255)), i254, i459, i666, i666, i459) → 3667_0_Ajouter_Load(EOS(STATIC_3667(i255)), i254, i666) | <(i666, i459)
3634_0_Ajouter_LT(EOS(STATIC_3634(i255)), i254, i459, i666, i666, i459) → 3669_0_Ajouter_JMP(EOS(STATIC_3669(i255)), i254, i459) | >=(i666, i459)
3636_0_<init>_Load(EOS(STATIC_3636(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3709_0_<init>_InvokeMethod(EOS(STATIC_3709(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3640_0_<init>_InvokeMethod(EOS(STATIC_3640(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3670_0_<init>_Load(EOS(STATIC_3670(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3642_0_<init>_Return(EOS(STATIC_3642(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3672_0_<init>_Return(EOS(STATIC_3672(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3667_0_Ajouter_Load(EOS(STATIC_3667(i255)), i254, i666) → 3702_0_Ajouter_Store(EOS(STATIC_3702(i255)), i254, i666)
3669_0_Ajouter_JMP(EOS(STATIC_3669(i255)), i254, i459) → 3704_0_Ajouter_FieldAccess(EOS(STATIC_3704(i255)), i254, i459)
3670_0_<init>_Load(EOS(STATIC_3670(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3747_0_<init>_InvokeMethod(EOS(STATIC_3747(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3672_0_<init>_Return(EOS(STATIC_3672(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483) → 3711_0_Ajouter_ArrayAccess(EOS(STATIC_3711(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i483)
3702_0_Ajouter_Store(EOS(STATIC_3702(i255)), i254, i666) → 3741_0_Ajouter_JMP(EOS(STATIC_3741(i255)), i254, i666)
3704_0_Ajouter_FieldAccess(EOS(STATIC_3704(i255)), i254, i459) → 3743_0_Ajouter_Load(EOS(STATIC_3743(i255)), i254, i459, java.lang.Object(ARRAY(i255)))
3709_0_<init>_InvokeMethod(EOS(STATIC_3709(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3744_0_<init>_Load(EOS(STATIC_3744(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3741_0_Ajouter_JMP(EOS(STATIC_3741(i255)), i254, i666) → 3778_0_Ajouter_Load(EOS(STATIC_3778(i255)), i254, i666)
3743_0_Ajouter_Load(EOS(STATIC_3743(i255)), i254, i459, java.lang.Object(ARRAY(i255))) → 3780_0_Ajouter_Load(EOS(STATIC_3780(i255)), i254, java.lang.Object(ARRAY(i255)), i459)
3744_0_<init>_Load(EOS(STATIC_3744(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3871_0_<init>_InvokeMethod(EOS(STATIC_3871(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3747_0_<init>_InvokeMethod(EOS(STATIC_3747(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3783_0_<init>_Load(EOS(STATIC_3783(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3778_0_Ajouter_Load(EOS(STATIC_3778(i255)), i254, i666) → 2818_0_Ajouter_Load(EOS(STATIC_2818(i255)), i254, i666)
3780_0_Ajouter_Load(EOS(STATIC_3780(i255)), i254, java.lang.Object(ARRAY(i255)), i459) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
3783_0_<init>_Load(EOS(STATIC_3783(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3874_0_<init>_Load(EOS(STATIC_3874(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 3899_0_Ajouter_ArrayAccess(EOS(STATIC_3899(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 3900_0_Ajouter_ArrayAccess(EOS(STATIC_3900(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
3871_0_<init>_InvokeMethod(EOS(STATIC_3871(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3903_0_<init>_Load(EOS(STATIC_3903(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3874_0_<init>_Load(EOS(STATIC_3874(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3906_0_<init>_FieldAccess(EOS(STATIC_3906(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3899_0_Ajouter_ArrayAccess(EOS(STATIC_3899(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 3938_0_Ajouter_Return(EOS(STATIC_3938(i255))) | <(i459, i255)
3900_0_Ajouter_ArrayAccess(EOS(STATIC_3900(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 3939_0_<init>_Load(EOS(STATIC_3939(i255)), java.lang.Object(ARRAY(i255)), i459, i254) | >=(i459, i255)
3903_0_<init>_Load(EOS(STATIC_3903(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3943_0_<init>_Load(EOS(STATIC_3943(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3906_0_<init>_FieldAccess(EOS(STATIC_3906(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3946_0_<init>_Load(EOS(STATIC_3946(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3939_0_<init>_Load(EOS(STATIC_3939(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4024_0_<init>_InvokeMethod(EOS(STATIC_4024(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
3943_0_<init>_Load(EOS(STATIC_3943(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 3981_0_<init>_FieldAccess(EOS(STATIC_3981(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3946_0_<init>_Load(EOS(STATIC_3946(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 3984_0_<init>_InvokeMethod(EOS(STATIC_3984(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
3981_0_<init>_FieldAccess(EOS(STATIC_3981(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4029_0_<init>_Load(EOS(STATIC_4029(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
3984_0_<init>_InvokeMethod(EOS(STATIC_3984(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 4031_0_<init>_StackPop(EOS(STATIC_4031(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
4024_0_<init>_InvokeMethod(EOS(STATIC_4024(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4061_0_<init>_Load(EOS(STATIC_4061(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4029_0_<init>_Load(EOS(STATIC_4029(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4064_0_<init>_InvokeMethod(EOS(STATIC_4064(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4031_0_<init>_StackPop(EOS(STATIC_4031(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 4067_0_<init>_Return(EOS(STATIC_4067(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
4061_0_<init>_Load(EOS(STATIC_4061(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4108_0_<init>_InvokeMethod(EOS(STATIC_4108(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4064_0_<init>_InvokeMethod(EOS(STATIC_4064(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4085_0_<init>_StackPop(EOS(STATIC_4085(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4067_0_<init>_Return(EOS(STATIC_4067(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 4087_0_<init>_Return(EOS(STATIC_4087(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
4085_0_<init>_StackPop(EOS(STATIC_4085(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4111_0_<init>_Return(EOS(STATIC_4111(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4087_0_<init>_Return(EOS(STATIC_4087(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 4114_0_<init>_Return(EOS(STATIC_4114(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
4108_0_<init>_InvokeMethod(EOS(STATIC_4108(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4126_0_<init>_Load(EOS(STATIC_4126(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4111_0_<init>_Return(EOS(STATIC_4111(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4129_0_<init>_Return(EOS(STATIC_4129(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4114_0_<init>_Return(EOS(STATIC_4114(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 4132_0_<init>_Return(EOS(STATIC_4132(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
4126_0_<init>_Load(EOS(STATIC_4126(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4154_0_<init>_InvokeMethod(EOS(STATIC_4154(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4129_0_<init>_Return(EOS(STATIC_4129(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4141_0_<init>_Return(EOS(STATIC_4141(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4132_0_<init>_Return(EOS(STATIC_4132(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 4143_0_<init>_Return(EOS(STATIC_4143(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
4141_0_<init>_Return(EOS(STATIC_4141(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4157_0_<init>_Return(EOS(STATIC_4157(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4143_0_<init>_Return(EOS(STATIC_4143(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551) → 4159_0_Ajouter_ArrayAccess(EOS(STATIC_4159(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459, java.lang.Object(ARRAY(i255)), i551)
4154_0_<init>_InvokeMethod(EOS(STATIC_4154(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4170_0_<init>_Load(EOS(STATIC_4170(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4157_0_<init>_Return(EOS(STATIC_4157(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4173_0_<init>_Return(EOS(STATIC_4173(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4170_0_<init>_Load(EOS(STATIC_4170(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4202_0_<init>_InvokeMethod(EOS(STATIC_4202(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4173_0_<init>_Return(EOS(STATIC_4173(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459) → 4187_0_Ajouter_ArrayAccess(EOS(STATIC_4187(i255)), i254, i459, java.lang.Object(ARRAY(i255)), i459)
4202_0_<init>_InvokeMethod(EOS(STATIC_4202(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4216_0_<init>_Load(EOS(STATIC_4216(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4216_0_<init>_Load(EOS(STATIC_4216(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4243_0_<init>_InvokeMethod(EOS(STATIC_4243(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4243_0_<init>_InvokeMethod(EOS(STATIC_4243(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4260_0_<init>_Load(EOS(STATIC_4260(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4260_0_<init>_Load(EOS(STATIC_4260(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4275_0_<init>_Load(EOS(STATIC_4275(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4275_0_<init>_Load(EOS(STATIC_4275(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4298_0_<init>_FieldAccess(EOS(STATIC_4298(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4298_0_<init>_FieldAccess(EOS(STATIC_4298(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4327_0_<init>_Load(EOS(STATIC_4327(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4327_0_<init>_Load(EOS(STATIC_4327(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4352_0_<init>_InvokeMethod(EOS(STATIC_4352(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4352_0_<init>_InvokeMethod(EOS(STATIC_4352(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4366_0_<init>_StackPop(EOS(STATIC_4366(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4366_0_<init>_StackPop(EOS(STATIC_4366(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4388_0_<init>_Return(EOS(STATIC_4388(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4388_0_<init>_Return(EOS(STATIC_4388(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4400_0_<init>_Return(EOS(STATIC_4400(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4400_0_<init>_Return(EOS(STATIC_4400(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4410_0_<init>_Return(EOS(STATIC_4410(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4410_0_<init>_Return(EOS(STATIC_4410(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4423_0_<init>_Return(EOS(STATIC_4423(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4423_0_<init>_Return(EOS(STATIC_4423(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4432_0_<init>_Return(EOS(STATIC_4432(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4432_0_<init>_Return(EOS(STATIC_4432(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4442_0_Ajouter_ArrayAccess(EOS(STATIC_4442(i255)), java.lang.Object(ARRAY(i255)), i459, i254)
4442_0_Ajouter_ArrayAccess(EOS(STATIC_4442(i255)), java.lang.Object(ARRAY(i255)), i459, i254) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4443(i255)), java.lang.Object(ARRAY(i255)), i459, i254)

Combined rules. Obtained 3 conditional rules for P and 12 conditional rules for R.


P rules:
4239_1_HeapSort_InvokeMethod(2949_0_Ajouter_Return(EOS(STATIC_2949(x0))), x1, x2) → 4239_1_HeapSort_InvokeMethod(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0)), x3), +(x1, 1), x3) | &&(>(+(x1, 1), 0), >(x0, +(x1, 1)))
4239_1_HeapSort_InvokeMethod(3115_0_Ajouter_Return(EOS(STATIC_3115(x0))), x1, x2) → 4239_1_HeapSort_InvokeMethod(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0)), x3), +(x1, 1), x3) | &&(>(+(x1, 1), 0), >(x0, +(x1, 1)))
4239_1_HeapSort_InvokeMethod(3938_0_Ajouter_Return(EOS(STATIC_3938(x0))), x1, x2) → 4239_1_HeapSort_InvokeMethod(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0)), x3), +(x1, 1), x3) | &&(>(+(x1, 1), 0), >(x0, +(x1, 1)))
R rules:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0)), x1) → 2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, -(x2, 1), -(x2, 1))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, 0, 0) → 3938_0_Ajouter_Return(EOS(STATIC_3938(x0))) | >(x0, 0)
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, x2, x2) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4443(x0)), java.lang.Object(ARRAY(x0)), x2, x1) | &&(<=(x2, 0), <=(x2, -1))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, 0, 0) → 3625_0_Ajouter_ArrayAccess(EOS(STATIC_3625(x0)), java.lang.Object(ARRAY(x0)), 0, x1) | <=(x0, 0)
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, x2, x2) → 3711_0_Ajouter_ArrayAccess(EOS(STATIC_3711(x0)), x1, x2, java.lang.Object(ARRAY(x0)), /(-(x2, 1), 2)) | &&(>(x2, 0), <=(x0, /(-(x2, 1), 2)))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, x2, x2) → 2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, /(-(x2, 1), 2), /(-(x2, 1), 2)) | &&(&&(&&(>(x2, 0), >(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2)))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, x2, x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x2, x1) | &&(>(x2, 0), >(x0, /(-(x2, 1), 2)))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, x2, x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x2, x1) | &&(&&(&&(>(x2, 0), <=(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2)))
3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x1, x2) → 3938_0_Ajouter_Return(EOS(STATIC_3938(x0))) | <(x1, x0)
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, x2, x2) → 4159_0_Ajouter_ArrayAccess(EOS(STATIC_4159(x0)), x1, x2, java.lang.Object(ARRAY(x0)), x2, java.lang.Object(ARRAY(x0)), arith[6]) | FALSE
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x1, x2, x2) → 4187_0_Ajouter_ArrayAccess(EOS(STATIC_4187(x0)), x1, x2, java.lang.Object(ARRAY(x0)), x2) | &&(&&(>=(x2, x0), >(x2, 0)), >(x0, /(-(x2, 1), 2)))
3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x1, x2) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4443(x0)), java.lang.Object(ARRAY(x0)), x1, x2) | >=(x1, x0)

Filtered ground terms:



3625_0_Ajouter_ArrayAccess(x1, x2, x3, x4) → 3625_0_Ajouter_ArrayAccess(x1, x2, x4)
Cond_2838_0_Ajouter_LE2(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE2(x1, x2, x3)
Cond_2838_0_Ajouter_LE(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE(x1, x2, x3)

Filtered duplicate args:



2838_0_Ajouter_LE(x1, x2, x3, x4) → 2838_0_Ajouter_LE(x1, x2, x4)
Cond_2838_0_Ajouter_LE1(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE1(x1, x2, x3, x5)
Cond_2838_0_Ajouter_LE3(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE3(x1, x2, x3, x5)
3711_0_Ajouter_ArrayAccess(x1, x2, x3, x4, x5) → 3711_0_Ajouter_ArrayAccess(x1, x2, x4, x5)
Cond_2838_0_Ajouter_LE4(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE4(x1, x2, x3, x5)
Cond_2838_0_Ajouter_LE5(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE5(x1, x2, x3, x5)
Cond_2838_0_Ajouter_LE6(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE6(x1, x2, x3, x5)
Cond_2838_0_Ajouter_LE7(x1, x2, x3, x4, x5) → Cond_2838_0_Ajouter_LE7(x1, x2, x3, x5)
4187_0_Ajouter_ArrayAccess(x1, x2, x3, x4, x5) → 4187_0_Ajouter_ArrayAccess(x1, x2, x4, x5)

Filtered unneeded arguments:



4239_1_HeapSort_InvokeMethod(x1, x2, x3) → 4239_1_HeapSort_InvokeMethod(x1, x2)
Cond_4239_1_HeapSort_InvokeMethod(x1, x2, x3, x4, x5) → Cond_4239_1_HeapSort_InvokeMethod(x1, x2, x3)
Cond_4239_1_HeapSort_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_4239_1_HeapSort_InvokeMethod1(x1, x2, x3)
Cond_4239_1_HeapSort_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_4239_1_HeapSort_InvokeMethod2(x1, x2, x3)
2838_0_Ajouter_LE(x1, x2, x3) → 2838_0_Ajouter_LE(x1, x3)
Cond_2838_0_Ajouter_LE(x1, x2, x3) → Cond_2838_0_Ajouter_LE(x1, x2)
Cond_2838_0_Ajouter_LE1(x1, x2, x3, x4) → Cond_2838_0_Ajouter_LE1(x1)
Cond_2838_0_Ajouter_LE2(x1, x2, x3) → Cond_2838_0_Ajouter_LE2(x1)
Cond_2838_0_Ajouter_LE3(x1, x2, x3, x4) → Cond_2838_0_Ajouter_LE3(x1)
Cond_2838_0_Ajouter_LE4(x1, x2, x3, x4) → Cond_2838_0_Ajouter_LE4(x1, x2, x4)
Cond_2838_0_Ajouter_LE5(x1, x2, x3, x4) → Cond_2838_0_Ajouter_LE5(x1, x2, x4)
Cond_2838_0_Ajouter_LE6(x1, x2, x3, x4) → Cond_2838_0_Ajouter_LE6(x1, x2, x4)
Cond_3868_0_Ajouter_ArrayAccess(x1, x2, x3, x4, x5) → Cond_3868_0_Ajouter_ArrayAccess(x1, x2, x3)
Cond_2838_0_Ajouter_LE7(x1, x2, x3, x4) → Cond_2838_0_Ajouter_LE7(x1)
Cond_3868_0_Ajouter_ArrayAccess1(x1, x2, x3, x4, x5) → Cond_3868_0_Ajouter_ArrayAccess1(x1)
3868_0_Ajouter_ArrayAccess(x1, x2, x3, x4) → 3868_0_Ajouter_ArrayAccess(x1, x2, x3)
4239_0_Ajouter_FieldAccess(x1, x2) → 4239_0_Ajouter_FieldAccess(x1)

Combined rules. Obtained 3 conditional rules for P and 11 conditional rules for R.


P rules:
4239_1_HeapSort_InvokeMethod(2949_0_Ajouter_Return(EOS(STATIC_2949(x0))), x1) → 4239_1_HeapSort_InvokeMethod(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))), +(x1, 1)) | &&(>(x1, -1), >(x0, +(x1, 1)))
4239_1_HeapSort_InvokeMethod(3115_0_Ajouter_Return(EOS(STATIC_3115(x0))), x1) → 4239_1_HeapSort_InvokeMethod(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))), +(x1, 1)) | &&(>(x1, -1), >(x0, +(x1, 1)))
4239_1_HeapSort_InvokeMethod(3938_0_Ajouter_Return(EOS(STATIC_3938(x0))), x1) → 4239_1_HeapSort_InvokeMethod(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))), +(x1, 1)) | &&(>(x1, -1), >(x0, +(x1, 1)))
R rules:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))) → 2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), -(x2, 1))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), 0) → 3938_0_Ajouter_Return(EOS(STATIC_3938(x0))) | >(x0, 0)
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x2) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4443(x0)), java.lang.Object(ARRAY(x0)), x2, x1) | &&(<=(x2, 0), <=(x2, -1))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), 0) → 3625_0_Ajouter_ArrayAccess(EOS(STATIC_3625(x0)), java.lang.Object(ARRAY(x0)), x1) | <=(x0, 0)
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x2) → 3711_0_Ajouter_ArrayAccess(EOS(STATIC_3711(x0)), x1, java.lang.Object(ARRAY(x0)), /(-(x2, 1), 2)) | &&(>(x2, 0), <=(x0, /(-(x2, 1), 2)))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x2) → 2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), /(-(x2, 1), 2)) | &&(&&(&&(>(x2, 0), >(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2)))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x2) | &&(>(x2, 0), >(x0, /(-(x2, 1), 2)))
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x2) | &&(&&(&&(>(x2, 0), <=(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2)))
3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x1) → 3938_0_Ajouter_Return(EOS(STATIC_3938(x0))) | <(x1, x0)
2838_0_Ajouter_LE(EOS(STATIC_2838(x0)), x2) → 4187_0_Ajouter_ArrayAccess(EOS(STATIC_4187(x0)), x1, java.lang.Object(ARRAY(x0)), x2) | &&(&&(>=(x2, x0), >(x2, 0)), >(x0, /(-(x2, 1), 2)))
3868_0_Ajouter_ArrayAccess(EOS(STATIC_3868(x0)), java.lang.Object(ARRAY(x0)), x1) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4443(x0)), java.lang.Object(ARRAY(x0)), x1, x2) | >=(x1, x0)

Performed bisimulation on rules. Used the following equivalence classes: {[3938_0_Ajouter_Return_1, 2949_0_Ajouter_Return_1, 3115_0_Ajouter_Return_1]=3938_0_Ajouter_Return_1, [STATIC_4239_1, STATIC_2838_1, STATIC_3938_1, STATIC_4443_1, STATIC_3625_1, STATIC_3711_1, STATIC_3868_1, STATIC_4187_1, STATIC_2949_1, STATIC_3115_1]=STATIC_4239_1, [Cond_4239_1_HeapSort_InvokeMethod_3, Cond_4239_1_HeapSort_InvokeMethod1_3, Cond_4239_1_HeapSort_InvokeMethod2_3]=Cond_4239_1_HeapSort_InvokeMethod_3}


Finished conversion. Obtained 2 rules for P and 21 rules for R. System has predefined symbols.


P rules:
4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1) → COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1, -1), >(x0, +(x1, 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1)
COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))), +(x1, 1))
R rules:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))) → 2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), -(x2, 1))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0) → Cond_2838_0_Ajouter_LE(>(x0, 0), EOS(STATIC_4239(x0)), 0)
Cond_2838_0_Ajouter_LE(TRUE, EOS(STATIC_4239(x0)), 0) → 3938_0_Ajouter_Return(EOS(STATIC_4239(x0)))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE1(&&(<=(x2, 0), <=(x2, -1)), EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE1(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2, x1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0) → Cond_2838_0_Ajouter_LE2(<=(x0, 0), EOS(STATIC_4239(x0)), 0, x1)
Cond_2838_0_Ajouter_LE2(TRUE, EOS(STATIC_4239(x0)), 0, x1) → 3625_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE3(&&(>(x2, 0), <=(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE3(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 3711_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), /(-(x2, 1), 2))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE4(&&(&&(&&(>(x2, 0), >(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE4(TRUE, EOS(STATIC_4239(x0)), x2) → 2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), /(-(x2, 1), 2))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE5(&&(>(x2, 0), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE5(TRUE, EOS(STATIC_4239(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE6(&&(&&(&&(>(x2, 0), <=(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE6(TRUE, EOS(STATIC_4239(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → Cond_3868_0_Ajouter_ArrayAccess(<(x1, x0), EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
Cond_3868_0_Ajouter_ArrayAccess(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → 3938_0_Ajouter_Return(EOS(STATIC_4239(x0)))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE7(&&(&&(>=(x2, x0), >(x2, 0)), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE7(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 4187_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), x2)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → Cond_3868_0_Ajouter_ArrayAccess1(>=(x1, x0), EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)
Cond_3868_0_Ajouter_ArrayAccess1(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)

(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:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))) → 2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2 - 1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0) → Cond_2838_0_Ajouter_LE(x0 > 0, EOS(STATIC_4239(x0)), 0)
Cond_2838_0_Ajouter_LE(TRUE, EOS(STATIC_4239(x0)), 0) → 3938_0_Ajouter_Return(EOS(STATIC_4239(x0)))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE1(x2 <= 0 && x2 <= -1, EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE1(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2, x1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0) → Cond_2838_0_Ajouter_LE2(x0 <= 0, EOS(STATIC_4239(x0)), 0, x1)
Cond_2838_0_Ajouter_LE2(TRUE, EOS(STATIC_4239(x0)), 0, x1) → 3625_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE3(x2 > 0 && x0 <= x2 - 1 / 2, EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE3(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 3711_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), x2 - 1 / 2)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE4(x2 > 0 && x2 > x2 - 1 / 2 && x2 < x0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE4(TRUE, EOS(STATIC_4239(x0)), x2) → 2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2 - 1 / 2)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE5(x2 > 0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE5(TRUE, EOS(STATIC_4239(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE6(x2 > 0 && x2 <= x2 - 1 / 2 && x2 < x0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE6(TRUE, EOS(STATIC_4239(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → Cond_3868_0_Ajouter_ArrayAccess(x1 < x0, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
Cond_3868_0_Ajouter_ArrayAccess(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → 3938_0_Ajouter_Return(EOS(STATIC_4239(x0)))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE7(x2 >= x0 && x2 > 0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE7(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 4187_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), x2)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → Cond_3868_0_Ajouter_ArrayAccess1(x1 >= x0, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)
Cond_3868_0_Ajouter_ArrayAccess1(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)

The integer pair graph contains the following rules and edges:
(0): 4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0]) → COND_4239_1_HEAPSORT_INVOKEMETHOD(x1[0] > -1 && x0[0] > x1[0] + 1, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])
(1): COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1]))), x1[1]) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), x1[1] + 1)

(0) -> (1), if (x1[0] > -1 && x0[0] > x1[0] + 13938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))) →* 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1])))∧x1[0]* x1[1])


(1) -> (0), if (4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))) →* 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0])))∧x1[1] + 1* x1[0])



The set Q consists of the following terms:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0)))
Cond_2838_0_Ajouter_LE(TRUE, EOS(STATIC_4239(x0)), 0)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x1)
Cond_2838_0_Ajouter_LE1(TRUE, EOS(STATIC_4239(x0)), x1, x2)
Cond_2838_0_Ajouter_LE2(TRUE, EOS(STATIC_4239(x0)), 0, x1)
Cond_2838_0_Ajouter_LE3(TRUE, EOS(STATIC_4239(x0)), x1, x2)
Cond_2838_0_Ajouter_LE4(TRUE, EOS(STATIC_4239(x0)), x1)
Cond_2838_0_Ajouter_LE5(TRUE, EOS(STATIC_4239(x0)), x1)
Cond_2838_0_Ajouter_LE6(TRUE, EOS(STATIC_4239(x0)), x1)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
Cond_3868_0_Ajouter_ArrayAccess(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
Cond_2838_0_Ajouter_LE7(TRUE, EOS(STATIC_4239(x0)), x1, x2)
Cond_3868_0_Ajouter_ArrayAccess1(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)

(33) 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@117a26fe 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 4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1) → COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1, -1), >(x0, +(x1, 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1) the following chains were created:
  • We consider the chain 4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0]) → COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0]), COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1]))), x1[1]) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1)) which results in the following constraint:

    (1)    (&&(>(x1[0], -1), >(x0[0], +(x1[0], 1)))=TRUE3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0])))=3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1])))∧x1[0]=x1[1]4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])≥NonInfC∧4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])≥COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])∧(UIncreasing(COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])), ≥))



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

    (2)    (>(x1[0], -1)=TRUE>(x0[0], +(x1[0], 1))=TRUE4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])≥NonInfC∧4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])≥COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])∧(UIncreasing(COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])), ≥))



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

    (3)    (x1[0] ≥ 0∧x0[0] + [-2] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])), ≥)∧[(-1)Bound*bni_41] + [(-1)bni_41]x1[0] + [bni_41]x0[0] ≥ 0∧[1 + (-1)bso_42] ≥ 0)



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

    (4)    (x1[0] ≥ 0∧x0[0] + [-2] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])), ≥)∧[(-1)Bound*bni_41] + [(-1)bni_41]x1[0] + [bni_41]x0[0] ≥ 0∧[1 + (-1)bso_42] ≥ 0)



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

    (5)    (x1[0] ≥ 0∧x0[0] + [-2] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])), ≥)∧[(-1)Bound*bni_41] + [(-1)bni_41]x1[0] + [bni_41]x0[0] ≥ 0∧[1 + (-1)bso_42] ≥ 0)



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

    (6)    (x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])), ≥)∧[(-1)Bound*bni_41 + (2)bni_41] + [bni_41]x0[0] ≥ 0∧[1 + (-1)bso_42] ≥ 0)







For Pair COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))), +(x1, 1)) the following chains were created:
  • We consider the chain COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1]))), x1[1]) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1)) which results in the following constraint:

    (7)    (COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1]))), x1[1])≥NonInfC∧COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1]))), x1[1])≥4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))∧(UIncreasing(4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))), ≥))



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

    (8)    ((UIncreasing(4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))), ≥)∧[bni_43] = 0∧[(-1)bso_44] ≥ 0)



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

    (9)    ((UIncreasing(4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))), ≥)∧[bni_43] = 0∧[(-1)bso_44] ≥ 0)



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

    (10)    ((UIncreasing(4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))), ≥)∧[bni_43] = 0∧[(-1)bso_44] ≥ 0)



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

    (11)    ((UIncreasing(4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))), ≥)∧[bni_43] = 0∧0 = 0∧0 = 0∧[(-1)bso_44] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1) → COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1, -1), >(x0, +(x1, 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1)
    • (x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])), ≥)∧[(-1)Bound*bni_41 + (2)bni_41] + [bni_41]x0[0] ≥ 0∧[1 + (-1)bso_42] ≥ 0)

  • COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0))), x1) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))), +(x1, 1))
    • ((UIncreasing(4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))), ≥)∧[bni_43] = 0∧0 = 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(4239_0_Ajouter_FieldAccess(x1)) = x1   
POL(EOS(x1)) = x1   
POL(STATIC_4239(x1)) = x1   
POL(2838_0_Ajouter_LE(x1, x2)) = x1   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(0) = 0   
POL(Cond_2838_0_Ajouter_LE(x1, x2, x3)) = x2   
POL(>(x1, x2)) = [-1]   
POL(3938_0_Ajouter_Return(x1)) = x1   
POL(Cond_2838_0_Ajouter_LE1(x1, x2, x3, x4)) = [-1] + x2   
POL(&&(x1, x2)) = [-1]   
POL(<=(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(4443_0_Ajouter_ArrayAccess(x1, x2, x3, x4)) = [-1] + x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(Cond_2838_0_Ajouter_LE2(x1, x2, x3, x4)) = x2   
POL(3625_0_Ajouter_ArrayAccess(x1, x2, x3)) = [-1] + x1   
POL(Cond_2838_0_Ajouter_LE3(x1, x2, x3, x4)) = x2   
POL(2) = [2]   
POL(3711_0_Ajouter_ArrayAccess(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x1   
POL(Cond_2838_0_Ajouter_LE4(x1, x2, x3)) = x2   
POL(<(x1, x2)) = [-1]   
POL(Cond_2838_0_Ajouter_LE5(x1, x2, x3)) = x2   
POL(3868_0_Ajouter_ArrayAccess(x1, x2, x3)) = x1   
POL(Cond_2838_0_Ajouter_LE6(x1, x2, x3)) = x2   
POL(Cond_3868_0_Ajouter_ArrayAccess(x1, x2, x3, x4)) = x2   
POL(Cond_2838_0_Ajouter_LE7(x1, x2, x3, x4)) = [-1] + x2   
POL(>=(x1, x2)) = [-1]   
POL(4187_0_Ajouter_ArrayAccess(x1, x2, x3, x4)) = [-1] + x1   
POL(Cond_3868_0_Ajouter_ArrayAccess1(x1, x2, x3, x4, x5)) = [-1] + x2   
POL(4239_1_HEAPSORT_INVOKEMETHOD(x1, x2)) = [-1]x2 + x1   
POL(COND_4239_1_HEAPSORT_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(+(x1, x2)) = x1 + x2   

Polynomial Interpretations with Context Sensitive Arithemetic Replacement
POL(TermCSAR-Mode @ Context)

POL(/(x1, 2)1 @ {2838_0_Ajouter_LE_2/1}) = [-1]max{x1, [-1]x1} + [1]   
POL(/(x1, 2)1 @ {3711_0_Ajouter_ArrayAccess_4/3}) = [-1]max{x1, [-1]x1} + [1]   

The following pairs are in P>:

4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0]) → COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])

The following pairs are in Pbound:

4239_1_HEAPSORT_INVOKEMETHOD(3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0]) → COND_4239_1_HEAPSORT_INVOKEMETHOD(&&(>(x1[0], -1), >(x0[0], +(x1[0], 1))), 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[0]))), x1[0])

The following pairs are in P:

COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1]))), x1[1]) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), +(x1[1], 1))

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

4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0)))12838_0_Ajouter_LE(EOS(STATIC_4239(x0)), -(x2, 1))1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0)1Cond_2838_0_Ajouter_LE(>(x0, 0), EOS(STATIC_4239(x0)), 0)1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2)1Cond_2838_0_Ajouter_LE1(&&(<=(x2, 0), <=(x2, -1)), EOS(STATIC_4239(x0)), x2, x1)1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0)1Cond_2838_0_Ajouter_LE2(<=(x0, 0), EOS(STATIC_4239(x0)), 0, x1)1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2)1Cond_2838_0_Ajouter_LE3(&&(>(x2, 0), <=(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2, x1)1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2)1Cond_2838_0_Ajouter_LE4(&&(&&(&&(>(x2, 0), >(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2)1
Cond_2838_0_Ajouter_LE4(TRUE, EOS(STATIC_4239(x0)), x2)12838_0_Ajouter_LE(EOS(STATIC_4239(x0)), /(-(x2, 1), 2))1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2)1Cond_2838_0_Ajouter_LE5(&&(>(x2, 0), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2)1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2)1Cond_2838_0_Ajouter_LE6(&&(&&(&&(>(x2, 0), <=(x2, /(-(x2, 1), 2))), <(x2, x0)), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2)1
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2)1Cond_2838_0_Ajouter_LE7(&&(&&(>=(x2, x0), >(x2, 0)), >(x0, /(-(x2, 1), 2))), EOS(STATIC_4239(x0)), x2, x1)1
/1
Cond_2838_0_Ajouter_LE(TRUE, EOS(STATIC_4239(x0)), 0)13938_0_Ajouter_Return(EOS(STATIC_4239(x0)))1
Cond_2838_0_Ajouter_LE1(TRUE, EOS(STATIC_4239(x0)), x2, x1)14443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2, x1)1
Cond_2838_0_Ajouter_LE2(TRUE, EOS(STATIC_4239(x0)), 0, x1)13625_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)1
Cond_2838_0_Ajouter_LE3(TRUE, EOS(STATIC_4239(x0)), x2, x1)13711_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), /(-(x2, 1), 2))1
Cond_2838_0_Ajouter_LE5(TRUE, EOS(STATIC_4239(x0)), x2)13868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)1
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)1Cond_3868_0_Ajouter_ArrayAccess(<(x1, x0), EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)1
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)1Cond_3868_0_Ajouter_ArrayAccess1(>=(x1, x0), EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)1
Cond_2838_0_Ajouter_LE6(TRUE, EOS(STATIC_4239(x0)), x2)13868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)1
Cond_3868_0_Ajouter_ArrayAccess(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)13938_0_Ajouter_Return(EOS(STATIC_4239(x0)))1
Cond_2838_0_Ajouter_LE7(TRUE, EOS(STATIC_4239(x0)), x2, x1)14187_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), x2)1
Cond_3868_0_Ajouter_ArrayAccess1(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)14443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)1

(34) 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:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0))) → 2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2 - 1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0) → Cond_2838_0_Ajouter_LE(x0 > 0, EOS(STATIC_4239(x0)), 0)
Cond_2838_0_Ajouter_LE(TRUE, EOS(STATIC_4239(x0)), 0) → 3938_0_Ajouter_Return(EOS(STATIC_4239(x0)))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE1(x2 <= 0 && x2 <= -1, EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE1(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2, x1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), 0) → Cond_2838_0_Ajouter_LE2(x0 <= 0, EOS(STATIC_4239(x0)), 0, x1)
Cond_2838_0_Ajouter_LE2(TRUE, EOS(STATIC_4239(x0)), 0, x1) → 3625_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE3(x2 > 0 && x0 <= x2 - 1 / 2, EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE3(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 3711_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), x2 - 1 / 2)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE4(x2 > 0 && x2 > x2 - 1 / 2 && x2 < x0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE4(TRUE, EOS(STATIC_4239(x0)), x2) → 2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2 - 1 / 2)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE5(x2 > 0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE5(TRUE, EOS(STATIC_4239(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE6(x2 > 0 && x2 <= x2 - 1 / 2 && x2 < x0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2)
Cond_2838_0_Ajouter_LE6(TRUE, EOS(STATIC_4239(x0)), x2) → 3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x2)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → Cond_3868_0_Ajouter_ArrayAccess(x1 < x0, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
Cond_3868_0_Ajouter_ArrayAccess(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → 3938_0_Ajouter_Return(EOS(STATIC_4239(x0)))
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x2) → Cond_2838_0_Ajouter_LE7(x2 >= x0 && x2 > 0 && x0 > x2 - 1 / 2, EOS(STATIC_4239(x0)), x2, x1)
Cond_2838_0_Ajouter_LE7(TRUE, EOS(STATIC_4239(x0)), x2, x1) → 4187_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), x1, java.lang.Object(ARRAY(x0)), x2)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1) → Cond_3868_0_Ajouter_ArrayAccess1(x1 >= x0, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)
Cond_3868_0_Ajouter_ArrayAccess1(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2) → 4443_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)

The integer pair graph contains the following rules and edges:
(1): COND_4239_1_HEAPSORT_INVOKEMETHOD(TRUE, 3938_0_Ajouter_Return(EOS(STATIC_4239(x0[1]))), x1[1]) → 4239_1_HEAPSORT_INVOKEMETHOD(4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0[1]))), x1[1] + 1)


The set Q consists of the following terms:
4239_0_Ajouter_FieldAccess(EOS(STATIC_4239(x0)))
Cond_2838_0_Ajouter_LE(TRUE, EOS(STATIC_4239(x0)), 0)
2838_0_Ajouter_LE(EOS(STATIC_4239(x0)), x1)
Cond_2838_0_Ajouter_LE1(TRUE, EOS(STATIC_4239(x0)), x1, x2)
Cond_2838_0_Ajouter_LE2(TRUE, EOS(STATIC_4239(x0)), 0, x1)
Cond_2838_0_Ajouter_LE3(TRUE, EOS(STATIC_4239(x0)), x1, x2)
Cond_2838_0_Ajouter_LE4(TRUE, EOS(STATIC_4239(x0)), x1)
Cond_2838_0_Ajouter_LE5(TRUE, EOS(STATIC_4239(x0)), x1)
Cond_2838_0_Ajouter_LE6(TRUE, EOS(STATIC_4239(x0)), x1)
3868_0_Ajouter_ArrayAccess(EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
Cond_3868_0_Ajouter_ArrayAccess(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1)
Cond_2838_0_Ajouter_LE7(TRUE, EOS(STATIC_4239(x0)), x1, x2)
Cond_3868_0_Ajouter_ArrayAccess1(TRUE, EOS(STATIC_4239(x0)), java.lang.Object(ARRAY(x0)), x1, x2)

(35) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(36) TRUE

(37) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: TriTas.main([Ljava/lang/String;)V
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(38) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 45 rules for P and 0 rules for R.


P rules:
2884_0_main_FieldAccess(EOS(STATIC_2884(i21, i461)), i462, i462) → 2895_0_main_GE(EOS(STATIC_2895(i21, i461)), i462, i462, i21)
2895_0_main_GE(EOS(STATIC_2895(i21, i461)), i462, i462, i21) → 2906_0_main_GE(EOS(STATIC_2906(i21, i461)), i462, i462, i21)
2906_0_main_GE(EOS(STATIC_2906(i21, i461)), i462, i462, i21) → 2917_0_main_FieldAccess(EOS(STATIC_2917(i21, i461)), i462) | <(i462, i21)
2917_0_main_FieldAccess(EOS(STATIC_2917(i21, i461)), i462) → 2930_0_main_Load(EOS(STATIC_2930(i21, i461)), i462, java.lang.Object(ARRAY(i21)))
2930_0_main_Load(EOS(STATIC_2930(i21, i461)), i462, java.lang.Object(ARRAY(i21))) → 2942_0_main_InvokeMethod(EOS(STATIC_2942(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462)
2942_0_main_InvokeMethod(EOS(STATIC_2942(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462) → 2956_0_random_FieldAccess(EOS(STATIC_2956(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462)
2956_0_random_FieldAccess(EOS(STATIC_2956(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462) → 2984_0_random_FieldAccess(EOS(STATIC_2984(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461)
2984_0_random_FieldAccess(EOS(STATIC_2984(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461) → 2998_0_random_ArrayLength(EOS(STATIC_2998(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, java.lang.Object(ARRAY(i21)))
2998_0_random_ArrayLength(EOS(STATIC_2998(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, java.lang.Object(ARRAY(i21))) → 3017_0_random_LT(EOS(STATIC_3017(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, i21) | >=(i21, 0)
3017_0_random_LT(EOS(STATIC_3017(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, i21) → 3033_0_random_LT(EOS(STATIC_3033(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, i21)
3017_0_random_LT(EOS(STATIC_3017(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, i21) → 3034_0_random_LT(EOS(STATIC_3034(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, i21)
3033_0_random_LT(EOS(STATIC_3033(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, i21) → 3051_0_random_FieldAccess(EOS(STATIC_3051(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462) | <(i461, i21)
3051_0_random_FieldAccess(EOS(STATIC_3051(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462) → 3067_0_random_FieldAccess(EOS(STATIC_3067(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(ARRAY(i21)))
3067_0_random_FieldAccess(EOS(STATIC_3067(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(ARRAY(i21))) → 3082_0_random_ArrayAccess(EOS(STATIC_3082(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(ARRAY(i21)), i461)
3082_0_random_ArrayAccess(EOS(STATIC_3082(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(ARRAY(i21)), i461) → 3099_0_random_ArrayAccess(EOS(STATIC_3099(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(ARRAY(i21)), i461)
3099_0_random_ArrayAccess(EOS(STATIC_3099(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(ARRAY(i21)), i461) → 3122_0_random_Store(EOS(STATIC_3122(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681)
3122_0_random_Store(EOS(STATIC_3122(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681) → 3144_0_random_FieldAccess(EOS(STATIC_3144(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681)
3144_0_random_FieldAccess(EOS(STATIC_3144(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681) → 3169_0_random_ConstantStackPush(EOS(STATIC_3169(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681, i461)
3169_0_random_ConstantStackPush(EOS(STATIC_3169(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681, i461) → 3197_0_random_IntArithmetic(EOS(STATIC_3197(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681, i461, 1)
3197_0_random_IntArithmetic(EOS(STATIC_3197(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681, i461, matching1) → 3224_0_random_FieldAccess(EOS(STATIC_3224(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681, +(i461, 1)) | &&(>=(i461, 0), =(matching1, 1))
3224_0_random_FieldAccess(EOS(STATIC_3224(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, o681, i557) → 3272_0_random_Load(EOS(STATIC_3272(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, o681)
3272_0_random_Load(EOS(STATIC_3272(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, o681) → 3301_0_random_InvokeMethod(EOS(STATIC_3301(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, o681)
3301_0_random_InvokeMethod(EOS(STATIC_3301(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(o777sub)) → 3338_0_random_InvokeMethod(EOS(STATIC_3338(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(o777sub))
3338_0_random_InvokeMethod(EOS(STATIC_3338(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(o777sub)) → 3371_0_length_Load(EOS(STATIC_3371(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(o777sub), java.lang.Object(o777sub))
3371_0_length_Load(EOS(STATIC_3371(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(o777sub), java.lang.Object(o777sub)) → 3440_0_length_FieldAccess(EOS(STATIC_3440(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(o777sub), java.lang.Object(o777sub))
3440_0_length_FieldAccess(EOS(STATIC_3440(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(java.lang.String(o867sub, i646)), java.lang.Object(java.lang.String(o867sub, i646))) → 3465_0_length_FieldAccess(EOS(STATIC_3465(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(java.lang.String(o867sub, i646)), java.lang.Object(java.lang.String(o867sub, i646))) | &&(>=(i646, 0), >=(i647, 0))
3465_0_length_FieldAccess(EOS(STATIC_3465(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(java.lang.String(o867sub, i646)), java.lang.Object(java.lang.String(o867sub, i646))) → 3496_0_length_Return(EOS(STATIC_3496(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(java.lang.String(o867sub, i646)))
3496_0_length_Return(EOS(STATIC_3496(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462, java.lang.Object(java.lang.String(o867sub, i646))) → 3526_0_random_Return(EOS(STATIC_3526(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462)
3526_0_random_Return(EOS(STATIC_3526(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462) → 3547_0_main_ArrayAccess(EOS(STATIC_3547(i21, i557)), i462, java.lang.Object(ARRAY(i21)), i462)
3547_0_main_ArrayAccess(EOS(STATIC_3547(i21, i557)), i699, java.lang.Object(ARRAY(i21)), i699) → 3593_0_main_ArrayAccess(EOS(STATIC_3593(i21, i557)), i699, java.lang.Object(ARRAY(i21)), i699)
3593_0_main_ArrayAccess(EOS(STATIC_3593(i21, i557)), i699, java.lang.Object(ARRAY(i21)), i699) → 3645_0_main_ArrayAccess(EOS(STATIC_3645(i21, i557)), i699, java.lang.Object(ARRAY(i21)), i699)
3645_0_main_ArrayAccess(EOS(STATIC_3645(i21, i557)), i699, java.lang.Object(ARRAY(i21)), i699) → 3674_0_main_Inc(EOS(STATIC_3674(i21, i557)), i699) | <(i699, i21)
3674_0_main_Inc(EOS(STATIC_3674(i21, i557)), i699) → 3715_0_main_JMP(EOS(STATIC_3715(i21, i557)), +(i699, 1)) | >=(i699, 0)
3715_0_main_JMP(EOS(STATIC_3715(i21, i557)), i733) → 3753_0_main_Load(EOS(STATIC_3753(i21, i557)), i733)
3753_0_main_Load(EOS(STATIC_3753(i21, i557)), i733) → 2870_0_main_Load(EOS(STATIC_2870(i21, i557)), i733)
2870_0_main_Load(EOS(STATIC_2870(i21, i461)), i462) → 2884_0_main_FieldAccess(EOS(STATIC_2884(i21, i461)), i462, i462)
3034_0_random_LT(EOS(STATIC_3034(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462, i461, i21) → 3052_0_random_ConstantStackPush(EOS(STATIC_3052(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462) | >=(i461, i21)
3052_0_random_ConstantStackPush(EOS(STATIC_3052(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462) → 3068_0_random_Return(EOS(STATIC_3068(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462)
3068_0_random_Return(EOS(STATIC_3068(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462) → 3084_0_main_ArrayAccess(EOS(STATIC_3084(i21, i461)), i462, java.lang.Object(ARRAY(i21)), i462)
3084_0_main_ArrayAccess(EOS(STATIC_3084(i21, i461)), i525, java.lang.Object(ARRAY(i21)), i525) → 3102_0_main_ArrayAccess(EOS(STATIC_3102(i21, i461)), i525, java.lang.Object(ARRAY(i21)), i525)
3102_0_main_ArrayAccess(EOS(STATIC_3102(i21, i461)), i525, java.lang.Object(ARRAY(i21)), i525) → 3127_0_main_ArrayAccess(EOS(STATIC_3127(i21, i461)), i525, java.lang.Object(ARRAY(i21)), i525)
3127_0_main_ArrayAccess(EOS(STATIC_3127(i21, i461)), i525, java.lang.Object(ARRAY(i21)), i525) → 3146_0_main_Inc(EOS(STATIC_3146(i21, i461)), i525) | <(i525, i21)
3146_0_main_Inc(EOS(STATIC_3146(i21, i461)), i525) → 3173_0_main_JMP(EOS(STATIC_3173(i21, i461)), +(i525, 1)) | >=(i525, 0)
3173_0_main_JMP(EOS(STATIC_3173(i21, i461)), i541) → 3202_0_main_Load(EOS(STATIC_3202(i21, i461)), i541)
3202_0_main_Load(EOS(STATIC_3202(i21, i461)), i541) → 2870_0_main_Load(EOS(STATIC_2870(i21, i461)), i541)
R rules:

Combined rules. Obtained 2 conditional rules for P and 0 conditional rules for R.


P rules:
2884_0_main_FieldAccess(EOS(STATIC_2884(x0, x1)), x2, x2) → 2884_0_main_FieldAccess(EOS(STATIC_2884(x0, +(x1, 1))), +(x2, 1), +(x2, 1)) | &&(&&(&&(&&(>(+(x2, 1), 0), <(x2, x0)), >(+(x1, 1), 0)), <(x1, x0)), >(+(x0, 1), 0))
2884_0_main_FieldAccess(EOS(STATIC_2884(x0, x1)), x2, x2) → 2884_0_main_FieldAccess(EOS(STATIC_2884(x0, x1)), +(x2, 1), +(x2, 1)) | &&(&&(&&(>(+(x2, 1), 0), <(x2, x0)), >=(x1, x0)), >(+(x0, 1), 0))
R rules:

Filtered duplicate args:



2884_0_main_FieldAccess(x1, x2, x3) → 2884_0_main_FieldAccess(x1, x3)
Cond_2884_0_main_FieldAccess(x1, x2, x3, x4) → Cond_2884_0_main_FieldAccess(x1, x2, x4)
Cond_2884_0_main_FieldAccess1(x1, x2, x3, x4) → Cond_2884_0_main_FieldAccess1(x1, x2, x4)

Combined rules. Obtained 2 conditional rules for P and 0 conditional rules for R.


P rules:
2884_0_main_FieldAccess(EOS(STATIC_2884(x0, x1)), x2) → 2884_0_main_FieldAccess(EOS(STATIC_2884(x0, +(x1, 1))), +(x2, 1)) | &&(&&(&&(&&(>(x2, -1), <(x2, x0)), >(x1, -1)), <(x1, x0)), >(x0, -1))
2884_0_main_FieldAccess(EOS(STATIC_2884(x0, x1)), x2) → 2884_0_main_FieldAccess(EOS(STATIC_2884(x0, x1)), +(x2, 1)) | &&(&&(&&(>(x2, -1), <(x2, x0)), >=(x1, x0)), >(x0, -1))
R rules:

Finished conversion. Obtained 4 rules for P and 0 rules for R. System has predefined symbols.


P rules:
2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), x2) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2, -1), <(x2, x0)), >(x1, -1)), <(x1, x0)), >(x0, -1)), EOS(STATIC_2884(x0, x1)), x2)
COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0, x1)), x2) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, +(x1, 1))), +(x2, 1))
2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), x2) → COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2, -1), <(x2, x0)), >=(x1, x0)), >(x0, -1)), EOS(STATIC_2884(x0, x1)), x2)
COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0, x1)), x2) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), +(x2, 1))
R rules:

(39) 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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(x2[0] > -1 && x2[0] < x0[0] && x1[0] > -1 && x1[0] < x0[0] && x0[0] > -1, EOS(STATIC_2884(x0[0], x1[0])), x2[0])
(1): COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], x1[1] + 1)), x2[1] + 1)
(2): 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2]) → COND_2884_0_MAIN_FIELDACCESS1(x2[2] > -1 && x2[2] < x0[2] && x1[2] >= x0[2] && x0[2] > -1, EOS(STATIC_2884(x0[2], x1[2])), x2[2])
(3): COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0[3], x1[3])), x2[3]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), x2[3] + 1)

(0) -> (1), if (x2[0] > -1 && x2[0] < x0[0] && x1[0] > -1 && x1[0] < x0[0] && x0[0] > -1EOS(STATIC_2884(x0[0], x1[0])) →* EOS(STATIC_2884(x0[1], x1[1]))∧x2[0]* x2[1])


(1) -> (0), if (EOS(STATIC_2884(x0[1], x1[1] + 1)) →* EOS(STATIC_2884(x0[0], x1[0]))∧x2[1] + 1* x2[0])


(1) -> (2), if (EOS(STATIC_2884(x0[1], x1[1] + 1)) →* EOS(STATIC_2884(x0[2], x1[2]))∧x2[1] + 1* x2[2])


(2) -> (3), if (x2[2] > -1 && x2[2] < x0[2] && x1[2] >= x0[2] && x0[2] > -1EOS(STATIC_2884(x0[2], x1[2])) →* EOS(STATIC_2884(x0[3], x1[3]))∧x2[2]* x2[3])


(3) -> (0), if (EOS(STATIC_2884(x0[3], x1[3])) →* EOS(STATIC_2884(x0[0], x1[0]))∧x2[3] + 1* x2[0])


(3) -> (2), if (EOS(STATIC_2884(x0[3], x1[3])) →* EOS(STATIC_2884(x0[2], x1[2]))∧x2[3] + 1* x2[2])



The set Q is empty.

(40) 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@117a26fe 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 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), x2) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2, -1), <(x2, x0)), >(x1, -1)), <(x1, x0)), >(x0, -1)), EOS(STATIC_2884(x0, x1)), x2) the following chains were created:
  • We consider the chain 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0]), COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1)) which results in the following constraint:

    (1)    (&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1))=TRUEEOS(STATIC_2884(x0[0], x1[0]))=EOS(STATIC_2884(x0[1], x1[1]))∧x2[0]=x2[1]2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥NonInfC∧2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])∧(UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(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<(x1[0], x0[0])=TRUE>(x1[0], -1)=TRUE>(x2[0], -1)=TRUE<(x2[0], x0[0])=TRUE2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥NonInfC∧2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])∧(UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(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∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(-1)Bound*bni_15] + [(-1)bni_15]x2[0] + [bni_15]x1[0] + [bni_15]x0[0] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (4)    (x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(-1)Bound*bni_15] + [(-1)bni_15]x2[0] + [bni_15]x1[0] + [bni_15]x0[0] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (5)    (x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(-1)Bound*bni_15] + [(-1)bni_15]x2[0] + [bni_15]x1[0] + [bni_15]x0[0] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (6)    ([1] + x1[0] + x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x1[0] + x0[0] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(-1)Bound*bni_15 + bni_15] + [(-1)bni_15]x2[0] + [(2)bni_15]x1[0] + [bni_15]x0[0] ≥ 0∧[(-1)bso_16] ≥ 0)







For Pair COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0, x1)), x2) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, +(x1, 1))), +(x2, 1)) the following chains were created:
  • We consider the chain COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1)) which results in the following constraint:

    (7)    (COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1])≥NonInfC∧COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1])≥2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))∧(UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥))



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

    (8)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_17] = 0∧[(-1)bso_18] ≥ 0)



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

    (9)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_17] = 0∧[(-1)bso_18] ≥ 0)



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

    (10)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_17] = 0∧[(-1)bso_18] ≥ 0)



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

    (11)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_17] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_18] ≥ 0)







For Pair 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), x2) → COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2, -1), <(x2, x0)), >=(x1, x0)), >(x0, -1)), EOS(STATIC_2884(x0, x1)), x2) the following chains were created:
  • We consider the chain 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2]) → COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2]), COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0[3], x1[3])), x2[3]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1)) which results in the following constraint:

    (12)    (&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1))=TRUEEOS(STATIC_2884(x0[2], x1[2]))=EOS(STATIC_2884(x0[3], x1[3]))∧x2[2]=x2[3]2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2])≥NonInfC∧2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2])≥COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])∧(UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥))



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

    (13)    (>(x0[2], -1)=TRUE>=(x1[2], x0[2])=TRUE>(x2[2], -1)=TRUE<(x2[2], x0[2])=TRUE2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2])≥NonInfC∧2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2])≥COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])∧(UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥))



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

    (14)    (x0[2] ≥ 0∧x1[2] + [-1]x0[2] ≥ 0∧x2[2] ≥ 0∧x0[2] + [-1] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥)∧[(-1)Bound*bni_19] + [(-1)bni_19]x2[2] + [bni_19]x1[2] + [bni_19]x0[2] ≥ 0∧[(-1)bso_20] ≥ 0)



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

    (15)    (x0[2] ≥ 0∧x1[2] + [-1]x0[2] ≥ 0∧x2[2] ≥ 0∧x0[2] + [-1] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥)∧[(-1)Bound*bni_19] + [(-1)bni_19]x2[2] + [bni_19]x1[2] + [bni_19]x0[2] ≥ 0∧[(-1)bso_20] ≥ 0)



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

    (16)    (x0[2] ≥ 0∧x1[2] + [-1]x0[2] ≥ 0∧x2[2] ≥ 0∧x0[2] + [-1] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥)∧[(-1)Bound*bni_19] + [(-1)bni_19]x2[2] + [bni_19]x1[2] + [bni_19]x0[2] ≥ 0∧[(-1)bso_20] ≥ 0)



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

    (17)    ([1] + x2[2] + x0[2] ≥ 0∧x1[2] + [-1] + [-1]x2[2] + [-1]x0[2] ≥ 0∧x2[2] ≥ 0∧x0[2] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥)∧[(-1)Bound*bni_19 + bni_19] + [bni_19]x1[2] + [bni_19]x0[2] ≥ 0∧[(-1)bso_20] ≥ 0)



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

    (18)    ([1] + x2[2] + x0[2] ≥ 0∧x1[2] ≥ 0∧x2[2] ≥ 0∧x0[2] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥)∧[(-1)Bound*bni_19 + (2)bni_19] + [bni_19]x2[2] + [(2)bni_19]x0[2] + [bni_19]x1[2] ≥ 0∧[(-1)bso_20] ≥ 0)







For Pair COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0, x1)), x2) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), +(x2, 1)) the following chains were created:
  • We consider the chain COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0[3], x1[3])), x2[3]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1)) which results in the following constraint:

    (19)    (COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0[3], x1[3])), x2[3])≥NonInfC∧COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0[3], x1[3])), x2[3])≥2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))∧(UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))), ≥))



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

    (20)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))), ≥)∧[bni_21] = 0∧[1 + (-1)bso_22] ≥ 0)



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

    (21)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))), ≥)∧[bni_21] = 0∧[1 + (-1)bso_22] ≥ 0)



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

    (22)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))), ≥)∧[bni_21] = 0∧[1 + (-1)bso_22] ≥ 0)



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

    (23)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))), ≥)∧[bni_21] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_22] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), x2) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2, -1), <(x2, x0)), >(x1, -1)), <(x1, x0)), >(x0, -1)), EOS(STATIC_2884(x0, x1)), x2)
    • ([1] + x1[0] + x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x1[0] + x0[0] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(-1)Bound*bni_15 + bni_15] + [(-1)bni_15]x2[0] + [(2)bni_15]x1[0] + [bni_15]x0[0] ≥ 0∧[(-1)bso_16] ≥ 0)

  • COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0, x1)), x2) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, +(x1, 1))), +(x2, 1))
    • ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_17] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_18] ≥ 0)

  • 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), x2) → COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2, -1), <(x2, x0)), >=(x1, x0)), >(x0, -1)), EOS(STATIC_2884(x0, x1)), x2)
    • ([1] + x2[2] + x0[2] ≥ 0∧x1[2] ≥ 0∧x2[2] ≥ 0∧x0[2] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])), ≥)∧[(-1)Bound*bni_19 + (2)bni_19] + [bni_19]x2[2] + [(2)bni_19]x0[2] + [bni_19]x1[2] ≥ 0∧[(-1)bso_20] ≥ 0)

  • COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0, x1)), x2) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0, x1)), +(x2, 1))
    • ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))), ≥)∧[bni_21] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_22] ≥ 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(2884_0_MAIN_FIELDACCESS(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(EOS(x1)) = x1   
POL(STATIC_2884(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(COND_2884_0_MAIN_FIELDACCESS(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(COND_2884_0_MAIN_FIELDACCESS1(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(>=(x1, x2)) = [-1]   

The following pairs are in P>:

COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0[3], x1[3])), x2[3]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), +(x2[3], 1))

The following pairs are in Pbound:

2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])
2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2]) → COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])

The following pairs are in P:

2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])
COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))
2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2]) → COND_2884_0_MAIN_FIELDACCESS1(&&(&&(&&(>(x2[2], -1), <(x2[2], x0[2])), >=(x1[2], x0[2])), >(x0[2], -1)), EOS(STATIC_2884(x0[2], x1[2])), x2[2])

There are no usable rules.

(41) Complex Obligation (AND)

(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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(x2[0] > -1 && x2[0] < x0[0] && x1[0] > -1 && x1[0] < x0[0] && x0[0] > -1, EOS(STATIC_2884(x0[0], x1[0])), x2[0])
(1): COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], x1[1] + 1)), x2[1] + 1)
(2): 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[2], x1[2])), x2[2]) → COND_2884_0_MAIN_FIELDACCESS1(x2[2] > -1 && x2[2] < x0[2] && x1[2] >= x0[2] && x0[2] > -1, EOS(STATIC_2884(x0[2], x1[2])), x2[2])

(1) -> (0), if (EOS(STATIC_2884(x0[1], x1[1] + 1)) →* EOS(STATIC_2884(x0[0], x1[0]))∧x2[1] + 1* x2[0])


(0) -> (1), if (x2[0] > -1 && x2[0] < x0[0] && x1[0] > -1 && x1[0] < x0[0] && x0[0] > -1EOS(STATIC_2884(x0[0], x1[0])) →* EOS(STATIC_2884(x0[1], x1[1]))∧x2[0]* x2[1])


(1) -> (2), if (EOS(STATIC_2884(x0[1], x1[1] + 1)) →* EOS(STATIC_2884(x0[2], x1[2]))∧x2[1] + 1* x2[2])



The set Q is empty.

(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


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], x1[1] + 1)), x2[1] + 1)
(0): 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(x2[0] > -1 && x2[0] < x0[0] && x1[0] > -1 && x1[0] < x0[0] && x0[0] > -1, EOS(STATIC_2884(x0[0], x1[0])), x2[0])

(1) -> (0), if (EOS(STATIC_2884(x0[1], x1[1] + 1)) →* EOS(STATIC_2884(x0[0], x1[0]))∧x2[1] + 1* x2[0])


(0) -> (1), if (x2[0] > -1 && x2[0] < x0[0] && x1[0] > -1 && x1[0] < x0[0] && x0[0] > -1EOS(STATIC_2884(x0[0], x1[0])) →* EOS(STATIC_2884(x0[1], x1[1]))∧x2[0]* x2[1])



The set Q is empty.

(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@117a26fe 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_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1)) the following chains were created:
  • We consider the chain COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1)) which results in the following constraint:

    (1)    (COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1])≥NonInfC∧COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1])≥2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))∧(UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥))



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

    (2)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_9] = 0∧[1 + (-1)bso_10] ≥ 0)



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

    (3)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_9] = 0∧[1 + (-1)bso_10] ≥ 0)



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

    (4)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_9] = 0∧[1 + (-1)bso_10] ≥ 0)



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

    (5)    ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_9] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_10] ≥ 0)







For Pair 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0]) the following chains were created:
  • We consider the chain 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0]), COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1)) which results in the following constraint:

    (6)    (&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1))=TRUEEOS(STATIC_2884(x0[0], x1[0]))=EOS(STATIC_2884(x0[1], x1[1]))∧x2[0]=x2[1]2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥NonInfC∧2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])∧(UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥))



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

    (7)    (>(x0[0], -1)=TRUE<(x1[0], x0[0])=TRUE>(x1[0], -1)=TRUE>(x2[0], -1)=TRUE<(x2[0], x0[0])=TRUE2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥NonInfC∧2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0])≥COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])∧(UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥))



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

    (8)    (x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(2)bni_11 + (-1)Bound*bni_11] + [(-2)bni_11]x1[0] + [(2)bni_11]x0[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)



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

    (9)    (x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(2)bni_11 + (-1)Bound*bni_11] + [(-2)bni_11]x1[0] + [(2)bni_11]x0[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)



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

    (10)    (x0[0] ≥ 0∧x0[0] + [-1] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(2)bni_11 + (-1)Bound*bni_11] + [(-2)bni_11]x1[0] + [(2)bni_11]x0[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)



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

    (11)    ([1] + x1[0] + x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x1[0] + x0[0] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(4)bni_11 + (-1)Bound*bni_11] + [(2)bni_11]x0[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))
    • ((UIncreasing(2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))), ≥)∧[bni_9] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_10] ≥ 0)

  • 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])
    • ([1] + x1[0] + x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧x1[0] + x0[0] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])), ≥)∧[(4)bni_11 + (-1)Bound*bni_11] + [(2)bni_11]x0[0] ≥ 0∧[1 + (-1)bso_12] ≥ 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(COND_2884_0_MAIN_FIELDACCESS(x1, x2, x3)) = [1] + [2]x2   
POL(EOS(x1)) = x1   
POL(STATIC_2884(x1, x2)) = [-1]x2 + x1   
POL(2884_0_MAIN_FIELDACCESS(x1, x2)) = [2] + [2]x1   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(<(x1, x2)) = [1]   

The following pairs are in P>:

COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], +(x1[1], 1))), +(x2[1], 1))
2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])

The following pairs are in Pbound:

2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[0], x1[0])), x2[0]) → COND_2884_0_MAIN_FIELDACCESS(&&(&&(&&(&&(>(x2[0], -1), <(x2[0], x0[0])), >(x1[0], -1)), <(x1[0], x0[0])), >(x0[0], -1)), EOS(STATIC_2884(x0[0], x1[0])), x2[0])

The following pairs are in P:
none

There are no usable rules.

(46) 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


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], x1[1] + 1)), x2[1] + 1)


The set Q is empty.

(47) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(48) TRUE

(49) 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


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_2884_0_MAIN_FIELDACCESS(TRUE, EOS(STATIC_2884(x0[1], x1[1])), x2[1]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[1], x1[1] + 1)), x2[1] + 1)
(3): COND_2884_0_MAIN_FIELDACCESS1(TRUE, EOS(STATIC_2884(x0[3], x1[3])), x2[3]) → 2884_0_MAIN_FIELDACCESS(EOS(STATIC_2884(x0[3], x1[3])), x2[3] + 1)


The set Q is empty.

(50) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.

(51) TRUE