(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: Recursions
public class Recursions {
public static void main(String args[]) {
for (int i = 0; i < args.length; i++)
rec0(0, args.length);
}

public static void rec0(int i, int stop) {
if (i <= stop) {
rec1(0, 2*i, i);
rec0(i+1, stop);
}
}

public static void rec1(int j, int stop, int i) {
if (j <= stop) {
rec2(i+j, 0, i, j);
rec1(j+1, stop, i);
}
}

public static void rec2(int k, int stop, int i, int j) {
if (k >= stop) {
rec3(0, 2*i + 3*j + 4*k, i, j ,k);
rec2(k-1, stop, i, j);
}
}

public static void rec3(int l, int stop, int i, int j, int k) {
if (l <= stop) {
rec4(1000*i+100*j+10*k+l, 0);
rec3(l+1, stop, i, j, k);
}
}

public static void rec4(int m, int stop) {
if (m >= stop)
rec4(m-1, stop);
}
}


(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

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

Recursions.rec0(II)V: Graph of 28 nodes with 0 SCCs.

Recursions.rec1(III)V: Graph of 29 nodes with 0 SCCs.

Recursions.rec2(IIII)V: Graph of 41 nodes with 0 SCCs.

Recursions.rec3(IIIII)V: Graph of 40 nodes with 0 SCCs.

Recursions.rec4(II)V: Graph of 19 nodes with 0 SCCs.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 6 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

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

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 11 rules for P and 7 rules for R.


P rules:
952_0_rec4_Load(EOS(STATIC_952), i89, matching1, i89) → 958_0_rec4_LT(EOS(STATIC_958), i89, 0, i89, 0) | =(matching1, 0)
958_0_rec4_LT(EOS(STATIC_958), i100, matching1, i100, matching2) → 965_0_rec4_LT(EOS(STATIC_965), i100, 0, i100, 0) | &&(=(matching1, 0), =(matching2, 0))
965_0_rec4_LT(EOS(STATIC_965), i100, matching1, i100, matching2) → 973_0_rec4_Load(EOS(STATIC_973), i100, 0) | &&(&&(>=(i100, 0), =(matching1, 0)), =(matching2, 0))
973_0_rec4_Load(EOS(STATIC_973), i100, matching1) → 985_0_rec4_ConstantStackPush(EOS(STATIC_985), 0, i100) | =(matching1, 0)
985_0_rec4_ConstantStackPush(EOS(STATIC_985), matching1, i100) → 990_0_rec4_IntArithmetic(EOS(STATIC_990), 0, i100, 1) | =(matching1, 0)
990_0_rec4_IntArithmetic(EOS(STATIC_990), matching1, i100, matching2) → 999_0_rec4_Load(EOS(STATIC_999), 0, -(i100, 1)) | &&(&&(>=(i100, 0), =(matching1, 0)), =(matching2, 1))
999_0_rec4_Load(EOS(STATIC_999), matching1, i119) → 1004_0_rec4_InvokeMethod(EOS(STATIC_1004), i119, 0) | =(matching1, 0)
1004_0_rec4_InvokeMethod(EOS(STATIC_1004), i119, matching1) → 1010_1_rec4_InvokeMethod(1010_0_rec4_Load(EOS(STATIC_1010), i119, 0), i119, 0) | =(matching1, 0)
1010_0_rec4_Load(EOS(STATIC_1010), i119, matching1) → 1017_0_rec4_Load(EOS(STATIC_1017), i119, 0) | =(matching1, 0)
1017_0_rec4_Load(EOS(STATIC_1017), i119, matching1) → 946_0_rec4_Load(EOS(STATIC_946), i119, 0) | =(matching1, 0)
946_0_rec4_Load(EOS(STATIC_946), i89, matching1) → 952_0_rec4_Load(EOS(STATIC_952), i89, 0, i89) | =(matching1, 0)
R rules:
958_0_rec4_LT(EOS(STATIC_958), i99, matching1, i99, matching2) → 964_0_rec4_LT(EOS(STATIC_964), i99, 0, i99, 0) | &&(=(matching1, 0), =(matching2, 0))
964_0_rec4_LT(EOS(STATIC_964), i99, matching1, i99, matching2) → 972_0_rec4_Return(EOS(STATIC_972)) | &&(&&(<(i99, 0), =(matching1, 0)), =(matching2, 0))
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), matching1, matching2) → 1034_0_rec4_Return(EOS(STATIC_1034), -1, 0) | &&(=(matching1, -1), =(matching2, 0))
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), i139, matching1) → 1086_0_rec4_Return(EOS(STATIC_1086), i139, 0) | =(matching1, 0)
1034_0_rec4_Return(EOS(STATIC_1034), matching1, matching2) → 1058_0_rec4_Return(EOS(STATIC_1058), -1, 0) | &&(=(matching1, -1), =(matching2, 0))
1058_0_rec4_Return(EOS(STATIC_1058), i133, matching1) → 1066_0_rec4_Return(EOS(STATIC_1066)) | =(matching1, 0)
1086_0_rec4_Return(EOS(STATIC_1086), i139, matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), i139, 0) | =(matching1, 0)

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


P rules:
952_0_rec4_Load(EOS(STATIC_952), x0, 0, x0) → 1010_1_rec4_InvokeMethod(952_0_rec4_Load(EOS(STATIC_952), -(x0, 1), 0, -(x0, 1)), -(x0, 1), 0) | >(+(x0, 1), 0)
R rules:
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), -1, 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), x0, 0) → 1066_0_rec4_Return(EOS(STATIC_1066))

Filtered ground terms:



1010_1_rec4_InvokeMethod(x1, x2, x3) → 1010_1_rec4_InvokeMethod(x1, x2)
952_0_rec4_Load(x1, x2, x3, x4) → 952_0_rec4_Load(x2, x4)
Cond_952_0_rec4_Load(x1, x2, x3, x4, x5) → Cond_952_0_rec4_Load(x1, x3, x5)
1066_0_rec4_Return(x1) → 1066_0_rec4_Return
972_0_rec4_Return(x1) → 972_0_rec4_Return

Filtered duplicate args:



952_0_rec4_Load(x1, x2) → 952_0_rec4_Load(x2)
Cond_952_0_rec4_Load(x1, x2, x3) → Cond_952_0_rec4_Load(x1, x3)

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


P rules:
952_0_rec4_Load(x0) → 1010_1_rec4_InvokeMethod(952_0_rec4_Load(-(x0, 1)), -(x0, 1)) | >(x0, -1)
R rules:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, -1) → 1066_0_rec4_Return
1010_1_rec4_InvokeMethod(1066_0_rec4_Return, x0) → 1066_0_rec4_Return

Performed bisimulation on rules. Used the following equivalence classes: {[972_0_rec4_Return, 1066_0_rec4_Return]=972_0_rec4_Return}


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


P rules:
952_0_REC4_LOAD(x0) → COND_952_0_REC4_LOAD(>(x0, -1), x0)
COND_952_0_REC4_LOAD(TRUE, x0) → 952_0_REC4_LOAD(-(x0, 1))
R rules:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, -1) → 972_0_rec4_Return
1010_1_rec4_InvokeMethod(972_0_rec4_Return, x0) → 972_0_rec4_Return

(7) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, -1) → 972_0_rec4_Return
1010_1_rec4_InvokeMethod(972_0_rec4_Return, x0) → 972_0_rec4_Return

The integer pair graph contains the following rules and edges:
(0): 952_0_REC4_LOAD(x0[0]) → COND_952_0_REC4_LOAD(x0[0] > -1, x0[0])
(1): COND_952_0_REC4_LOAD(TRUE, x0[1]) → 952_0_REC4_LOAD(x0[1] - 1)

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


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



The set Q consists of the following terms:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, x0)

(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.IdpCand1ShapeHeuristic@1ae0a15f 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 952_0_REC4_LOAD(x0) → COND_952_0_REC4_LOAD(>(x0, -1), x0) the following chains were created:
  • We consider the chain 952_0_REC4_LOAD(x0[0]) → COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0]), COND_952_0_REC4_LOAD(TRUE, x0[1]) → 952_0_REC4_LOAD(-(x0[1], 1)) which results in the following constraint:

    (1)    (>(x0[0], -1)=TRUEx0[0]=x0[1]952_0_REC4_LOAD(x0[0])≥NonInfC∧952_0_REC4_LOAD(x0[0])≥COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])∧(UIncreasing(COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])), ≥))



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

    (2)    (>(x0[0], -1)=TRUE952_0_REC4_LOAD(x0[0])≥NonInfC∧952_0_REC4_LOAD(x0[0])≥COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])∧(UIncreasing(COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])), ≥))



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

    (3)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)



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

    (4)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)



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

    (5)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)







For Pair COND_952_0_REC4_LOAD(TRUE, x0) → 952_0_REC4_LOAD(-(x0, 1)) the following chains were created:
  • We consider the chain COND_952_0_REC4_LOAD(TRUE, x0[1]) → 952_0_REC4_LOAD(-(x0[1], 1)) which results in the following constraint:

    (6)    (COND_952_0_REC4_LOAD(TRUE, x0[1])≥NonInfC∧COND_952_0_REC4_LOAD(TRUE, x0[1])≥952_0_REC4_LOAD(-(x0[1], 1))∧(UIncreasing(952_0_REC4_LOAD(-(x0[1], 1))), ≥))



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

    (7)    ((UIncreasing(952_0_REC4_LOAD(-(x0[1], 1))), ≥)∧[bni_12] = 0∧[2 + (-1)bso_13] ≥ 0)



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

    (8)    ((UIncreasing(952_0_REC4_LOAD(-(x0[1], 1))), ≥)∧[bni_12] = 0∧[2 + (-1)bso_13] ≥ 0)



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

    (9)    ((UIncreasing(952_0_REC4_LOAD(-(x0[1], 1))), ≥)∧[bni_12] = 0∧[2 + (-1)bso_13] ≥ 0)



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

    (10)    ((UIncreasing(952_0_REC4_LOAD(-(x0[1], 1))), ≥)∧[bni_12] = 0∧0 = 0∧[2 + (-1)bso_13] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 952_0_REC4_LOAD(x0) → COND_952_0_REC4_LOAD(>(x0, -1), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)

  • COND_952_0_REC4_LOAD(TRUE, x0) → 952_0_REC4_LOAD(-(x0, 1))
    • ((UIncreasing(952_0_REC4_LOAD(-(x0[1], 1))), ≥)∧[bni_12] = 0∧0 = 0∧[2 + (-1)bso_13] ≥ 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(1010_1_rec4_InvokeMethod(x1, x2)) = [-1]   
POL(972_0_rec4_Return) = [-1]   
POL(-1) = [-1]   
POL(952_0_REC4_LOAD(x1)) = [2]x1   
POL(COND_952_0_REC4_LOAD(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_952_0_REC4_LOAD(TRUE, x0[1]) → 952_0_REC4_LOAD(-(x0[1], 1))

The following pairs are in Pbound:

952_0_REC4_LOAD(x0[0]) → COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])

The following pairs are in P:

952_0_REC4_LOAD(x0[0]) → COND_952_0_REC4_LOAD(>(x0[0], -1), x0[0])

There are no usable rules.

(9) Complex Obligation (AND)

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


The ITRS R consists of the following rules:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, -1) → 972_0_rec4_Return
1010_1_rec4_InvokeMethod(972_0_rec4_Return, x0) → 972_0_rec4_Return

The integer pair graph contains the following rules and edges:
(0): 952_0_REC4_LOAD(x0[0]) → COND_952_0_REC4_LOAD(x0[0] > -1, x0[0])


The set Q consists of the following terms:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, x0)

(11) IDependencyGraphProof (EQUIVALENT transformation)

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

(12) TRUE

(13) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, -1) → 972_0_rec4_Return
1010_1_rec4_InvokeMethod(972_0_rec4_Return, x0) → 972_0_rec4_Return

The integer pair graph contains the following rules and edges:
(1): COND_952_0_REC4_LOAD(TRUE, x0[1]) → 952_0_REC4_LOAD(x0[1] - 1)


The set Q consists of the following terms:
1010_1_rec4_InvokeMethod(972_0_rec4_Return, x0)

(14) IDependencyGraphProof (EQUIVALENT transformation)

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

(15) TRUE

(16) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Recursions.rec3(IIIII)V
SCC calls the following helper methods: Recursions.rec4(II)V, Recursions.rec3(IIIII)V
Performed SCC analyses: UsedFieldsAnalysis

(17) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 34 rules for P and 27 rules for R.


P rules:
1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i117, i118, i197) → 1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i118, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i118, i197, i115) → 1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i117, i118, i197, i115)
1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i117, i118, i197, i115) → 1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116, i117, i118) | <=(i197, i115)
1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116, i117, i118) → 1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116, i117, i118, 1000)
1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116, i117, i118, matching1) → 1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i117, i118, 1000, i116) | =(matching1, 1000)
1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i117, i118, matching1, i116) → 1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116, i117, i118, *(1000, i116)) | =(matching1, 1000)
1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116, i117, i118, i211) → 1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116, i117, i118, i211, 100)
1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116, i117, i118, i211, matching1) → 1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116, i117, i118, i211, 100, i117) | =(matching1, 100)
1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116, i117, i118, i211, matching1, i117) → 1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116, i117, i118, i211, *(100, i117)) | =(matching1, 100)
1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116, i117, i118, i211, i212) → 1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116, i117, i118, +(i211, i212))
1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116, i117, i118, i213) → 1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116, i117, i118, i213, 10)
1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116, i117, i118, i213, matching1) → 1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116, i117, i118, i213, 10, i118) | =(matching1, 10)
1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116, i117, i118, i213, matching1, i118) → 1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116, i117, i118, i213, *(10, i118)) | =(matching1, 10)
1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116, i117, i118, i213, i219) → 1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116, i117, i118, +(i213, i219))
1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116, i117, i118, i222) → 1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i117, i118, i222, i197)
1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i117, i118, i222, i197) → 1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116, i117, i118, +(i222, i197)) | >=(i197, 0)
1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116, i117, i118, i223) → 1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116, i117, i118, i223, 0)
1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116, i117, i118, i223, matching1) → 1254_1_rec3_InvokeMethod(1254_0_rec4_Load(EOS(STATIC_1254), i223, 0), i197, i115, i116, i117, i118, i223, 0) | =(matching1, 0)
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), i197, i115, i116, i117, i118, i226, matching1) → 1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116, i117, i118, i226, 0) | =(matching1, 0)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), i197, i115, i116, i117, i118, i227, matching1) → 1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116, i117, i118, i227, 0) | =(matching1, 0)
1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116, i117, i118, i226, matching1) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117, i118, i226, 0) | =(matching1, 0)
1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117, i118, i229, matching1) → 1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116, i117, i118) | =(matching1, 0)
1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116, i117, i118) → 1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i117, i118, i197)
1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i117, i118, i197) → 1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i117, i118, i197, 1)
1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i117, i118, i197, matching1) → 1279_0_rec3_Load(EOS(STATIC_1279), i115, i116, i117, i118, +(i197, 1)) | &&(>=(i197, 0), =(matching1, 1))
1279_0_rec3_Load(EOS(STATIC_1279), i115, i116, i117, i118, i232) → 1281_0_rec3_Load(EOS(STATIC_1281), i116, i117, i118, i232, i115)
1281_0_rec3_Load(EOS(STATIC_1281), i116, i117, i118, i232, i115) → 1283_0_rec3_Load(EOS(STATIC_1283), i117, i118, i232, i115, i116)
1283_0_rec3_Load(EOS(STATIC_1283), i117, i118, i232, i115, i116) → 1286_0_rec3_Load(EOS(STATIC_1286), i118, i232, i115, i116, i117)
1286_0_rec3_Load(EOS(STATIC_1286), i118, i232, i115, i116, i117) → 1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i232, i115, i116, i117, i118)
1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i232, i115, i116, i117, i118) → 1291_1_rec3_InvokeMethod(1291_0_rec3_Load(EOS(STATIC_1291), i232, i115, i116, i117, i118), i232, i115, i116, i117, i118)
1291_0_rec3_Load(EOS(STATIC_1291), i232, i115, i116, i117, i118) → 1294_0_rec3_Load(EOS(STATIC_1294), i232, i115, i116, i117, i118)
1294_0_rec3_Load(EOS(STATIC_1294), i232, i115, i116, i117, i118) → 1187_0_rec3_Load(EOS(STATIC_1187), i232, i115, i116, i117, i118)
1187_0_rec3_Load(EOS(STATIC_1187), i197, i115, i116, i117, i118) → 1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i117, i118, i197)
1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116, i117, i118, i227, matching1) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117, i118, i227, 0) | =(matching1, 0)
R rules:
1254_0_rec4_Load(EOS(STATIC_1254), i223, matching1) → 1256_0_rec4_Load(EOS(STATIC_1256), i223, 0) | =(matching1, 0)
1256_0_rec4_Load(EOS(STATIC_1256), i223, matching1) → 946_0_rec4_Load(EOS(STATIC_946), i223, 0) | =(matching1, 0)
1017_0_rec4_Load(EOS(STATIC_1017), matching1) → 946_0_rec4_Load(EOS(STATIC_946), i119, 0) | =(matching1, 0)
946_0_rec4_Load(EOS(STATIC_946), i89, matching1) → 952_0_rec4_Load(EOS(STATIC_952), i89, 0, i89) | =(matching1, 0)
952_0_rec4_Load(EOS(STATIC_952), i89, matching1, i89) → 958_0_rec4_LT(EOS(STATIC_958), i89, 0, i89, 0) | =(matching1, 0)
958_0_rec4_LT(EOS(STATIC_958), i99, matching1, i99, matching2) → 964_0_rec4_LT(EOS(STATIC_964), i99, 0, i99, 0) | &&(=(matching1, 0), =(matching2, 0))
958_0_rec4_LT(EOS(STATIC_958), i100, matching1, i100, matching2) → 965_0_rec4_LT(EOS(STATIC_965), i100, 0, i100, 0) | &&(=(matching1, 0), =(matching2, 0))
964_0_rec4_LT(EOS(STATIC_964), i99, matching1, i99, matching2) → 972_0_rec4_Return(EOS(STATIC_972)) | &&(&&(<(i99, 0), =(matching1, 0)), =(matching2, 0))
965_0_rec4_LT(EOS(STATIC_965), i100, matching1, i100, matching2) → 973_0_rec4_Load(EOS(STATIC_973), i100, 0) | &&(&&(>=(i100, 0), =(matching1, 0)), =(matching2, 0))
973_0_rec4_Load(EOS(STATIC_973), i100, matching1) → 985_0_rec4_ConstantStackPush(EOS(STATIC_985), 0, i100) | =(matching1, 0)
985_0_rec4_ConstantStackPush(EOS(STATIC_985), matching1, i100) → 990_0_rec4_IntArithmetic(EOS(STATIC_990), 0, i100) | =(matching1, 0)
990_0_rec4_IntArithmetic(EOS(STATIC_990), matching1, i100) → 999_0_rec4_Load(EOS(STATIC_999), 0) | &&(>=(i100, 0), =(matching1, 0))
999_0_rec4_Load(EOS(STATIC_999), matching1) → 1004_0_rec4_InvokeMethod(EOS(STATIC_1004), 0) | =(matching1, 0)
1004_0_rec4_InvokeMethod(EOS(STATIC_1004), matching1) → 1010_1_rec4_InvokeMethod(1010_0_rec4_Load(EOS(STATIC_1010), 0), 0) | =(matching1, 0)
1010_0_rec4_Load(EOS(STATIC_1010), matching1) → 1017_0_rec4_Load(EOS(STATIC_1017), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), matching1) → 1034_0_rec4_Return(EOS(STATIC_1034), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), matching1) → 1086_0_rec4_Return(EOS(STATIC_1086), 0) | =(matching1, 0)
1034_0_rec4_Return(EOS(STATIC_1034), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)
1058_0_rec4_Return(EOS(STATIC_1058), matching1) → 1066_0_rec4_Return(EOS(STATIC_1066)) | =(matching1, 0)
1086_0_rec4_Return(EOS(STATIC_1086), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i118, i197, i115) → 1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i117, i118, i197, i115)
1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i117, i118, i197, i115) → 1203_0_rec3_Return(EOS(STATIC_1203)) | >(i197, i115)
1203_0_rec3_Return(EOS(STATIC_1203)) → 1304_0_rec3_Return(EOS(STATIC_1304))
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i249, i250, i251, i252, i253) → 1301_0_rec3_Return(EOS(STATIC_1301), i249, i250, i251, i252, i253)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i263, i264, i265, i266, i267) → 1316_0_rec3_Return(EOS(STATIC_1316), i263, i264, i265, i266, i267)
1301_0_rec3_Return(EOS(STATIC_1301), i249, i250, i251, i252, i253) → 1304_0_rec3_Return(EOS(STATIC_1304))
1316_0_rec3_Return(EOS(STATIC_1316), i263, i264, i265, i266, i267) → 1301_0_rec3_Return(EOS(STATIC_1301), i263, i264, i265, i266, i267)

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


P rules:
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), x0, x1, x2, x3, x4, x5, 0) → 1291_1_rec3_InvokeMethod(1254_1_rec3_InvokeMethod(1254_0_rec4_Load(EOS(STATIC_1254), +(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1)), 0), +(x0, 1), x1, x2, x3, x4, +(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1)), 0), +(x0, 1), x1, x2, x3, x4) | &&(>=(x1, +(x0, 1)), >(+(x0, 1), 0))
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), x0, x1, x2, x3, x4, x5, 0) → 1291_1_rec3_InvokeMethod(1254_1_rec3_InvokeMethod(1254_0_rec4_Load(EOS(STATIC_1254), +(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1)), 0), +(x0, 1), x1, x2, x3, x4, +(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1)), 0), +(x0, 1), x1, x2, x3, x4) | &&(>=(x1, +(x0, 1)), >(+(x0, 1), 0))
R rules:
1254_0_rec4_Load(EOS(STATIC_1254), x0, 0) → 958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0)
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 972_0_rec4_Return(EOS(STATIC_972)) | <(x0, 0)
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x3, 0, x3, 0), 0) | >(+(x0, 1), 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, x1, x2, x3, x4) → 1304_0_rec3_Return(EOS(STATIC_1304))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, x1, x2, x3, x4) → 1304_0_rec3_Return(EOS(STATIC_1304))

Filtered ground terms:



1254_0_rec4_Load(x1, x2, x3) → 1254_0_rec4_Load(x2)
1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → 1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x4, x5, x6, x7, x8)
1066_0_rec4_Return(x1) → 1066_0_rec4_Return
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x4, x5, x6, x7, x8)
972_0_rec4_Return(x1) → 972_0_rec4_Return
1304_0_rec3_Return(x1) → 1304_0_rec3_Return
1203_0_rec3_Return(x1) → 1203_0_rec3_Return
1010_1_rec4_InvokeMethod(x1, x2) → 1010_1_rec4_InvokeMethod(x1)
958_0_rec4_LT(x1, x2, x3, x4, x5) → 958_0_rec4_LT(x2, x4)
Cond_958_0_rec4_LT1(x1, x2, x3, x4, x5, x6, x7) → Cond_958_0_rec4_LT1(x1, x3, x5, x7)
Cond_958_0_rec4_LT(x1, x2, x3, x4, x5, x6) → Cond_958_0_rec4_LT(x1, x3, x5)

Filtered duplicate args:



958_0_rec4_LT(x1, x2) → 958_0_rec4_LT(x2)
Cond_958_0_rec4_LT(x1, x2, x3) → Cond_958_0_rec4_LT(x1, x3)
Cond_958_0_rec4_LT1(x1, x2, x3, x4) → Cond_958_0_rec4_LT1(x1, x3, x4)

Filtered unneeded arguments:



1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → 1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6)
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6)
1291_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1291_1_rec3_InvokeMethod(x1)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6)
Cond_958_0_rec4_LT(x1, x2) → Cond_958_0_rec4_LT(x1)
Cond_958_0_rec4_LT1(x1, x2, x3) → Cond_958_0_rec4_LT1(x1, x3)

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


P rules:
1254_1_rec3_InvokeMethod(972_0_rec4_Return, x0, x1, x2, x3, x4) → 1291_1_rec3_InvokeMethod(1254_1_rec3_InvokeMethod(1254_0_rec4_Load(+(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1))), +(x0, 1), x1, x2, x3, x4)) | &&(>=(x1, +(x0, 1)), >(x0, -1))
1254_1_rec3_InvokeMethod(1066_0_rec4_Return, x0, x1, x2, x3, x4) → 1291_1_rec3_InvokeMethod(1254_1_rec3_InvokeMethod(1254_0_rec4_Load(+(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1))), +(x0, 1), x1, x2, x3, x4)) | &&(>=(x1, +(x0, 1)), >(x0, -1))
R rules:
1254_0_rec4_Load(x0) → 958_0_rec4_LT(x0)
958_0_rec4_LT(x0) → 972_0_rec4_Return | <(x0, 0)
958_0_rec4_LT(x0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3)) | >(x0, -1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 1066_0_rec4_Return
1010_1_rec4_InvokeMethod(1066_0_rec4_Return) → 1066_0_rec4_Return
1291_1_rec3_InvokeMethod(1203_0_rec3_Return) → 1304_0_rec3_Return
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

Performed bisimulation on rules. Used the following equivalence classes: {[972_0_rec4_Return, 1066_0_rec4_Return, 1203_0_rec3_Return, 1304_0_rec3_Return]=972_0_rec4_Return, [Cond_1254_1_rec3_InvokeMethod_7, Cond_1254_1_rec3_InvokeMethod1_7]=Cond_1254_1_rec3_InvokeMethod_7}


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


P rules:
1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0, x1, x2, x3, x4) → COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1, +(x0, 1)), >(x0, -1)), 972_0_rec4_Return, x0, x1, x2, x3, x4)
COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0, x1, x2, x3, x4) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1))), +(x0, 1), x1, x2, x3, x4)
R rules:
1254_0_rec4_Load(x0) → 958_0_rec4_LT(x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(<(x0, 0), x0)
Cond_958_0_rec4_LT(TRUE, x0) → 972_0_rec4_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(>(x0, -1), x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return
1291_1_rec3_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return

(18) 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:
1254_0_rec4_Load(x0) → 958_0_rec4_LT(x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(x0 < 0, x0)
Cond_958_0_rec4_LT(TRUE, x0) → 972_0_rec4_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return
1291_1_rec3_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return

The integer pair graph contains the following rules and edges:
(0): 1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0]) → COND_1254_1_REC3_INVOKEMETHOD(x1[0] >= x0[0] + 1 && x0[0] > -1, 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])
(1): COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0[1], x1[1], x2[1], x3[1], x4[1]) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(1000 * x2[1] + 100 * x3[1] + 10 * x4[1] + x0[1] + 1), x0[1] + 1, x1[1], x2[1], x3[1], x4[1])

(0) -> (1), if (x1[0] >= x0[0] + 1 && x0[0] > -1x0[0]* x0[1]x1[0]* x1[1]x2[0]* x2[1]x3[0]* x3[1]x4[0]* x4[1])


(1) -> (0), if (1254_0_rec4_Load(1000 * x2[1] + 100 * x3[1] + 10 * x4[1] + x0[1] + 1) →* 972_0_rec4_Returnx0[1] + 1* x0[0]x1[1]* x1[0]x2[1]* x2[0]x3[1]* x3[0]x4[1]* x4[0])



The set Q consists of the following terms:
1254_0_rec4_Load(x0)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT(TRUE, x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return)
1291_1_rec3_InvokeMethod(972_0_rec4_Return)

(19) 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@1ae0a15f 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 1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0, x1, x2, x3, x4) → COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1, +(x0, 1)), >(x0, -1)), 972_0_rec4_Return, x0, x1, x2, x3, x4) the following chains were created:
  • We consider the chain 1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0]) → COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0]), COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0[1], x1[1], x2[1], x3[1], x4[1]) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1]) which results in the following constraint:

    (1)    (&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1))=TRUEx0[0]=x0[1]x1[0]=x1[1]x2[0]=x2[1]x3[0]=x3[1]x4[0]=x4[1]1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])≥NonInfC∧1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])≥COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])∧(UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥))



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

    (2)    (>=(x1[0], +(x0[0], 1))=TRUE>(x0[0], -1)=TRUE1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])≥NonInfC∧1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])≥COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])∧(UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥))



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

    (3)    (x1[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [(2)bni_26]x1[0] + [(-1)bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)



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

    (4)    (x1[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [(2)bni_26]x1[0] + [(-1)bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)



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

    (5)    (x1[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [(2)bni_26]x1[0] + [(-1)bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)



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

    (6)    (x1[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥)∧0 = 0∧0 = 0∧0 = 0∧[(-1)bni_26 + (-1)Bound*bni_26] + [(2)bni_26]x1[0] + [(-1)bni_26]x0[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_27] ≥ 0)



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

    (7)    (x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] + [(2)bni_26]x1[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_27] ≥ 0)







For Pair COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0, x1, x2, x3, x4) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1))), +(x0, 1), x1, x2, x3, x4) the following chains were created:
  • We consider the chain COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0[1], x1[1], x2[1], x3[1], x4[1]) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1]) which results in the following constraint:

    (8)    (COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0[1], x1[1], x2[1], x3[1], x4[1])≥NonInfC∧COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0[1], x1[1], x2[1], x3[1], x4[1])≥1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])∧(UIncreasing(1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])), ≥))



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

    (9)    ((UIncreasing(1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



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

    (10)    ((UIncreasing(1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



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

    (11)    ((UIncreasing(1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])), ≥)∧[bni_28] = 0∧[1 + (-1)bso_29] ≥ 0)



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

    (12)    ((UIncreasing(1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])), ≥)∧[bni_28] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_29] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0, x1, x2, x3, x4) → COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1, +(x0, 1)), >(x0, -1)), 972_0_rec4_Return, x0, x1, x2, x3, x4)
    • (x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] + [(2)bni_26]x1[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_27] ≥ 0)

  • COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0, x1, x2, x3, x4) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2), *(100, x3)), *(10, x4)), +(x0, 1))), +(x0, 1), x1, x2, x3, x4)
    • ((UIncreasing(1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])), ≥)∧[bni_28] = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_29] ≥ 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(1254_0_rec4_Load(x1)) = [1]   
POL(958_0_rec4_LT(x1)) = [1]   
POL(Cond_958_0_rec4_LT(x1, x2)) = [1]   
POL(<(x1, x2)) = [-1]   
POL(0) = 0   
POL(972_0_rec4_Return) = [1]   
POL(Cond_958_0_rec4_LT1(x1, x2, x3)) = [1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(1010_1_rec4_InvokeMethod(x1)) = [1]   
POL(1291_1_rec3_InvokeMethod(x1)) = [-1]   
POL(1254_1_REC3_INVOKEMETHOD(x1, x2, x3, x4, x5, x6)) = [2]x3 + [-1]x2 + [-1]x1   
POL(COND_1254_1_REC3_INVOKEMETHOD(x1, x2, x3, x4, x5, x6, x7)) = [-1] + [2]x4 + [-1]x3   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(*(x1, x2)) = x1·x2   
POL(1000) = [1000]   
POL(100) = [100]   
POL(10) = [10]   

The following pairs are in P>:

COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0[1], x1[1], x2[1], x3[1], x4[1]) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(+(+(+(*(1000, x2[1]), *(100, x3[1])), *(10, x4[1])), +(x0[1], 1))), +(x0[1], 1), x1[1], x2[1], x3[1], x4[1])

The following pairs are in Pbound:

1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0]) → COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])

The following pairs are in P:

1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0]) → COND_1254_1_REC3_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])

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

958_0_rec4_LT(x0)11254_0_rec4_Load(x0)1
958_0_rec4_LT(x0)1Cond_958_0_rec4_LT(<(x0, 0), x0)1
958_0_rec4_LT(x0)1Cond_958_0_rec4_LT1(>(x0, -1), x0, x3)1
Cond_958_0_rec4_LT1(TRUE, x0, x3)11010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))1
1010_1_rec4_InvokeMethod(972_0_rec4_Return)1972_0_rec4_Return1
Cond_958_0_rec4_LT(TRUE, x0)1972_0_rec4_Return1

(20) Complex Obligation (AND)

(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:
1254_0_rec4_Load(x0) → 958_0_rec4_LT(x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(x0 < 0, x0)
Cond_958_0_rec4_LT(TRUE, x0) → 972_0_rec4_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return
1291_1_rec3_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return

The integer pair graph contains the following rules and edges:
(0): 1254_1_REC3_INVOKEMETHOD(972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0]) → COND_1254_1_REC3_INVOKEMETHOD(x1[0] >= x0[0] + 1 && x0[0] > -1, 972_0_rec4_Return, x0[0], x1[0], x2[0], x3[0], x4[0])


The set Q consists of the following terms:
1254_0_rec4_Load(x0)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT(TRUE, x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return)
1291_1_rec3_InvokeMethod(972_0_rec4_Return)

(22) IDependencyGraphProof (EQUIVALENT transformation)

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

(23) TRUE

(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


The ITRS R consists of the following rules:
1254_0_rec4_Load(x0) → 958_0_rec4_LT(x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(x0 < 0, x0)
Cond_958_0_rec4_LT(TRUE, x0) → 972_0_rec4_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return
1291_1_rec3_InvokeMethod(972_0_rec4_Return) → 972_0_rec4_Return

The integer pair graph contains the following rules and edges:
(1): COND_1254_1_REC3_INVOKEMETHOD(TRUE, 972_0_rec4_Return, x0[1], x1[1], x2[1], x3[1], x4[1]) → 1254_1_REC3_INVOKEMETHOD(1254_0_rec4_Load(1000 * x2[1] + 100 * x3[1] + 10 * x4[1] + x0[1] + 1), x0[1] + 1, x1[1], x2[1], x3[1], x4[1])


The set Q consists of the following terms:
1254_0_rec4_Load(x0)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT(TRUE, x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return)
1291_1_rec3_InvokeMethod(972_0_rec4_Return)

(25) IDependencyGraphProof (EQUIVALENT transformation)

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

(26) TRUE

(27) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Recursions.rec2(IIII)V
SCC calls the following helper methods: Recursions.rec3(IIIII)V, Recursions.rec2(IIII)V, Recursions.rec4(II)V
Performed SCC analyses: UsedFieldsAnalysis

(28) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 33 rules for P and 70 rules for R.


P rules:
1232_0_rec2_Load(EOS(STATIC_1232), i214, matching1, i215, i216, i214) → 1234_0_rec2_LT(EOS(STATIC_1234), i214, 0, i215, i216, i214, 0) | =(matching1, 0)
1234_0_rec2_LT(EOS(STATIC_1234), i221, matching1, i215, i216, i221, matching2) → 1238_0_rec2_LT(EOS(STATIC_1238), i221, 0, i215, i216, i221, 0) | &&(=(matching1, 0), =(matching2, 0))
1238_0_rec2_LT(EOS(STATIC_1238), i221, matching1, i215, i216, i221, matching2) → 1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, 0, i215, i216) | &&(&&(>=(i221, 0), =(matching1, 0)), =(matching2, 0))
1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, matching1, i215, i216) → 1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, 0, i215, i216, 0) | =(matching1, 0)
1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, matching1, i215, i216, matching2) → 1249_0_rec2_Load(EOS(STATIC_1249), i221, 0, i215, i216, 0, 2) | &&(=(matching1, 0), =(matching2, 0))
1249_0_rec2_Load(EOS(STATIC_1249), i221, matching1, i215, i216, matching2, matching3) → 1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, 0, i215, i216, 0, 2, i215) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 2))
1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, matching1, i215, i216, matching2, matching3, i215) → 1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, 0, i215, i216, 0, *(2, i215)) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 2))
1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, matching1, i215, i216, matching2, i224) → 1257_0_rec2_Load(EOS(STATIC_1257), i221, 0, i215, i216, 0, i224, 3) | &&(=(matching1, 0), =(matching2, 0))
1257_0_rec2_Load(EOS(STATIC_1257), i221, matching1, i215, i216, matching2, i224, matching3) → 1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, 0, i215, i216, 0, i224, 3, i216) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 3))
1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, matching1, i215, i216, matching2, i224, matching3, i216) → 1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, 0, i215, i216, 0, i224, *(3, i216)) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 3))
1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, matching1, i215, i216, matching2, i224, i228) → 1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, 0, i215, i216, 0, +(i224, i228)) | &&(=(matching1, 0), =(matching2, 0))
1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, matching1, i215, i216, matching2, i230) → 1272_0_rec2_Load(EOS(STATIC_1272), i221, 0, i215, i216, 0, i230, 4) | &&(=(matching1, 0), =(matching2, 0))
1272_0_rec2_Load(EOS(STATIC_1272), i221, matching1, i215, i216, matching2, i230, matching3) → 1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, 0, i215, i216, 0, i230, 4, i221) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 4))
1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, matching1, i215, i216, matching2, i230, matching3, i221) → 1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, 0, i215, i216, 0, i230, *(4, i221)) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 4))
1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, matching1, i215, i216, matching2, i230, i231) → 1280_0_rec2_Load(EOS(STATIC_1280), i221, 0, i215, i216, 0, +(i230, i231)) | &&(&&(>=(i231, 0), =(matching1, 0)), =(matching2, 0))
1280_0_rec2_Load(EOS(STATIC_1280), i221, matching1, i215, i216, matching2, i233) → 1282_0_rec2_Load(EOS(STATIC_1282), i221, 0, i215, i216, 0, i233, i215) | &&(=(matching1, 0), =(matching2, 0))
1282_0_rec2_Load(EOS(STATIC_1282), i221, matching1, i215, i216, matching2, i233, i215) → 1285_0_rec2_Load(EOS(STATIC_1285), i221, 0, i215, i216, 0, i233, i215, i216) | &&(=(matching1, 0), =(matching2, 0))
1285_0_rec2_Load(EOS(STATIC_1285), i221, matching1, i215, i216, matching2, i233, i215, i216) → 1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, 0, i215, i216, 0, i233, i215, i216, i221) | &&(=(matching1, 0), =(matching2, 0))
1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, matching1, i215, i216, matching2, i233, i215, i216, i221) → 1290_1_rec2_InvokeMethod(1290_0_rec3_Load(EOS(STATIC_1290), 0, i233, i215, i216, i221), i221, 0, i215, i216, 0, i233, i215, i216, i221) | &&(=(matching1, 0), =(matching2, 0))
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i242, matching1, i240, i241, matching2, i239, i240, i241, i242) → 1300_0_rec3_Return(EOS(STATIC_1300), i242, 0, i240, i241, 0, i239, i240, i241, i242) | &&(=(matching1, 0), =(matching2, 0))
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i261, matching1, i259, i260, matching2, i258, i259, i260, i261) → 1314_0_rec3_Return(EOS(STATIC_1314), i261, 0, i259, i260, 0, i258, i259, i260, i261) | &&(=(matching1, 0), =(matching2, 0))
1300_0_rec3_Return(EOS(STATIC_1300), i242, matching1, i240, i241, matching2, i239, i240, i241, i242) → 1302_0_rec2_Load(EOS(STATIC_1302), i242, 0, i240, i241) | &&(=(matching1, 0), =(matching2, 0))
1302_0_rec2_Load(EOS(STATIC_1302), i242, matching1, i240, i241) → 1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), 0, i240, i241, i242) | =(matching1, 0)
1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), matching1, i240, i241, i242) → 1308_0_rec2_IntArithmetic(EOS(STATIC_1308), 0, i240, i241, i242, 1) | =(matching1, 0)
1308_0_rec2_IntArithmetic(EOS(STATIC_1308), matching1, i240, i241, i242, matching2) → 1312_0_rec2_Load(EOS(STATIC_1312), 0, i240, i241, -(i242, 1)) | &&(&&(>=(i242, 0), =(matching1, 0)), =(matching2, 1))
1312_0_rec2_Load(EOS(STATIC_1312), matching1, i240, i241, i268) → 1317_0_rec2_Load(EOS(STATIC_1317), i240, i241, i268, 0) | =(matching1, 0)
1317_0_rec2_Load(EOS(STATIC_1317), i240, i241, i268, matching1) → 1318_0_rec2_Load(EOS(STATIC_1318), i241, i268, 0, i240) | =(matching1, 0)
1318_0_rec2_Load(EOS(STATIC_1318), i241, i268, matching1, i240) → 1319_0_rec2_InvokeMethod(EOS(STATIC_1319), i268, 0, i240, i241) | =(matching1, 0)
1319_0_rec2_InvokeMethod(EOS(STATIC_1319), i268, matching1, i240, i241) → 1321_1_rec2_InvokeMethod(1321_0_rec2_Load(EOS(STATIC_1321), i268, 0, i240, i241), i268, 0, i240, i241) | =(matching1, 0)
1321_0_rec2_Load(EOS(STATIC_1321), i268, matching1, i240, i241) → 1322_0_rec2_Load(EOS(STATIC_1322), i268, 0, i240, i241) | =(matching1, 0)
1322_0_rec2_Load(EOS(STATIC_1322), i268, matching1, i240, i241) → 1229_0_rec2_Load(EOS(STATIC_1229), i268, 0, i240, i241) | =(matching1, 0)
1229_0_rec2_Load(EOS(STATIC_1229), i214, matching1, i215, i216) → 1232_0_rec2_Load(EOS(STATIC_1232), i214, 0, i215, i216, i214) | =(matching1, 0)
1314_0_rec3_Return(EOS(STATIC_1314), i261, matching1, i259, i260, matching2, i258, i259, i260, i261) → 1300_0_rec3_Return(EOS(STATIC_1300), i261, 0, i259, i260, 0, i258, i259, i260, i261) | &&(=(matching1, 0), =(matching2, 0))
R rules:
1290_0_rec3_Load(EOS(STATIC_1290), matching1, i233, i215, i216, i221) → 1292_0_rec3_Load(EOS(STATIC_1292), 0, i233, i215, i216, i221) | =(matching1, 0)
1292_0_rec3_Load(EOS(STATIC_1292), matching1, i233, i215, i216, i221) → 1187_0_rec3_Load(EOS(STATIC_1187), 0, i233, i215, i216, i221) | =(matching1, 0)
1256_0_rec4_Load(EOS(STATIC_1256), matching1) → 946_0_rec4_Load(EOS(STATIC_946), i223, 0) | =(matching1, 0)
1294_0_rec3_Load(EOS(STATIC_1294), i115, i116, i117, i118) → 1187_0_rec3_Load(EOS(STATIC_1187), i232, i115, i116, i117, i118)
1017_0_rec4_Load(EOS(STATIC_1017), matching1) → 946_0_rec4_Load(EOS(STATIC_946), i119, 0) | =(matching1, 0)
1187_0_rec3_Load(EOS(STATIC_1187), i197, i115, i116, i117, i118) → 1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i117, i118, i197)
1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i117, i118, i197) → 1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i118, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i118, i197, i115) → 1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i117, i118, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i118, i197, i115) → 1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i117, i118, i197, i115)
1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i117, i118, i197, i115) → 1203_0_rec3_Return(EOS(STATIC_1203)) | >(i197, i115)
1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i117, i118, i197, i115) → 1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116, i117, i118) | <=(i197, i115)
1203_0_rec3_Return(EOS(STATIC_1203)) → 1304_0_rec3_Return(EOS(STATIC_1304))
1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116, i117, i118) → 1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116, i117, i118)
1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116, i117, i118) → 1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i117, i118, i116)
1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i117, i118, i116) → 1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116, i117, i118)
1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116, i117, i118) → 1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116, i117, i118)
1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116, i117, i118) → 1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116, i117, i118, i117)
1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116, i117, i118, i117) → 1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116, i117, i118)
1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116, i117, i118) → 1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116, i117, i118)
1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116, i117, i118) → 1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116, i117, i118)
1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116, i117, i118) → 1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116, i117, i118, i118)
1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116, i117, i118, i118) → 1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116, i117, i118)
1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116, i117, i118) → 1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116, i117, i118)
1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116, i117, i118) → 1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i117, i118, i197)
1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i117, i118, i197) → 1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116, i117, i118) | >=(i197, 0)
1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116, i117, i118) → 1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116, i117, i118, 0)
1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116, i117, i118, matching1) → 1254_1_rec3_InvokeMethod(1254_0_rec4_Load(EOS(STATIC_1254), 0), i197, i115, i116, i117, i118, 0) | =(matching1, 0)
1254_0_rec4_Load(EOS(STATIC_1254), matching1) → 1256_0_rec4_Load(EOS(STATIC_1256), 0) | =(matching1, 0)
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), i197, i115, i116, i117, i118, matching1) → 1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116, i117, i118, 0) | =(matching1, 0)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), i197, i115, i116, i117, i118, matching1) → 1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116, i117, i118, 0) | =(matching1, 0)
1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116, i117, i118, matching1) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117, i118, 0) | =(matching1, 0)
1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116, i117, i118, matching1) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117, i118, 0) | =(matching1, 0)
1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117, i118, matching1) → 1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116, i117, i118) | =(matching1, 0)
1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116, i117, i118) → 1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i117, i118, i197)
1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i117, i118, i197) → 1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i117, i118, i197)
1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i117, i118, i197) → 1279_0_rec3_Load(EOS(STATIC_1279), i115, i116, i117, i118) | >=(i197, 0)
1279_0_rec3_Load(EOS(STATIC_1279), i115, i116, i117, i118) → 1281_0_rec3_Load(EOS(STATIC_1281), i116, i117, i118, i115)
1281_0_rec3_Load(EOS(STATIC_1281), i116, i117, i118, i115) → 1283_0_rec3_Load(EOS(STATIC_1283), i117, i118, i115, i116)
1283_0_rec3_Load(EOS(STATIC_1283), i117, i118, i115, i116) → 1286_0_rec3_Load(EOS(STATIC_1286), i118, i115, i116, i117)
1286_0_rec3_Load(EOS(STATIC_1286), i118, i115, i116, i117) → 1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115, i116, i117, i118)
1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115, i116, i117, i118) → 1291_1_rec3_InvokeMethod(1291_0_rec3_Load(EOS(STATIC_1291), i115, i116, i117, i118), i115, i116, i117, i118)
1291_0_rec3_Load(EOS(STATIC_1291), i115, i116, i117, i118) → 1294_0_rec3_Load(EOS(STATIC_1294), i115, i116, i117, i118)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i250, i251, i252, i253) → 1301_0_rec3_Return(EOS(STATIC_1301), i250, i251, i252, i253)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i264, i265, i266, i267) → 1316_0_rec3_Return(EOS(STATIC_1316), i264, i265, i266, i267)
1301_0_rec3_Return(EOS(STATIC_1301), i250, i251, i252, i253) → 1304_0_rec3_Return(EOS(STATIC_1304))
1316_0_rec3_Return(EOS(STATIC_1316), i264, i265, i266, i267) → 1301_0_rec3_Return(EOS(STATIC_1301), i264, i265, i266, i267)
1234_0_rec2_LT(EOS(STATIC_1234), i220, matching1, i215, i216, i220, matching2) → 1237_0_rec2_LT(EOS(STATIC_1237), i220, 0, i215, i216, i220, 0) | &&(=(matching1, 0), =(matching2, 0))
1237_0_rec2_LT(EOS(STATIC_1237), i220, matching1, i215, i216, i220, matching2) → 1241_0_rec2_Return(EOS(STATIC_1241)) | &&(&&(<(i220, 0), =(matching1, 0)), =(matching2, 0))
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), matching1, matching2, i281, i282) → 1325_0_rec2_Return(EOS(STATIC_1325), -1, 0, i281, i282) | &&(=(matching1, -1), =(matching2, 0))
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), i301, matching1, i302, i303) → 1347_0_rec2_Return(EOS(STATIC_1347), i301, 0, i302, i303) | =(matching1, 0)
1325_0_rec2_Return(EOS(STATIC_1325), matching1, matching2, i281, i282) → 1334_0_rec2_Return(EOS(STATIC_1334), -1, 0, i281, i282) | &&(=(matching1, -1), =(matching2, 0))
1334_0_rec2_Return(EOS(STATIC_1334), i292, matching1, i290, i291) → 1337_0_rec2_Return(EOS(STATIC_1337)) | =(matching1, 0)
1347_0_rec2_Return(EOS(STATIC_1347), i301, matching1, i302, i303) → 1334_0_rec2_Return(EOS(STATIC_1334), i301, 0, i302, i303) | =(matching1, 0)
946_0_rec4_Load(EOS(STATIC_946), i89, matching1) → 952_0_rec4_Load(EOS(STATIC_952), i89, 0, i89) | =(matching1, 0)
952_0_rec4_Load(EOS(STATIC_952), i89, matching1, i89) → 958_0_rec4_LT(EOS(STATIC_958), i89, 0, i89, 0) | =(matching1, 0)
958_0_rec4_LT(EOS(STATIC_958), i99, matching1, i99, matching2) → 964_0_rec4_LT(EOS(STATIC_964), i99, 0, i99, 0) | &&(=(matching1, 0), =(matching2, 0))
958_0_rec4_LT(EOS(STATIC_958), i100, matching1, i100, matching2) → 965_0_rec4_LT(EOS(STATIC_965), i100, 0, i100, 0) | &&(=(matching1, 0), =(matching2, 0))
964_0_rec4_LT(EOS(STATIC_964), i99, matching1, i99, matching2) → 972_0_rec4_Return(EOS(STATIC_972)) | &&(&&(<(i99, 0), =(matching1, 0)), =(matching2, 0))
965_0_rec4_LT(EOS(STATIC_965), i100, matching1, i100, matching2) → 973_0_rec4_Load(EOS(STATIC_973), i100, 0) | &&(&&(>=(i100, 0), =(matching1, 0)), =(matching2, 0))
973_0_rec4_Load(EOS(STATIC_973), i100, matching1) → 985_0_rec4_ConstantStackPush(EOS(STATIC_985), 0, i100) | =(matching1, 0)
985_0_rec4_ConstantStackPush(EOS(STATIC_985), matching1, i100) → 990_0_rec4_IntArithmetic(EOS(STATIC_990), 0, i100) | =(matching1, 0)
990_0_rec4_IntArithmetic(EOS(STATIC_990), matching1, i100) → 999_0_rec4_Load(EOS(STATIC_999), 0) | &&(>=(i100, 0), =(matching1, 0))
999_0_rec4_Load(EOS(STATIC_999), matching1) → 1004_0_rec4_InvokeMethod(EOS(STATIC_1004), 0) | =(matching1, 0)
1004_0_rec4_InvokeMethod(EOS(STATIC_1004), matching1) → 1010_1_rec4_InvokeMethod(1010_0_rec4_Load(EOS(STATIC_1010), 0), 0) | =(matching1, 0)
1010_0_rec4_Load(EOS(STATIC_1010), matching1) → 1017_0_rec4_Load(EOS(STATIC_1017), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), matching1) → 1034_0_rec4_Return(EOS(STATIC_1034), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), matching1) → 1086_0_rec4_Return(EOS(STATIC_1086), 0) | =(matching1, 0)
1034_0_rec4_Return(EOS(STATIC_1034), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)
1058_0_rec4_Return(EOS(STATIC_1058), matching1) → 1066_0_rec4_Return(EOS(STATIC_1066)) | =(matching1, 0)
1086_0_rec4_Return(EOS(STATIC_1086), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)

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


P rules:
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, 0, x2, x3, 0, x5, x2, x3, x0) → 1321_1_rec2_InvokeMethod(1290_1_rec2_InvokeMethod(1290_0_rec3_Load(EOS(STATIC_1290), 0, +(+(*(2, x2), *(3, x3)), *(4, -(x0, 1))), x2, x3, -(x0, 1)), -(x0, 1), 0, x2, x3, 0, +(+(*(2, x2), *(3, x3)), *(4, -(x0, 1))), x2, x3, -(x0, 1)), -(x0, 1), 0, x2, x3) | &&(>(+(x0, 1), 1), <=(0, *(4, -(x0, 1))))
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, 0, x2, x3, 0, x5, x2, x3, x0) → 1321_1_rec2_InvokeMethod(1290_1_rec2_InvokeMethod(1290_0_rec3_Load(EOS(STATIC_1290), 0, +(+(*(2, x2), *(3, x3)), *(4, -(x0, 1))), x2, x3, -(x0, 1)), -(x0, 1), 0, x2, x3, 0, +(+(*(2, x2), *(3, x3)), *(4, -(x0, 1))), x2, x3, -(x0, 1)), -(x0, 1), 0, x2, x3) | &&(>(+(x0, 1), 1), <=(0, *(4, -(x0, 1))))
R rules:
1290_0_rec3_Load(EOS(STATIC_1290), 0, x1, x2, x3, x4) → 1194_0_rec3_GT(EOS(STATIC_1194), 0, x1, x2, x3, x4, 0, x1)
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x2, x3, x4, x0, x1) → 1304_0_rec3_Return(EOS(STATIC_1304)) | <(x1, x0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), -1, 0, x2, x3) → 1337_0_rec2_Return(EOS(STATIC_1337))
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), x0, 0, x2, x3) → 1337_0_rec2_Return(EOS(STATIC_1337))
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x2, x3, x4, x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x5, 0, x5, 0), x0, x1, x2, x3, x4, 0) | &&(>=(x1, x0), >(+(x0, 1), 0))
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 972_0_rec4_Return(EOS(STATIC_972)) | <(x0, 0)
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x3, 0, x3, 0), 0) | >(+(x0, 1), 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), x0, x1, x2, x3, x4, 0) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x6, x1, x2, x3, x4, x6, x1), x1, x2, x3, x4) | >(+(x0, 1), 0)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), x0, x1, x2, x3, x4, 0) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x6, x1, x2, x3, x4, x6, x1), x1, x2, x3, x4) | >(+(x0, 1), 0)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, x1, x2, x3) → 1304_0_rec3_Return(EOS(STATIC_1304))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, x1, x2, x3) → 1304_0_rec3_Return(EOS(STATIC_1304))

Filtered ground terms:



1321_1_rec2_InvokeMethod(x1, x2, x3, x4, x5) → 1321_1_rec2_InvokeMethod(x1, x2, x4, x5)
1290_0_rec3_Load(x1, x2, x3, x4, x5, x6) → 1290_0_rec3_Load(x3, x4, x5, x6)
1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → 1290_1_rec2_InvokeMethod(x1, x2, x4, x5, x7, x8, x9, x10)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Cond_1290_1_rec2_InvokeMethod1(x1, x3, x5, x6, x8, x9, x10, x11)
1304_0_rec3_Return(x1) → 1304_0_rec3_Return
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Cond_1290_1_rec2_InvokeMethod(x1, x3, x5, x6, x8, x9, x10, x11)
1203_0_rec3_Return(x1) → 1203_0_rec3_Return
1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7, x8) → 1194_0_rec3_GT(x2, x3, x4, x5, x6, x7, x8)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x4, x5, x6, x7, x9)
1066_0_rec4_Return(x1) → 1066_0_rec4_Return
1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → 1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6)
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x4, x5, x6, x7, x9)
972_0_rec4_Return(x1) → 972_0_rec4_Return
1010_1_rec4_InvokeMethod(x1, x2) → 1010_1_rec4_InvokeMethod(x1)
958_0_rec4_LT(x1, x2, x3, x4, x5) → 958_0_rec4_LT(x2, x4)
Cond_958_0_rec4_LT1(x1, x2, x3, x4, x5, x6, x7) → Cond_958_0_rec4_LT1(x1, x3, x5, x7)
Cond_958_0_rec4_LT(x1, x2, x3, x4, x5, x6) → Cond_958_0_rec4_LT(x1, x3, x5)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → Cond_1194_0_rec3_GT1(x1, x3, x4, x5, x6, x7, x8, x9, x10)
1337_0_rec2_Return(x1) → 1337_0_rec2_Return
1241_0_rec2_Return(x1) → 1241_0_rec2_Return
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1194_0_rec3_GT(x1, x3, x4, x5, x6, x7, x8, x9)

Filtered duplicate args:



1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → 1290_1_rec2_InvokeMethod(x1, x5, x6, x7, x8)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1290_1_rec2_InvokeMethod(x1, x5, x6, x7, x8)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1290_1_rec2_InvokeMethod1(x1, x5, x6, x7, x8)
1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7) → 1194_0_rec3_GT(x3, x4, x5, x6, x7)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1194_0_rec3_GT(x1, x4, x5, x6, x7, x8)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1194_0_rec3_GT1(x1, x4, x5, x6, x7, x8, x9)
958_0_rec4_LT(x1, x2) → 958_0_rec4_LT(x2)
Cond_958_0_rec4_LT(x1, x2, x3) → Cond_958_0_rec4_LT(x1, x3)
Cond_958_0_rec4_LT1(x1, x2, x3, x4) → Cond_958_0_rec4_LT1(x1, x3, x4)

Filtered unneeded arguments:



1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5) → 1290_1_rec2_InvokeMethod(x1, x3, x4, x5)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1290_1_rec2_InvokeMethod(x1, x3, x4, x5)
1321_1_rec2_InvokeMethod(x1, x2, x3, x4) → 1321_1_rec2_InvokeMethod(x1, x2)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1290_1_rec2_InvokeMethod1(x1, x3, x4, x5)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6) → Cond_1194_0_rec3_GT(x1)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1194_0_rec3_GT1(x1, x5, x6, x7)
Cond_958_0_rec4_LT(x1, x2) → Cond_958_0_rec4_LT(x1)
Cond_958_0_rec4_LT1(x1, x2, x3) → Cond_958_0_rec4_LT1(x1, x3)
1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1254_1_rec3_InvokeMethod(x1, x2, x3)
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x7)
1291_1_rec3_InvokeMethod(x1, x2, x3, x4, x5) → 1291_1_rec3_InvokeMethod(x1)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x7)
1194_0_rec3_GT(x1, x2, x3, x4, x5) → 1194_0_rec3_GT(x4, x5)
1290_0_rec3_Load(x1, x2, x3, x4) → 1290_0_rec3_Load(x1)

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


P rules:
1290_1_rec2_InvokeMethod(1203_0_rec3_Return, x2, x3, x0) → 1321_1_rec2_InvokeMethod(1290_1_rec2_InvokeMethod(1290_0_rec3_Load(+(+(*(2, x2), *(3, x3)), *(4, -(x0, 1)))), x2, x3, -(x0, 1)), -(x0, 1)) | &&(>(x0, 0), <=(0, *(4, -(x0, 1))))
1290_1_rec2_InvokeMethod(1304_0_rec3_Return, x2, x3, x0) → 1321_1_rec2_InvokeMethod(1290_1_rec2_InvokeMethod(1290_0_rec3_Load(+(+(*(2, x2), *(3, x3)), *(4, -(x0, 1)))), x2, x3, -(x0, 1)), -(x0, 1)) | &&(>(x0, 0), <=(0, *(4, -(x0, 1))))
R rules:
1290_0_rec3_Load(x1) → 1194_0_rec3_GT(0, x1)
1194_0_rec3_GT(x0, x1) → 1304_0_rec3_Return | <(x1, x0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return, -1) → 1337_0_rec2_Return
1321_1_rec2_InvokeMethod(1337_0_rec2_Return, x0) → 1337_0_rec2_Return
1194_0_rec3_GT(x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x5), x0, x1) | &&(>=(x1, x0), >(x0, -1))
958_0_rec4_LT(x0) → 972_0_rec4_Return | <(x0, 0)
958_0_rec4_LT(x0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3)) | >(x0, -1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 1066_0_rec4_Return
1010_1_rec4_InvokeMethod(1066_0_rec4_Return) → 1066_0_rec4_Return
1254_1_rec3_InvokeMethod(972_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x6, x1)) | >(x0, -1)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x6, x1)) | >(x0, -1)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return) → 1304_0_rec3_Return
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

Performed bisimulation on rules. Used the following equivalence classes: {[1304_0_rec3_Return, 1241_0_rec2_Return, 1337_0_rec2_Return, 972_0_rec4_Return, 1066_0_rec4_Return, 1203_0_rec3_Return]=1304_0_rec3_Return, [Cond_1290_1_rec2_InvokeMethod_5, Cond_1290_1_rec2_InvokeMethod1_5]=Cond_1290_1_rec2_InvokeMethod_5, [Cond_1254_1_rec3_InvokeMethod_5, Cond_1254_1_rec3_InvokeMethod1_5]=Cond_1254_1_rec3_InvokeMethod_5}


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


P rules:
1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2, x3, x0) → COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0, 0), <=(0, *(4, -(x0, 1)))), 1304_0_rec3_Return, x2, x3, x0)
COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2, x3, x0) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2), *(3, x3)), *(4, -(x0, 1)))), x2, x3, -(x0, 1))
R rules:
1290_0_rec3_Load(x1) → 1194_0_rec3_GT(0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(<(x1, x0), x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, -1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, x0) → 1304_0_rec3_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(&&(>=(x1, x0), >(x0, -1)), x0, x1, x5)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x5) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x5), x0, x1)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(<(x0, 0), x0)
Cond_958_0_rec4_LT(TRUE, x0) → 1304_0_rec3_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(>(x0, -1), x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return
1254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(>(x0, -1), 1304_0_rec3_Return, x0, x1, x6)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1304_0_rec3_Return, x0, x1, x6) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x6, x1))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

(29) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1290_0_rec3_Load(x1) → 1194_0_rec3_GT(0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, -1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, x0) → 1304_0_rec3_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x5)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x5) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x5), x0, x1)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(x0 < 0, x0)
Cond_958_0_rec4_LT(TRUE, x0) → 1304_0_rec3_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return
1254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1304_0_rec3_Return, x0, x1, x6)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1304_0_rec3_Return, x0, x1, x6) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x6, x1))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

The integer pair graph contains the following rules and edges:
(0): 1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0]) → COND_1290_1_REC2_INVOKEMETHOD(x0[0] > 0 && 0 <= 4 * x0[0] - 1, 1304_0_rec3_Return, x2[0], x3[0], x0[0])
(1): COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2[1], x3[1], x0[1]) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(2 * x2[1] + 3 * x3[1] + 4 * x0[1] - 1), x2[1], x3[1], x0[1] - 1)

(0) -> (1), if (x0[0] > 0 && 0 <= 4 * x0[0] - 1x2[0]* x2[1]x3[0]* x3[1]x0[0]* x0[1])


(1) -> (0), if (1290_0_rec3_Load(2 * x2[1] + 3 * x3[1] + 4 * x0[1] - 1) →* 1304_0_rec3_Returnx2[1]* x2[0]x3[1]* x3[0]x0[1] - 1* x0[0])



The set Q consists of the following terms:
1290_0_rec3_Load(x0)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, x0)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT(TRUE, x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1304_0_rec3_Return)
1254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1304_0_rec3_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return)

(30) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@1ae0a15f 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 1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2, x3, x0) → COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0, 0), <=(0, *(4, -(x0, 1)))), 1304_0_rec3_Return, x2, x3, x0) the following chains were created:
  • We consider the chain 1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0]) → COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0]), COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2[1], x3[1], x0[1]) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1)) which results in the following constraint:

    (1)    (&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1))))=TRUEx2[0]=x2[1]x3[0]=x3[1]x0[0]=x0[1]1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0])≥NonInfC∧1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0])≥COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])∧(UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥))



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

    (2)    (>(x0[0], 0)=TRUE<=(0, *(4, -(x0[0], 1)))=TRUE1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0])≥NonInfC∧1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0])≥COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])∧(UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥))



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

    (3)    (x0[0] + [-1] ≥ 0∧[4]x0[0] + [-4] ≥ 0 ⇒ (UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[(-1)bso_29] ≥ 0)



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

    (4)    (x0[0] + [-1] ≥ 0∧[4]x0[0] + [-4] ≥ 0 ⇒ (UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[(-1)bso_29] ≥ 0)



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

    (5)    (x0[0] + [-1] ≥ 0∧[4]x0[0] + [-4] ≥ 0 ⇒ (UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[(-1)bso_29] ≥ 0)



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

    (6)    (x0[0] + [-1] ≥ 0∧[4]x0[0] + [-4] ≥ 0 ⇒ (UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)



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

    (7)    (x0[0] ≥ 0∧[4]x0[0] ≥ 0 ⇒ (UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)



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

    (8)    (x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)







For Pair COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2, x3, x0) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2), *(3, x3)), *(4, -(x0, 1)))), x2, x3, -(x0, 1)) the following chains were created:
  • We consider the chain COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2[1], x3[1], x0[1]) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1)) which results in the following constraint:

    (9)    (COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2[1], x3[1], x0[1])≥NonInfC∧COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2[1], x3[1], x0[1])≥1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))∧(UIncreasing(1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))), ≥))



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

    (10)    ((UIncreasing(1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))), ≥)∧[bni_30] = 0∧[1 + (-1)bso_31] ≥ 0)



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

    (11)    ((UIncreasing(1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))), ≥)∧[bni_30] = 0∧[1 + (-1)bso_31] ≥ 0)



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

    (12)    ((UIncreasing(1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))), ≥)∧[bni_30] = 0∧[1 + (-1)bso_31] ≥ 0)



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

    (13)    ((UIncreasing(1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))), ≥)∧[bni_30] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_31] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2, x3, x0) → COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0, 0), <=(0, *(4, -(x0, 1)))), 1304_0_rec3_Return, x2, x3, x0)
    • (x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_29] ≥ 0)

  • COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2, x3, x0) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2), *(3, x3)), *(4, -(x0, 1)))), x2, x3, -(x0, 1))
    • ((UIncreasing(1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))), ≥)∧[bni_30] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_31] ≥ 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(1290_0_rec3_Load(x1)) = [-1]   
POL(1194_0_rec3_GT(x1, x2)) = [-1] + x1   
POL(0) = 0   
POL(Cond_1194_0_rec3_GT(x1, x2, x3)) = [1] + x2   
POL(<(x1, x2)) = [-1]   
POL(1304_0_rec3_Return) = [-1]   
POL(1321_1_rec2_InvokeMethod(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(Cond_1194_0_rec3_GT1(x1, x2, x3, x4)) = [1] + x2   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(1254_1_rec3_InvokeMethod(x1, x2, x3)) = x2   
POL(958_0_rec4_LT(x1)) = [-1] + x1   
POL(Cond_958_0_rec4_LT(x1, x2)) = [-1] + [-1]x2   
POL(Cond_958_0_rec4_LT1(x1, x2, x3)) = [-1] + [-1]x2   
POL(1010_1_rec4_InvokeMethod(x1)) = [-1]   
POL(Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5)) = [1] + x3   
POL(1291_1_rec3_InvokeMethod(x1)) = [-1] + [-1]x1   
POL(1290_1_REC2_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + x4   
POL(COND_1290_1_REC2_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + x5   
POL(<=(x1, x2)) = [-1]   
POL(*(x1, x2)) = x1·x2   
POL(4) = [4]   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(+(x1, x2)) = x1 + x2   
POL(2) = [2]   
POL(3) = [3]   

The following pairs are in P>:

COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2[1], x3[1], x0[1]) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(+(+(*(2, x2[1]), *(3, x3[1])), *(4, -(x0[1], 1)))), x2[1], x3[1], -(x0[1], 1))

The following pairs are in Pbound:

1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0]) → COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])

The following pairs are in P:

1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0]) → COND_1290_1_REC2_INVOKEMETHOD(&&(>(x0[0], 0), <=(0, *(4, -(x0[0], 1)))), 1304_0_rec3_Return, x2[0], x3[0], x0[0])

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

1290_0_rec3_Load(x1)11194_0_rec3_GT(0, x1)1
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x5)11254_1_rec3_InvokeMethod(958_0_rec4_LT(x5), x0, x1)1
Cond_1254_1_rec3_InvokeMethod(>(x0, -1), 1304_0_rec3_Return, x0, x1, x6)11254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1)1

(31) Complex Obligation (AND)

(32) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1290_0_rec3_Load(x1) → 1194_0_rec3_GT(0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, -1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, x0) → 1304_0_rec3_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x5)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x5) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x5), x0, x1)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(x0 < 0, x0)
Cond_958_0_rec4_LT(TRUE, x0) → 1304_0_rec3_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return
1254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1304_0_rec3_Return, x0, x1, x6)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1304_0_rec3_Return, x0, x1, x6) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x6, x1))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

The integer pair graph contains the following rules and edges:
(0): 1290_1_REC2_INVOKEMETHOD(1304_0_rec3_Return, x2[0], x3[0], x0[0]) → COND_1290_1_REC2_INVOKEMETHOD(x0[0] > 0 && 0 <= 4 * x0[0] - 1, 1304_0_rec3_Return, x2[0], x3[0], x0[0])


The set Q consists of the following terms:
1290_0_rec3_Load(x0)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, x0)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT(TRUE, x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1304_0_rec3_Return)
1254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1304_0_rec3_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return)

(33) IDependencyGraphProof (EQUIVALENT transformation)

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

(34) TRUE

(35) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1290_0_rec3_Load(x1) → 1194_0_rec3_GT(0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, -1) → 1304_0_rec3_Return
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, x0) → 1304_0_rec3_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x5)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x5) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x5), x0, x1)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT(x0 < 0, x0)
Cond_958_0_rec4_LT(TRUE, x0) → 1304_0_rec3_Return
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return
1254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1304_0_rec3_Return, x0, x1, x6)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1304_0_rec3_Return, x0, x1, x6) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x6, x1))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

The integer pair graph contains the following rules and edges:
(1): COND_1290_1_REC2_INVOKEMETHOD(TRUE, 1304_0_rec3_Return, x2[1], x3[1], x0[1]) → 1290_1_REC2_INVOKEMETHOD(1290_0_rec3_Load(2 * x2[1] + 3 * x3[1] + 4 * x0[1] - 1), x2[1], x3[1], x0[1] - 1)


The set Q consists of the following terms:
1290_0_rec3_Load(x0)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
1321_1_rec2_InvokeMethod(1304_0_rec3_Return, x0)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT(TRUE, x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1304_0_rec3_Return)
1254_1_rec3_InvokeMethod(1304_0_rec3_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1304_0_rec3_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return)

(36) IDependencyGraphProof (EQUIVALENT transformation)

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

(37) TRUE

(38) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Recursions.rec1(III)V
SCC calls the following helper methods: Recursions.rec2(IIII)V, Recursions.rec1(III)V, Recursions.rec3(IIIII)V, Recursions.rec4(II)V
Performed SCC analyses: UsedFieldsAnalysis

(39) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 22 rules for P and 112 rules for R.


P rules:
1183_0_rec1_Load(EOS(STATIC_1183), i195, i43, i196, i195) → 1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i196, i195, i43)
1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i196, i195, i43) → 1189_0_rec1_GT(EOS(STATIC_1189), i195, i43, i196, i195, i43)
1189_0_rec1_GT(EOS(STATIC_1189), i195, i43, i196, i195, i43) → 1193_0_rec1_Load(EOS(STATIC_1193), i195, i43, i196) | <=(i195, i43)
1193_0_rec1_Load(EOS(STATIC_1193), i195, i43, i196) → 1197_0_rec1_Load(EOS(STATIC_1197), i195, i43, i196, i196)
1197_0_rec1_Load(EOS(STATIC_1197), i195, i43, i196, i196) → 1202_0_rec1_IntArithmetic(EOS(STATIC_1202), i195, i43, i196, i196, i195)
1202_0_rec1_IntArithmetic(EOS(STATIC_1202), i195, i43, i196, i196, i195) → 1207_0_rec1_ConstantStackPush(EOS(STATIC_1207), i195, i43, i196, +(i196, i195)) | &&(>=(i196, 0), >=(i195, 0))
1207_0_rec1_ConstantStackPush(EOS(STATIC_1207), i195, i43, i196, i202) → 1211_0_rec1_Load(EOS(STATIC_1211), i195, i43, i196, i202, 0)
1211_0_rec1_Load(EOS(STATIC_1211), i195, i43, i196, i202, matching1) → 1215_0_rec1_Load(EOS(STATIC_1215), i195, i43, i196, i202, 0, i196) | =(matching1, 0)
1215_0_rec1_Load(EOS(STATIC_1215), i195, i43, i196, i202, matching1, i196) → 1219_0_rec1_InvokeMethod(EOS(STATIC_1219), i195, i43, i196, i202, 0, i196, i195) | =(matching1, 0)
1219_0_rec1_InvokeMethod(EOS(STATIC_1219), i195, i43, i196, i202, matching1, i196, i195) → 1222_1_rec1_InvokeMethod(1222_0_rec2_Load(EOS(STATIC_1222), i202, 0, i196, i195), i195, i43, i196, i202, 0, i196, i195) | =(matching1, 0)
1222_1_rec1_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), i299, i43, i298, i297, matching1, i298, i299) → 1346_0_rec2_Return(EOS(STATIC_1346), i299, i43, i298, i297, 0, i298, i299) | =(matching1, 0)
1346_0_rec2_Return(EOS(STATIC_1346), i299, i43, i298, i297, matching1, i298, i299) → 1331_0_rec2_Return(EOS(STATIC_1331), i299, i43, i298, i297, 0, i298, i299) | =(matching1, 0)
1331_0_rec2_Return(EOS(STATIC_1331), i285, i43, i284, i283, matching1, i284, i285) → 1336_0_rec1_Load(EOS(STATIC_1336), i285, i43, i284) | =(matching1, 0)
1336_0_rec1_Load(EOS(STATIC_1336), i285, i43, i284) → 1338_0_rec1_ConstantStackPush(EOS(STATIC_1338), i43, i284, i285)
1338_0_rec1_ConstantStackPush(EOS(STATIC_1338), i43, i284, i285) → 1341_0_rec1_IntArithmetic(EOS(STATIC_1341), i43, i284, i285, 1)
1341_0_rec1_IntArithmetic(EOS(STATIC_1341), i43, i284, i285, matching1) → 1345_0_rec1_Load(EOS(STATIC_1345), i43, i284, +(i285, 1)) | &&(>=(i285, 0), =(matching1, 1))
1345_0_rec1_Load(EOS(STATIC_1345), i43, i284, i304) → 1349_0_rec1_Load(EOS(STATIC_1349), i284, i304, i43)
1349_0_rec1_Load(EOS(STATIC_1349), i284, i304, i43) → 1350_0_rec1_InvokeMethod(EOS(STATIC_1350), i304, i43, i284)
1350_0_rec1_InvokeMethod(EOS(STATIC_1350), i304, i43, i284) → 1351_1_rec1_InvokeMethod(1351_0_rec1_Load(EOS(STATIC_1351), i304, i43, i284), i304, i43, i284)
1351_0_rec1_Load(EOS(STATIC_1351), i304, i43, i284) → 1353_0_rec1_Load(EOS(STATIC_1353), i304, i43, i284)
1353_0_rec1_Load(EOS(STATIC_1353), i304, i43, i284) → 1180_0_rec1_Load(EOS(STATIC_1180), i304, i43, i284)
1180_0_rec1_Load(EOS(STATIC_1180), i195, i43, i196) → 1183_0_rec1_Load(EOS(STATIC_1183), i195, i43, i196, i195)
R rules:
1222_0_rec2_Load(EOS(STATIC_1222), i202, matching1, i196, i195) → 1225_0_rec2_Load(EOS(STATIC_1225), i202, 0, i196, i195) | =(matching1, 0)
1225_0_rec2_Load(EOS(STATIC_1225), i202, matching1, i196, i195) → 1229_0_rec2_Load(EOS(STATIC_1229), i202, 0, i196, i195) | =(matching1, 0)
1292_0_rec3_Load(EOS(STATIC_1292), matching1, i215, i216, i221) → 1187_0_rec3_Load(EOS(STATIC_1187), 0, i233, i215, i216) | =(matching1, 0)
1322_0_rec2_Load(EOS(STATIC_1322), matching1, i240, i241) → 1229_0_rec2_Load(EOS(STATIC_1229), i268, 0, i240, i241) | =(matching1, 0)
1256_0_rec4_Load(EOS(STATIC_1256)) → 946_0_rec4_Load(EOS(STATIC_946), i223, 0)
1294_0_rec3_Load(EOS(STATIC_1294), i115, i116, i117) → 1187_0_rec3_Load(EOS(STATIC_1187), i232, i115, i116, i117)
1017_0_rec4_Load(EOS(STATIC_1017), matching1) → 946_0_rec4_Load(EOS(STATIC_946), i119, 0) | =(matching1, 0)
1229_0_rec2_Load(EOS(STATIC_1229), i214, matching1, i215, i216) → 1232_0_rec2_Load(EOS(STATIC_1232), i214, 0, i215, i216, i214) | =(matching1, 0)
1232_0_rec2_Load(EOS(STATIC_1232), i214, matching1, i215, i216, i214) → 1234_0_rec2_LT(EOS(STATIC_1234), i214, 0, i215, i216, i214, 0) | =(matching1, 0)
1234_0_rec2_LT(EOS(STATIC_1234), i220, matching1, i215, i216, i220, matching2) → 1237_0_rec2_LT(EOS(STATIC_1237), i220, 0, i215, i216, i220, 0) | &&(=(matching1, 0), =(matching2, 0))
1234_0_rec2_LT(EOS(STATIC_1234), i221, matching1, i215, i216, i221, matching2) → 1238_0_rec2_LT(EOS(STATIC_1238), i221, 0, i215, i216, i221, 0) | &&(=(matching1, 0), =(matching2, 0))
1237_0_rec2_LT(EOS(STATIC_1237), i220, matching1, i215, i216, i220, matching2) → 1241_0_rec2_Return(EOS(STATIC_1241)) | &&(&&(<(i220, 0), =(matching1, 0)), =(matching2, 0))
1238_0_rec2_LT(EOS(STATIC_1238), i221, matching1, i215, i216, i221, matching2) → 1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, 0, i215, i216) | &&(&&(>=(i221, 0), =(matching1, 0)), =(matching2, 0))
1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, matching1, i215, i216) → 1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, 0, i215, i216, 0) | =(matching1, 0)
1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, matching1, i215, i216, matching2) → 1249_0_rec2_Load(EOS(STATIC_1249), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1249_0_rec2_Load(EOS(STATIC_1249), i221, matching1, i215, i216, matching2) → 1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, 0, i215, i216, 0, i215) | &&(=(matching1, 0), =(matching2, 0))
1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, matching1, i215, i216, matching2, i215) → 1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, matching1, i215, i216, matching2) → 1257_0_rec2_Load(EOS(STATIC_1257), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1257_0_rec2_Load(EOS(STATIC_1257), i221, matching1, i215, i216, matching2) → 1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, 0, i215, i216, 0, i216) | &&(=(matching1, 0), =(matching2, 0))
1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, matching1, i215, i216, matching2, i216) → 1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, matching1, i215, i216, matching2) → 1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, matching1, i215, i216, matching2) → 1272_0_rec2_Load(EOS(STATIC_1272), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1272_0_rec2_Load(EOS(STATIC_1272), i221, matching1, i215, i216, matching2) → 1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, 0, i215, i216, 0, i221) | &&(=(matching1, 0), =(matching2, 0))
1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, matching1, i215, i216, matching2, i221) → 1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, matching1, i215, i216, matching2) → 1280_0_rec2_Load(EOS(STATIC_1280), i221, 0, i215, i216, 0) | &&(=(matching1, 0), =(matching2, 0))
1280_0_rec2_Load(EOS(STATIC_1280), i221, matching1, i215, i216, matching2) → 1282_0_rec2_Load(EOS(STATIC_1282), i221, 0, i215, i216, 0, i215) | &&(=(matching1, 0), =(matching2, 0))
1282_0_rec2_Load(EOS(STATIC_1282), i221, matching1, i215, i216, matching2, i215) → 1285_0_rec2_Load(EOS(STATIC_1285), i221, 0, i215, i216, 0, i215, i216) | &&(=(matching1, 0), =(matching2, 0))
1285_0_rec2_Load(EOS(STATIC_1285), i221, matching1, i215, i216, matching2, i215, i216) → 1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, 0, i215, i216, 0, i215, i216, i221) | &&(=(matching1, 0), =(matching2, 0))
1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, matching1, i215, i216, matching2, i215, i216, i221) → 1290_1_rec2_InvokeMethod(1290_0_rec3_Load(EOS(STATIC_1290), 0, i215, i216, i221), i221, 0, i215, i216, 0, i215, i216, i221) | &&(=(matching1, 0), =(matching2, 0))
1290_0_rec3_Load(EOS(STATIC_1290), matching1, i215, i216, i221) → 1292_0_rec3_Load(EOS(STATIC_1292), 0, i215, i216, i221) | =(matching1, 0)
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i242, matching1, i240, i241, matching2, i240, i241, i242) → 1300_0_rec3_Return(EOS(STATIC_1300), i242, 0, i240, i241, 0, i240, i241, i242) | &&(=(matching1, 0), =(matching2, 0))
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i261, matching1, i259, i260, matching2, i259, i260, i261) → 1314_0_rec3_Return(EOS(STATIC_1314), i261, 0, i259, i260, 0, i259, i260, i261) | &&(=(matching1, 0), =(matching2, 0))
1300_0_rec3_Return(EOS(STATIC_1300), i242, matching1, i240, i241, matching2, i240, i241, i242) → 1302_0_rec2_Load(EOS(STATIC_1302), i242, 0, i240, i241) | &&(=(matching1, 0), =(matching2, 0))
1302_0_rec2_Load(EOS(STATIC_1302), i242, matching1, i240, i241) → 1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), 0, i240, i241, i242) | =(matching1, 0)
1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), matching1, i240, i241, i242) → 1308_0_rec2_IntArithmetic(EOS(STATIC_1308), 0, i240, i241, i242) | =(matching1, 0)
1308_0_rec2_IntArithmetic(EOS(STATIC_1308), matching1, i240, i241, i242) → 1312_0_rec2_Load(EOS(STATIC_1312), 0, i240, i241) | &&(>=(i242, 0), =(matching1, 0))
1312_0_rec2_Load(EOS(STATIC_1312), matching1, i240, i241) → 1317_0_rec2_Load(EOS(STATIC_1317), i240, i241, 0) | =(matching1, 0)
1314_0_rec3_Return(EOS(STATIC_1314), i261, matching1, i259, i260, matching2, i259, i260, i261) → 1300_0_rec3_Return(EOS(STATIC_1300), i261, 0, i259, i260, 0, i259, i260, i261) | &&(=(matching1, 0), =(matching2, 0))
1317_0_rec2_Load(EOS(STATIC_1317), i240, i241, matching1) → 1318_0_rec2_Load(EOS(STATIC_1318), i241, 0, i240) | =(matching1, 0)
1318_0_rec2_Load(EOS(STATIC_1318), i241, matching1, i240) → 1319_0_rec2_InvokeMethod(EOS(STATIC_1319), 0, i240, i241) | =(matching1, 0)
1319_0_rec2_InvokeMethod(EOS(STATIC_1319), matching1, i240, i241) → 1321_1_rec2_InvokeMethod(1321_0_rec2_Load(EOS(STATIC_1321), 0, i240, i241), 0, i240, i241) | =(matching1, 0)
1321_0_rec2_Load(EOS(STATIC_1321), matching1, i240, i241) → 1322_0_rec2_Load(EOS(STATIC_1322), 0, i240, i241) | =(matching1, 0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), matching1, i281, i282) → 1325_0_rec2_Return(EOS(STATIC_1325), 0, i281, i282) | =(matching1, 0)
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), matching1, i302, i303) → 1347_0_rec2_Return(EOS(STATIC_1347), 0, i302, i303) | =(matching1, 0)
1325_0_rec2_Return(EOS(STATIC_1325), matching1, i281, i282) → 1334_0_rec2_Return(EOS(STATIC_1334), 0, i281, i282) | =(matching1, 0)
1334_0_rec2_Return(EOS(STATIC_1334), matching1, i290, i291) → 1337_0_rec2_Return(EOS(STATIC_1337)) | =(matching1, 0)
1347_0_rec2_Return(EOS(STATIC_1347), matching1, i302, i303) → 1334_0_rec2_Return(EOS(STATIC_1334), 0, i302, i303) | =(matching1, 0)
1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i196, i195, i43) → 1188_0_rec1_GT(EOS(STATIC_1188), i195, i43, i196, i195, i43)
1188_0_rec1_GT(EOS(STATIC_1188), i195, i43, i196, i195, i43) → 1192_0_rec1_Return(EOS(STATIC_1192)) | >(i195, i43)
1192_0_rec1_Return(EOS(STATIC_1192)) → 1356_0_rec1_Return(EOS(STATIC_1356))
1351_1_rec1_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), i314, i315, i316) → 1355_0_rec1_Return(EOS(STATIC_1355), i314, i315, i316)
1351_1_rec1_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), i323, i324, i325) → 1363_0_rec1_Return(EOS(STATIC_1363), i323, i324, i325)
1355_0_rec1_Return(EOS(STATIC_1355), i314, i315, i316) → 1356_0_rec1_Return(EOS(STATIC_1356))
1363_0_rec1_Return(EOS(STATIC_1363), i323, i324, i325) → 1355_0_rec1_Return(EOS(STATIC_1355), i323, i324, i325)
1187_0_rec3_Load(EOS(STATIC_1187), i197, i115, i116, i117) → 1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i117, i197)
1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i117, i197) → 1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i197, i115) → 1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i117, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i117, i197, i115) → 1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i117, i197, i115)
1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i117, i197, i115) → 1203_0_rec3_Return(EOS(STATIC_1203)) | >(i197, i115)
1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i117, i197, i115) → 1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116, i117) | <=(i197, i115)
1203_0_rec3_Return(EOS(STATIC_1203)) → 1304_0_rec3_Return(EOS(STATIC_1304))
1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116, i117) → 1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116, i117)
1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116, i117) → 1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i117, i116)
1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i117, i116) → 1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116, i117)
1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116, i117) → 1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116, i117)
1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116, i117) → 1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116, i117, i117)
1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116, i117, i117) → 1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116, i117)
1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116, i117) → 1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116, i117)
1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116, i117) → 1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116, i117)
1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116, i117) → 1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116, i117)
1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116, i117) → 1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116, i117)
1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116, i117) → 1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116, i117)
1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116, i117) → 1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i117, i197)
1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i117, i197) → 1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116, i117) | >=(i197, 0)
1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116, i117) → 1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116, i117)
1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116, i117) → 1254_1_rec3_InvokeMethod(1254_0_rec4_Load(EOS(STATIC_1254)), i197, i115, i116, i117)
1254_0_rec4_Load(EOS(STATIC_1254)) → 1256_0_rec4_Load(EOS(STATIC_1256))
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), i197, i115, i116, i117) → 1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116, i117)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), i197, i115, i116, i117) → 1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116, i117)
1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116, i117) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117)
1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116, i117) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117)
1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116, i117) → 1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116, i117)
1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116, i117) → 1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i117, i197)
1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i117, i197) → 1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i117, i197)
1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i117, i197) → 1279_0_rec3_Load(EOS(STATIC_1279), i115, i116, i117) | >=(i197, 0)
1279_0_rec3_Load(EOS(STATIC_1279), i115, i116, i117) → 1281_0_rec3_Load(EOS(STATIC_1281), i116, i117, i115)
1281_0_rec3_Load(EOS(STATIC_1281), i116, i117, i115) → 1283_0_rec3_Load(EOS(STATIC_1283), i117, i115, i116)
1283_0_rec3_Load(EOS(STATIC_1283), i117, i115, i116) → 1286_0_rec3_Load(EOS(STATIC_1286), i115, i116, i117)
1286_0_rec3_Load(EOS(STATIC_1286), i115, i116, i117) → 1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115, i116, i117)
1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115, i116, i117) → 1291_1_rec3_InvokeMethod(1291_0_rec3_Load(EOS(STATIC_1291), i115, i116, i117), i115, i116, i117)
1291_0_rec3_Load(EOS(STATIC_1291), i115, i116, i117) → 1294_0_rec3_Load(EOS(STATIC_1294), i115, i116, i117)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i250, i251, i252) → 1301_0_rec3_Return(EOS(STATIC_1301), i250, i251, i252)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i264, i265, i266) → 1316_0_rec3_Return(EOS(STATIC_1316), i264, i265, i266)
1301_0_rec3_Return(EOS(STATIC_1301), i250, i251, i252) → 1304_0_rec3_Return(EOS(STATIC_1304))
1316_0_rec3_Return(EOS(STATIC_1316), i264, i265, i266) → 1301_0_rec3_Return(EOS(STATIC_1301), i264, i265, i266)
946_0_rec4_Load(EOS(STATIC_946), i89, matching1) → 952_0_rec4_Load(EOS(STATIC_952), i89, 0, i89) | =(matching1, 0)
952_0_rec4_Load(EOS(STATIC_952), i89, matching1, i89) → 958_0_rec4_LT(EOS(STATIC_958), i89, 0, i89, 0) | =(matching1, 0)
958_0_rec4_LT(EOS(STATIC_958), i99, matching1, i99, matching2) → 964_0_rec4_LT(EOS(STATIC_964), i99, 0, i99, 0) | &&(=(matching1, 0), =(matching2, 0))
958_0_rec4_LT(EOS(STATIC_958), i100, matching1, i100, matching2) → 965_0_rec4_LT(EOS(STATIC_965), i100, 0, i100, 0) | &&(=(matching1, 0), =(matching2, 0))
964_0_rec4_LT(EOS(STATIC_964), i99, matching1, i99, matching2) → 972_0_rec4_Return(EOS(STATIC_972)) | &&(&&(<(i99, 0), =(matching1, 0)), =(matching2, 0))
965_0_rec4_LT(EOS(STATIC_965), i100, matching1, i100, matching2) → 973_0_rec4_Load(EOS(STATIC_973), i100, 0) | &&(&&(>=(i100, 0), =(matching1, 0)), =(matching2, 0))
973_0_rec4_Load(EOS(STATIC_973), i100, matching1) → 985_0_rec4_ConstantStackPush(EOS(STATIC_985), 0, i100) | =(matching1, 0)
985_0_rec4_ConstantStackPush(EOS(STATIC_985), matching1, i100) → 990_0_rec4_IntArithmetic(EOS(STATIC_990), 0, i100) | =(matching1, 0)
990_0_rec4_IntArithmetic(EOS(STATIC_990), matching1, i100) → 999_0_rec4_Load(EOS(STATIC_999), 0) | &&(>=(i100, 0), =(matching1, 0))
999_0_rec4_Load(EOS(STATIC_999), matching1) → 1004_0_rec4_InvokeMethod(EOS(STATIC_1004), 0) | =(matching1, 0)
1004_0_rec4_InvokeMethod(EOS(STATIC_1004), matching1) → 1010_1_rec4_InvokeMethod(1010_0_rec4_Load(EOS(STATIC_1010), 0), 0) | =(matching1, 0)
1010_0_rec4_Load(EOS(STATIC_1010), matching1) → 1017_0_rec4_Load(EOS(STATIC_1017), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), matching1) → 1034_0_rec4_Return(EOS(STATIC_1034), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), matching1) → 1086_0_rec4_Return(EOS(STATIC_1086), 0) | =(matching1, 0)
1034_0_rec4_Return(EOS(STATIC_1034), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)
1058_0_rec4_Return(EOS(STATIC_1058), matching1) → 1066_0_rec4_Return(EOS(STATIC_1066)) | =(matching1, 0)
1086_0_rec4_Return(EOS(STATIC_1086), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)

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


P rules:
1222_1_rec1_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), x0, x1, x2, x3, 0, x2, x0) → 1351_1_rec1_InvokeMethod(1222_1_rec1_InvokeMethod(1222_0_rec2_Load(EOS(STATIC_1222), +(x2, +(x0, 1)), 0, x2, +(x0, 1)), +(x0, 1), x1, x2, +(x2, +(x0, 1)), 0, x2, +(x0, 1)), +(x0, 1), x1, x2) | &&(&&(>(+(x2, 1), 0), >=(x1, +(x0, 1))), >(+(x0, 1), 0))
R rules:
1222_0_rec2_Load(EOS(STATIC_1222), x0, 0, x2, x3) → 1234_0_rec2_LT(EOS(STATIC_1234), x0, 0, x2, x3, x0, 0)
1234_0_rec2_LT(EOS(STATIC_1234), x0, 0, x2, x3, x0, 0) → 1241_0_rec2_Return(EOS(STATIC_1241)) | <(x0, 0)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), x0, x1, x2) → 1356_0_rec1_Return(EOS(STATIC_1356))
1351_1_rec1_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), x0, x1, x2) → 1356_0_rec1_Return(EOS(STATIC_1356))
1234_0_rec2_LT(EOS(STATIC_1234), x0, 0, x2, x3, x0, 0) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), 0, x5, x2, x3, 0, x5), x0, 0, x2, x3, 0, x2, x3, x0) | >(+(x0, 1), 0)
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x2, x3, x0, x1) → 1304_0_rec3_Return(EOS(STATIC_1304)) | <(x1, x0)
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x2, x3, x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x4, 0, x4, 0), x0, x1, x2, x3) | &&(>=(x1, x0), >(+(x0, 1), 0))
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 972_0_rec4_Return(EOS(STATIC_972)) | <(x0, 0)
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x3, 0, x3, 0), 0) | >(+(x0, 1), 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, 0, x2, x3, 0, x2, x3, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x5, 0, x2, x3, x5, 0), 0, x2, x3) | >(+(x0, 1), 0)
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, 0, x2, x3, 0, x2, x3, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x5, 0, x2, x3, x5, 0), 0, x2, x3) | >(+(x0, 1), 0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), 0, x1, x2) → 1337_0_rec2_Return(EOS(STATIC_1337))
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), 0, x1, x2) → 1337_0_rec2_Return(EOS(STATIC_1337))
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), x0, x1, x2, x3) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x4, x1, x2, x3, x4, x1), x1, x2, x3) | >(+(x0, 1), 0)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), x0, x1, x2, x3) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x4, x1, x2, x3, x4, x1), x1, x2, x3) | >(+(x0, 1), 0)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, x1, x2) → 1304_0_rec3_Return(EOS(STATIC_1304))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, x1, x2) → 1304_0_rec3_Return(EOS(STATIC_1304))

Filtered ground terms:



1222_0_rec2_Load(x1, x2, x3, x4, x5) → 1222_0_rec2_Load(x2, x4, x5)
1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → 1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x7, x8)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1222_1_rec1_InvokeMethod(x1, x3, x4, x5, x6, x8, x9)
1337_0_rec2_Return(x1) → 1337_0_rec2_Return
1304_0_rec3_Return(x1) → 1304_0_rec3_Return
1203_0_rec3_Return(x1) → 1203_0_rec3_Return
1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7) → 1194_0_rec3_GT(x2, x3, x4, x5, x6, x7)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x4, x5, x6, x7)
1066_0_rec4_Return(x1) → 1066_0_rec4_Return
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x4, x5, x6, x7)
972_0_rec4_Return(x1) → 972_0_rec4_Return
1321_1_rec2_InvokeMethod(x1, x2, x3, x4) → 1321_1_rec2_InvokeMethod(x1, x3, x4)
1241_0_rec2_Return(x1) → 1241_0_rec2_Return
1234_0_rec2_LT(x1, x2, x3, x4, x5, x6, x7) → 1234_0_rec2_LT(x2, x4, x5, x6)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Cond_1290_1_rec2_InvokeMethod1(x1, x3, x5, x6, x8, x9, x10, x11)
1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9) → 1290_1_rec2_InvokeMethod(x1, x2, x4, x5, x7, x8, x9)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Cond_1290_1_rec2_InvokeMethod(x1, x3, x5, x6, x8, x9, x10, x11)
1010_1_rec4_InvokeMethod(x1, x2) → 1010_1_rec4_InvokeMethod(x1)
958_0_rec4_LT(x1, x2, x3, x4, x5) → 958_0_rec4_LT(x2, x4)
Cond_958_0_rec4_LT1(x1, x2, x3, x4, x5, x6, x7) → Cond_958_0_rec4_LT1(x1, x3, x5, x7)
Cond_958_0_rec4_LT(x1, x2, x3, x4, x5, x6) → Cond_958_0_rec4_LT(x1, x3, x5)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1194_0_rec3_GT1(x1, x3, x4, x5, x6, x7, x8, x9)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1194_0_rec3_GT(x1, x3, x4, x5, x6, x7, x8)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1234_0_rec2_LT1(x1, x3, x5, x6, x7, x9)
1356_0_rec1_Return(x1) → 1356_0_rec1_Return
1192_0_rec1_Return(x1) → 1192_0_rec1_Return
Cond_1234_0_rec2_LT(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1234_0_rec2_LT(x1, x3, x5, x6, x7)

Filtered duplicate args:



1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → 1222_1_rec1_InvokeMethod(x1, x3, x5, x6, x7)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1222_1_rec1_InvokeMethod(x1, x3, x5, x6, x7)
1234_0_rec2_LT(x1, x2, x3, x4) → 1234_0_rec2_LT(x2, x3, x4)
Cond_1234_0_rec2_LT(x1, x2, x3, x4, x5) → Cond_1234_0_rec2_LT(x1, x3, x4, x5)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4, x5, x6) → Cond_1234_0_rec2_LT1(x1, x3, x4, x5, x6)
1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → 1290_1_rec2_InvokeMethod(x1, x5, x6, x7)
1194_0_rec3_GT(x1, x2, x3, x4, x5, x6) → 1194_0_rec3_GT(x3, x4, x5, x6)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_1194_0_rec3_GT(x1, x4, x5, x6, x7)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1194_0_rec3_GT1(x1, x4, x5, x6, x7, x8)
958_0_rec4_LT(x1, x2) → 958_0_rec4_LT(x2)
Cond_958_0_rec4_LT(x1, x2, x3) → Cond_958_0_rec4_LT(x1, x3)
Cond_958_0_rec4_LT1(x1, x2, x3, x4) → Cond_958_0_rec4_LT1(x1, x3, x4)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1290_1_rec2_InvokeMethod(x1, x5, x6, x7, x8)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1290_1_rec2_InvokeMethod1(x1, x5, x6, x7, x8)

Filtered unneeded arguments:



1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5) → 1222_1_rec1_InvokeMethod(x1, x2, x4, x5)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1222_1_rec1_InvokeMethod(x1, x2, x4, x5)
1351_1_rec1_InvokeMethod(x1, x2, x3, x4) → 1351_1_rec1_InvokeMethod(x1)
Cond_1234_0_rec2_LT(x1, x2, x3, x4) → Cond_1234_0_rec2_LT(x1)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4, x5) → Cond_1234_0_rec2_LT1(x1, x4, x5)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5) → Cond_1194_0_rec3_GT(x1)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6) → Cond_1194_0_rec3_GT1(x1, x4, x5, x6)
Cond_958_0_rec4_LT(x1, x2) → Cond_958_0_rec4_LT(x1)
Cond_958_0_rec4_LT1(x1, x2, x3) → Cond_958_0_rec4_LT1(x1, x3)
1290_1_rec2_InvokeMethod(x1, x2, x3, x4) → 1290_1_rec2_InvokeMethod(x1, x4)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1290_1_rec2_InvokeMethod(x1, x5)
1321_1_rec2_InvokeMethod(x1, x2, x3) → 1321_1_rec2_InvokeMethod(x1)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1290_1_rec2_InvokeMethod1(x1, x5)
1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5) → 1254_1_rec3_InvokeMethod(x1, x2, x3)
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x6)
1291_1_rec3_InvokeMethod(x1, x2, x3, x4) → 1291_1_rec3_InvokeMethod(x1)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x6)
1234_0_rec2_LT(x1, x2, x3) → 1234_0_rec2_LT(x3)
1194_0_rec3_GT(x1, x2, x3, x4) → 1194_0_rec3_GT(x3, x4)
1222_0_rec2_Load(x1, x2, x3) → 1222_0_rec2_Load(x1)

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


P rules:
1222_1_rec1_InvokeMethod(1337_0_rec2_Return, x1, x2, x0) → 1351_1_rec1_InvokeMethod(1222_1_rec1_InvokeMethod(1222_0_rec2_Load(+(x2, +(x0, 1))), x1, x2, +(x0, 1))) | &&(&&(>(x2, -1), >=(x1, +(x0, 1))), >(x0, -1))
R rules:
1222_0_rec2_Load(x0) → 1234_0_rec2_LT(x0)
1234_0_rec2_LT(x0) → 1241_0_rec2_Return | <(x0, 0)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return) → 1356_0_rec1_Return
1351_1_rec1_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1234_0_rec2_LT(x0) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x5), x0) | >(x0, -1)
1194_0_rec3_GT(x0, x1) → 1304_0_rec3_Return | <(x1, x0)
1194_0_rec3_GT(x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x4), x0, x1) | &&(>=(x1, x0), >(x0, -1))
958_0_rec4_LT(x0) → 972_0_rec4_Return | <(x0, 0)
958_0_rec4_LT(x0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3)) | >(x0, -1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 1066_0_rec4_Return
1010_1_rec4_InvokeMethod(1066_0_rec4_Return) → 1066_0_rec4_Return
1290_1_rec2_InvokeMethod(1203_0_rec3_Return, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x5)) | >(x0, -1)
1290_1_rec2_InvokeMethod(1304_0_rec3_Return, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x5)) | >(x0, -1)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return) → 1337_0_rec2_Return
1321_1_rec2_InvokeMethod(1337_0_rec2_Return) → 1337_0_rec2_Return
1254_1_rec3_InvokeMethod(972_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x4, x1)) | >(x0, -1)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x4, x1)) | >(x0, -1)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return) → 1304_0_rec3_Return
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

Performed bisimulation on rules. Used the following equivalence classes: {[Cond_1234_0_rec2_LT_2, Cond_958_0_rec4_LT_2]=Cond_1234_0_rec2_LT_2, [1241_0_rec2_Return, 1192_0_rec1_Return, 1356_0_rec1_Return, 1304_0_rec3_Return, 972_0_rec4_Return, 1066_0_rec4_Return, 1203_0_rec3_Return, 1337_0_rec2_Return]=1241_0_rec2_Return, [Cond_1290_1_rec2_InvokeMethod_4, Cond_1290_1_rec2_InvokeMethod1_4]=Cond_1290_1_rec2_InvokeMethod_4, [Cond_1254_1_rec3_InvokeMethod_5, Cond_1254_1_rec3_InvokeMethod1_5]=Cond_1254_1_rec3_InvokeMethod_5}


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


P rules:
1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1, x2, x0) → COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2, -1), >=(x1, +(x0, 1))), >(x0, -1)), 1241_0_rec2_Return, x1, x2, x0)
COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1, x2, x0) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2, +(x0, 1))), x1, x2, +(x0, 1))
R rules:
1222_0_rec2_Load(x0) → 1234_0_rec2_LT(x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(<(x0, 0), x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 1241_0_rec2_Return
1351_1_rec1_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(>(x0, -1), x0, x5)
Cond_1234_0_rec2_LT1(TRUE, x0, x5) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x5), x0)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(<(x1, x0), x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1241_0_rec2_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(&&(>=(x1, x0), >(x0, -1)), x0, x1, x4)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x4) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x4), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(<(x0, 0), x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(>(x0, -1), x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1290_1_rec2_InvokeMethod(1241_0_rec2_Return, x0) → Cond_1290_1_rec2_InvokeMethod(>(x0, -1), 1241_0_rec2_Return, x0, x5)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x5) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x5))
1321_1_rec2_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1254_1_rec3_InvokeMethod(1241_0_rec2_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(>(x0, -1), 1241_0_rec2_Return, x0, x1, x4)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x1, x4) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x4, x1))
1291_1_rec3_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return

(40) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1222_0_rec2_Load(x0) → 1234_0_rec2_LT(x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 1241_0_rec2_Return
1351_1_rec1_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x5)
Cond_1234_0_rec2_LT1(TRUE, x0, x5) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x5), x0)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1241_0_rec2_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x4)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x4) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x4), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1290_1_rec2_InvokeMethod(1241_0_rec2_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 1241_0_rec2_Return, x0, x5)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x5) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x5))
1321_1_rec2_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1254_1_rec3_InvokeMethod(1241_0_rec2_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1241_0_rec2_Return, x0, x1, x4)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x1, x4) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x4, x1))
1291_1_rec3_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return

The integer pair graph contains the following rules and edges:
(0): 1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0]) → COND_1222_1_REC1_INVOKEMETHOD(x2[0] > -1 && x1[0] >= x0[0] + 1 && x0[0] > -1, 1241_0_rec2_Return, x1[0], x2[0], x0[0])
(1): COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1[1], x2[1], x0[1]) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(x2[1] + x0[1] + 1), x1[1], x2[1], x0[1] + 1)

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


(1) -> (0), if (1222_0_rec2_Load(x2[1] + x0[1] + 1) →* 1241_0_rec2_Returnx1[1]* x1[0]x2[1]* x2[0]x0[1] + 1* x0[0])



The set Q consists of the following terms:
1222_0_rec2_Load(x0)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
1351_1_rec1_InvokeMethod(1241_0_rec2_Return)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1241_0_rec2_Return)
1290_1_rec2_InvokeMethod(1241_0_rec2_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x1)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return)
1254_1_rec3_InvokeMethod(1241_0_rec2_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1241_0_rec2_Return)

(41) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@1ae0a15f 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 1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1, x2, x0) → COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2, -1), >=(x1, +(x0, 1))), >(x0, -1)), 1241_0_rec2_Return, x1, x2, x0) the following chains were created:
  • We consider the chain 1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0]) → COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0]), COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1[1], x2[1], x0[1]) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1)) which results in the following constraint:

    (1)    (&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1))=TRUEx1[0]=x1[1]x2[0]=x2[1]x0[0]=x0[1]1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0])≥NonInfC∧1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0])≥COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])∧(UIncreasing(COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])), ≥))



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

    (2)    (>(x0[0], -1)=TRUE>(x2[0], -1)=TRUE>=(x1[0], +(x0[0], 1))=TRUE1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0])≥NonInfC∧1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0])≥COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])∧(UIncreasing(COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])), ≥))



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

    (3)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x1[0] + [-1] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])), ≥)∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[0] + [bni_40]x1[0] ≥ 0∧[1 + (-1)bso_41] ≥ 0)



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

    (4)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x1[0] + [-1] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])), ≥)∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[0] + [bni_40]x1[0] ≥ 0∧[1 + (-1)bso_41] ≥ 0)



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

    (5)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x1[0] + [-1] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])), ≥)∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[0] + [bni_40]x1[0] ≥ 0∧[1 + (-1)bso_41] ≥ 0)



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

    (6)    (x0[0] ≥ 0∧x2[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])), ≥)∧[(-1)Bound*bni_40 + bni_40] + [bni_40]x1[0] ≥ 0∧[1 + (-1)bso_41] ≥ 0)







For Pair COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1, x2, x0) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2, +(x0, 1))), x1, x2, +(x0, 1)) the following chains were created:
  • We consider the chain COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1[1], x2[1], x0[1]) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1)) which results in the following constraint:

    (7)    (COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1[1], x2[1], x0[1])≥NonInfC∧COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1[1], x2[1], x0[1])≥1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))∧(UIncreasing(1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))), ≥))



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

    (8)    ((UIncreasing(1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))), ≥)∧[bni_42] = 0∧[(-1)bso_43] ≥ 0)



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

    (9)    ((UIncreasing(1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))), ≥)∧[bni_42] = 0∧[(-1)bso_43] ≥ 0)



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

    (10)    ((UIncreasing(1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))), ≥)∧[bni_42] = 0∧[(-1)bso_43] ≥ 0)



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

    (11)    ((UIncreasing(1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))), ≥)∧[bni_42] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1, x2, x0) → COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2, -1), >=(x1, +(x0, 1))), >(x0, -1)), 1241_0_rec2_Return, x1, x2, x0)
    • (x0[0] ≥ 0∧x2[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])), ≥)∧[(-1)Bound*bni_40 + bni_40] + [bni_40]x1[0] ≥ 0∧[1 + (-1)bso_41] ≥ 0)

  • COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1, x2, x0) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2, +(x0, 1))), x1, x2, +(x0, 1))
    • ((UIncreasing(1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))), ≥)∧[bni_42] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 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(1222_0_rec2_Load(x1)) = [-1]   
POL(1234_0_rec2_LT(x1)) = [-1]   
POL(Cond_1234_0_rec2_LT(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(0) = 0   
POL(1241_0_rec2_Return) = [-1]   
POL(1351_1_rec1_InvokeMethod(x1)) = [-1]   
POL(Cond_1234_0_rec2_LT1(x1, x2, x3)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(1290_1_rec2_InvokeMethod(x1, x2)) = [-1]   
POL(1194_0_rec3_GT(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_1194_0_rec3_GT(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(Cond_1194_0_rec3_GT1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(1254_1_rec3_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(958_0_rec4_LT(x1)) = [-1]   
POL(Cond_958_0_rec4_LT1(x1, x2, x3)) = [-1] + [-1]x2   
POL(1010_1_rec4_InvokeMethod(x1)) = [-1]   
POL(Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4)) = [-1]   
POL(1321_1_rec2_InvokeMethod(x1)) = [-1]   
POL(Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + [-1]x3   
POL(1291_1_rec3_InvokeMethod(x1)) = [-1] + [-1]x1   
POL(1222_1_REC1_INVOKEMETHOD(x1, x2, x3, x4)) = [1] + [-1]x4 + x2 + x1   
POL(COND_1222_1_REC1_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + x3   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   

The following pairs are in P>:

1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0]) → COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])

The following pairs are in Pbound:

1222_1_REC1_INVOKEMETHOD(1241_0_rec2_Return, x1[0], x2[0], x0[0]) → COND_1222_1_REC1_INVOKEMETHOD(&&(&&(>(x2[0], -1), >=(x1[0], +(x0[0], 1))), >(x0[0], -1)), 1241_0_rec2_Return, x1[0], x2[0], x0[0])

The following pairs are in P:

COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1[1], x2[1], x0[1]) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(+(x2[1], +(x0[1], 1))), x1[1], x2[1], +(x0[1], 1))

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

1222_0_rec2_Load(x0)11234_0_rec2_LT(x0)1
1234_0_rec2_LT(x0)1Cond_1234_0_rec2_LT(<(x0, 0), x0)1
1234_0_rec2_LT(x0)1Cond_1234_0_rec2_LT1(>(x0, -1), x0, x5)1
Cond_1234_0_rec2_LT1(TRUE, x0, x5)11290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x5), x0)1
1290_1_rec2_InvokeMethod(1241_0_rec2_Return, x0)1Cond_1290_1_rec2_InvokeMethod(>(x0, -1), 1241_0_rec2_Return, x0, x5)1
Cond_1290_1_rec2_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x5)11321_1_rec2_InvokeMethod(1234_0_rec2_LT(x5))1
1321_1_rec2_InvokeMethod(1241_0_rec2_Return)11241_0_rec2_Return1
Cond_1234_0_rec2_LT(TRUE, x0)11241_0_rec2_Return1

(42) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1222_0_rec2_Load(x0) → 1234_0_rec2_LT(x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 1241_0_rec2_Return
1351_1_rec1_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x5)
Cond_1234_0_rec2_LT1(TRUE, x0, x5) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x5), x0)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1241_0_rec2_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x4)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x4) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x4), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1290_1_rec2_InvokeMethod(1241_0_rec2_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 1241_0_rec2_Return, x0, x5)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x5) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x5))
1321_1_rec2_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return
1254_1_rec3_InvokeMethod(1241_0_rec2_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1241_0_rec2_Return, x0, x1, x4)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x1, x4) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x4, x1))
1291_1_rec3_InvokeMethod(1241_0_rec2_Return) → 1241_0_rec2_Return

The integer pair graph contains the following rules and edges:
(1): COND_1222_1_REC1_INVOKEMETHOD(TRUE, 1241_0_rec2_Return, x1[1], x2[1], x0[1]) → 1222_1_REC1_INVOKEMETHOD(1222_0_rec2_Load(x2[1] + x0[1] + 1), x1[1], x2[1], x0[1] + 1)


The set Q consists of the following terms:
1222_0_rec2_Load(x0)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
1351_1_rec1_InvokeMethod(1241_0_rec2_Return)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1241_0_rec2_Return)
1290_1_rec2_InvokeMethod(1241_0_rec2_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x1)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return)
1254_1_rec3_InvokeMethod(1241_0_rec2_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1241_0_rec2_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1241_0_rec2_Return)

(43) IDependencyGraphProof (EQUIVALENT transformation)

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

(44) TRUE

(45) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Recursions.rec0(II)V
SCC calls the following helper methods: Recursions.rec1(III)V, Recursions.rec0(II)V, Recursions.rec2(IIII)V, Recursions.rec3(IIIII)V, Recursions.rec4(II)V
Performed SCC analyses: UsedFieldsAnalysis

(46) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 22 rules for P and 143 rules for R.


P rules:
812_0_rec0_Load(EOS(STATIC_812), i55, i56, i55) → 816_0_rec0_GT(EOS(STATIC_816), i55, i56, i55, i56)
816_0_rec0_GT(EOS(STATIC_816), i55, i56, i55, i56) → 823_0_rec0_GT(EOS(STATIC_823), i55, i56, i55, i56)
823_0_rec0_GT(EOS(STATIC_823), i55, i56, i55, i56) → 830_0_rec0_ConstantStackPush(EOS(STATIC_830), i55, i56) | <=(i55, i56)
830_0_rec0_ConstantStackPush(EOS(STATIC_830), i55, i56) → 836_0_rec0_ConstantStackPush(EOS(STATIC_836), i55, i56, 0)
836_0_rec0_ConstantStackPush(EOS(STATIC_836), i55, i56, matching1) → 843_0_rec0_Load(EOS(STATIC_843), i55, i56, 0, 2) | =(matching1, 0)
843_0_rec0_Load(EOS(STATIC_843), i55, i56, matching1, matching2) → 848_0_rec0_IntArithmetic(EOS(STATIC_848), i55, i56, 0, 2, i55) | &&(=(matching1, 0), =(matching2, 2))
848_0_rec0_IntArithmetic(EOS(STATIC_848), i55, i56, matching1, matching2, i55) → 854_0_rec0_Load(EOS(STATIC_854), i55, i56, 0, *(2, i55)) | &&(=(matching1, 0), =(matching2, 2))
854_0_rec0_Load(EOS(STATIC_854), i55, i56, matching1, i64) → 861_0_rec0_InvokeMethod(EOS(STATIC_861), i55, i56, 0, i64, i55) | =(matching1, 0)
861_0_rec0_InvokeMethod(EOS(STATIC_861), i55, i56, matching1, i64, i55) → 873_1_rec0_InvokeMethod(873_0_rec1_Load(EOS(STATIC_873), 0, i64, i55), i55, i56, 0, i64, i55) | =(matching1, 0)
873_1_rec0_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), i199, i56, matching1, i198, i199) → 1206_0_rec1_Return(EOS(STATIC_1206), i199, i56, 0, i198, i199) | =(matching1, 0)
873_1_rec0_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), i321, i56, matching1, i320, i321) → 1362_0_rec1_Return(EOS(STATIC_1362), i321, i56, 0, i320, i321) | =(matching1, 0)
1206_0_rec1_Return(EOS(STATIC_1206), i199, i56, matching1, i198, i199) → 901_0_rec1_Return(EOS(STATIC_901), i199, i56, 0, i198, i199) | =(matching1, 0)
901_0_rec1_Return(EOS(STATIC_901), i79, i56, matching1, i78, i79) → 908_0_rec0_Load(EOS(STATIC_908), i79, i56) | =(matching1, 0)
908_0_rec0_Load(EOS(STATIC_908), i79, i56) → 915_0_rec0_ConstantStackPush(EOS(STATIC_915), i56, i79)
915_0_rec0_ConstantStackPush(EOS(STATIC_915), i56, i79) → 921_0_rec0_IntArithmetic(EOS(STATIC_921), i56, i79, 1)
921_0_rec0_IntArithmetic(EOS(STATIC_921), i56, i79, matching1) → 927_0_rec0_Load(EOS(STATIC_927), i56, +(i79, 1)) | &&(>=(i79, 0), =(matching1, 1))
927_0_rec0_Load(EOS(STATIC_927), i56, i86) → 932_0_rec0_InvokeMethod(EOS(STATIC_932), i86, i56)
932_0_rec0_InvokeMethod(EOS(STATIC_932), i86, i56) → 938_1_rec0_InvokeMethod(938_0_rec0_Load(EOS(STATIC_938), i86, i56), i86, i56)
938_0_rec0_Load(EOS(STATIC_938), i86, i56) → 942_0_rec0_Load(EOS(STATIC_942), i86, i56)
942_0_rec0_Load(EOS(STATIC_942), i86, i56) → 808_0_rec0_Load(EOS(STATIC_808), i86, i56)
808_0_rec0_Load(EOS(STATIC_808), i55, i56) → 812_0_rec0_Load(EOS(STATIC_812), i55, i56, i55)
1362_0_rec1_Return(EOS(STATIC_1362), i321, i56, matching1, i320, i321) → 901_0_rec1_Return(EOS(STATIC_901), i321, i56, 0, i320, i321) | =(matching1, 0)
R rules:
873_0_rec1_Load(EOS(STATIC_873), matching1, i64, i55) → 880_0_rec1_Load(EOS(STATIC_880), 0, i64, i55) | =(matching1, 0)
880_0_rec1_Load(EOS(STATIC_880), matching1, i64, i55) → 1180_0_rec1_Load(EOS(STATIC_1180), 0, i64, i55) | =(matching1, 0)
1225_0_rec2_Load(EOS(STATIC_1225), matching1, i196, i195) → 1229_0_rec2_Load(EOS(STATIC_1229), i202, 0, i196) | =(matching1, 0)
1353_0_rec1_Load(EOS(STATIC_1353), i43, i284) → 1180_0_rec1_Load(EOS(STATIC_1180), i304, i43, i284)
1292_0_rec3_Load(EOS(STATIC_1292), matching1, i215, i221) → 1187_0_rec3_Load(EOS(STATIC_1187), 0, i233, i215) | =(matching1, 0)
1322_0_rec2_Load(EOS(STATIC_1322), matching1, i240) → 1229_0_rec2_Load(EOS(STATIC_1229), i268, 0, i240) | =(matching1, 0)
1256_0_rec4_Load(EOS(STATIC_1256)) → 946_0_rec4_Load(EOS(STATIC_946), i223, 0)
1294_0_rec3_Load(EOS(STATIC_1294), i115, i116) → 1187_0_rec3_Load(EOS(STATIC_1187), i232, i115, i116)
1017_0_rec4_Load(EOS(STATIC_1017), matching1) → 946_0_rec4_Load(EOS(STATIC_946), i119, 0) | =(matching1, 0)
1180_0_rec1_Load(EOS(STATIC_1180), i195, i43, i196) → 1183_0_rec1_Load(EOS(STATIC_1183), i195, i43, i196, i195)
1183_0_rec1_Load(EOS(STATIC_1183), i195, i43, i196, i195) → 1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i196, i195, i43)
1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i196, i195, i43) → 1188_0_rec1_GT(EOS(STATIC_1188), i195, i43, i196, i195, i43)
1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i196, i195, i43) → 1189_0_rec1_GT(EOS(STATIC_1189), i195, i43, i196, i195, i43)
1188_0_rec1_GT(EOS(STATIC_1188), i195, i43, i196, i195, i43) → 1192_0_rec1_Return(EOS(STATIC_1192)) | >(i195, i43)
1189_0_rec1_GT(EOS(STATIC_1189), i195, i43, i196, i195, i43) → 1193_0_rec1_Load(EOS(STATIC_1193), i195, i43, i196) | <=(i195, i43)
1192_0_rec1_Return(EOS(STATIC_1192)) → 1356_0_rec1_Return(EOS(STATIC_1356))
1193_0_rec1_Load(EOS(STATIC_1193), i195, i43, i196) → 1197_0_rec1_Load(EOS(STATIC_1197), i195, i43, i196, i196)
1197_0_rec1_Load(EOS(STATIC_1197), i195, i43, i196, i196) → 1202_0_rec1_IntArithmetic(EOS(STATIC_1202), i195, i43, i196, i196, i195)
1202_0_rec1_IntArithmetic(EOS(STATIC_1202), i195, i43, i196, i196, i195) → 1207_0_rec1_ConstantStackPush(EOS(STATIC_1207), i195, i43, i196) | &&(>=(i196, 0), >=(i195, 0))
1207_0_rec1_ConstantStackPush(EOS(STATIC_1207), i195, i43, i196) → 1211_0_rec1_Load(EOS(STATIC_1211), i195, i43, i196, 0)
1211_0_rec1_Load(EOS(STATIC_1211), i195, i43, i196, matching1) → 1215_0_rec1_Load(EOS(STATIC_1215), i195, i43, i196, 0, i196) | =(matching1, 0)
1215_0_rec1_Load(EOS(STATIC_1215), i195, i43, i196, matching1, i196) → 1219_0_rec1_InvokeMethod(EOS(STATIC_1219), i195, i43, i196, 0, i196, i195) | =(matching1, 0)
1219_0_rec1_InvokeMethod(EOS(STATIC_1219), i195, i43, i196, matching1, i196, i195) → 1222_1_rec1_InvokeMethod(1222_0_rec2_Load(EOS(STATIC_1222), 0, i196, i195), i195, i43, i196, 0, i196, i195) | =(matching1, 0)
1222_0_rec2_Load(EOS(STATIC_1222), matching1, i196, i195) → 1225_0_rec2_Load(EOS(STATIC_1225), 0, i196, i195) | =(matching1, 0)
1222_1_rec1_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), i299, i43, i298, matching1, i298, i299) → 1346_0_rec2_Return(EOS(STATIC_1346), i299, i43, i298, 0, i298, i299) | =(matching1, 0)
1331_0_rec2_Return(EOS(STATIC_1331), i285, i43, i284, matching1, i284, i285) → 1336_0_rec1_Load(EOS(STATIC_1336), i285, i43, i284) | =(matching1, 0)
1336_0_rec1_Load(EOS(STATIC_1336), i285, i43, i284) → 1338_0_rec1_ConstantStackPush(EOS(STATIC_1338), i43, i284, i285)
1338_0_rec1_ConstantStackPush(EOS(STATIC_1338), i43, i284, i285) → 1341_0_rec1_IntArithmetic(EOS(STATIC_1341), i43, i284, i285)
1341_0_rec1_IntArithmetic(EOS(STATIC_1341), i43, i284, i285) → 1345_0_rec1_Load(EOS(STATIC_1345), i43, i284) | >=(i285, 0)
1345_0_rec1_Load(EOS(STATIC_1345), i43, i284) → 1349_0_rec1_Load(EOS(STATIC_1349), i284, i43)
1346_0_rec2_Return(EOS(STATIC_1346), i299, i43, i298, matching1, i298, i299) → 1331_0_rec2_Return(EOS(STATIC_1331), i299, i43, i298, 0, i298, i299) | =(matching1, 0)
1349_0_rec1_Load(EOS(STATIC_1349), i284, i43) → 1350_0_rec1_InvokeMethod(EOS(STATIC_1350), i43, i284)
1350_0_rec1_InvokeMethod(EOS(STATIC_1350), i43, i284) → 1351_1_rec1_InvokeMethod(1351_0_rec1_Load(EOS(STATIC_1351), i43, i284), i43, i284)
1351_0_rec1_Load(EOS(STATIC_1351), i43, i284) → 1353_0_rec1_Load(EOS(STATIC_1353), i43, i284)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), i315, i316) → 1355_0_rec1_Return(EOS(STATIC_1355), i315, i316)
1351_1_rec1_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), i324, i325) → 1363_0_rec1_Return(EOS(STATIC_1363), i324, i325)
1355_0_rec1_Return(EOS(STATIC_1355), i315, i316) → 1356_0_rec1_Return(EOS(STATIC_1356))
1363_0_rec1_Return(EOS(STATIC_1363), i324, i325) → 1355_0_rec1_Return(EOS(STATIC_1355), i324, i325)
816_0_rec0_GT(EOS(STATIC_816), i55, i56, i55, i56) → 822_0_rec0_GT(EOS(STATIC_822), i55, i56, i55, i56)
822_0_rec0_GT(EOS(STATIC_822), i55, i56, i55, i56) → 829_0_rec0_Return(EOS(STATIC_829)) | >(i55, i56)
829_0_rec0_Return(EOS(STATIC_829)) → 969_0_rec0_Return(EOS(STATIC_969))
938_1_rec0_InvokeMethod(829_0_rec0_Return(EOS(STATIC_829)), i95, i96) → 961_0_rec0_Return(EOS(STATIC_961), i95, i96)
938_1_rec0_InvokeMethod(969_0_rec0_Return(EOS(STATIC_969)), i110, i111) → 994_0_rec0_Return(EOS(STATIC_994), i110, i111)
961_0_rec0_Return(EOS(STATIC_961), i95, i96) → 969_0_rec0_Return(EOS(STATIC_969))
994_0_rec0_Return(EOS(STATIC_994), i110, i111) → 961_0_rec0_Return(EOS(STATIC_961), i110, i111)
1229_0_rec2_Load(EOS(STATIC_1229), i214, matching1, i215) → 1232_0_rec2_Load(EOS(STATIC_1232), i214, 0, i215, i214) | =(matching1, 0)
1232_0_rec2_Load(EOS(STATIC_1232), i214, matching1, i215, i214) → 1234_0_rec2_LT(EOS(STATIC_1234), i214, 0, i215, i214, 0) | =(matching1, 0)
1234_0_rec2_LT(EOS(STATIC_1234), i220, matching1, i215, i220, matching2) → 1237_0_rec2_LT(EOS(STATIC_1237), i220, 0, i215, i220, 0) | &&(=(matching1, 0), =(matching2, 0))
1234_0_rec2_LT(EOS(STATIC_1234), i221, matching1, i215, i221, matching2) → 1238_0_rec2_LT(EOS(STATIC_1238), i221, 0, i215, i221, 0) | &&(=(matching1, 0), =(matching2, 0))
1237_0_rec2_LT(EOS(STATIC_1237), i220, matching1, i215, i220, matching2) → 1241_0_rec2_Return(EOS(STATIC_1241)) | &&(&&(<(i220, 0), =(matching1, 0)), =(matching2, 0))
1238_0_rec2_LT(EOS(STATIC_1238), i221, matching1, i215, i221, matching2) → 1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, 0, i215) | &&(&&(>=(i221, 0), =(matching1, 0)), =(matching2, 0))
1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, matching1, i215) → 1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, 0, i215, 0) | =(matching1, 0)
1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, matching1, i215, matching2) → 1249_0_rec2_Load(EOS(STATIC_1249), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1249_0_rec2_Load(EOS(STATIC_1249), i221, matching1, i215, matching2) → 1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, 0, i215, 0, i215) | &&(=(matching1, 0), =(matching2, 0))
1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, matching1, i215, matching2, i215) → 1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, matching1, i215, matching2) → 1257_0_rec2_Load(EOS(STATIC_1257), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1257_0_rec2_Load(EOS(STATIC_1257), i221, matching1, i215, matching2) → 1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, matching1, i215, matching2) → 1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, matching1, i215, matching2) → 1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, matching1, i215, matching2) → 1272_0_rec2_Load(EOS(STATIC_1272), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1272_0_rec2_Load(EOS(STATIC_1272), i221, matching1, i215, matching2) → 1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, 0, i215, 0, i221) | &&(=(matching1, 0), =(matching2, 0))
1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, matching1, i215, matching2, i221) → 1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, matching1, i215, matching2) → 1280_0_rec2_Load(EOS(STATIC_1280), i221, 0, i215, 0) | &&(=(matching1, 0), =(matching2, 0))
1280_0_rec2_Load(EOS(STATIC_1280), i221, matching1, i215, matching2) → 1282_0_rec2_Load(EOS(STATIC_1282), i221, 0, i215, 0, i215) | &&(=(matching1, 0), =(matching2, 0))
1282_0_rec2_Load(EOS(STATIC_1282), i221, matching1, i215, matching2, i215) → 1285_0_rec2_Load(EOS(STATIC_1285), i221, 0, i215, 0, i215) | &&(=(matching1, 0), =(matching2, 0))
1285_0_rec2_Load(EOS(STATIC_1285), i221, matching1, i215, matching2, i215) → 1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, 0, i215, 0, i215, i221) | &&(=(matching1, 0), =(matching2, 0))
1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, matching1, i215, matching2, i215, i221) → 1290_1_rec2_InvokeMethod(1290_0_rec3_Load(EOS(STATIC_1290), 0, i215, i221), i221, 0, i215, 0, i215, i221) | &&(=(matching1, 0), =(matching2, 0))
1290_0_rec3_Load(EOS(STATIC_1290), matching1, i215, i221) → 1292_0_rec3_Load(EOS(STATIC_1292), 0, i215, i221) | =(matching1, 0)
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i242, matching1, i240, matching2, i240, i242) → 1300_0_rec3_Return(EOS(STATIC_1300), i242, 0, i240, 0, i240, i242) | &&(=(matching1, 0), =(matching2, 0))
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i261, matching1, i259, matching2, i259, i261) → 1314_0_rec3_Return(EOS(STATIC_1314), i261, 0, i259, 0, i259, i261) | &&(=(matching1, 0), =(matching2, 0))
1300_0_rec3_Return(EOS(STATIC_1300), i242, matching1, i240, matching2, i240, i242) → 1302_0_rec2_Load(EOS(STATIC_1302), i242, 0, i240) | &&(=(matching1, 0), =(matching2, 0))
1302_0_rec2_Load(EOS(STATIC_1302), i242, matching1, i240) → 1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), 0, i240, i242) | =(matching1, 0)
1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), matching1, i240, i242) → 1308_0_rec2_IntArithmetic(EOS(STATIC_1308), 0, i240, i242) | =(matching1, 0)
1308_0_rec2_IntArithmetic(EOS(STATIC_1308), matching1, i240, i242) → 1312_0_rec2_Load(EOS(STATIC_1312), 0, i240) | &&(>=(i242, 0), =(matching1, 0))
1312_0_rec2_Load(EOS(STATIC_1312), matching1, i240) → 1317_0_rec2_Load(EOS(STATIC_1317), i240, 0) | =(matching1, 0)
1314_0_rec3_Return(EOS(STATIC_1314), i261, matching1, i259, matching2, i259, i261) → 1300_0_rec3_Return(EOS(STATIC_1300), i261, 0, i259, 0, i259, i261) | &&(=(matching1, 0), =(matching2, 0))
1317_0_rec2_Load(EOS(STATIC_1317), i240, matching1) → 1318_0_rec2_Load(EOS(STATIC_1318), 0, i240) | =(matching1, 0)
1318_0_rec2_Load(EOS(STATIC_1318), matching1, i240) → 1319_0_rec2_InvokeMethod(EOS(STATIC_1319), 0, i240) | =(matching1, 0)
1319_0_rec2_InvokeMethod(EOS(STATIC_1319), matching1, i240) → 1321_1_rec2_InvokeMethod(1321_0_rec2_Load(EOS(STATIC_1321), 0, i240), 0, i240) | =(matching1, 0)
1321_0_rec2_Load(EOS(STATIC_1321), matching1, i240) → 1322_0_rec2_Load(EOS(STATIC_1322), 0, i240) | =(matching1, 0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), matching1, i281) → 1325_0_rec2_Return(EOS(STATIC_1325), 0, i281) | =(matching1, 0)
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), matching1, i302) → 1347_0_rec2_Return(EOS(STATIC_1347), 0, i302) | =(matching1, 0)
1325_0_rec2_Return(EOS(STATIC_1325), matching1, i281) → 1334_0_rec2_Return(EOS(STATIC_1334), 0, i281) | =(matching1, 0)
1334_0_rec2_Return(EOS(STATIC_1334), matching1, i290) → 1337_0_rec2_Return(EOS(STATIC_1337)) | =(matching1, 0)
1347_0_rec2_Return(EOS(STATIC_1347), matching1, i302) → 1334_0_rec2_Return(EOS(STATIC_1334), 0, i302) | =(matching1, 0)
1187_0_rec3_Load(EOS(STATIC_1187), i197, i115, i116) → 1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i197)
1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i116, i197) → 1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i197, i115) → 1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i116, i197, i115) → 1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i197, i115)
1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i116, i197, i115) → 1203_0_rec3_Return(EOS(STATIC_1203)) | >(i197, i115)
1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i116, i197, i115) → 1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116) | <=(i197, i115)
1203_0_rec3_Return(EOS(STATIC_1203)) → 1304_0_rec3_Return(EOS(STATIC_1304))
1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115, i116) → 1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116)
1209_0_rec3_Load(EOS(STATIC_1209), i197, i115, i116) → 1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i116)
1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115, i116, i116) → 1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116)
1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115, i116) → 1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116)
1221_0_rec3_Load(EOS(STATIC_1221), i197, i115, i116) → 1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116)
1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115, i116) → 1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116)
1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115, i116) → 1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116)
1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115, i116) → 1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116)
1231_0_rec3_Load(EOS(STATIC_1231), i197, i115, i116) → 1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116)
1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115, i116) → 1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116)
1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115, i116) → 1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116)
1239_0_rec3_Load(EOS(STATIC_1239), i197, i115, i116) → 1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i197)
1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i116, i197) → 1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116) | >=(i197, 0)
1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115, i116) → 1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116)
1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115, i116) → 1254_1_rec3_InvokeMethod(1254_0_rec4_Load(EOS(STATIC_1254)), i197, i115, i116)
1254_0_rec4_Load(EOS(STATIC_1254)) → 1256_0_rec4_Load(EOS(STATIC_1256))
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), i197, i115, i116) → 1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), i197, i115, i116) → 1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116)
1264_0_rec4_Return(EOS(STATIC_1264), i197, i115, i116) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116)
1267_0_rec4_Return(EOS(STATIC_1267), i197, i115, i116) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116)
1268_0_rec4_Return(EOS(STATIC_1268), i197, i115, i116) → 1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116)
1271_0_rec3_Load(EOS(STATIC_1271), i197, i115, i116) → 1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i197)
1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i116, i197) → 1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i197)
1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i116, i197) → 1279_0_rec3_Load(EOS(STATIC_1279), i115, i116) | >=(i197, 0)
1279_0_rec3_Load(EOS(STATIC_1279), i115, i116) → 1281_0_rec3_Load(EOS(STATIC_1281), i116, i115)
1281_0_rec3_Load(EOS(STATIC_1281), i116, i115) → 1283_0_rec3_Load(EOS(STATIC_1283), i115, i116)
1283_0_rec3_Load(EOS(STATIC_1283), i115, i116) → 1286_0_rec3_Load(EOS(STATIC_1286), i115, i116)
1286_0_rec3_Load(EOS(STATIC_1286), i115, i116) → 1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115, i116)
1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115, i116) → 1291_1_rec3_InvokeMethod(1291_0_rec3_Load(EOS(STATIC_1291), i115, i116), i115, i116)
1291_0_rec3_Load(EOS(STATIC_1291), i115, i116) → 1294_0_rec3_Load(EOS(STATIC_1294), i115, i116)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i250, i251) → 1301_0_rec3_Return(EOS(STATIC_1301), i250, i251)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i264, i265) → 1316_0_rec3_Return(EOS(STATIC_1316), i264, i265)
1301_0_rec3_Return(EOS(STATIC_1301), i250, i251) → 1304_0_rec3_Return(EOS(STATIC_1304))
1316_0_rec3_Return(EOS(STATIC_1316), i264, i265) → 1301_0_rec3_Return(EOS(STATIC_1301), i264, i265)
946_0_rec4_Load(EOS(STATIC_946), i89, matching1) → 952_0_rec4_Load(EOS(STATIC_952), i89, 0, i89) | =(matching1, 0)
952_0_rec4_Load(EOS(STATIC_952), i89, matching1, i89) → 958_0_rec4_LT(EOS(STATIC_958), i89, 0, i89, 0) | =(matching1, 0)
958_0_rec4_LT(EOS(STATIC_958), i99, matching1, i99, matching2) → 964_0_rec4_LT(EOS(STATIC_964), i99, 0, i99, 0) | &&(=(matching1, 0), =(matching2, 0))
958_0_rec4_LT(EOS(STATIC_958), i100, matching1, i100, matching2) → 965_0_rec4_LT(EOS(STATIC_965), i100, 0, i100, 0) | &&(=(matching1, 0), =(matching2, 0))
964_0_rec4_LT(EOS(STATIC_964), i99, matching1, i99, matching2) → 972_0_rec4_Return(EOS(STATIC_972)) | &&(&&(<(i99, 0), =(matching1, 0)), =(matching2, 0))
965_0_rec4_LT(EOS(STATIC_965), i100, matching1, i100, matching2) → 973_0_rec4_Load(EOS(STATIC_973), i100, 0) | &&(&&(>=(i100, 0), =(matching1, 0)), =(matching2, 0))
973_0_rec4_Load(EOS(STATIC_973), i100, matching1) → 985_0_rec4_ConstantStackPush(EOS(STATIC_985), 0, i100) | =(matching1, 0)
985_0_rec4_ConstantStackPush(EOS(STATIC_985), matching1, i100) → 990_0_rec4_IntArithmetic(EOS(STATIC_990), 0, i100) | =(matching1, 0)
990_0_rec4_IntArithmetic(EOS(STATIC_990), matching1, i100) → 999_0_rec4_Load(EOS(STATIC_999), 0) | &&(>=(i100, 0), =(matching1, 0))
999_0_rec4_Load(EOS(STATIC_999), matching1) → 1004_0_rec4_InvokeMethod(EOS(STATIC_1004), 0) | =(matching1, 0)
1004_0_rec4_InvokeMethod(EOS(STATIC_1004), matching1) → 1010_1_rec4_InvokeMethod(1010_0_rec4_Load(EOS(STATIC_1010), 0), 0) | =(matching1, 0)
1010_0_rec4_Load(EOS(STATIC_1010), matching1) → 1017_0_rec4_Load(EOS(STATIC_1017), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), matching1) → 1034_0_rec4_Return(EOS(STATIC_1034), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), matching1) → 1086_0_rec4_Return(EOS(STATIC_1086), 0) | =(matching1, 0)
1034_0_rec4_Return(EOS(STATIC_1034), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)
1058_0_rec4_Return(EOS(STATIC_1058), matching1) → 1066_0_rec4_Return(EOS(STATIC_1066)) | =(matching1, 0)
1086_0_rec4_Return(EOS(STATIC_1086), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)

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


P rules:
873_1_rec0_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), x0, x1, 0, x3, x0) → 938_1_rec0_InvokeMethod(873_1_rec0_InvokeMethod(873_0_rec1_Load(EOS(STATIC_873), 0, *(2, +(x0, 1)), +(x0, 1)), +(x0, 1), x1, 0, *(2, +(x0, 1)), +(x0, 1)), +(x0, 1), x1) | &&(>=(x1, +(x0, 1)), >(+(x0, 1), 0))
873_1_rec0_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), x0, x1, 0, x3, x0) → 938_1_rec0_InvokeMethod(873_1_rec0_InvokeMethod(873_0_rec1_Load(EOS(STATIC_873), 0, *(2, +(x0, 1)), +(x0, 1)), +(x0, 1), x1, 0, *(2, +(x0, 1)), +(x0, 1)), +(x0, 1), x1) | &&(>=(x1, +(x0, 1)), >(+(x0, 1), 0))
R rules:
873_0_rec1_Load(EOS(STATIC_873), 0, x1, x2) → 1184_0_rec1_GT(EOS(STATIC_1184), 0, x1, x2, 0, x1)
1184_0_rec1_GT(EOS(STATIC_1184), x0, x1, x2, x0, x1) → 1356_0_rec1_Return(EOS(STATIC_1356)) | <(x1, x0)
938_1_rec0_InvokeMethod(829_0_rec0_Return(EOS(STATIC_829)), x0, x1) → 969_0_rec0_Return(EOS(STATIC_969))
938_1_rec0_InvokeMethod(969_0_rec0_Return(EOS(STATIC_969)), x0, x1) → 969_0_rec0_Return(EOS(STATIC_969))
1184_0_rec1_GT(EOS(STATIC_1184), x0, x1, x2, x0, x1) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x3, 0, x2, x3, 0), x0, x1, x2, 0, x2, x0) | &&(&&(>(+(x2, 1), 0), >=(x1, x0)), >(+(x0, 1), 0))
1234_0_rec2_LT(EOS(STATIC_1234), x0, 0, x2, x0, 0) → 1241_0_rec2_Return(EOS(STATIC_1241)) | <(x0, 0)
1234_0_rec2_LT(EOS(STATIC_1234), x0, 0, x2, x0, 0) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), 0, x4, x2, 0, x4), x0, 0, x2, 0, x2, x0) | >(+(x0, 1), 0)
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x2, x0, x1) → 1304_0_rec3_Return(EOS(STATIC_1304)) | <(x1, x0)
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x2, x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x3, 0, x3, 0), x0, x1, x2) | &&(>=(x1, x0), >(+(x0, 1), 0))
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 972_0_rec4_Return(EOS(STATIC_972)) | <(x0, 0)
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x3, 0, x3, 0), 0) | >(+(x0, 1), 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1222_1_rec1_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), x0, x1, x2, 0, x2, x0) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(EOS(STATIC_1184), x4, x1, x2, x4, x1), x1, x2) | >(+(x0, 1), 0)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), x0, x1) → 1356_0_rec1_Return(EOS(STATIC_1356))
1351_1_rec1_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), x0, x1) → 1356_0_rec1_Return(EOS(STATIC_1356))
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, 0, x2, 0, x2, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x4, 0, x2, x4, 0), 0, x2) | >(+(x0, 1), 0)
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, 0, x2, 0, x2, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x4, 0, x2, x4, 0), 0, x2) | >(+(x0, 1), 0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), 0, x1) → 1337_0_rec2_Return(EOS(STATIC_1337))
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), 0, x1) → 1337_0_rec2_Return(EOS(STATIC_1337))
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), x0, x1, x2) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x3, x1, x2, x3, x1), x1, x2) | >(+(x0, 1), 0)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), x0, x1, x2) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x3, x1, x2, x3, x1), x1, x2) | >(+(x0, 1), 0)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, x1) → 1304_0_rec3_Return(EOS(STATIC_1304))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, x1) → 1304_0_rec3_Return(EOS(STATIC_1304))

Filtered ground terms:



873_0_rec1_Load(x1, x2, x3, x4) → 873_0_rec1_Load(x3, x4)
873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5, x6) → 873_1_rec0_InvokeMethod(x1, x2, x3, x5, x6)
Cond_873_1_rec0_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_873_1_rec0_InvokeMethod1(x1, x3, x4, x6, x7)
1356_0_rec1_Return(x1) → 1356_0_rec1_Return
Cond_873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_873_1_rec0_InvokeMethod(x1, x3, x4, x6, x7)
1192_0_rec1_Return(x1) → 1192_0_rec1_Return
1304_0_rec3_Return(x1) → 1304_0_rec3_Return
1203_0_rec3_Return(x1) → 1203_0_rec3_Return
1194_0_rec3_GT(x1, x2, x3, x4, x5, x6) → 1194_0_rec3_GT(x2, x3, x4, x5, x6)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x4, x5, x6)
1066_0_rec4_Return(x1) → 1066_0_rec4_Return
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x4, x5, x6)
972_0_rec4_Return(x1) → 972_0_rec4_Return
1337_0_rec2_Return(x1) → 1337_0_rec2_Return
1321_1_rec2_InvokeMethod(x1, x2, x3) → 1321_1_rec2_InvokeMethod(x1, x3)
1241_0_rec2_Return(x1) → 1241_0_rec2_Return
1234_0_rec2_LT(x1, x2, x3, x4, x5, x6) → 1234_0_rec2_LT(x2, x4, x5)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1290_1_rec2_InvokeMethod1(x1, x3, x5, x7, x8, x9)
1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → 1290_1_rec2_InvokeMethod(x1, x2, x4, x6, x7)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1290_1_rec2_InvokeMethod(x1, x3, x5, x7, x8, x9)
1184_0_rec1_GT(x1, x2, x3, x4, x5, x6) → 1184_0_rec1_GT(x2, x3, x4, x5, x6)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1222_1_rec1_InvokeMethod(x1, x3, x4, x5, x7, x8, x9)
1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → 1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x6, x7)
1010_1_rec4_InvokeMethod(x1, x2) → 1010_1_rec4_InvokeMethod(x1)
958_0_rec4_LT(x1, x2, x3, x4, x5) → 958_0_rec4_LT(x2, x4)
Cond_958_0_rec4_LT1(x1, x2, x3, x4, x5, x6, x7) → Cond_958_0_rec4_LT1(x1, x3, x5, x7)
Cond_958_0_rec4_LT(x1, x2, x3, x4, x5, x6) → Cond_958_0_rec4_LT(x1, x3, x5)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1194_0_rec3_GT1(x1, x3, x4, x5, x6, x7, x8)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_1194_0_rec3_GT(x1, x3, x4, x5, x6, x7)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1234_0_rec2_LT1(x1, x3, x5, x6, x8)
Cond_1234_0_rec2_LT(x1, x2, x3, x4, x5, x6, x7) → Cond_1234_0_rec2_LT(x1, x3, x5, x6)
Cond_1184_0_rec1_GT1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1184_0_rec1_GT1(x1, x3, x4, x5, x6, x7, x8)
969_0_rec0_Return(x1) → 969_0_rec0_Return
829_0_rec0_Return(x1) → 829_0_rec0_Return
Cond_1184_0_rec1_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_1184_0_rec1_GT(x1, x3, x4, x5, x6, x7)

Filtered duplicate args:



873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5) → 873_1_rec0_InvokeMethod(x1, x3, x4, x5)
Cond_873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5) → Cond_873_1_rec0_InvokeMethod(x1, x3, x4, x5)
Cond_873_1_rec0_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_873_1_rec0_InvokeMethod1(x1, x3, x4, x5)
1184_0_rec1_GT(x1, x2, x3, x4, x5) → 1184_0_rec1_GT(x3, x4, x5)
Cond_1184_0_rec1_GT(x1, x2, x3, x4, x5, x6) → Cond_1184_0_rec1_GT(x1, x4, x5, x6)
Cond_1184_0_rec1_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1184_0_rec1_GT1(x1, x4, x5, x6, x7)
1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1222_1_rec1_InvokeMethod(x1, x3, x5, x6)
1234_0_rec2_LT(x1, x2, x3) → 1234_0_rec2_LT(x2, x3)
Cond_1234_0_rec2_LT(x1, x2, x3, x4) → Cond_1234_0_rec2_LT(x1, x3, x4)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4, x5) → Cond_1234_0_rec2_LT1(x1, x3, x4, x5)
1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5) → 1290_1_rec2_InvokeMethod(x1, x4, x5)
1194_0_rec3_GT(x1, x2, x3, x4, x5) → 1194_0_rec3_GT(x3, x4, x5)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6) → Cond_1194_0_rec3_GT(x1, x4, x5, x6)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1194_0_rec3_GT1(x1, x4, x5, x6, x7)
958_0_rec4_LT(x1, x2) → 958_0_rec4_LT(x2)
Cond_958_0_rec4_LT(x1, x2, x3) → Cond_958_0_rec4_LT(x1, x3)
Cond_958_0_rec4_LT1(x1, x2, x3, x4) → Cond_958_0_rec4_LT1(x1, x3, x4)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1222_1_rec1_InvokeMethod(x1, x3, x5, x6, x7)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1290_1_rec2_InvokeMethod(x1, x4, x5, x6)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_1290_1_rec2_InvokeMethod1(x1, x4, x5, x6)

Filtered unneeded arguments:



873_1_rec0_InvokeMethod(x1, x2, x3, x4) → 873_1_rec0_InvokeMethod(x1, x2, x4)
Cond_873_1_rec0_InvokeMethod(x1, x2, x3, x4) → Cond_873_1_rec0_InvokeMethod(x1, x2, x4)
938_1_rec0_InvokeMethod(x1, x2, x3) → 938_1_rec0_InvokeMethod(x1)
Cond_873_1_rec0_InvokeMethod1(x1, x2, x3, x4) → Cond_873_1_rec0_InvokeMethod1(x1, x2, x4)
Cond_1184_0_rec1_GT(x1, x2, x3, x4) → Cond_1184_0_rec1_GT(x1)
Cond_1234_0_rec2_LT(x1, x2, x3) → Cond_1234_0_rec2_LT(x1)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4) → Cond_1234_0_rec2_LT1(x1, x3, x4)
Cond_1194_0_rec3_GT(x1, x2, x3, x4) → Cond_1194_0_rec3_GT(x1)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5) → Cond_1194_0_rec3_GT1(x1, x3, x4, x5)
Cond_958_0_rec4_LT(x1, x2) → Cond_958_0_rec4_LT(x1)
Cond_958_0_rec4_LT1(x1, x2, x3) → Cond_958_0_rec4_LT1(x1, x3)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x5)
1351_1_rec1_InvokeMethod(x1, x2, x3) → 1351_1_rec1_InvokeMethod(x1)
1290_1_rec2_InvokeMethod(x1, x2, x3) → 1290_1_rec2_InvokeMethod(x1, x3)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4) → Cond_1290_1_rec2_InvokeMethod(x1, x4)
1321_1_rec2_InvokeMethod(x1, x2) → 1321_1_rec2_InvokeMethod(x1)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4) → Cond_1290_1_rec2_InvokeMethod1(x1, x4)
1254_1_rec3_InvokeMethod(x1, x2, x3, x4) → 1254_1_rec3_InvokeMethod(x1, x2, x3)
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x5)
1291_1_rec3_InvokeMethod(x1, x2, x3) → 1291_1_rec3_InvokeMethod(x1)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x5)
1234_0_rec2_LT(x1, x2) → 1234_0_rec2_LT(x2)
1194_0_rec3_GT(x1, x2, x3) → 1194_0_rec3_GT(x2, x3)

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


P rules:
873_1_rec0_InvokeMethod(1192_0_rec1_Return, x1, x0) → 938_1_rec0_InvokeMethod(873_1_rec0_InvokeMethod(873_0_rec1_Load(*(2, +(x0, 1)), +(x0, 1)), x1, +(x0, 1))) | &&(>=(x1, +(x0, 1)), >(x0, -1))
873_1_rec0_InvokeMethod(1356_0_rec1_Return, x1, x0) → 938_1_rec0_InvokeMethod(873_1_rec0_InvokeMethod(873_0_rec1_Load(*(2, +(x0, 1)), +(x0, 1)), x1, +(x0, 1))) | &&(>=(x1, +(x0, 1)), >(x0, -1))
R rules:
873_0_rec1_Load(x1, x2) → 1184_0_rec1_GT(x2, 0, x1)
1184_0_rec1_GT(x2, x0, x1) → 1356_0_rec1_Return | <(x1, x0)
938_1_rec0_InvokeMethod(829_0_rec0_Return) → 969_0_rec0_Return
938_1_rec0_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1184_0_rec1_GT(x2, x0, x1) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x3), x1, x2, x0) | &&(&&(>(x2, -1), >=(x1, x0)), >(x0, -1))
1234_0_rec2_LT(x0) → 1241_0_rec2_Return | <(x0, 0)
1234_0_rec2_LT(x0) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x4), x0) | >(x0, -1)
1194_0_rec3_GT(x0, x1) → 1304_0_rec3_Return | <(x1, x0)
1194_0_rec3_GT(x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x3), x0, x1) | &&(>=(x1, x0), >(x0, -1))
958_0_rec4_LT(x0) → 972_0_rec4_Return | <(x0, 0)
958_0_rec4_LT(x0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3)) | >(x0, -1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 1066_0_rec4_Return
1010_1_rec4_InvokeMethod(1066_0_rec4_Return) → 1066_0_rec4_Return
1222_1_rec1_InvokeMethod(1337_0_rec2_Return, x1, x2, x0) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x2, x4, x1)) | >(x0, -1)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return) → 1356_0_rec1_Return
1351_1_rec1_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1290_1_rec2_InvokeMethod(1203_0_rec3_Return, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x4)) | >(x0, -1)
1290_1_rec2_InvokeMethod(1304_0_rec3_Return, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x4)) | >(x0, -1)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return) → 1337_0_rec2_Return
1321_1_rec2_InvokeMethod(1337_0_rec2_Return) → 1337_0_rec2_Return
1254_1_rec3_InvokeMethod(972_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x3, x1)) | >(x0, -1)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x3, x1)) | >(x0, -1)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return) → 1304_0_rec3_Return
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return

Performed bisimulation on rules. Used the following equivalence classes: {[Cond_1234_0_rec2_LT_2, Cond_958_0_rec4_LT_2]=Cond_1234_0_rec2_LT_2, [Cond_873_1_rec0_InvokeMethod_4, Cond_873_1_rec0_InvokeMethod1_4]=Cond_873_1_rec0_InvokeMethod_4, [Cond_1290_1_rec2_InvokeMethod_4, Cond_1290_1_rec2_InvokeMethod1_4]=Cond_1290_1_rec2_InvokeMethod_4, [1356_0_rec1_Return, 829_0_rec0_Return, 969_0_rec0_Return, 1241_0_rec2_Return, 1304_0_rec3_Return, 972_0_rec4_Return, 1066_0_rec4_Return, 1337_0_rec2_Return, 1192_0_rec1_Return, 1203_0_rec3_Return]=1356_0_rec1_Return, [Cond_1254_1_rec3_InvokeMethod_5, Cond_1254_1_rec3_InvokeMethod1_5]=Cond_1254_1_rec3_InvokeMethod_5}


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


P rules:
873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1, x0) → COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1, +(x0, 1)), >(x0, -1)), 1356_0_rec1_Return, x1, x0)
COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1, x0) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0, 1)), +(x0, 1)), x1, +(x0, 1))
R rules:
873_0_rec1_Load(x1, x2) → 1184_0_rec1_GT(x2, 0, x1)
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT(<(x1, x0), x2, x0, x1)
Cond_1184_0_rec1_GT(TRUE, x2, x0, x1) → 1356_0_rec1_Return
938_1_rec0_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT1(&&(&&(>(x2, -1), >=(x1, x0)), >(x0, -1)), x2, x0, x1, x3)
Cond_1184_0_rec1_GT1(TRUE, x2, x0, x1, x3) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x3), x1, x2, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(<(x0, 0), x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 1356_0_rec1_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(>(x0, -1), x0, x4)
Cond_1234_0_rec2_LT1(TRUE, x0, x4) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x4), x0)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(<(x1, x0), x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1356_0_rec1_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(&&(>=(x1, x0), >(x0, -1)), x0, x1, x3)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x3) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x3), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(<(x0, 0), x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(>(x0, -1), x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x1, x2, x0) → Cond_1222_1_rec1_InvokeMethod(>(x0, -1), 1356_0_rec1_Return, x1, x2, x0, x4)
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x1, x2, x0, x4) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x2, x4, x1))
1351_1_rec1_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1290_1_rec2_InvokeMethod(1356_0_rec1_Return, x0) → Cond_1290_1_rec2_InvokeMethod(>(x0, -1), 1356_0_rec1_Return, x0, x4)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x4) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x4))
1321_1_rec2_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1254_1_rec3_InvokeMethod(1356_0_rec1_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(>(x0, -1), 1356_0_rec1_Return, x0, x1, x3)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x3) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x3, x1))
1291_1_rec3_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return

(47) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
873_0_rec1_Load(x1, x2) → 1184_0_rec1_GT(x2, 0, x1)
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT(x1 < x0, x2, x0, x1)
Cond_1184_0_rec1_GT(TRUE, x2, x0, x1) → 1356_0_rec1_Return
938_1_rec0_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT1(x2 > -1 && x1 >= x0 && x0 > -1, x2, x0, x1, x3)
Cond_1184_0_rec1_GT1(TRUE, x2, x0, x1, x3) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x3), x1, x2, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 1356_0_rec1_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x4)
Cond_1234_0_rec2_LT1(TRUE, x0, x4) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x4), x0)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1356_0_rec1_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x3)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x3) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x3), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x1, x2, x0) → Cond_1222_1_rec1_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x1, x2, x0, x4)
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x1, x2, x0, x4) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x2, x4, x1))
1351_1_rec1_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1290_1_rec2_InvokeMethod(1356_0_rec1_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x0, x4)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x4) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x4))
1321_1_rec2_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1254_1_rec3_InvokeMethod(1356_0_rec1_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x0, x1, x3)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x3) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x3, x1))
1291_1_rec3_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return

The integer pair graph contains the following rules and edges:
(0): 873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0]) → COND_873_1_REC0_INVOKEMETHOD(x1[0] >= x0[0] + 1 && x0[0] > -1, 1356_0_rec1_Return, x1[0], x0[0])
(1): COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1[1], x0[1]) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(2 * x0[1] + 1, x0[1] + 1), x1[1], x0[1] + 1)

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


(1) -> (0), if (873_0_rec1_Load(2 * x0[1] + 1, x0[1] + 1) →* 1356_0_rec1_Returnx1[1]* x1[0]x0[1] + 1* x0[0])



The set Q consists of the following terms:
873_0_rec1_Load(x0, x1)
1184_0_rec1_GT(x0, x1, x2)
Cond_1184_0_rec1_GT(TRUE, x0, x1, x2)
938_1_rec0_InvokeMethod(1356_0_rec1_Return)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2, x3)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1356_0_rec1_Return)
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x0, x1, x2)
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x2, x3)
1351_1_rec1_InvokeMethod(1356_0_rec1_Return)
1290_1_rec2_InvokeMethod(1356_0_rec1_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1)
1321_1_rec2_InvokeMethod(1356_0_rec1_Return)
1254_1_rec3_InvokeMethod(1356_0_rec1_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1356_0_rec1_Return)

(48) 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@1ae0a15f 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 873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1, x0) → COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1, +(x0, 1)), >(x0, -1)), 1356_0_rec1_Return, x1, x0) the following chains were created:
  • We consider the chain 873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0]) → COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0]), COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1[1], x0[1]) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1)) which results in the following constraint:

    (1)    (&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1))=TRUEx1[0]=x1[1]x0[0]=x0[1]873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0])≥NonInfC∧873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0])≥COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])∧(UIncreasing(COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])), ≥))



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

    (2)    (>=(x1[0], +(x0[0], 1))=TRUE>(x0[0], -1)=TRUE873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0])≥NonInfC∧873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0])≥COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])∧(UIncreasing(COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])), ≥))



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

    (3)    (x1[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x0[0] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)



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

    (4)    (x1[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x0[0] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)



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

    (5)    (x1[0] + [-1] + [-1]x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x0[0] + [bni_41]x1[0] ≥ 0∧[(-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_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])), ≥)∧[(-1)Bound*bni_41] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)







For Pair COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1, x0) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0, 1)), +(x0, 1)), x1, +(x0, 1)) the following chains were created:
  • We consider the chain COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1[1], x0[1]) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1)) which results in the following constraint:

    (7)    (COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1[1], x0[1])≥NonInfC∧COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1[1], x0[1])≥873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))∧(UIncreasing(873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))), ≥))



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

    (8)    ((UIncreasing(873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))), ≥)∧[bni_43] = 0∧[1 + (-1)bso_44] ≥ 0)



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

    (9)    ((UIncreasing(873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))), ≥)∧[bni_43] = 0∧[1 + (-1)bso_44] ≥ 0)



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

    (10)    ((UIncreasing(873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))), ≥)∧[bni_43] = 0∧[1 + (-1)bso_44] ≥ 0)



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

    (11)    ((UIncreasing(873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))), ≥)∧[bni_43] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_44] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1, x0) → COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1, +(x0, 1)), >(x0, -1)), 1356_0_rec1_Return, x1, x0)
    • (x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])), ≥)∧[(-1)Bound*bni_41] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)

  • COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1, x0) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0, 1)), +(x0, 1)), x1, +(x0, 1))
    • ((UIncreasing(873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))), ≥)∧[bni_43] = 0∧0 = 0∧0 = 0∧[1 + (-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(873_0_rec1_Load(x1, x2)) = [2]   
POL(1184_0_rec1_GT(x1, x2, x3)) = [1]   
POL(0) = 0   
POL(Cond_1184_0_rec1_GT(x1, x2, x3, x4)) = 0   
POL(<(x1, x2)) = [-1]   
POL(1356_0_rec1_Return) = [-1]   
POL(938_1_rec0_InvokeMethod(x1)) = [-1]   
POL(Cond_1184_0_rec1_GT1(x1, x2, x3, x4, x5)) = 0   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(1222_1_rec1_InvokeMethod(x1, x2, x3, x4)) = 0   
POL(1234_0_rec2_LT(x1)) = [-1] + x1   
POL(Cond_1234_0_rec2_LT(x1, x2)) = [-1]   
POL(Cond_1234_0_rec2_LT1(x1, x2, x3)) = [-1]   
POL(1290_1_rec2_InvokeMethod(x1, x2)) = [-1] + [-1]x2   
POL(1194_0_rec3_GT(x1, x2)) = [-1] + [-1]x1   
POL(Cond_1194_0_rec3_GT(x1, x2, x3)) = [-1] + [-1]x2   
POL(Cond_1194_0_rec3_GT1(x1, x2, x3, x4)) = [-1] + [-1]x2   
POL(1254_1_rec3_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x2   
POL(958_0_rec4_LT(x1)) = [-1] + x1   
POL(Cond_958_0_rec4_LT1(x1, x2, x3)) = [-1] + [-1]x2   
POL(1010_1_rec4_InvokeMethod(x1)) = [-1]   
POL(Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6)) = 0   
POL(1351_1_rec1_InvokeMethod(x1)) = 0   
POL(Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(1321_1_rec2_InvokeMethod(x1)) = 0   
POL(Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x3   
POL(1291_1_rec3_InvokeMethod(x1)) = [-1]   
POL(873_1_REC0_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(COND_873_1_REC0_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4 + x3   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(*(x1, x2)) = x1·x2   
POL(2) = [2]   

The following pairs are in P>:

COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1[1], x0[1]) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(*(2, +(x0[1], 1)), +(x0[1], 1)), x1[1], +(x0[1], 1))

The following pairs are in Pbound:

873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0]) → COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])

The following pairs are in P:

873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0]) → COND_873_1_REC0_INVOKEMETHOD(&&(>=(x1[0], +(x0[0], 1)), >(x0[0], -1)), 1356_0_rec1_Return, x1[0], x0[0])

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

873_0_rec1_Load(x1, x2)11184_0_rec1_GT(x2, 0, x1)1
1184_0_rec1_GT(x2, x0, x1)1Cond_1184_0_rec1_GT(<(x1, x0), x2, x0, x1)1
1184_0_rec1_GT(x2, x0, x1)1Cond_1184_0_rec1_GT1(&&(&&(>(x2, -1), >=(x1, x0)), >(x0, -1)), x2, x0, x1, x3)1
Cond_1184_0_rec1_GT1(TRUE, x2, x0, x1, x3)11222_1_rec1_InvokeMethod(1234_0_rec2_LT(x3), x1, x2, x0)1
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x1, x2, x0)1Cond_1222_1_rec1_InvokeMethod(>(x0, -1), 1356_0_rec1_Return, x1, x2, x0, x4)1
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x1, x2, x0, x4)11351_1_rec1_InvokeMethod(1184_0_rec1_GT(x2, x4, x1))1
1351_1_rec1_InvokeMethod(1356_0_rec1_Return)11356_0_rec1_Return1
Cond_1184_0_rec1_GT(TRUE, x2, x0, x1)11356_0_rec1_Return1

(49) Complex Obligation (AND)

(50) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
873_0_rec1_Load(x1, x2) → 1184_0_rec1_GT(x2, 0, x1)
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT(x1 < x0, x2, x0, x1)
Cond_1184_0_rec1_GT(TRUE, x2, x0, x1) → 1356_0_rec1_Return
938_1_rec0_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT1(x2 > -1 && x1 >= x0 && x0 > -1, x2, x0, x1, x3)
Cond_1184_0_rec1_GT1(TRUE, x2, x0, x1, x3) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x3), x1, x2, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 1356_0_rec1_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x4)
Cond_1234_0_rec2_LT1(TRUE, x0, x4) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x4), x0)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1356_0_rec1_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x3)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x3) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x3), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x1, x2, x0) → Cond_1222_1_rec1_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x1, x2, x0, x4)
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x1, x2, x0, x4) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x2, x4, x1))
1351_1_rec1_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1290_1_rec2_InvokeMethod(1356_0_rec1_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x0, x4)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x4) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x4))
1321_1_rec2_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1254_1_rec3_InvokeMethod(1356_0_rec1_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x0, x1, x3)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x3) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x3, x1))
1291_1_rec3_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return

The integer pair graph contains the following rules and edges:
(0): 873_1_REC0_INVOKEMETHOD(1356_0_rec1_Return, x1[0], x0[0]) → COND_873_1_REC0_INVOKEMETHOD(x1[0] >= x0[0] + 1 && x0[0] > -1, 1356_0_rec1_Return, x1[0], x0[0])


The set Q consists of the following terms:
873_0_rec1_Load(x0, x1)
1184_0_rec1_GT(x0, x1, x2)
Cond_1184_0_rec1_GT(TRUE, x0, x1, x2)
938_1_rec0_InvokeMethod(1356_0_rec1_Return)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2, x3)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1356_0_rec1_Return)
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x0, x1, x2)
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x2, x3)
1351_1_rec1_InvokeMethod(1356_0_rec1_Return)
1290_1_rec2_InvokeMethod(1356_0_rec1_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1)
1321_1_rec2_InvokeMethod(1356_0_rec1_Return)
1254_1_rec3_InvokeMethod(1356_0_rec1_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1356_0_rec1_Return)

(51) IDependencyGraphProof (EQUIVALENT transformation)

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

(52) TRUE

(53) 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:
873_0_rec1_Load(x1, x2) → 1184_0_rec1_GT(x2, 0, x1)
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT(x1 < x0, x2, x0, x1)
Cond_1184_0_rec1_GT(TRUE, x2, x0, x1) → 1356_0_rec1_Return
938_1_rec0_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1184_0_rec1_GT(x2, x0, x1) → Cond_1184_0_rec1_GT1(x2 > -1 && x1 >= x0 && x0 > -1, x2, x0, x1, x3)
Cond_1184_0_rec1_GT1(TRUE, x2, x0, x1, x3) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x3), x1, x2, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 1356_0_rec1_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x4)
Cond_1234_0_rec2_LT1(TRUE, x0, x4) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x4), x0)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT(x1 < x0, x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1) → 1356_0_rec1_Return
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x3)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x3) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x3), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x1, x2, x0) → Cond_1222_1_rec1_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x1, x2, x0, x4)
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x1, x2, x0, x4) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x2, x4, x1))
1351_1_rec1_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1290_1_rec2_InvokeMethod(1356_0_rec1_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x0, x4)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x4) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x4))
1321_1_rec2_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1254_1_rec3_InvokeMethod(1356_0_rec1_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 1356_0_rec1_Return, x0, x1, x3)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x3) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x3, x1))
1291_1_rec3_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return

The integer pair graph contains the following rules and edges:
(1): COND_873_1_REC0_INVOKEMETHOD(TRUE, 1356_0_rec1_Return, x1[1], x0[1]) → 873_1_REC0_INVOKEMETHOD(873_0_rec1_Load(2 * x0[1] + 1, x0[1] + 1), x1[1], x0[1] + 1)


The set Q consists of the following terms:
873_0_rec1_Load(x0, x1)
1184_0_rec1_GT(x0, x1, x2)
Cond_1184_0_rec1_GT(TRUE, x0, x1, x2)
938_1_rec0_InvokeMethod(1356_0_rec1_Return)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2, x3)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT(TRUE, x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(1356_0_rec1_Return)
1222_1_rec1_InvokeMethod(1356_0_rec1_Return, x0, x1, x2)
Cond_1222_1_rec1_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x2, x3)
1351_1_rec1_InvokeMethod(1356_0_rec1_Return)
1290_1_rec2_InvokeMethod(1356_0_rec1_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1)
1321_1_rec2_InvokeMethod(1356_0_rec1_Return)
1254_1_rec3_InvokeMethod(1356_0_rec1_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 1356_0_rec1_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(1356_0_rec1_Return)

(54) IDependencyGraphProof (EQUIVALENT transformation)

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

(55) TRUE

(56) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Recursions.main([Ljava/lang/String;)V
SCC calls the following helper methods: Recursions.rec0(II)V, Recursions.rec1(III)V, Recursions.rec2(IIII)V, Recursions.rec3(IIIII)V, Recursions.rec4(II)V
Performed SCC analyses: UsedFieldsAnalysis

(57) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 16 rules for P and 167 rules for R.


P rules:
1087_0_main_Load(EOS(STATIC_1087), java.lang.Object(ARRAY(i140)), i141, i141) → 1090_0_main_ArrayLength(EOS(STATIC_1090), java.lang.Object(ARRAY(i140)), i141, i141, java.lang.Object(ARRAY(i140)))
1090_0_main_ArrayLength(EOS(STATIC_1090), java.lang.Object(ARRAY(i140)), i141, i141, java.lang.Object(ARRAY(i140))) → 1095_0_main_GE(EOS(STATIC_1095), java.lang.Object(ARRAY(i140)), i141, i141, i140) | >=(i140, 0)
1095_0_main_GE(EOS(STATIC_1095), java.lang.Object(ARRAY(i140)), i141, i141, i140) → 1098_0_main_GE(EOS(STATIC_1098), java.lang.Object(ARRAY(i140)), i141, i141, i140)
1098_0_main_GE(EOS(STATIC_1098), java.lang.Object(ARRAY(i140)), i141, i141, i140) → 1104_0_main_ConstantStackPush(EOS(STATIC_1104), java.lang.Object(ARRAY(i140)), i141) | <(i141, i140)
1104_0_main_ConstantStackPush(EOS(STATIC_1104), java.lang.Object(ARRAY(i140)), i141) → 1109_0_main_Load(EOS(STATIC_1109), java.lang.Object(ARRAY(i140)), i141, 0)
1109_0_main_Load(EOS(STATIC_1109), java.lang.Object(ARRAY(i140)), i141, matching1) → 1114_0_main_ArrayLength(EOS(STATIC_1114), java.lang.Object(ARRAY(i140)), i141, 0, java.lang.Object(ARRAY(i140))) | =(matching1, 0)
1114_0_main_ArrayLength(EOS(STATIC_1114), java.lang.Object(ARRAY(i140)), i141, matching1, java.lang.Object(ARRAY(i140))) → 1116_0_main_InvokeMethod(EOS(STATIC_1116), java.lang.Object(ARRAY(i140)), i141, 0, i140) | &&(>=(i140, 0), =(matching1, 0))
1116_0_main_InvokeMethod(EOS(STATIC_1116), java.lang.Object(ARRAY(i140)), i141, matching1, i140) → 1123_1_main_InvokeMethod(1123_0_rec0_Load(EOS(STATIC_1123), 0, i140), java.lang.Object(ARRAY(i140)), i141, 0, i140) | =(matching1, 0)
1123_1_main_InvokeMethod(829_0_rec0_Return(EOS(STATIC_829)), java.lang.Object(ARRAY(i140)), i141, matching1, i174) → 1154_0_rec0_Return(EOS(STATIC_1154), java.lang.Object(ARRAY(i174)), i141, 0, i174) | =(matching1, 0)
1123_1_main_InvokeMethod(969_0_rec0_Return(EOS(STATIC_969)), java.lang.Object(ARRAY(i140)), i141, matching1, i175) → 1156_0_rec0_Return(EOS(STATIC_1156), java.lang.Object(ARRAY(i175)), i141, 0, i175) | =(matching1, 0)
1154_0_rec0_Return(EOS(STATIC_1154), java.lang.Object(ARRAY(i174)), i141, matching1, i174) → 1163_0_main_Inc(EOS(STATIC_1163), java.lang.Object(ARRAY(i174)), i141) | =(matching1, 0)
1163_0_main_Inc(EOS(STATIC_1163), java.lang.Object(ARRAY(i174)), i141) → 1167_0_main_JMP(EOS(STATIC_1167), java.lang.Object(ARRAY(i174)), +(i141, 1)) | >=(i141, 0)
1167_0_main_JMP(EOS(STATIC_1167), java.lang.Object(ARRAY(i174)), i192) → 1172_0_main_Load(EOS(STATIC_1172), java.lang.Object(ARRAY(i174)), i192)
1172_0_main_Load(EOS(STATIC_1172), java.lang.Object(ARRAY(i174)), i192) → 1080_0_main_Load(EOS(STATIC_1080), java.lang.Object(ARRAY(i174)), i192)
1080_0_main_Load(EOS(STATIC_1080), java.lang.Object(ARRAY(i140)), i141) → 1087_0_main_Load(EOS(STATIC_1087), java.lang.Object(ARRAY(i140)), i141, i141)
1156_0_rec0_Return(EOS(STATIC_1156), java.lang.Object(ARRAY(i175)), i141, matching1, i175) → 1154_0_rec0_Return(EOS(STATIC_1154), java.lang.Object(ARRAY(i175)), i141, 0, i175) | =(matching1, 0)
R rules:
1123_0_rec0_Load(EOS(STATIC_1123), matching1, i140) → 1135_0_rec0_Load(EOS(STATIC_1135), 0, i140) | =(matching1, 0)
1135_0_rec0_Load(EOS(STATIC_1135), matching1, i140) → 808_0_rec0_Load(EOS(STATIC_808), 0, i140) | =(matching1, 0)
880_0_rec1_Load(EOS(STATIC_880), matching1, i55) → 1180_0_rec1_Load(EOS(STATIC_1180), 0, i64) | =(matching1, 0)
942_0_rec0_Load(EOS(STATIC_942), i56) → 808_0_rec0_Load(EOS(STATIC_808), i86, i56)
1225_0_rec2_Load(EOS(STATIC_1225), matching1, i195) → 1229_0_rec2_Load(EOS(STATIC_1229), i202, 0) | =(matching1, 0)
1353_0_rec1_Load(EOS(STATIC_1353), i43) → 1180_0_rec1_Load(EOS(STATIC_1180), i304, i43)
1292_0_rec3_Load(EOS(STATIC_1292), matching1, i221) → 1187_0_rec3_Load(EOS(STATIC_1187), 0, i233) | =(matching1, 0)
1322_0_rec2_Load(EOS(STATIC_1322), matching1) → 1229_0_rec2_Load(EOS(STATIC_1229), i268, 0) | =(matching1, 0)
1256_0_rec4_Load(EOS(STATIC_1256)) → 946_0_rec4_Load(EOS(STATIC_946), i223, 0)
1294_0_rec3_Load(EOS(STATIC_1294), i115) → 1187_0_rec3_Load(EOS(STATIC_1187), i232, i115)
1017_0_rec4_Load(EOS(STATIC_1017), matching1) → 946_0_rec4_Load(EOS(STATIC_946), i119, 0) | =(matching1, 0)
808_0_rec0_Load(EOS(STATIC_808), i55, i56) → 812_0_rec0_Load(EOS(STATIC_812), i55, i56, i55)
812_0_rec0_Load(EOS(STATIC_812), i55, i56, i55) → 816_0_rec0_GT(EOS(STATIC_816), i55, i56, i55, i56)
816_0_rec0_GT(EOS(STATIC_816), i55, i56, i55, i56) → 822_0_rec0_GT(EOS(STATIC_822), i55, i56, i55, i56)
816_0_rec0_GT(EOS(STATIC_816), i55, i56, i55, i56) → 823_0_rec0_GT(EOS(STATIC_823), i55, i56, i55, i56)
822_0_rec0_GT(EOS(STATIC_822), i55, i56, i55, i56) → 829_0_rec0_Return(EOS(STATIC_829)) | >(i55, i56)
823_0_rec0_GT(EOS(STATIC_823), i55, i56, i55, i56) → 830_0_rec0_ConstantStackPush(EOS(STATIC_830), i55, i56) | <=(i55, i56)
829_0_rec0_Return(EOS(STATIC_829)) → 969_0_rec0_Return(EOS(STATIC_969))
830_0_rec0_ConstantStackPush(EOS(STATIC_830), i55, i56) → 836_0_rec0_ConstantStackPush(EOS(STATIC_836), i55, i56, 0)
836_0_rec0_ConstantStackPush(EOS(STATIC_836), i55, i56, matching1) → 843_0_rec0_Load(EOS(STATIC_843), i55, i56, 0) | =(matching1, 0)
843_0_rec0_Load(EOS(STATIC_843), i55, i56, matching1) → 848_0_rec0_IntArithmetic(EOS(STATIC_848), i55, i56, 0, i55) | =(matching1, 0)
848_0_rec0_IntArithmetic(EOS(STATIC_848), i55, i56, matching1, i55) → 854_0_rec0_Load(EOS(STATIC_854), i55, i56, 0) | =(matching1, 0)
854_0_rec0_Load(EOS(STATIC_854), i55, i56, matching1) → 861_0_rec0_InvokeMethod(EOS(STATIC_861), i55, i56, 0, i55) | =(matching1, 0)
861_0_rec0_InvokeMethod(EOS(STATIC_861), i55, i56, matching1, i55) → 873_1_rec0_InvokeMethod(873_0_rec1_Load(EOS(STATIC_873), 0, i55), i55, i56, 0, i55) | =(matching1, 0)
873_0_rec1_Load(EOS(STATIC_873), matching1, i55) → 880_0_rec1_Load(EOS(STATIC_880), 0, i55) | =(matching1, 0)
873_1_rec0_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), i199, i56, matching1, i199) → 1206_0_rec1_Return(EOS(STATIC_1206), i199, i56, 0, i199) | =(matching1, 0)
873_1_rec0_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), i321, i56, matching1, i321) → 1362_0_rec1_Return(EOS(STATIC_1362), i321, i56, 0, i321) | =(matching1, 0)
901_0_rec1_Return(EOS(STATIC_901), i79, i56, matching1, i79) → 908_0_rec0_Load(EOS(STATIC_908), i79, i56) | =(matching1, 0)
908_0_rec0_Load(EOS(STATIC_908), i79, i56) → 915_0_rec0_ConstantStackPush(EOS(STATIC_915), i56, i79)
915_0_rec0_ConstantStackPush(EOS(STATIC_915), i56, i79) → 921_0_rec0_IntArithmetic(EOS(STATIC_921), i56, i79)
921_0_rec0_IntArithmetic(EOS(STATIC_921), i56, i79) → 927_0_rec0_Load(EOS(STATIC_927), i56) | >=(i79, 0)
927_0_rec0_Load(EOS(STATIC_927), i56) → 932_0_rec0_InvokeMethod(EOS(STATIC_932), i56)
932_0_rec0_InvokeMethod(EOS(STATIC_932), i56) → 938_1_rec0_InvokeMethod(938_0_rec0_Load(EOS(STATIC_938), i56), i56)
938_0_rec0_Load(EOS(STATIC_938), i56) → 942_0_rec0_Load(EOS(STATIC_942), i56)
938_1_rec0_InvokeMethod(829_0_rec0_Return(EOS(STATIC_829)), i96) → 961_0_rec0_Return(EOS(STATIC_961), i96)
938_1_rec0_InvokeMethod(969_0_rec0_Return(EOS(STATIC_969)), i111) → 994_0_rec0_Return(EOS(STATIC_994), i111)
961_0_rec0_Return(EOS(STATIC_961), i96) → 969_0_rec0_Return(EOS(STATIC_969))
994_0_rec0_Return(EOS(STATIC_994), i111) → 961_0_rec0_Return(EOS(STATIC_961), i111)
1206_0_rec1_Return(EOS(STATIC_1206), i199, i56, matching1, i199) → 901_0_rec1_Return(EOS(STATIC_901), i199, i56, 0, i199) | =(matching1, 0)
1362_0_rec1_Return(EOS(STATIC_1362), i321, i56, matching1, i321) → 901_0_rec1_Return(EOS(STATIC_901), i321, i56, 0, i321) | =(matching1, 0)
1180_0_rec1_Load(EOS(STATIC_1180), i195, i43) → 1183_0_rec1_Load(EOS(STATIC_1183), i195, i43, i195)
1183_0_rec1_Load(EOS(STATIC_1183), i195, i43, i195) → 1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i195, i43)
1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i195, i43) → 1188_0_rec1_GT(EOS(STATIC_1188), i195, i43, i195, i43)
1184_0_rec1_GT(EOS(STATIC_1184), i195, i43, i195, i43) → 1189_0_rec1_GT(EOS(STATIC_1189), i195, i43, i195, i43)
1188_0_rec1_GT(EOS(STATIC_1188), i195, i43, i195, i43) → 1192_0_rec1_Return(EOS(STATIC_1192)) | >(i195, i43)
1189_0_rec1_GT(EOS(STATIC_1189), i195, i43, i195, i43) → 1193_0_rec1_Load(EOS(STATIC_1193), i195, i43) | <=(i195, i43)
1192_0_rec1_Return(EOS(STATIC_1192)) → 1356_0_rec1_Return(EOS(STATIC_1356))
1193_0_rec1_Load(EOS(STATIC_1193), i195, i43) → 1197_0_rec1_Load(EOS(STATIC_1197), i195, i43)
1197_0_rec1_Load(EOS(STATIC_1197), i195, i43) → 1202_0_rec1_IntArithmetic(EOS(STATIC_1202), i195, i43, i195)
1202_0_rec1_IntArithmetic(EOS(STATIC_1202), i195, i43, i195) → 1207_0_rec1_ConstantStackPush(EOS(STATIC_1207), i195, i43) | >=(i195, 0)
1207_0_rec1_ConstantStackPush(EOS(STATIC_1207), i195, i43) → 1211_0_rec1_Load(EOS(STATIC_1211), i195, i43, 0)
1211_0_rec1_Load(EOS(STATIC_1211), i195, i43, matching1) → 1215_0_rec1_Load(EOS(STATIC_1215), i195, i43, 0) | =(matching1, 0)
1215_0_rec1_Load(EOS(STATIC_1215), i195, i43, matching1) → 1219_0_rec1_InvokeMethod(EOS(STATIC_1219), i195, i43, 0, i195) | =(matching1, 0)
1219_0_rec1_InvokeMethod(EOS(STATIC_1219), i195, i43, matching1, i195) → 1222_1_rec1_InvokeMethod(1222_0_rec2_Load(EOS(STATIC_1222), 0, i195), i195, i43, 0, i195) | =(matching1, 0)
1222_0_rec2_Load(EOS(STATIC_1222), matching1, i195) → 1225_0_rec2_Load(EOS(STATIC_1225), 0, i195) | =(matching1, 0)
1222_1_rec1_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), i299, i43, matching1, i299) → 1346_0_rec2_Return(EOS(STATIC_1346), i299, i43, 0, i299) | =(matching1, 0)
1331_0_rec2_Return(EOS(STATIC_1331), i285, i43, matching1, i285) → 1336_0_rec1_Load(EOS(STATIC_1336), i285, i43) | =(matching1, 0)
1336_0_rec1_Load(EOS(STATIC_1336), i285, i43) → 1338_0_rec1_ConstantStackPush(EOS(STATIC_1338), i43, i285)
1338_0_rec1_ConstantStackPush(EOS(STATIC_1338), i43, i285) → 1341_0_rec1_IntArithmetic(EOS(STATIC_1341), i43, i285)
1341_0_rec1_IntArithmetic(EOS(STATIC_1341), i43, i285) → 1345_0_rec1_Load(EOS(STATIC_1345), i43) | >=(i285, 0)
1345_0_rec1_Load(EOS(STATIC_1345), i43) → 1349_0_rec1_Load(EOS(STATIC_1349), i43)
1346_0_rec2_Return(EOS(STATIC_1346), i299, i43, matching1, i299) → 1331_0_rec2_Return(EOS(STATIC_1331), i299, i43, 0, i299) | =(matching1, 0)
1349_0_rec1_Load(EOS(STATIC_1349), i43) → 1350_0_rec1_InvokeMethod(EOS(STATIC_1350), i43)
1350_0_rec1_InvokeMethod(EOS(STATIC_1350), i43) → 1351_1_rec1_InvokeMethod(1351_0_rec1_Load(EOS(STATIC_1351), i43), i43)
1351_0_rec1_Load(EOS(STATIC_1351), i43) → 1353_0_rec1_Load(EOS(STATIC_1353), i43)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), i315) → 1355_0_rec1_Return(EOS(STATIC_1355), i315)
1351_1_rec1_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), i324) → 1363_0_rec1_Return(EOS(STATIC_1363), i324)
1355_0_rec1_Return(EOS(STATIC_1355), i315) → 1356_0_rec1_Return(EOS(STATIC_1356))
1363_0_rec1_Return(EOS(STATIC_1363), i324) → 1355_0_rec1_Return(EOS(STATIC_1355), i324)
1229_0_rec2_Load(EOS(STATIC_1229), i214, matching1) → 1232_0_rec2_Load(EOS(STATIC_1232), i214, 0, i214) | =(matching1, 0)
1232_0_rec2_Load(EOS(STATIC_1232), i214, matching1, i214) → 1234_0_rec2_LT(EOS(STATIC_1234), i214, 0, i214, 0) | =(matching1, 0)
1234_0_rec2_LT(EOS(STATIC_1234), i220, matching1, i220, matching2) → 1237_0_rec2_LT(EOS(STATIC_1237), i220, 0, i220, 0) | &&(=(matching1, 0), =(matching2, 0))
1234_0_rec2_LT(EOS(STATIC_1234), i221, matching1, i221, matching2) → 1238_0_rec2_LT(EOS(STATIC_1238), i221, 0, i221, 0) | &&(=(matching1, 0), =(matching2, 0))
1237_0_rec2_LT(EOS(STATIC_1237), i220, matching1, i220, matching2) → 1241_0_rec2_Return(EOS(STATIC_1241)) | &&(&&(<(i220, 0), =(matching1, 0)), =(matching2, 0))
1238_0_rec2_LT(EOS(STATIC_1238), i221, matching1, i221, matching2) → 1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, 0) | &&(&&(>=(i221, 0), =(matching1, 0)), =(matching2, 0))
1242_0_rec2_ConstantStackPush(EOS(STATIC_1242), i221, matching1) → 1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, 0, 0) | =(matching1, 0)
1246_0_rec2_ConstantStackPush(EOS(STATIC_1246), i221, matching1, matching2) → 1249_0_rec2_Load(EOS(STATIC_1249), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1249_0_rec2_Load(EOS(STATIC_1249), i221, matching1, matching2) → 1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1252_0_rec2_IntArithmetic(EOS(STATIC_1252), i221, matching1, matching2) → 1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1255_0_rec2_ConstantStackPush(EOS(STATIC_1255), i221, matching1, matching2) → 1257_0_rec2_Load(EOS(STATIC_1257), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1257_0_rec2_Load(EOS(STATIC_1257), i221, matching1, matching2) → 1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1259_0_rec2_IntArithmetic(EOS(STATIC_1259), i221, matching1, matching2) → 1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1263_0_rec2_IntArithmetic(EOS(STATIC_1263), i221, matching1, matching2) → 1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1270_0_rec2_ConstantStackPush(EOS(STATIC_1270), i221, matching1, matching2) → 1272_0_rec2_Load(EOS(STATIC_1272), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1272_0_rec2_Load(EOS(STATIC_1272), i221, matching1, matching2) → 1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, 0, 0, i221) | &&(=(matching1, 0), =(matching2, 0))
1275_0_rec2_IntArithmetic(EOS(STATIC_1275), i221, matching1, matching2, i221) → 1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1277_0_rec2_IntArithmetic(EOS(STATIC_1277), i221, matching1, matching2) → 1280_0_rec2_Load(EOS(STATIC_1280), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1280_0_rec2_Load(EOS(STATIC_1280), i221, matching1, matching2) → 1282_0_rec2_Load(EOS(STATIC_1282), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1282_0_rec2_Load(EOS(STATIC_1282), i221, matching1, matching2) → 1285_0_rec2_Load(EOS(STATIC_1285), i221, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1285_0_rec2_Load(EOS(STATIC_1285), i221, matching1, matching2) → 1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, 0, 0, i221) | &&(=(matching1, 0), =(matching2, 0))
1287_0_rec2_InvokeMethod(EOS(STATIC_1287), i221, matching1, matching2, i221) → 1290_1_rec2_InvokeMethod(1290_0_rec3_Load(EOS(STATIC_1290), 0, i221), i221, 0, 0, i221) | &&(=(matching1, 0), =(matching2, 0))
1290_0_rec3_Load(EOS(STATIC_1290), matching1, i221) → 1292_0_rec3_Load(EOS(STATIC_1292), 0, i221) | =(matching1, 0)
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i242, matching1, matching2, i242) → 1300_0_rec3_Return(EOS(STATIC_1300), i242, 0, 0, i242) | &&(=(matching1, 0), =(matching2, 0))
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i261, matching1, matching2, i261) → 1314_0_rec3_Return(EOS(STATIC_1314), i261, 0, 0, i261) | &&(=(matching1, 0), =(matching2, 0))
1300_0_rec3_Return(EOS(STATIC_1300), i242, matching1, matching2, i242) → 1302_0_rec2_Load(EOS(STATIC_1302), i242, 0) | &&(=(matching1, 0), =(matching2, 0))
1302_0_rec2_Load(EOS(STATIC_1302), i242, matching1) → 1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), 0, i242) | =(matching1, 0)
1305_0_rec2_ConstantStackPush(EOS(STATIC_1305), matching1, i242) → 1308_0_rec2_IntArithmetic(EOS(STATIC_1308), 0, i242) | =(matching1, 0)
1308_0_rec2_IntArithmetic(EOS(STATIC_1308), matching1, i242) → 1312_0_rec2_Load(EOS(STATIC_1312), 0) | &&(>=(i242, 0), =(matching1, 0))
1312_0_rec2_Load(EOS(STATIC_1312), matching1) → 1317_0_rec2_Load(EOS(STATIC_1317), 0) | =(matching1, 0)
1314_0_rec3_Return(EOS(STATIC_1314), i261, matching1, matching2, i261) → 1300_0_rec3_Return(EOS(STATIC_1300), i261, 0, 0, i261) | &&(=(matching1, 0), =(matching2, 0))
1317_0_rec2_Load(EOS(STATIC_1317), matching1) → 1318_0_rec2_Load(EOS(STATIC_1318), 0) | =(matching1, 0)
1318_0_rec2_Load(EOS(STATIC_1318), matching1) → 1319_0_rec2_InvokeMethod(EOS(STATIC_1319), 0) | =(matching1, 0)
1319_0_rec2_InvokeMethod(EOS(STATIC_1319), matching1) → 1321_1_rec2_InvokeMethod(1321_0_rec2_Load(EOS(STATIC_1321), 0), 0) | =(matching1, 0)
1321_0_rec2_Load(EOS(STATIC_1321), matching1) → 1322_0_rec2_Load(EOS(STATIC_1322), 0) | =(matching1, 0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), matching1) → 1325_0_rec2_Return(EOS(STATIC_1325), 0) | =(matching1, 0)
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), matching1) → 1347_0_rec2_Return(EOS(STATIC_1347), 0) | =(matching1, 0)
1325_0_rec2_Return(EOS(STATIC_1325), matching1) → 1334_0_rec2_Return(EOS(STATIC_1334), 0) | =(matching1, 0)
1334_0_rec2_Return(EOS(STATIC_1334), matching1) → 1337_0_rec2_Return(EOS(STATIC_1337)) | =(matching1, 0)
1347_0_rec2_Return(EOS(STATIC_1347), matching1) → 1334_0_rec2_Return(EOS(STATIC_1334), 0) | =(matching1, 0)
1187_0_rec3_Load(EOS(STATIC_1187), i197, i115) → 1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i197)
1190_0_rec3_Load(EOS(STATIC_1190), i197, i115, i197) → 1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i197, i115) → 1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i197, i115)
1194_0_rec3_GT(EOS(STATIC_1194), i197, i115, i197, i115) → 1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i197, i115)
1198_0_rec3_GT(EOS(STATIC_1198), i197, i115, i197, i115) → 1203_0_rec3_Return(EOS(STATIC_1203)) | >(i197, i115)
1199_0_rec3_GT(EOS(STATIC_1199), i197, i115, i197, i115) → 1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115) | <=(i197, i115)
1203_0_rec3_Return(EOS(STATIC_1203)) → 1304_0_rec3_Return(EOS(STATIC_1304))
1204_0_rec3_ConstantStackPush(EOS(STATIC_1204), i197, i115) → 1209_0_rec3_Load(EOS(STATIC_1209), i197, i115)
1209_0_rec3_Load(EOS(STATIC_1209), i197, i115) → 1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115)
1214_0_rec3_IntArithmetic(EOS(STATIC_1214), i197, i115) → 1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115)
1218_0_rec3_ConstantStackPush(EOS(STATIC_1218), i197, i115) → 1221_0_rec3_Load(EOS(STATIC_1221), i197, i115)
1221_0_rec3_Load(EOS(STATIC_1221), i197, i115) → 1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115)
1223_0_rec3_IntArithmetic(EOS(STATIC_1223), i197, i115) → 1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115)
1226_0_rec3_IntArithmetic(EOS(STATIC_1226), i197, i115) → 1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115)
1227_0_rec3_ConstantStackPush(EOS(STATIC_1227), i197, i115) → 1231_0_rec3_Load(EOS(STATIC_1231), i197, i115)
1231_0_rec3_Load(EOS(STATIC_1231), i197, i115) → 1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115)
1233_0_rec3_IntArithmetic(EOS(STATIC_1233), i197, i115) → 1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115)
1236_0_rec3_IntArithmetic(EOS(STATIC_1236), i197, i115) → 1239_0_rec3_Load(EOS(STATIC_1239), i197, i115)
1239_0_rec3_Load(EOS(STATIC_1239), i197, i115) → 1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i197)
1244_0_rec3_IntArithmetic(EOS(STATIC_1244), i197, i115, i197) → 1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115) | >=(i197, 0)
1247_0_rec3_ConstantStackPush(EOS(STATIC_1247), i197, i115) → 1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115)
1250_0_rec3_InvokeMethod(EOS(STATIC_1250), i197, i115) → 1254_1_rec3_InvokeMethod(1254_0_rec4_Load(EOS(STATIC_1254)), i197, i115)
1254_0_rec4_Load(EOS(STATIC_1254)) → 1256_0_rec4_Load(EOS(STATIC_1256))
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), i197, i115) → 1264_0_rec4_Return(EOS(STATIC_1264), i197, i115)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), i197, i115) → 1267_0_rec4_Return(EOS(STATIC_1267), i197, i115)
1264_0_rec4_Return(EOS(STATIC_1264), i197, i115) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115)
1267_0_rec4_Return(EOS(STATIC_1267), i197, i115) → 1268_0_rec4_Return(EOS(STATIC_1268), i197, i115)
1268_0_rec4_Return(EOS(STATIC_1268), i197, i115) → 1271_0_rec3_Load(EOS(STATIC_1271), i197, i115)
1271_0_rec3_Load(EOS(STATIC_1271), i197, i115) → 1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i197)
1274_0_rec3_ConstantStackPush(EOS(STATIC_1274), i115, i197) → 1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i197)
1276_0_rec3_IntArithmetic(EOS(STATIC_1276), i115, i197) → 1279_0_rec3_Load(EOS(STATIC_1279), i115) | >=(i197, 0)
1279_0_rec3_Load(EOS(STATIC_1279), i115) → 1281_0_rec3_Load(EOS(STATIC_1281), i115)
1281_0_rec3_Load(EOS(STATIC_1281), i115) → 1283_0_rec3_Load(EOS(STATIC_1283), i115)
1283_0_rec3_Load(EOS(STATIC_1283), i115) → 1286_0_rec3_Load(EOS(STATIC_1286), i115)
1286_0_rec3_Load(EOS(STATIC_1286), i115) → 1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115)
1288_0_rec3_InvokeMethod(EOS(STATIC_1288), i115) → 1291_1_rec3_InvokeMethod(1291_0_rec3_Load(EOS(STATIC_1291), i115), i115)
1291_0_rec3_Load(EOS(STATIC_1291), i115) → 1294_0_rec3_Load(EOS(STATIC_1294), i115)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), i250) → 1301_0_rec3_Return(EOS(STATIC_1301), i250)
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), i264) → 1316_0_rec3_Return(EOS(STATIC_1316), i264)
1301_0_rec3_Return(EOS(STATIC_1301), i250) → 1304_0_rec3_Return(EOS(STATIC_1304))
1316_0_rec3_Return(EOS(STATIC_1316), i264) → 1301_0_rec3_Return(EOS(STATIC_1301), i264)
946_0_rec4_Load(EOS(STATIC_946), i89, matching1) → 952_0_rec4_Load(EOS(STATIC_952), i89, 0, i89) | =(matching1, 0)
952_0_rec4_Load(EOS(STATIC_952), i89, matching1, i89) → 958_0_rec4_LT(EOS(STATIC_958), i89, 0, i89, 0) | =(matching1, 0)
958_0_rec4_LT(EOS(STATIC_958), i99, matching1, i99, matching2) → 964_0_rec4_LT(EOS(STATIC_964), i99, 0, i99, 0) | &&(=(matching1, 0), =(matching2, 0))
958_0_rec4_LT(EOS(STATIC_958), i100, matching1, i100, matching2) → 965_0_rec4_LT(EOS(STATIC_965), i100, 0, i100, 0) | &&(=(matching1, 0), =(matching2, 0))
964_0_rec4_LT(EOS(STATIC_964), i99, matching1, i99, matching2) → 972_0_rec4_Return(EOS(STATIC_972)) | &&(&&(<(i99, 0), =(matching1, 0)), =(matching2, 0))
965_0_rec4_LT(EOS(STATIC_965), i100, matching1, i100, matching2) → 973_0_rec4_Load(EOS(STATIC_973), i100, 0) | &&(&&(>=(i100, 0), =(matching1, 0)), =(matching2, 0))
973_0_rec4_Load(EOS(STATIC_973), i100, matching1) → 985_0_rec4_ConstantStackPush(EOS(STATIC_985), 0, i100) | =(matching1, 0)
985_0_rec4_ConstantStackPush(EOS(STATIC_985), matching1, i100) → 990_0_rec4_IntArithmetic(EOS(STATIC_990), 0, i100) | =(matching1, 0)
990_0_rec4_IntArithmetic(EOS(STATIC_990), matching1, i100) → 999_0_rec4_Load(EOS(STATIC_999), 0) | &&(>=(i100, 0), =(matching1, 0))
999_0_rec4_Load(EOS(STATIC_999), matching1) → 1004_0_rec4_InvokeMethod(EOS(STATIC_1004), 0) | =(matching1, 0)
1004_0_rec4_InvokeMethod(EOS(STATIC_1004), matching1) → 1010_1_rec4_InvokeMethod(1010_0_rec4_Load(EOS(STATIC_1010), 0), 0) | =(matching1, 0)
1010_0_rec4_Load(EOS(STATIC_1010), matching1) → 1017_0_rec4_Load(EOS(STATIC_1017), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), matching1) → 1034_0_rec4_Return(EOS(STATIC_1034), 0) | =(matching1, 0)
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), matching1) → 1086_0_rec4_Return(EOS(STATIC_1086), 0) | =(matching1, 0)
1034_0_rec4_Return(EOS(STATIC_1034), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)
1058_0_rec4_Return(EOS(STATIC_1058), matching1) → 1066_0_rec4_Return(EOS(STATIC_1066)) | =(matching1, 0)
1086_0_rec4_Return(EOS(STATIC_1086), matching1) → 1058_0_rec4_Return(EOS(STATIC_1058), 0) | =(matching1, 0)

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


P rules:
1123_1_main_InvokeMethod(829_0_rec0_Return(EOS(STATIC_829)), java.lang.Object(ARRAY(x0)), x1, 0, x3) → 1123_1_main_InvokeMethod(1123_0_rec0_Load(EOS(STATIC_1123), 0, x3), java.lang.Object(ARRAY(x3)), +(x1, 1), 0, x3) | &&(&&(>(+(x3, 1), 0), >(x3, +(x1, 1))), >(+(x1, 1), 0))
1123_1_main_InvokeMethod(969_0_rec0_Return(EOS(STATIC_969)), java.lang.Object(ARRAY(x0)), x1, 0, x3) → 1123_1_main_InvokeMethod(1123_0_rec0_Load(EOS(STATIC_1123), 0, x3), java.lang.Object(ARRAY(x3)), +(x1, 1), 0, x3) | &&(&&(>(+(x3, 1), 0), >(x3, +(x1, 1))), >(+(x1, 1), 0))
R rules:
1123_0_rec0_Load(EOS(STATIC_1123), 0, x1) → 816_0_rec0_GT(EOS(STATIC_816), 0, x1, 0, x1)
816_0_rec0_GT(EOS(STATIC_816), x0, x1, x0, x1) → 969_0_rec0_Return(EOS(STATIC_969)) | <(x1, x0)
816_0_rec0_GT(EOS(STATIC_816), x0, x1, x0, x1) → 873_1_rec0_InvokeMethod(1184_0_rec1_GT(EOS(STATIC_1184), 0, x2, 0, x2), x0, x1, 0, x0) | >=(x1, x0)
1184_0_rec1_GT(EOS(STATIC_1184), x0, x1, x0, x1) → 1356_0_rec1_Return(EOS(STATIC_1356)) | <(x1, x0)
1184_0_rec1_GT(EOS(STATIC_1184), x0, x1, x0, x1) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x2, 0, x2, 0), x0, x1, 0, x0) | &&(>=(x1, x0), >(+(x0, 1), 0))
1234_0_rec2_LT(EOS(STATIC_1234), x0, 0, x0, 0) → 1241_0_rec2_Return(EOS(STATIC_1241)) | <(x0, 0)
1234_0_rec2_LT(EOS(STATIC_1234), x0, 0, x0, 0) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), 0, x3, 0, x3), x0, 0, 0, x0) | >(+(x0, 1), 0)
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x0, x1) → 1304_0_rec3_Return(EOS(STATIC_1304)) | <(x1, x0)
1194_0_rec3_GT(EOS(STATIC_1194), x0, x1, x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x2, 0, x2, 0), x0, x1) | &&(>=(x1, x0), >(+(x0, 1), 0))
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 972_0_rec4_Return(EOS(STATIC_972)) | <(x0, 0)
958_0_rec4_LT(EOS(STATIC_958), x0, 0, x0, 0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(EOS(STATIC_958), x3, 0, x3, 0), 0) | >(+(x0, 1), 0)
1010_1_rec4_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
1010_1_rec4_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), 0) → 1066_0_rec4_Return(EOS(STATIC_1066))
873_1_rec0_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), x0, x1, 0, x0) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(EOS(STATIC_816), x3, x1, x3, x1), x1) | >(+(x0, 1), 0)
873_1_rec0_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), x0, x1, 0, x0) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(EOS(STATIC_816), x3, x1, x3, x1), x1) | >(+(x0, 1), 0)
1222_1_rec1_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), x0, x1, 0, x0) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(EOS(STATIC_1184), x3, x1, x3, x1), x1) | >(+(x0, 1), 0)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return(EOS(STATIC_1192)), x0) → 1356_0_rec1_Return(EOS(STATIC_1356))
1351_1_rec1_InvokeMethod(1356_0_rec1_Return(EOS(STATIC_1356)), x0) → 1356_0_rec1_Return(EOS(STATIC_1356))
1290_1_rec2_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0, 0, 0, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x3, 0, x3, 0), 0) | >(+(x0, 1), 0)
1290_1_rec2_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0, 0, 0, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(EOS(STATIC_1234), x3, 0, x3, 0), 0) | >(+(x0, 1), 0)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return(EOS(STATIC_1241)), 0) → 1337_0_rec2_Return(EOS(STATIC_1337))
1321_1_rec2_InvokeMethod(1337_0_rec2_Return(EOS(STATIC_1337)), 0) → 1337_0_rec2_Return(EOS(STATIC_1337))
1254_1_rec3_InvokeMethod(972_0_rec4_Return(EOS(STATIC_972)), x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x2, x1, x2, x1), x1) | >(+(x0, 1), 0)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return(EOS(STATIC_1066)), x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(EOS(STATIC_1194), x2, x1, x2, x1), x1) | >(+(x0, 1), 0)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return(EOS(STATIC_1203)), x0) → 1304_0_rec3_Return(EOS(STATIC_1304))
1291_1_rec3_InvokeMethod(1304_0_rec3_Return(EOS(STATIC_1304)), x0) → 1304_0_rec3_Return(EOS(STATIC_1304))
938_1_rec0_InvokeMethod(829_0_rec0_Return(EOS(STATIC_829)), x0) → 969_0_rec0_Return(EOS(STATIC_969))
938_1_rec0_InvokeMethod(969_0_rec0_Return(EOS(STATIC_969)), x0) → 969_0_rec0_Return(EOS(STATIC_969))

Filtered ground terms:



1123_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1123_1_main_InvokeMethod(x1, x2, x3, x5)
1123_0_rec0_Load(x1, x2, x3) → 1123_0_rec0_Load(x3)
Cond_1123_1_main_InvokeMethod1(x1, x2, x3, x4, x5, x6) → Cond_1123_1_main_InvokeMethod1(x1, x3, x4, x6)
969_0_rec0_Return(x1) → 969_0_rec0_Return
Cond_1123_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1123_1_main_InvokeMethod(x1, x3, x4, x6)
829_0_rec0_Return(x1) → 829_0_rec0_Return
1304_0_rec3_Return(x1) → 1304_0_rec3_Return
1203_0_rec3_Return(x1) → 1203_0_rec3_Return
1194_0_rec3_GT(x1, x2, x3, x4, x5) → 1194_0_rec3_GT(x2, x3, x4, x5)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x4, x5)
1066_0_rec4_Return(x1) → 1066_0_rec4_Return
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x4, x5)
972_0_rec4_Return(x1) → 972_0_rec4_Return
1337_0_rec2_Return(x1) → 1337_0_rec2_Return
1321_1_rec2_InvokeMethod(x1, x2) → 1321_1_rec2_InvokeMethod(x1)
1241_0_rec2_Return(x1) → 1241_0_rec2_Return
1234_0_rec2_LT(x1, x2, x3, x4, x5) → 1234_0_rec2_LT(x2, x4)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_1290_1_rec2_InvokeMethod1(x1, x3, x6, x7)
1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5) → 1290_1_rec2_InvokeMethod(x1, x2, x5)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1290_1_rec2_InvokeMethod(x1, x3, x6, x7)
1356_0_rec1_Return(x1) → 1356_0_rec1_Return
1192_0_rec1_Return(x1) → 1192_0_rec1_Return
1184_0_rec1_GT(x1, x2, x3, x4, x5) → 1184_0_rec1_GT(x2, x3, x4, x5)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1222_1_rec1_InvokeMethod(x1, x3, x4, x6, x7)
1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5) → 1222_1_rec1_InvokeMethod(x1, x2, x3, x5)
816_0_rec0_GT(x1, x2, x3, x4, x5) → 816_0_rec0_GT(x2, x3, x4, x5)
Cond_873_1_rec0_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_873_1_rec0_InvokeMethod1(x1, x3, x4, x6, x7)
873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5) → 873_1_rec0_InvokeMethod(x1, x2, x3, x5)
Cond_873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_873_1_rec0_InvokeMethod(x1, x3, x4, x6, x7)
1010_1_rec4_InvokeMethod(x1, x2) → 1010_1_rec4_InvokeMethod(x1)
958_0_rec4_LT(x1, x2, x3, x4, x5) → 958_0_rec4_LT(x2, x4)
Cond_958_0_rec4_LT1(x1, x2, x3, x4, x5, x6, x7) → Cond_958_0_rec4_LT1(x1, x3, x5, x7)
Cond_958_0_rec4_LT(x1, x2, x3, x4, x5, x6) → Cond_958_0_rec4_LT(x1, x3, x5)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1194_0_rec3_GT1(x1, x3, x4, x5, x6, x7)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5, x6) → Cond_1194_0_rec3_GT(x1, x3, x4, x5, x6)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1234_0_rec2_LT1(x1, x3, x5, x7)
Cond_1234_0_rec2_LT(x1, x2, x3, x4, x5, x6) → Cond_1234_0_rec2_LT(x1, x3, x5)
Cond_1184_0_rec1_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1184_0_rec1_GT1(x1, x3, x4, x5, x6, x7)
Cond_1184_0_rec1_GT(x1, x2, x3, x4, x5, x6) → Cond_1184_0_rec1_GT(x1, x3, x4, x5, x6)
Cond_816_0_rec0_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_816_0_rec0_GT1(x1, x3, x4, x5, x6, x7)
Cond_816_0_rec0_GT(x1, x2, x3, x4, x5, x6) → Cond_816_0_rec0_GT(x1, x3, x4, x5, x6)

Filtered duplicate args:



816_0_rec0_GT(x1, x2, x3, x4) → 816_0_rec0_GT(x3, x4)
Cond_816_0_rec0_GT(x1, x2, x3, x4, x5) → Cond_816_0_rec0_GT(x1, x4, x5)
Cond_816_0_rec0_GT1(x1, x2, x3, x4, x5, x6) → Cond_816_0_rec0_GT1(x1, x4, x5, x6)
873_1_rec0_InvokeMethod(x1, x2, x3, x4) → 873_1_rec0_InvokeMethod(x1, x3, x4)
1184_0_rec1_GT(x1, x2, x3, x4) → 1184_0_rec1_GT(x3, x4)
Cond_1184_0_rec1_GT(x1, x2, x3, x4, x5) → Cond_1184_0_rec1_GT(x1, x4, x5)
Cond_1184_0_rec1_GT1(x1, x2, x3, x4, x5, x6) → Cond_1184_0_rec1_GT1(x1, x4, x5, x6)
1222_1_rec1_InvokeMethod(x1, x2, x3, x4) → 1222_1_rec1_InvokeMethod(x1, x3, x4)
1234_0_rec2_LT(x1, x2) → 1234_0_rec2_LT(x2)
Cond_1234_0_rec2_LT(x1, x2, x3) → Cond_1234_0_rec2_LT(x1, x3)
Cond_1234_0_rec2_LT1(x1, x2, x3, x4) → Cond_1234_0_rec2_LT1(x1, x3, x4)
1290_1_rec2_InvokeMethod(x1, x2, x3) → 1290_1_rec2_InvokeMethod(x1, x3)
1194_0_rec3_GT(x1, x2, x3, x4) → 1194_0_rec3_GT(x3, x4)
Cond_1194_0_rec3_GT(x1, x2, x3, x4, x5) → Cond_1194_0_rec3_GT(x1, x4, x5)
Cond_1194_0_rec3_GT1(x1, x2, x3, x4, x5, x6) → Cond_1194_0_rec3_GT1(x1, x4, x5, x6)
958_0_rec4_LT(x1, x2) → 958_0_rec4_LT(x2)
Cond_958_0_rec4_LT(x1, x2, x3) → Cond_958_0_rec4_LT(x1, x3)
Cond_958_0_rec4_LT1(x1, x2, x3, x4) → Cond_958_0_rec4_LT1(x1, x3, x4)
Cond_873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5) → Cond_873_1_rec0_InvokeMethod(x1, x3, x4, x5)
Cond_873_1_rec0_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_873_1_rec0_InvokeMethod1(x1, x3, x4, x5)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1222_1_rec1_InvokeMethod(x1, x3, x4, x5)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4) → Cond_1290_1_rec2_InvokeMethod(x1, x3, x4)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3, x4) → Cond_1290_1_rec2_InvokeMethod1(x1, x3, x4)

Filtered unneeded arguments:



1123_1_main_InvokeMethod(x1, x2, x3, x4) → 1123_1_main_InvokeMethod(x1, x3, x4)
Cond_1123_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_1123_1_main_InvokeMethod(x1, x3, x4)
Cond_1123_1_main_InvokeMethod1(x1, x2, x3, x4) → Cond_1123_1_main_InvokeMethod1(x1, x3, x4)
Cond_816_0_rec0_GT(x1, x2, x3) → Cond_816_0_rec0_GT(x1)
Cond_1184_0_rec1_GT(x1, x2, x3) → Cond_1184_0_rec1_GT(x1)
Cond_1234_0_rec2_LT(x1, x2) → Cond_1234_0_rec2_LT(x1)
Cond_1194_0_rec3_GT(x1, x2, x3) → Cond_1194_0_rec3_GT(x1)
Cond_958_0_rec4_LT(x1, x2) → Cond_958_0_rec4_LT(x1)
Cond_958_0_rec4_LT1(x1, x2, x3) → Cond_958_0_rec4_LT1(x1, x3)
Cond_873_1_rec0_InvokeMethod(x1, x2, x3, x4) → Cond_873_1_rec0_InvokeMethod(x1, x2, x4)
938_1_rec0_InvokeMethod(x1, x2) → 938_1_rec0_InvokeMethod(x1)
Cond_873_1_rec0_InvokeMethod1(x1, x2, x3, x4) → Cond_873_1_rec0_InvokeMethod1(x1, x2, x4)
Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4) → Cond_1222_1_rec1_InvokeMethod(x1, x2, x4)
1351_1_rec1_InvokeMethod(x1, x2) → 1351_1_rec1_InvokeMethod(x1)
Cond_1290_1_rec2_InvokeMethod(x1, x2, x3) → Cond_1290_1_rec2_InvokeMethod(x1, x3)
Cond_1290_1_rec2_InvokeMethod1(x1, x2, x3) → Cond_1290_1_rec2_InvokeMethod1(x1, x3)
Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4) → Cond_1254_1_rec3_InvokeMethod(x1, x3, x4)
1291_1_rec3_InvokeMethod(x1, x2) → 1291_1_rec3_InvokeMethod(x1)
Cond_1254_1_rec3_InvokeMethod1(x1, x2, x3, x4) → Cond_1254_1_rec3_InvokeMethod1(x1, x3, x4)

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


P rules:
1123_1_main_InvokeMethod(829_0_rec0_Return, x1, x3) → 1123_1_main_InvokeMethod(1123_0_rec0_Load(x3), +(x1, 1), x3) | &&(&&(>(x3, -1), >(x3, +(x1, 1))), >(x1, -1))
1123_1_main_InvokeMethod(969_0_rec0_Return, x1, x3) → 1123_1_main_InvokeMethod(1123_0_rec0_Load(x3), +(x1, 1), x3) | &&(&&(>(x3, -1), >(x3, +(x1, 1))), >(x1, -1))
R rules:
1123_0_rec0_Load(x1) → 816_0_rec0_GT(0, x1)
816_0_rec0_GT(x0, x1) → 969_0_rec0_Return | <(x1, x0)
816_0_rec0_GT(x0, x1) → 873_1_rec0_InvokeMethod(1184_0_rec1_GT(0, x2), x1, x0) | >=(x1, x0)
1184_0_rec1_GT(x0, x1) → 1356_0_rec1_Return | <(x1, x0)
1184_0_rec1_GT(x0, x1) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x2), x1, x0) | &&(>=(x1, x0), >(x0, -1))
1234_0_rec2_LT(x0) → 1241_0_rec2_Return | <(x0, 0)
1234_0_rec2_LT(x0) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x3), x0) | >(x0, -1)
1194_0_rec3_GT(x0, x1) → 1304_0_rec3_Return | <(x1, x0)
1194_0_rec3_GT(x0, x1) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x2), x0, x1) | &&(>=(x1, x0), >(x0, -1))
958_0_rec4_LT(x0) → 972_0_rec4_Return | <(x0, 0)
958_0_rec4_LT(x0) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3)) | >(x0, -1)
1010_1_rec4_InvokeMethod(972_0_rec4_Return) → 1066_0_rec4_Return
1010_1_rec4_InvokeMethod(1066_0_rec4_Return) → 1066_0_rec4_Return
873_1_rec0_InvokeMethod(1192_0_rec1_Return, x1, x0) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(x3, x1)) | >(x0, -1)
873_1_rec0_InvokeMethod(1356_0_rec1_Return, x1, x0) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(x3, x1)) | >(x0, -1)
1222_1_rec1_InvokeMethod(1337_0_rec2_Return, x1, x0) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x3, x1)) | >(x0, -1)
1351_1_rec1_InvokeMethod(1192_0_rec1_Return) → 1356_0_rec1_Return
1351_1_rec1_InvokeMethod(1356_0_rec1_Return) → 1356_0_rec1_Return
1290_1_rec2_InvokeMethod(1203_0_rec3_Return, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x3)) | >(x0, -1)
1290_1_rec2_InvokeMethod(1304_0_rec3_Return, x0) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x3)) | >(x0, -1)
1321_1_rec2_InvokeMethod(1241_0_rec2_Return) → 1337_0_rec2_Return
1321_1_rec2_InvokeMethod(1337_0_rec2_Return) → 1337_0_rec2_Return
1254_1_rec3_InvokeMethod(972_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x2, x1)) | >(x0, -1)
1254_1_rec3_InvokeMethod(1066_0_rec4_Return, x0, x1) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x2, x1)) | >(x0, -1)
1291_1_rec3_InvokeMethod(1203_0_rec3_Return) → 1304_0_rec3_Return
1291_1_rec3_InvokeMethod(1304_0_rec3_Return) → 1304_0_rec3_Return
938_1_rec0_InvokeMethod(829_0_rec0_Return) → 969_0_rec0_Return
938_1_rec0_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return

Performed bisimulation on rules. Used the following equivalence classes: {[Cond_1234_0_rec2_LT_2, Cond_958_0_rec4_LT_2]=Cond_1234_0_rec2_LT_2, [Cond_816_0_rec0_GT_3, Cond_1184_0_rec1_GT_3, Cond_1194_0_rec3_GT_3]=Cond_816_0_rec0_GT_3, [969_0_rec0_Return, 1356_0_rec1_Return, 1241_0_rec2_Return, 1304_0_rec3_Return, 972_0_rec4_Return, 1066_0_rec4_Return, 1192_0_rec1_Return, 1337_0_rec2_Return, 1203_0_rec3_Return, 829_0_rec0_Return]=969_0_rec0_Return, [Cond_1123_1_main_InvokeMethod_4, Cond_1123_1_main_InvokeMethod1_4]=Cond_1123_1_main_InvokeMethod_4, [Cond_1290_1_rec2_InvokeMethod_4, Cond_1290_1_rec2_InvokeMethod1_4]=Cond_1290_1_rec2_InvokeMethod_4, [Cond_873_1_rec0_InvokeMethod_5, Cond_873_1_rec0_InvokeMethod1_5]=Cond_873_1_rec0_InvokeMethod_5, [Cond_1254_1_rec3_InvokeMethod_5, Cond_1254_1_rec3_InvokeMethod1_5]=Cond_1254_1_rec3_InvokeMethod_5}


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


P rules:
1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1, x3) → COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3, -1), >(x3, +(x1, 1))), >(x1, -1)), 969_0_rec0_Return, x1, x3)
COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1, x3) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3), +(x1, 1), x3)
R rules:
1123_0_rec0_Load(x1) → 816_0_rec0_GT(0, x1)
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT(<(x1, x0), x0, x1)
Cond_816_0_rec0_GT(TRUE, x0, x1) → 969_0_rec0_Return
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT1(>=(x1, x0), x0, x1, x2)
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2) → 873_1_rec0_InvokeMethod(1184_0_rec1_GT(0, x2), x1, x0)
1184_0_rec1_GT(x0, x1) → Cond_816_0_rec0_GT(<(x1, x0), x0, x1)
1184_0_rec1_GT(x0, x1) → Cond_1184_0_rec1_GT1(&&(>=(x1, x0), >(x0, -1)), x0, x1, x2)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x2), x1, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(<(x0, 0), x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 969_0_rec0_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(>(x0, -1), x0, x3)
Cond_1234_0_rec2_LT1(TRUE, x0, x3) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x3), x0)
1194_0_rec3_GT(x0, x1) → Cond_816_0_rec0_GT(<(x1, x0), x0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(&&(>=(x1, x0), >(x0, -1)), x0, x1, x2)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x2), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(<(x0, 0), x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(>(x0, -1), x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
873_1_rec0_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_873_1_rec0_InvokeMethod(>(x0, -1), 969_0_rec0_Return, x1, x0, x3)
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(x3, x1))
1222_1_rec1_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_1222_1_rec1_InvokeMethod(>(x0, -1), 969_0_rec0_Return, x1, x0, x3)
Cond_1222_1_rec1_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x3, x1))
1351_1_rec1_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1290_1_rec2_InvokeMethod(969_0_rec0_Return, x0) → Cond_1290_1_rec2_InvokeMethod(>(x0, -1), 969_0_rec0_Return, x0, x3)
Cond_1290_1_rec2_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x3) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x3))
1321_1_rec2_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1254_1_rec3_InvokeMethod(969_0_rec0_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(>(x0, -1), 969_0_rec0_Return, x0, x1, x2)
Cond_1254_1_rec3_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x2, x1))
1291_1_rec3_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
938_1_rec0_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return

(58) 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:
1123_0_rec0_Load(x1) → 816_0_rec0_GT(0, x1)
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
Cond_816_0_rec0_GT(TRUE, x0, x1) → 969_0_rec0_Return
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT1(x1 >= x0, x0, x1, x2)
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2) → 873_1_rec0_InvokeMethod(1184_0_rec1_GT(0, x2), x1, x0)
1184_0_rec1_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
1184_0_rec1_GT(x0, x1) → Cond_1184_0_rec1_GT1(x1 >= x0 && x0 > -1, x0, x1, x2)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x2), x1, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 969_0_rec0_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x3)
Cond_1234_0_rec2_LT1(TRUE, x0, x3) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x3), x0)
1194_0_rec3_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x2)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x2), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
873_1_rec0_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_873_1_rec0_InvokeMethod(x0 > -1, 969_0_rec0_Return, x1, x0, x3)
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(x3, x1))
1222_1_rec1_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_1222_1_rec1_InvokeMethod(x0 > -1, 969_0_rec0_Return, x1, x0, x3)
Cond_1222_1_rec1_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x3, x1))
1351_1_rec1_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1290_1_rec2_InvokeMethod(969_0_rec0_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 969_0_rec0_Return, x0, x3)
Cond_1290_1_rec2_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x3) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x3))
1321_1_rec2_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1254_1_rec3_InvokeMethod(969_0_rec0_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 969_0_rec0_Return, x0, x1, x2)
Cond_1254_1_rec3_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x2, x1))
1291_1_rec3_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
938_1_rec0_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return

The integer pair graph contains the following rules and edges:
(0): 1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0]) → COND_1123_1_MAIN_INVOKEMETHOD(x3[0] > -1 && x3[0] > x1[0] + 1 && x1[0] > -1, 969_0_rec0_Return, x1[0], x3[0])
(1): COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1[1], x3[1]) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), x1[1] + 1, x3[1])

(0) -> (1), if (x3[0] > -1 && x3[0] > x1[0] + 1 && x1[0] > -1x1[0]* x1[1]x3[0]* x3[1])


(1) -> (0), if (1123_0_rec0_Load(x3[1]) →* 969_0_rec0_Returnx1[1] + 1* x1[0]x3[1]* x3[0])



The set Q consists of the following terms:
1123_0_rec0_Load(x0)
816_0_rec0_GT(x0, x1)
Cond_816_0_rec0_GT(TRUE, x0, x1)
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2)
1184_0_rec1_GT(x0, x1)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(969_0_rec0_Return)
873_1_rec0_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1222_1_rec1_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_1222_1_rec1_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1351_1_rec1_InvokeMethod(969_0_rec0_Return)
1290_1_rec2_InvokeMethod(969_0_rec0_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1)
1321_1_rec2_InvokeMethod(969_0_rec0_Return)
1254_1_rec3_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(969_0_rec0_Return)
938_1_rec0_InvokeMethod(969_0_rec0_Return)

(59) 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@1ae0a15f 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 1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1, x3) → COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3, -1), >(x3, +(x1, 1))), >(x1, -1)), 969_0_rec0_Return, x1, x3) the following chains were created:
  • We consider the chain 1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0]) → COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0]), COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1[1], x3[1]) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1]) which results in the following constraint:

    (1)    (&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1))=TRUEx1[0]=x1[1]x3[0]=x3[1]1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0])≥NonInfC∧1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0])≥COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])∧(UIncreasing(COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])), ≥))



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

    (2)    (>(x1[0], -1)=TRUE>(x3[0], -1)=TRUE>(x3[0], +(x1[0], 1))=TRUE1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0])≥NonInfC∧1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0])≥COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])∧(UIncreasing(COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])), ≥))



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

    (3)    (x1[0] ≥ 0∧x3[0] ≥ 0∧x3[0] + [-2] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(2)bni_41]x3[0] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)



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

    (4)    (x1[0] ≥ 0∧x3[0] ≥ 0∧x3[0] + [-2] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(2)bni_41]x3[0] + [(-1)bni_41]x1[0] ≥ 0∧[(-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∧x3[0] ≥ 0∧x3[0] + [-2] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(2)bni_41]x3[0] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)



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

    (6)    (x1[0] ≥ 0∧[2] + x1[0] + x3[0] ≥ 0∧x3[0] ≥ 0 ⇒ (UIncreasing(COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])), ≥)∧[(3)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[0] + [(2)bni_41]x3[0] ≥ 0∧[(-1)bso_42] ≥ 0)







For Pair COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1, x3) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3), +(x1, 1), x3) the following chains were created:
  • We consider the chain COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1[1], x3[1]) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1]) which results in the following constraint:

    (7)    (COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1[1], x3[1])≥NonInfC∧COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1[1], x3[1])≥1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])∧(UIncreasing(1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])), ≥))



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

    (8)    ((UIncreasing(1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])), ≥)∧[bni_43] = 0∧[1 + (-1)bso_44] ≥ 0)



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

    (9)    ((UIncreasing(1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])), ≥)∧[bni_43] = 0∧[1 + (-1)bso_44] ≥ 0)



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

    (10)    ((UIncreasing(1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])), ≥)∧[bni_43] = 0∧[1 + (-1)bso_44] ≥ 0)



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

    (11)    ((UIncreasing(1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])), ≥)∧[bni_43] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_44] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1, x3) → COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3, -1), >(x3, +(x1, 1))), >(x1, -1)), 969_0_rec0_Return, x1, x3)
    • (x1[0] ≥ 0∧[2] + x1[0] + x3[0] ≥ 0∧x3[0] ≥ 0 ⇒ (UIncreasing(COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])), ≥)∧[(3)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[0] + [(2)bni_41]x3[0] ≥ 0∧[(-1)bso_42] ≥ 0)

  • COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1, x3) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3), +(x1, 1), x3)
    • ((UIncreasing(1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])), ≥)∧[bni_43] = 0∧0 = 0∧0 = 0∧[1 + (-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(1123_0_rec0_Load(x1)) = [-1]   
POL(816_0_rec0_GT(x1, x2)) = [-1]   
POL(0) = 0   
POL(Cond_816_0_rec0_GT(x1, x2, x3)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(969_0_rec0_Return) = [-1]   
POL(Cond_816_0_rec0_GT1(x1, x2, x3, x4)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(873_1_rec0_InvokeMethod(x1, x2, x3)) = [-1]   
POL(1184_0_rec1_GT(x1, x2)) = [-1]   
POL(Cond_1184_0_rec1_GT1(x1, x2, x3, x4)) = [-1]   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(1222_1_rec1_InvokeMethod(x1, x2, x3)) = [-1]   
POL(1234_0_rec2_LT(x1)) = [-1] + [-1]x1   
POL(Cond_1234_0_rec2_LT(x1, x2)) = [-1] + [-1]x2   
POL(Cond_1234_0_rec2_LT1(x1, x2, x3)) = [-1]x2   
POL(1290_1_rec2_InvokeMethod(x1, x2)) = [-1]x2   
POL(1194_0_rec3_GT(x1, x2)) = [-1]   
POL(Cond_1194_0_rec3_GT1(x1, x2, x3, x4)) = [-1]   
POL(1254_1_rec3_InvokeMethod(x1, x2, x3)) = [-1]   
POL(958_0_rec4_LT(x1)) = [-1] + [-1]x1   
POL(Cond_958_0_rec4_LT1(x1, x2, x3)) = [-1] + [-1]x2   
POL(1010_1_rec4_InvokeMethod(x1)) = [-1]   
POL(Cond_873_1_rec0_InvokeMethod(x1, x2, x3, x4, x5)) = [-1]   
POL(938_1_rec0_InvokeMethod(x1)) = [-1]   
POL(Cond_1222_1_rec1_InvokeMethod(x1, x2, x3, x4, x5)) = [-1]   
POL(1351_1_rec1_InvokeMethod(x1)) = [-1] + [2]x1   
POL(Cond_1290_1_rec2_InvokeMethod(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(1321_1_rec2_InvokeMethod(x1)) = [1]   
POL(Cond_1254_1_rec3_InvokeMethod(x1, x2, x3, x4, x5)) = [-1]   
POL(1291_1_rec3_InvokeMethod(x1)) = [-1] + x1   
POL(1123_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [2]x3 + [-1]x2 + x1   
POL(COND_1123_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [2]x4 + [-1]x3   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   

The following pairs are in P>:

COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1[1], x3[1]) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), +(x1[1], 1), x3[1])

The following pairs are in Pbound:

1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0]) → COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])

The following pairs are in P:

1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0]) → COND_1123_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x3[0], +(x1[0], 1))), >(x1[0], -1)), 969_0_rec0_Return, x1[0], x3[0])

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

1123_0_rec0_Load(x1)1816_0_rec0_GT(0, x1)1
816_0_rec0_GT(x0, x1)1Cond_816_0_rec0_GT(<(x1, x0), x0, x1)1
816_0_rec0_GT(x0, x1)1Cond_816_0_rec0_GT1(>=(x1, x0), x0, x1, x2)1
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2)1873_1_rec0_InvokeMethod(1184_0_rec1_GT(0, x2), x1, x0)1
873_1_rec0_InvokeMethod(969_0_rec0_Return, x1, x0)1Cond_873_1_rec0_InvokeMethod(>(x0, -1), 969_0_rec0_Return, x1, x0, x3)1
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3)1938_1_rec0_InvokeMethod(816_0_rec0_GT(x3, x1))1
938_1_rec0_InvokeMethod(969_0_rec0_Return)1969_0_rec0_Return1
Cond_816_0_rec0_GT(TRUE, x0, x1)1969_0_rec0_Return1

(60) Complex Obligation (AND)

(61) 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:
1123_0_rec0_Load(x1) → 816_0_rec0_GT(0, x1)
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
Cond_816_0_rec0_GT(TRUE, x0, x1) → 969_0_rec0_Return
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT1(x1 >= x0, x0, x1, x2)
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2) → 873_1_rec0_InvokeMethod(1184_0_rec1_GT(0, x2), x1, x0)
1184_0_rec1_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
1184_0_rec1_GT(x0, x1) → Cond_1184_0_rec1_GT1(x1 >= x0 && x0 > -1, x0, x1, x2)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x2), x1, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 969_0_rec0_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x3)
Cond_1234_0_rec2_LT1(TRUE, x0, x3) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x3), x0)
1194_0_rec3_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x2)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x2), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
873_1_rec0_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_873_1_rec0_InvokeMethod(x0 > -1, 969_0_rec0_Return, x1, x0, x3)
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(x3, x1))
1222_1_rec1_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_1222_1_rec1_InvokeMethod(x0 > -1, 969_0_rec0_Return, x1, x0, x3)
Cond_1222_1_rec1_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x3, x1))
1351_1_rec1_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1290_1_rec2_InvokeMethod(969_0_rec0_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 969_0_rec0_Return, x0, x3)
Cond_1290_1_rec2_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x3) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x3))
1321_1_rec2_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1254_1_rec3_InvokeMethod(969_0_rec0_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 969_0_rec0_Return, x0, x1, x2)
Cond_1254_1_rec3_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x2, x1))
1291_1_rec3_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
938_1_rec0_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return

The integer pair graph contains the following rules and edges:
(0): 1123_1_MAIN_INVOKEMETHOD(969_0_rec0_Return, x1[0], x3[0]) → COND_1123_1_MAIN_INVOKEMETHOD(x3[0] > -1 && x3[0] > x1[0] + 1 && x1[0] > -1, 969_0_rec0_Return, x1[0], x3[0])


The set Q consists of the following terms:
1123_0_rec0_Load(x0)
816_0_rec0_GT(x0, x1)
Cond_816_0_rec0_GT(TRUE, x0, x1)
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2)
1184_0_rec1_GT(x0, x1)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(969_0_rec0_Return)
873_1_rec0_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1222_1_rec1_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_1222_1_rec1_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1351_1_rec1_InvokeMethod(969_0_rec0_Return)
1290_1_rec2_InvokeMethod(969_0_rec0_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1)
1321_1_rec2_InvokeMethod(969_0_rec0_Return)
1254_1_rec3_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(969_0_rec0_Return)
938_1_rec0_InvokeMethod(969_0_rec0_Return)

(62) IDependencyGraphProof (EQUIVALENT transformation)

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

(63) TRUE

(64) 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:
1123_0_rec0_Load(x1) → 816_0_rec0_GT(0, x1)
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
Cond_816_0_rec0_GT(TRUE, x0, x1) → 969_0_rec0_Return
816_0_rec0_GT(x0, x1) → Cond_816_0_rec0_GT1(x1 >= x0, x0, x1, x2)
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2) → 873_1_rec0_InvokeMethod(1184_0_rec1_GT(0, x2), x1, x0)
1184_0_rec1_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
1184_0_rec1_GT(x0, x1) → Cond_1184_0_rec1_GT1(x1 >= x0 && x0 > -1, x0, x1, x2)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2) → 1222_1_rec1_InvokeMethod(1234_0_rec2_LT(x2), x1, x0)
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
Cond_1234_0_rec2_LT(TRUE, x0) → 969_0_rec0_Return
1234_0_rec2_LT(x0) → Cond_1234_0_rec2_LT1(x0 > -1, x0, x3)
Cond_1234_0_rec2_LT1(TRUE, x0, x3) → 1290_1_rec2_InvokeMethod(1194_0_rec3_GT(0, x3), x0)
1194_0_rec3_GT(x0, x1) → Cond_816_0_rec0_GT(x1 < x0, x0, x1)
1194_0_rec3_GT(x0, x1) → Cond_1194_0_rec3_GT1(x1 >= x0 && x0 > -1, x0, x1, x2)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2) → 1254_1_rec3_InvokeMethod(958_0_rec4_LT(x2), x0, x1)
958_0_rec4_LT(x0) → Cond_1234_0_rec2_LT(x0 < 0, x0)
958_0_rec4_LT(x0) → Cond_958_0_rec4_LT1(x0 > -1, x0, x3)
Cond_958_0_rec4_LT1(TRUE, x0, x3) → 1010_1_rec4_InvokeMethod(958_0_rec4_LT(x3))
1010_1_rec4_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
873_1_rec0_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_873_1_rec0_InvokeMethod(x0 > -1, 969_0_rec0_Return, x1, x0, x3)
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 938_1_rec0_InvokeMethod(816_0_rec0_GT(x3, x1))
1222_1_rec1_InvokeMethod(969_0_rec0_Return, x1, x0) → Cond_1222_1_rec1_InvokeMethod(x0 > -1, 969_0_rec0_Return, x1, x0, x3)
Cond_1222_1_rec1_InvokeMethod(TRUE, 969_0_rec0_Return, x1, x0, x3) → 1351_1_rec1_InvokeMethod(1184_0_rec1_GT(x3, x1))
1351_1_rec1_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1290_1_rec2_InvokeMethod(969_0_rec0_Return, x0) → Cond_1290_1_rec2_InvokeMethod(x0 > -1, 969_0_rec0_Return, x0, x3)
Cond_1290_1_rec2_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x3) → 1321_1_rec2_InvokeMethod(1234_0_rec2_LT(x3))
1321_1_rec2_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
1254_1_rec3_InvokeMethod(969_0_rec0_Return, x0, x1) → Cond_1254_1_rec3_InvokeMethod(x0 > -1, 969_0_rec0_Return, x0, x1, x2)
Cond_1254_1_rec3_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2) → 1291_1_rec3_InvokeMethod(1194_0_rec3_GT(x2, x1))
1291_1_rec3_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return
938_1_rec0_InvokeMethod(969_0_rec0_Return) → 969_0_rec0_Return

The integer pair graph contains the following rules and edges:
(1): COND_1123_1_MAIN_INVOKEMETHOD(TRUE, 969_0_rec0_Return, x1[1], x3[1]) → 1123_1_MAIN_INVOKEMETHOD(1123_0_rec0_Load(x3[1]), x1[1] + 1, x3[1])


The set Q consists of the following terms:
1123_0_rec0_Load(x0)
816_0_rec0_GT(x0, x1)
Cond_816_0_rec0_GT(TRUE, x0, x1)
Cond_816_0_rec0_GT1(TRUE, x0, x1, x2)
1184_0_rec1_GT(x0, x1)
Cond_1184_0_rec1_GT1(TRUE, x0, x1, x2)
1234_0_rec2_LT(x0)
Cond_1234_0_rec2_LT(TRUE, x0)
Cond_1234_0_rec2_LT1(TRUE, x0, x1)
1194_0_rec3_GT(x0, x1)
Cond_1194_0_rec3_GT1(TRUE, x0, x1, x2)
958_0_rec4_LT(x0)
Cond_958_0_rec4_LT1(TRUE, x0, x1)
1010_1_rec4_InvokeMethod(969_0_rec0_Return)
873_1_rec0_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_873_1_rec0_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1222_1_rec1_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_1222_1_rec1_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1351_1_rec1_InvokeMethod(969_0_rec0_Return)
1290_1_rec2_InvokeMethod(969_0_rec0_Return, x0)
Cond_1290_1_rec2_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1)
1321_1_rec2_InvokeMethod(969_0_rec0_Return)
1254_1_rec3_InvokeMethod(969_0_rec0_Return, x0, x1)
Cond_1254_1_rec3_InvokeMethod(TRUE, 969_0_rec0_Return, x0, x1, x2)
1291_1_rec3_InvokeMethod(969_0_rec0_Return)
938_1_rec0_InvokeMethod(969_0_rec0_Return)

(65) IDependencyGraphProof (EQUIVALENT transformation)

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

(66) TRUE