(0) Obligation:

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

public static int power(int a, int b) {
if (b <= 0) return 1;
else return a * power(a, b-1);
}

public static int fact(int n) {
if (n <= 0) return 1;
else return n * fact(n-1);
}

public static int sin(int x, int n) {
if (n <= 0) return x;
else return power(-1, n) * power(x, 2*n+1) / fact(2*n+1) + sin(x, n-1);
}

public static int cos(int x, int n) {
if (n <= 0) return 1;
else return power(-1, n) * power(x, 2*n) / fact(2*n) + cos(x, n-1);
}

public static int exp(int x, int n) {
if (n <= 0) return 1;
else return power(x, n) / fact(n) + exp(x, n-1);
}

public static void main(String args[]) {
for (int i = 0; i < args.length; i++)
if (i % 2 == 0) sin(args.length, i);
else if (i % 3 == 0) cos(args.length, i);
else if (i % 5 == 0) exp(args.length, i);
else for (int j = 0; j < 100; j++);
}
}

(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

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

TaylorSeriesRec.sin(II)I: Graph of 48 nodes with 0 SCCs.

TaylorSeriesRec.cos(II)I: Graph of 44 nodes with 0 SCCs.

TaylorSeriesRec.power(II)I: Graph of 22 nodes with 0 SCCs.

TaylorSeriesRec.exp(II)I: Graph of 33 nodes with 0 SCCs.

TaylorSeriesRec.fact(I)I: Graph of 22 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: TaylorSeriesRec.fact(I)I
SCC calls the following helper methods: TaylorSeriesRec.fact(I)I
Performed SCC analyses: UsedFieldsAnalysis

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 10 rules for P and 11 rules for R.


P rules:
1175_0_fact_GT(EOS(STATIC_1175), i214, i214) → 1183_0_fact_GT(EOS(STATIC_1183), i214, i214)
1183_0_fact_GT(EOS(STATIC_1183), i214, i214) → 1197_0_fact_Load(EOS(STATIC_1197), i214) | >(i214, 0)
1197_0_fact_Load(EOS(STATIC_1197), i214) → 1206_0_fact_Load(EOS(STATIC_1206), i214, i214)
1206_0_fact_Load(EOS(STATIC_1206), i214, i214) → 1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214)
1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214) → 1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214, 1)
1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214, matching1) → 1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214, -(i214, 1)) | &&(>(i214, 0), =(matching1, 1))
1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214, i230) → 1252_1_fact_InvokeMethod(1252_0_fact_Load(EOS(STATIC_1252), i230), i214, i230)
1252_0_fact_Load(EOS(STATIC_1252), i230) → 1261_0_fact_Load(EOS(STATIC_1261), i230)
1261_0_fact_Load(EOS(STATIC_1261), i230) → 1167_0_fact_Load(EOS(STATIC_1167), i230)
1167_0_fact_Load(EOS(STATIC_1167), i206) → 1175_0_fact_GT(EOS(STATIC_1175), i206, i206)
R rules:
1175_0_fact_GT(EOS(STATIC_1175), matching1, matching2) → 1182_0_fact_GT(EOS(STATIC_1182), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1182_0_fact_GT(EOS(STATIC_1182), matching1, matching2) → 1195_0_fact_ConstantStackPush(EOS(STATIC_1195), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1195_0_fact_ConstantStackPush(EOS(STATIC_1195), matching1) → 1204_0_fact_Return(EOS(STATIC_1204), 0) | =(matching1, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), matching1), i214, matching2) → 1292_0_fact_Return(EOS(STATIC_1292), i214, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), i214, i287) → 1494_0_fact_Return(EOS(STATIC_1494), i214, i287)
1292_0_fact_Return(EOS(STATIC_1292), i214, matching1, matching2) → 1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214) | &&(=(matching1, 0), =(matching2, 0))
1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214) → 1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214)
1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214)
1425_0_fact_Return(EOS(STATIC_1425), i214, i269) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214)
1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214) → 1449_0_fact_Return(EOS(STATIC_1449)) | >=(i214, 1)
1494_0_fact_Return(EOS(STATIC_1494), i214, i287) → 1425_0_fact_Return(EOS(STATIC_1425), i214, i287)

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


P rules:
1175_0_fact_GT(EOS(STATIC_1175), x0, x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), -(x0, 1), -(x0, 1)), x0, -(x0, 1)) | >(x0, 0)
R rules:
1175_0_fact_GT(EOS(STATIC_1175), 0, 0) → 1204_0_fact_Return(EOS(STATIC_1204), 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), 0), x1, 0) → 1449_0_fact_Return(EOS(STATIC_1449)) | >(+(x1, 1), 1)
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), x0, x1) → 1449_0_fact_Return(EOS(STATIC_1449)) | >(+(x0, 1), 1)

Filtered ground terms:



1175_0_fact_GT(x1, x2, x3) → 1175_0_fact_GT(x2, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4) → Cond_1175_0_fact_GT(x1, x3, x4)
1449_0_fact_Return(x1) → 1449_0_fact_Return
Cond_1252_1_fact_InvokeMethod1(x1, x2, x3, x4) → Cond_1252_1_fact_InvokeMethod1(x1, x3, x4)
Cond_1252_1_fact_InvokeMethod(x1, x2, x3, x4) → Cond_1252_1_fact_InvokeMethod(x1, x3)
1204_0_fact_Return(x1, x2) → 1204_0_fact_Return

Filtered duplicate args:



1175_0_fact_GT(x1, x2) → 1175_0_fact_GT(x2)
Cond_1175_0_fact_GT(x1, x2, x3) → Cond_1175_0_fact_GT(x1, x3)

Filtered unneeded arguments:



Cond_1252_1_fact_InvokeMethod(x1, x2) → Cond_1252_1_fact_InvokeMethod(x1)
Cond_1252_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod1(x1)

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


P rules:
1175_0_fact_GT(x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(-(x0, 1)), x0, -(x0, 1)) | >(x0, 0)
R rules:
1175_0_fact_GT(0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1, 0) → 1449_0_fact_Return | >(x1, 0)
1252_1_fact_InvokeMethod(1449_0_fact_Return, x0, x1) → 1449_0_fact_Return | >(x0, 0)

Performed bisimulation on rules. Used the following equivalence classes: {[1204_0_fact_Return, 1449_0_fact_Return]=1204_0_fact_Return}


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


P rules:
1175_0_FACT_GT(x0) → COND_1175_0_FACT_GT(>(x0, 0), x0)
COND_1175_0_FACT_GT(TRUE, x0) → 1175_0_FACT_GT(-(x0, 1))
R rules:
1175_0_fact_GT(0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1, 0) → Cond_1252_1_fact_InvokeMethod(>(x1, 0), 1204_0_fact_Return, x1, 0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1, 0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0, x1) → Cond_1252_1_fact_InvokeMethod1(>(x0, 0), 1204_0_fact_Return, x0, x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1204_0_fact_Return, x0, x1) → 1204_0_fact_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:
1175_0_fact_GT(0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1, 0) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1204_0_fact_Return, x1, 0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1, 0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0, x1) → Cond_1252_1_fact_InvokeMethod1(x0 > 0, 1204_0_fact_Return, x0, x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1204_0_fact_Return, x0, x1) → 1204_0_fact_Return

The integer pair graph contains the following rules and edges:
(0): 1175_0_FACT_GT(x0[0]) → COND_1175_0_FACT_GT(x0[0] > 0, x0[0])
(1): COND_1175_0_FACT_GT(TRUE, x0[1]) → 1175_0_FACT_GT(x0[1] - 1)

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


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



The set Q consists of the following terms:
1175_0_fact_GT(0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0, x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1204_0_fact_Return, x0, x1)

(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@1c75ecf6 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 1175_0_FACT_GT(x0) → COND_1175_0_FACT_GT(>(x0, 0), x0) the following chains were created:
  • We consider the chain 1175_0_FACT_GT(x0[0]) → COND_1175_0_FACT_GT(>(x0[0], 0), x0[0]), COND_1175_0_FACT_GT(TRUE, x0[1]) → 1175_0_FACT_GT(-(x0[1], 1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]1175_0_FACT_GT(x0[0])≥NonInfC∧1175_0_FACT_GT(x0[0])≥COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])), ≥))



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

    (2)    (>(x0[0], 0)=TRUE1175_0_FACT_GT(x0[0])≥NonInfC∧1175_0_FACT_GT(x0[0])≥COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])), ≥))



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

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x0[0] ≥ 0∧[(-1)bso_17] ≥ 0)



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

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x0[0] ≥ 0∧[(-1)bso_17] ≥ 0)



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

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x0[0] ≥ 0∧[(-1)bso_17] ≥ 0)



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

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_16 + (2)bni_16] + [(2)bni_16]x0[0] ≥ 0∧[(-1)bso_17] ≥ 0)







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

    (7)    (COND_1175_0_FACT_GT(TRUE, x0[1])≥NonInfC∧COND_1175_0_FACT_GT(TRUE, x0[1])≥1175_0_FACT_GT(-(x0[1], 1))∧(UIncreasing(1175_0_FACT_GT(-(x0[1], 1))), ≥))



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

    (8)    ((UIncreasing(1175_0_FACT_GT(-(x0[1], 1))), ≥)∧[bni_18] = 0∧[2 + (-1)bso_19] ≥ 0)



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

    (9)    ((UIncreasing(1175_0_FACT_GT(-(x0[1], 1))), ≥)∧[bni_18] = 0∧[2 + (-1)bso_19] ≥ 0)



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

    (10)    ((UIncreasing(1175_0_FACT_GT(-(x0[1], 1))), ≥)∧[bni_18] = 0∧[2 + (-1)bso_19] ≥ 0)



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

    (11)    ((UIncreasing(1175_0_FACT_GT(-(x0[1], 1))), ≥)∧[bni_18] = 0∧0 = 0∧[2 + (-1)bso_19] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1175_0_FACT_GT(x0) → COND_1175_0_FACT_GT(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_16 + (2)bni_16] + [(2)bni_16]x0[0] ≥ 0∧[(-1)bso_17] ≥ 0)

  • COND_1175_0_FACT_GT(TRUE, x0) → 1175_0_FACT_GT(-(x0, 1))
    • ((UIncreasing(1175_0_FACT_GT(-(x0[1], 1))), ≥)∧[bni_18] = 0∧0 = 0∧[2 + (-1)bso_19] ≥ 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(1175_0_fact_GT(x1)) = [-1]   
POL(0) = 0   
POL(1204_0_fact_Return) = [-1]   
POL(1252_1_fact_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x2   
POL(Cond_1252_1_fact_InvokeMethod(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(Cond_1252_1_fact_InvokeMethod1(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(1175_0_FACT_GT(x1)) = [2]x1   
POL(COND_1175_0_FACT_GT(x1, x2)) = [2]x2   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_1175_0_FACT_GT(TRUE, x0[1]) → 1175_0_FACT_GT(-(x0[1], 1))

The following pairs are in Pbound:

1175_0_FACT_GT(x0[0]) → COND_1175_0_FACT_GT(>(x0[0], 0), x0[0])

The following pairs are in P:

1175_0_FACT_GT(x0[0]) → COND_1175_0_FACT_GT(>(x0[0], 0), 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:
1175_0_fact_GT(0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1, 0) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1204_0_fact_Return, x1, 0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1, 0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0, x1) → Cond_1252_1_fact_InvokeMethod1(x0 > 0, 1204_0_fact_Return, x0, x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1204_0_fact_Return, x0, x1) → 1204_0_fact_Return

The integer pair graph contains the following rules and edges:
(0): 1175_0_FACT_GT(x0[0]) → COND_1175_0_FACT_GT(x0[0] > 0, x0[0])


The set Q consists of the following terms:
1175_0_fact_GT(0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0, x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1204_0_fact_Return, x0, x1)

(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:
1175_0_fact_GT(0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1, 0) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1204_0_fact_Return, x1, 0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1, 0) → 1204_0_fact_Return
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0, x1) → Cond_1252_1_fact_InvokeMethod1(x0 > 0, 1204_0_fact_Return, x0, x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1204_0_fact_Return, x0, x1) → 1204_0_fact_Return

The integer pair graph contains the following rules and edges:
(1): COND_1175_0_FACT_GT(TRUE, x0[1]) → 1175_0_FACT_GT(x0[1] - 1)


The set Q consists of the following terms:
1175_0_fact_GT(0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0, x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1204_0_fact_Return, x0, x1)

(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: TaylorSeriesRec.power(II)I
SCC calls the following helper methods: TaylorSeriesRec.power(II)I
Performed SCC analyses: UsedFieldsAnalysis

(17) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 11 rules for P and 10 rules for R.


P rules:
757_0_power_GT(EOS(STATIC_757), i96, i96) → 770_0_power_GT(EOS(STATIC_770), i96, i96)
770_0_power_GT(EOS(STATIC_770), i96, i96) → 786_0_power_Load(EOS(STATIC_786), i96) | >(i96, 0)
786_0_power_Load(EOS(STATIC_786), i96) → 799_0_power_Load(EOS(STATIC_799), i96)
799_0_power_Load(EOS(STATIC_799), i96) → 812_0_power_Load(EOS(STATIC_812), i96)
812_0_power_Load(EOS(STATIC_812), i96) → 832_0_power_ConstantStackPush(EOS(STATIC_832), i96)
832_0_power_ConstantStackPush(EOS(STATIC_832), i96) → 844_0_power_IntArithmetic(EOS(STATIC_844), i96, 1)
844_0_power_IntArithmetic(EOS(STATIC_844), i96, matching1) → 857_0_power_InvokeMethod(EOS(STATIC_857), -(i96, 1)) | &&(>(i96, 0), =(matching1, 1))
857_0_power_InvokeMethod(EOS(STATIC_857), i111) → 864_1_power_InvokeMethod(864_0_power_Load(EOS(STATIC_864), i111), i111)
864_0_power_Load(EOS(STATIC_864), i111) → 874_0_power_Load(EOS(STATIC_874), i111)
874_0_power_Load(EOS(STATIC_874), i111) → 741_0_power_Load(EOS(STATIC_741), i111)
741_0_power_Load(EOS(STATIC_741), i88) → 757_0_power_GT(EOS(STATIC_757), i88, i88)
R rules:
757_0_power_GT(EOS(STATIC_757), matching1, matching2) → 769_0_power_GT(EOS(STATIC_769), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
769_0_power_GT(EOS(STATIC_769), matching1, matching2) → 785_0_power_ConstantStackPush(EOS(STATIC_785), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
785_0_power_ConstantStackPush(EOS(STATIC_785), matching1) → 797_0_power_Return(EOS(STATIC_797), 0) | =(matching1, 0)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), matching1), matching2) → 918_0_power_Return(EOS(STATIC_918), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), i193) → 1159_0_power_Return(EOS(STATIC_1159), i193)
918_0_power_Return(EOS(STATIC_918), matching1, matching2) → 924_0_power_IntArithmetic(EOS(STATIC_924)) | &&(=(matching1, 0), =(matching2, 0))
924_0_power_IntArithmetic(EOS(STATIC_924)) → 1104_0_power_IntArithmetic(EOS(STATIC_1104))
1094_0_power_Return(EOS(STATIC_1094), i181) → 1104_0_power_IntArithmetic(EOS(STATIC_1104))
1104_0_power_IntArithmetic(EOS(STATIC_1104)) → 1113_0_power_Return(EOS(STATIC_1113))
1159_0_power_Return(EOS(STATIC_1159), i193) → 1094_0_power_Return(EOS(STATIC_1094), i193)

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


P rules:
757_0_power_GT(EOS(STATIC_757), x0, x0) → 864_1_power_InvokeMethod(757_0_power_GT(EOS(STATIC_757), -(x0, 1), -(x0, 1)), -(x0, 1)) | >(x0, 0)
R rules:
757_0_power_GT(EOS(STATIC_757), 0, 0) → 797_0_power_Return(EOS(STATIC_797), 0)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), 0), 0) → 1113_0_power_Return(EOS(STATIC_1113))
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), x0) → 1113_0_power_Return(EOS(STATIC_1113))

Filtered ground terms:



757_0_power_GT(x1, x2, x3) → 757_0_power_GT(x2, x3)
Cond_757_0_power_GT(x1, x2, x3, x4) → Cond_757_0_power_GT(x1, x3, x4)
1113_0_power_Return(x1) → 1113_0_power_Return
797_0_power_Return(x1, x2) → 797_0_power_Return

Filtered duplicate args:



757_0_power_GT(x1, x2) → 757_0_power_GT(x2)
Cond_757_0_power_GT(x1, x2, x3) → Cond_757_0_power_GT(x1, x3)

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


P rules:
757_0_power_GT(x0) → 864_1_power_InvokeMethod(757_0_power_GT(-(x0, 1)), -(x0, 1)) | >(x0, 0)
R rules:
757_0_power_GT(0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, 0) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return

Performed bisimulation on rules. Used the following equivalence classes: {[797_0_power_Return, 1113_0_power_Return]=797_0_power_Return}


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


P rules:
757_0_POWER_GT(x0) → COND_757_0_POWER_GT(>(x0, 0), x0)
COND_757_0_POWER_GT(TRUE, x0) → 757_0_POWER_GT(-(x0, 1))
R rules:
757_0_power_GT(0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, 0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, x0) → 797_0_power_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


The ITRS R consists of the following rules:
757_0_power_GT(0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, 0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, x0) → 797_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 757_0_POWER_GT(x0[0]) → COND_757_0_POWER_GT(x0[0] > 0, x0[0])
(1): COND_757_0_POWER_GT(TRUE, x0[1]) → 757_0_POWER_GT(x0[1] - 1)

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


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



The set Q consists of the following terms:
757_0_power_GT(0)
864_1_power_InvokeMethod(797_0_power_Return, x0)

(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@1c75ecf6 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 757_0_POWER_GT(x0) → COND_757_0_POWER_GT(>(x0, 0), x0) the following chains were created:
  • We consider the chain 757_0_POWER_GT(x0[0]) → COND_757_0_POWER_GT(>(x0[0], 0), x0[0]), COND_757_0_POWER_GT(TRUE, x0[1]) → 757_0_POWER_GT(-(x0[1], 1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]757_0_POWER_GT(x0[0])≥NonInfC∧757_0_POWER_GT(x0[0])≥COND_757_0_POWER_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_757_0_POWER_GT(>(x0[0], 0), x0[0])), ≥))



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

    (2)    (>(x0[0], 0)=TRUE757_0_POWER_GT(x0[0])≥NonInfC∧757_0_POWER_GT(x0[0])≥COND_757_0_POWER_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_757_0_POWER_GT(>(x0[0], 0), x0[0])), ≥))



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

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_757_0_POWER_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_11] + [(2)bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)



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

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_757_0_POWER_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_11] + [(2)bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)



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

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_757_0_POWER_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_11] + [(2)bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)



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

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_757_0_POWER_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_11 + (2)bni_11] + [(2)bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)







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

    (7)    (COND_757_0_POWER_GT(TRUE, x0[1])≥NonInfC∧COND_757_0_POWER_GT(TRUE, x0[1])≥757_0_POWER_GT(-(x0[1], 1))∧(UIncreasing(757_0_POWER_GT(-(x0[1], 1))), ≥))



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

    (8)    ((UIncreasing(757_0_POWER_GT(-(x0[1], 1))), ≥)∧[bni_13] = 0∧[2 + (-1)bso_14] ≥ 0)



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

    (9)    ((UIncreasing(757_0_POWER_GT(-(x0[1], 1))), ≥)∧[bni_13] = 0∧[2 + (-1)bso_14] ≥ 0)



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

    (10)    ((UIncreasing(757_0_POWER_GT(-(x0[1], 1))), ≥)∧[bni_13] = 0∧[2 + (-1)bso_14] ≥ 0)



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

    (11)    ((UIncreasing(757_0_POWER_GT(-(x0[1], 1))), ≥)∧[bni_13] = 0∧0 = 0∧[2 + (-1)bso_14] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 757_0_POWER_GT(x0) → COND_757_0_POWER_GT(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_757_0_POWER_GT(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_11 + (2)bni_11] + [(2)bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)

  • COND_757_0_POWER_GT(TRUE, x0) → 757_0_POWER_GT(-(x0, 1))
    • ((UIncreasing(757_0_POWER_GT(-(x0[1], 1))), ≥)∧[bni_13] = 0∧0 = 0∧[2 + (-1)bso_14] ≥ 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(757_0_power_GT(x1)) = [-1]   
POL(0) = 0   
POL(797_0_power_Return) = [-1]   
POL(864_1_power_InvokeMethod(x1, x2)) = [-1]   
POL(757_0_POWER_GT(x1)) = [2]x1   
POL(COND_757_0_POWER_GT(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_757_0_POWER_GT(TRUE, x0[1]) → 757_0_POWER_GT(-(x0[1], 1))

The following pairs are in Pbound:

757_0_POWER_GT(x0[0]) → COND_757_0_POWER_GT(>(x0[0], 0), x0[0])

The following pairs are in P:

757_0_POWER_GT(x0[0]) → COND_757_0_POWER_GT(>(x0[0], 0), x0[0])

There are no usable rules.

(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


The ITRS R consists of the following rules:
757_0_power_GT(0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, 0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, x0) → 797_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 757_0_POWER_GT(x0[0]) → COND_757_0_POWER_GT(x0[0] > 0, x0[0])


The set Q consists of the following terms:
757_0_power_GT(0)
864_1_power_InvokeMethod(797_0_power_Return, x0)

(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:
757_0_power_GT(0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, 0) → 797_0_power_Return
864_1_power_InvokeMethod(797_0_power_Return, x0) → 797_0_power_Return

The integer pair graph contains the following rules and edges:
(1): COND_757_0_POWER_GT(TRUE, x0[1]) → 757_0_POWER_GT(x0[1] - 1)


The set Q consists of the following terms:
757_0_power_GT(0)
864_1_power_InvokeMethod(797_0_power_Return, x0)

(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: TaylorSeriesRec.exp(II)I
SCC calls the following helper methods: TaylorSeriesRec.fact(I)I, TaylorSeriesRec.exp(II)I, TaylorSeriesRec.power(II)I
Performed SCC analyses: UsedFieldsAnalysis

(28) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 20 rules for P and 56 rules for R.


P rules:
1526_0_power_Return(EOS(STATIC_1526), i298, i299, i298, i299) → 1533_0_exp_Load(EOS(STATIC_1533), i298, i299)
1533_0_exp_Load(EOS(STATIC_1533), i298, i299) → 1546_0_exp_InvokeMethod(EOS(STATIC_1546), i298, i299, i299)
1546_0_exp_InvokeMethod(EOS(STATIC_1546), i298, i299, i299) → 1554_1_exp_InvokeMethod(1554_0_fact_Load(EOS(STATIC_1554), i299), i298, i299, i299)
1554_1_exp_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), i298, i326, i326) → 1590_0_fact_Return(EOS(STATIC_1590), i298, i326, i326)
1590_0_fact_Return(EOS(STATIC_1590), i298, i326, i326) → 1598_0_exp_IntArithmetic(EOS(STATIC_1598), i298, i326)
1598_0_exp_IntArithmetic(EOS(STATIC_1598), i298, i326) → 1608_0_exp_Load(EOS(STATIC_1608), i298, i326)
1608_0_exp_Load(EOS(STATIC_1608), i298, i326) → 1616_0_exp_Load(EOS(STATIC_1616), i326, i298)
1616_0_exp_Load(EOS(STATIC_1616), i326, i298) → 1632_0_exp_ConstantStackPush(EOS(STATIC_1632), i298, i326)
1632_0_exp_ConstantStackPush(EOS(STATIC_1632), i298, i326) → 1659_0_exp_IntArithmetic(EOS(STATIC_1659), i298, i326, 1)
1659_0_exp_IntArithmetic(EOS(STATIC_1659), i298, i326, matching1) → 1664_0_exp_InvokeMethod(EOS(STATIC_1664), i298, -(i326, 1)) | &&(>(i326, 0), =(matching1, 1))
1664_0_exp_InvokeMethod(EOS(STATIC_1664), i298, i350) → 1672_1_exp_InvokeMethod(1672_0_exp_Load(EOS(STATIC_1672), i298, i350), i298, i350)
1672_0_exp_Load(EOS(STATIC_1672), i298, i350) → 1683_0_exp_Load(EOS(STATIC_1683), i298, i350)
1683_0_exp_Load(EOS(STATIC_1683), i298, i350) → 1388_0_exp_Load(EOS(STATIC_1388), i298, i350)
1388_0_exp_Load(EOS(STATIC_1388), i8, i258) → 1400_0_exp_GT(EOS(STATIC_1400), i8, i258, i258)
1400_0_exp_GT(EOS(STATIC_1400), i8, i264, i264) → 1413_0_exp_GT(EOS(STATIC_1413), i8, i264, i264)
1413_0_exp_GT(EOS(STATIC_1413), i8, i264, i264) → 1430_0_exp_Load(EOS(STATIC_1430), i8, i264) | >(i264, 0)
1430_0_exp_Load(EOS(STATIC_1430), i8, i264) → 1440_0_exp_Load(EOS(STATIC_1440), i8, i264, i8)
1440_0_exp_Load(EOS(STATIC_1440), i8, i264, i8) → 1458_0_exp_InvokeMethod(EOS(STATIC_1458), i8, i264, i8, i264)
1458_0_exp_InvokeMethod(EOS(STATIC_1458), i8, i264, i8, i264) → 1474_1_exp_InvokeMethod(1474_0_power_Load(EOS(STATIC_1474), i8, i264), i8, i264, i8, i264)
1474_1_exp_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), i298, i299, i298, i299) → 1526_0_power_Return(EOS(STATIC_1526), i298, i299, i298, i299)
R rules:
1554_0_fact_Load(EOS(STATIC_1554), i299) → 1559_0_fact_Load(EOS(STATIC_1559), i299)
1559_0_fact_Load(EOS(STATIC_1559), i299) → 1167_0_fact_Load(EOS(STATIC_1167), i299)
1474_0_power_Load(EOS(STATIC_1474), i8, i264) → 1486_0_power_Load(EOS(STATIC_1486), i8, i264)
1486_0_power_Load(EOS(STATIC_1486), i8, i264) → 741_0_power_Load(EOS(STATIC_741), i8, i264)
1261_0_fact_Load(EOS(STATIC_1261)) → 1167_0_fact_Load(EOS(STATIC_1167), i230)
874_0_power_Load(EOS(STATIC_874), i87) → 741_0_power_Load(EOS(STATIC_741), i87, i111)
1167_0_fact_Load(EOS(STATIC_1167), i206) → 1175_0_fact_GT(EOS(STATIC_1175), i206, i206)
1175_0_fact_GT(EOS(STATIC_1175), matching1, matching2) → 1182_0_fact_GT(EOS(STATIC_1182), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1175_0_fact_GT(EOS(STATIC_1175), i214, i214) → 1183_0_fact_GT(EOS(STATIC_1183), i214, i214)
1182_0_fact_GT(EOS(STATIC_1182), matching1, matching2) → 1195_0_fact_ConstantStackPush(EOS(STATIC_1195), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1183_0_fact_GT(EOS(STATIC_1183), i214, i214) → 1197_0_fact_Load(EOS(STATIC_1197), i214) | >(i214, 0)
1195_0_fact_ConstantStackPush(EOS(STATIC_1195), matching1) → 1204_0_fact_Return(EOS(STATIC_1204), 0) | =(matching1, 0)
1197_0_fact_Load(EOS(STATIC_1197), i214) → 1206_0_fact_Load(EOS(STATIC_1206), i214, i214)
1206_0_fact_Load(EOS(STATIC_1206), i214, i214) → 1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214)
1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214) → 1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214)
1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214) → 1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) | >(i214, 0)
1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) → 1252_1_fact_InvokeMethod(1252_0_fact_Load(EOS(STATIC_1252)), i214)
1252_0_fact_Load(EOS(STATIC_1252)) → 1261_0_fact_Load(EOS(STATIC_1261))
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), matching1), i214) → 1292_0_fact_Return(EOS(STATIC_1292), i214, 0, 0) | =(matching1, 0)
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), i214) → 1494_0_fact_Return(EOS(STATIC_1494), i214)
1292_0_fact_Return(EOS(STATIC_1292), i214, matching1, matching2) → 1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214) | &&(=(matching1, 0), =(matching2, 0))
1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214) → 1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214)
1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214)
1425_0_fact_Return(EOS(STATIC_1425), i214) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214)
1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214) → 1449_0_fact_Return(EOS(STATIC_1449)) | >=(i214, 1)
1494_0_fact_Return(EOS(STATIC_1494), i214) → 1425_0_fact_Return(EOS(STATIC_1425), i214)
1400_0_exp_GT(EOS(STATIC_1400), i8, matching1, matching2) → 1412_0_exp_GT(EOS(STATIC_1412), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1412_0_exp_GT(EOS(STATIC_1412), i8, matching1, matching2) → 1428_0_exp_ConstantStackPush(EOS(STATIC_1428), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1428_0_exp_ConstantStackPush(EOS(STATIC_1428), i8, matching1) → 1438_0_exp_Return(EOS(STATIC_1438), i8, 0) | =(matching1, 0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(EOS(STATIC_1438), i358, matching1), i358, matching2) → 1706_0_exp_Return(EOS(STATIC_1706), i358, 0, i358, 0) | &&(=(matching1, 0), =(matching2, 0))
1672_1_exp_InvokeMethod(1762_0_exp_Return(EOS(STATIC_1762)), i386, i387) → 1794_0_exp_Return(EOS(STATIC_1794), i386, i387)
1706_0_exp_Return(EOS(STATIC_1706), i358, matching1, i358, matching2) → 1712_0_exp_IntArithmetic(EOS(STATIC_1712)) | &&(=(matching1, 0), =(matching2, 0))
1712_0_exp_IntArithmetic(EOS(STATIC_1712)) → 1752_0_exp_IntArithmetic(EOS(STATIC_1752))
1744_0_exp_Return(EOS(STATIC_1744), i365, i366) → 1752_0_exp_IntArithmetic(EOS(STATIC_1752))
1752_0_exp_IntArithmetic(EOS(STATIC_1752)) → 1762_0_exp_Return(EOS(STATIC_1762))
1794_0_exp_Return(EOS(STATIC_1794), i386, i387) → 1744_0_exp_Return(EOS(STATIC_1744), i386, i387)
741_0_power_Load(EOS(STATIC_741), i87, i88) → 757_0_power_GT(EOS(STATIC_757), i87, i88, i88)
757_0_power_GT(EOS(STATIC_757), i87, matching1, matching2) → 769_0_power_GT(EOS(STATIC_769), i87, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
757_0_power_GT(EOS(STATIC_757), i87, i96, i96) → 770_0_power_GT(EOS(STATIC_770), i87, i96, i96)
769_0_power_GT(EOS(STATIC_769), i87, matching1, matching2) → 785_0_power_ConstantStackPush(EOS(STATIC_785), i87, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
770_0_power_GT(EOS(STATIC_770), i87, i96, i96) → 786_0_power_Load(EOS(STATIC_786), i87, i96) | >(i96, 0)
785_0_power_ConstantStackPush(EOS(STATIC_785), i87, matching1) → 797_0_power_Return(EOS(STATIC_797), i87, 0) | =(matching1, 0)
786_0_power_Load(EOS(STATIC_786), i87, i96) → 799_0_power_Load(EOS(STATIC_799), i87, i96, i87)
799_0_power_Load(EOS(STATIC_799), i87, i96, i87) → 812_0_power_Load(EOS(STATIC_812), i96, i87, i87)
812_0_power_Load(EOS(STATIC_812), i96, i87, i87) → 832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96)
832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96) → 844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96)
844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96) → 857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) | >(i96, 0)
857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) → 864_1_power_InvokeMethod(864_0_power_Load(EOS(STATIC_864), i87), i87, i87)
864_0_power_Load(EOS(STATIC_864), i87) → 874_0_power_Load(EOS(STATIC_874), i87)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), i121, matching1), i121, i121) → 918_0_power_Return(EOS(STATIC_918), i121, i121, 0, i121, 0) | =(matching1, 0)
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), i192, i192) → 1159_0_power_Return(EOS(STATIC_1159), i192, i192)
918_0_power_Return(EOS(STATIC_918), i121, i121, matching1, i121, matching2) → 924_0_power_IntArithmetic(EOS(STATIC_924), i121) | &&(=(matching1, 0), =(matching2, 0))
924_0_power_IntArithmetic(EOS(STATIC_924), i121) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i121)
1094_0_power_Return(EOS(STATIC_1094), i179, i179) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i179)
1104_0_power_IntArithmetic(EOS(STATIC_1104), i179) → 1113_0_power_Return(EOS(STATIC_1113))
1159_0_power_Return(EOS(STATIC_1159), i192, i192) → 1094_0_power_Return(EOS(STATIC_1094), i192, i192)

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


P rules:
1554_1_exp_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), x0, x1, x1) → 1672_1_exp_InvokeMethod(1474_1_exp_InvokeMethod(1474_0_power_Load(EOS(STATIC_1474), x0, -(x1, 1)), x0, -(x1, 1), x0, -(x1, 1)), x0, -(x1, 1)) | >(x1, 1)
1474_1_exp_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), x0, x1, x0, x1) → 1554_1_exp_InvokeMethod(1554_0_fact_Load(EOS(STATIC_1554), x1), x0, x1, x1)
R rules:
1554_0_fact_Load(EOS(STATIC_1554), x0) → 1175_0_fact_GT(EOS(STATIC_1175), x0, x0)
1474_0_power_Load(EOS(STATIC_1474), x0, x1) → 757_0_power_GT(EOS(STATIC_757), x0, x1, x1)
1175_0_fact_GT(EOS(STATIC_1175), 0, 0) → 1204_0_fact_Return(EOS(STATIC_1204), 0)
1175_0_fact_GT(EOS(STATIC_1175), x0, x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), x1, x1), x0) | >(x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), 0), x1) → 1449_0_fact_Return(EOS(STATIC_1449)) | >(+(x1, 1), 1)
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), x0) → 1449_0_fact_Return(EOS(STATIC_1449)) | >(+(x0, 1), 1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(EOS(STATIC_1438), x0, 0), x0, 0) → 1762_0_exp_Return(EOS(STATIC_1762))
1672_1_exp_InvokeMethod(1762_0_exp_Return(EOS(STATIC_1762)), x0, x1) → 1762_0_exp_Return(EOS(STATIC_1762))
757_0_power_GT(EOS(STATIC_757), x0, 0, 0) → 797_0_power_Return(EOS(STATIC_797), x0, 0)
757_0_power_GT(EOS(STATIC_757), x0, x1, x1) → 864_1_power_InvokeMethod(757_0_power_GT(EOS(STATIC_757), x0, x2, x2), x0, x0) | >(x1, 0)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), x0, 0), x0, x0) → 1113_0_power_Return(EOS(STATIC_1113))
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), x0, x0) → 1113_0_power_Return(EOS(STATIC_1113))

Filtered ground terms:



1554_0_fact_Load(x1, x2) → 1554_0_fact_Load(x2)
1113_0_power_Return(x1) → 1113_0_power_Return
1474_0_power_Load(x1, x2, x3) → 1474_0_power_Load(x2, x3)
Cond_1554_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1554_1_exp_InvokeMethod(x1, x3, x4, x5)
1449_0_fact_Return(x1) → 1449_0_fact_Return
797_0_power_Return(x1, x2, x3) → 797_0_power_Return(x2)
757_0_power_GT(x1, x2, x3, x4) → 757_0_power_GT(x2, x3, x4)
Cond_757_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_757_0_power_GT(x1, x3, x4, x5, x6)
1762_0_exp_Return(x1) → 1762_0_exp_Return
1438_0_exp_Return(x1, x2, x3) → 1438_0_exp_Return(x2)
Cond_1252_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod1(x1, x3)
Cond_1252_1_fact_InvokeMethod(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod(x1, x3)
1204_0_fact_Return(x1, x2) → 1204_0_fact_Return
1175_0_fact_GT(x1, x2, x3) → 1175_0_fact_GT(x2, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1175_0_fact_GT(x1, x3, x4, x5)

Filtered duplicate args:



1554_1_exp_InvokeMethod(x1, x2, x3, x4) → 1554_1_exp_InvokeMethod(x1, x2, x4)
Cond_1554_1_exp_InvokeMethod(x1, x2, x3, x4) → Cond_1554_1_exp_InvokeMethod(x1, x2, x4)
1474_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → 1474_1_exp_InvokeMethod(x1, x4, x5)
1175_0_fact_GT(x1, x2) → 1175_0_fact_GT(x2)
757_0_power_GT(x1, x2, x3) → 757_0_power_GT(x1, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4) → Cond_1175_0_fact_GT(x1, x3, x4)
Cond_757_0_power_GT(x1, x2, x3, x4, x5) → Cond_757_0_power_GT(x1, x2, x4, x5)
864_1_power_InvokeMethod(x1, x2, x3) → 864_1_power_InvokeMethod(x1, x3)

Filtered unneeded arguments:



1554_1_exp_InvokeMethod(x1, x2, x3) → 1554_1_exp_InvokeMethod(x1, x3)
Cond_1554_1_exp_InvokeMethod(x1, x2, x3) → Cond_1554_1_exp_InvokeMethod(x1, x3)
1672_1_exp_InvokeMethod(x1, x2, x3) → 1672_1_exp_InvokeMethod(x1, x3)
1474_1_exp_InvokeMethod(x1, x2, x3) → 1474_1_exp_InvokeMethod(x1, x3)
Cond_1252_1_fact_InvokeMethod(x1, x2) → Cond_1252_1_fact_InvokeMethod(x1)
Cond_1252_1_fact_InvokeMethod1(x1, x2) → Cond_1252_1_fact_InvokeMethod1(x1)
757_0_power_GT(x1, x2) → 757_0_power_GT(x2)
Cond_757_0_power_GT(x1, x2, x3, x4) → Cond_757_0_power_GT(x1, x4)
864_1_power_InvokeMethod(x1, x2) → 864_1_power_InvokeMethod(x1)
1474_0_power_Load(x1, x2) → 1474_0_power_Load(x2)

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


P rules:
1554_1_exp_InvokeMethod(1449_0_fact_Return, x1) → 1672_1_exp_InvokeMethod(1474_1_exp_InvokeMethod(1474_0_power_Load(-(x1, 1)), -(x1, 1)), -(x1, 1)) | >(x1, 1)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(1554_0_fact_Load(x1), x1)
R rules:
1554_0_fact_Load(x0) → 1175_0_fact_GT(x0)
1474_0_power_Load(x1) → 757_0_power_GT(x1)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0) | >(x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1) → 1449_0_fact_Return | >(x1, 0)
1252_1_fact_InvokeMethod(1449_0_fact_Return, x0) → 1449_0_fact_Return | >(x0, 0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0) → 1762_0_exp_Return
1672_1_exp_InvokeMethod(1762_0_exp_Return, x1) → 1762_0_exp_Return
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → 864_1_power_InvokeMethod(757_0_power_GT(x2)) | >(x1, 0)
864_1_power_InvokeMethod(797_0_power_Return(x0)) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return

Performed bisimulation on rules. Used the following equivalence classes: {[1438_0_exp_Return_1, 797_0_power_Return_1]=1438_0_exp_Return_1, [1204_0_fact_Return, 1449_0_fact_Return, 1762_0_exp_Return, 1113_0_power_Return]=1204_0_fact_Return, [Cond_1252_1_fact_InvokeMethod_3, Cond_1252_1_fact_InvokeMethod1_3]=Cond_1252_1_fact_InvokeMethod_3}


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


P rules:
1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1) → COND_1554_1_EXP_INVOKEMETHOD(>(x1, 1), 1204_0_fact_Return, x1)
COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1, 1)), -(x1, 1))
1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1) → 1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1), x1)
R rules:
1554_0_fact_Load(x0) → 1175_0_fact_GT(x0)
1474_0_power_Load(x1) → 757_0_power_GT(x1)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(>(x0, 0), x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1) → Cond_1252_1_fact_InvokeMethod(>(x1, 0), 1204_0_fact_Return, x1)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1204_0_fact_Return, x1) → 1204_0_fact_Return
757_0_power_GT(0) → 1438_0_exp_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(>(x1, 0), x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(1438_0_exp_Return(x0)) → 1204_0_fact_Return
864_1_power_InvokeMethod(1204_0_fact_Return) → 1204_0_fact_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


The ITRS R consists of the following rules:
1554_0_fact_Load(x0) → 1175_0_fact_GT(x0)
1474_0_power_Load(x1) → 757_0_power_GT(x1)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1204_0_fact_Return, x1)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1204_0_fact_Return, x1) → 1204_0_fact_Return
757_0_power_GT(0) → 1438_0_exp_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(1438_0_exp_Return(x0)) → 1204_0_fact_Return
864_1_power_InvokeMethod(1204_0_fact_Return) → 1204_0_fact_Return

The integer pair graph contains the following rules and edges:
(0): 1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0]) → COND_1554_1_EXP_INVOKEMETHOD(x1[0] > 1, 1204_0_fact_Return, x1[0])
(1): COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1]) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(x1[1] - 1), x1[1] - 1)
(2): 1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[2]) → 1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])

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


(1) -> (2), if (1474_0_power_Load(x1[1] - 1) →* 1204_0_fact_Returnx1[1] - 1* x1[2])


(2) -> (0), if (1554_0_fact_Load(x1[2]) →* 1204_0_fact_Returnx1[2]* x1[0])



The set Q consists of the following terms:
1554_0_fact_Load(x0)
1474_0_power_Load(x0)
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0)
1672_1_exp_InvokeMethod(1204_0_fact_Return, x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(1438_0_exp_Return(x0))
864_1_power_InvokeMethod(1204_0_fact_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@1c75ecf6 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 1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1) → COND_1554_1_EXP_INVOKEMETHOD(>(x1, 1), 1204_0_fact_Return, x1) the following chains were created:
  • We consider the chain 1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0]) → COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0]), COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1]) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1)) which results in the following constraint:

    (1)    (>(x1[0], 1)=TRUEx1[0]=x1[1]1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0])≥NonInfC∧1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0])≥COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])∧(UIncreasing(COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])), ≥))



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

    (2)    (>(x1[0], 1)=TRUE1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0])≥NonInfC∧1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0])≥COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])∧(UIncreasing(COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])), ≥))



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

    (3)    (x1[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [(2)bni_30]x1[0] ≥ 0∧[(-1)bso_31] ≥ 0)



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

    (4)    (x1[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [(2)bni_30]x1[0] ≥ 0∧[(-1)bso_31] ≥ 0)



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

    (5)    (x1[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])), ≥)∧[(-1)bni_30 + (-1)Bound*bni_30] + [(2)bni_30]x1[0] ≥ 0∧[(-1)bso_31] ≥ 0)



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

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])), ≥)∧[(3)bni_30 + (-1)Bound*bni_30] + [(2)bni_30]x1[0] ≥ 0∧[(-1)bso_31] ≥ 0)







For Pair COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1, 1)), -(x1, 1)) the following chains were created:
  • We consider the chain COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1]) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1)) which results in the following constraint:

    (7)    (COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1])≥NonInfC∧COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1])≥1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))∧(UIncreasing(1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥))



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

    (8)    ((UIncreasing(1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥)∧[bni_32] = 0∧[(-1)bso_33] ≥ 0)



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

    (9)    ((UIncreasing(1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥)∧[bni_32] = 0∧[(-1)bso_33] ≥ 0)



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

    (10)    ((UIncreasing(1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥)∧[bni_32] = 0∧[(-1)bso_33] ≥ 0)



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

    (11)    ((UIncreasing(1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥)∧[bni_32] = 0∧0 = 0∧[(-1)bso_33] ≥ 0)







For Pair 1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1) → 1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1), x1) the following chains were created:
  • We consider the chain 1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[2]) → 1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2]) which results in the following constraint:

    (12)    (1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[2])≥NonInfC∧1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[2])≥1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])∧(UIncreasing(1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])), ≥))



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

    (13)    ((UIncreasing(1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])), ≥)∧[bni_34] = 0∧[2 + (-1)bso_35] ≥ 0)



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

    (14)    ((UIncreasing(1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])), ≥)∧[bni_34] = 0∧[2 + (-1)bso_35] ≥ 0)



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

    (15)    ((UIncreasing(1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])), ≥)∧[bni_34] = 0∧[2 + (-1)bso_35] ≥ 0)



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

    (16)    ((UIncreasing(1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])), ≥)∧[bni_34] = 0∧0 = 0∧[2 + (-1)bso_35] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1) → COND_1554_1_EXP_INVOKEMETHOD(>(x1, 1), 1204_0_fact_Return, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])), ≥)∧[(3)bni_30 + (-1)Bound*bni_30] + [(2)bni_30]x1[0] ≥ 0∧[(-1)bso_31] ≥ 0)

  • COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1, 1)), -(x1, 1))
    • ((UIncreasing(1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥)∧[bni_32] = 0∧0 = 0∧[(-1)bso_33] ≥ 0)

  • 1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1) → 1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1), x1)
    • ((UIncreasing(1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])), ≥)∧[bni_34] = 0∧0 = 0∧[2 + (-1)bso_35] ≥ 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(1554_0_fact_Load(x1)) = [-1]   
POL(1175_0_fact_GT(x1)) = x1   
POL(1474_0_power_Load(x1)) = [-1]   
POL(757_0_power_GT(x1)) = [-1]   
POL(0) = 0   
POL(1204_0_fact_Return) = [-1]   
POL(Cond_1175_0_fact_GT(x1, x2, x3)) = [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(1252_1_fact_InvokeMethod(x1, x2)) = [-1] + [-1]x2   
POL(Cond_1252_1_fact_InvokeMethod(x1, x2, x3)) = [-1]x3   
POL(1672_1_exp_InvokeMethod(x1, x2)) = [-1]   
POL(1438_0_exp_Return(x1)) = [-1]   
POL(Cond_757_0_power_GT(x1, x2, x3)) = [-1]   
POL(864_1_power_InvokeMethod(x1)) = [-1]   
POL(1554_1_EXP_INVOKEMETHOD(x1, x2)) = [-1] + [2]x2   
POL(COND_1554_1_EXP_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x3   
POL(1) = [1]   
POL(1474_1_EXP_INVOKEMETHOD(x1, x2)) = [2]x2 + [-1]x1   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[2]) → 1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])

The following pairs are in Pbound:

1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0]) → COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])

The following pairs are in P:

1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0]) → COND_1554_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1204_0_fact_Return, x1[0])
COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1]) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(-(x1[1], 1)), -(x1[1], 1))

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

1474_0_power_Load(x1)1757_0_power_GT(x1)1
757_0_power_GT(0)11438_0_exp_Return(x0)1
757_0_power_GT(x1)1Cond_757_0_power_GT(>(x1, 0), x1, x2)1
Cond_757_0_power_GT(TRUE, x1, x2)1864_1_power_InvokeMethod(757_0_power_GT(x2))1
864_1_power_InvokeMethod(1438_0_exp_Return(x0))11204_0_fact_Return1
864_1_power_InvokeMethod(1204_0_fact_Return)11204_0_fact_Return1
1175_0_fact_GT(0)11204_0_fact_Return1
Cond_1175_0_fact_GT(TRUE, x0, x1)11252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)1

(31) Complex Obligation (AND)

(32) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1554_0_fact_Load(x0) → 1175_0_fact_GT(x0)
1474_0_power_Load(x1) → 757_0_power_GT(x1)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1204_0_fact_Return, x1)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1204_0_fact_Return, x1) → 1204_0_fact_Return
757_0_power_GT(0) → 1438_0_exp_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(1438_0_exp_Return(x0)) → 1204_0_fact_Return
864_1_power_InvokeMethod(1204_0_fact_Return) → 1204_0_fact_Return

The integer pair graph contains the following rules and edges:
(0): 1554_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[0]) → COND_1554_1_EXP_INVOKEMETHOD(x1[0] > 1, 1204_0_fact_Return, x1[0])
(1): COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1]) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(x1[1] - 1), x1[1] - 1)

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



The set Q consists of the following terms:
1554_0_fact_Load(x0)
1474_0_power_Load(x0)
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0)
1672_1_exp_InvokeMethod(1204_0_fact_Return, x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(1438_0_exp_Return(x0))
864_1_power_InvokeMethod(1204_0_fact_Return)

(33) IDependencyGraphProof (EQUIVALENT transformation)

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

(34) TRUE

(35) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1554_0_fact_Load(x0) → 1175_0_fact_GT(x0)
1474_0_power_Load(x1) → 757_0_power_GT(x1)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1204_0_fact_Return, x1)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x1) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0) → 1204_0_fact_Return
1672_1_exp_InvokeMethod(1204_0_fact_Return, x1) → 1204_0_fact_Return
757_0_power_GT(0) → 1438_0_exp_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(1438_0_exp_Return(x0)) → 1204_0_fact_Return
864_1_power_InvokeMethod(1204_0_fact_Return) → 1204_0_fact_Return

The integer pair graph contains the following rules and edges:
(1): COND_1554_1_EXP_INVOKEMETHOD(TRUE, 1204_0_fact_Return, x1[1]) → 1474_1_EXP_INVOKEMETHOD(1474_0_power_Load(x1[1] - 1), x1[1] - 1)
(2): 1474_1_EXP_INVOKEMETHOD(1204_0_fact_Return, x1[2]) → 1554_1_EXP_INVOKEMETHOD(1554_0_fact_Load(x1[2]), x1[2])

(1) -> (2), if (1474_0_power_Load(x1[1] - 1) →* 1204_0_fact_Returnx1[1] - 1* x1[2])



The set Q consists of the following terms:
1554_0_fact_Load(x0)
1474_0_power_Load(x0)
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), 0)
1672_1_exp_InvokeMethod(1204_0_fact_Return, x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(1438_0_exp_Return(x0))
864_1_power_InvokeMethod(1204_0_fact_Return)

(36) IDependencyGraphProof (EQUIVALENT transformation)

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

(37) TRUE

(38) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: TaylorSeriesRec.cos(II)I
SCC calls the following helper methods: TaylorSeriesRec.power(II)I, TaylorSeriesRec.fact(I)I, TaylorSeriesRec.cos(II)I
Performed SCC analyses: UsedFieldsAnalysis

(39) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 30 rules for P and 58 rules for R.


P rules:
1331_0_cos_GT(EOS(STATIC_1331), i8, i249, i249) → 1349_0_cos_GT(EOS(STATIC_1349), i8, i249, i249)
1349_0_cos_GT(EOS(STATIC_1349), i8, i249, i249) → 1361_0_cos_ConstantStackPush(EOS(STATIC_1361), i8, i249) | >(i249, 0)
1361_0_cos_ConstantStackPush(EOS(STATIC_1361), i8, i249) → 1372_0_cos_Load(EOS(STATIC_1372), i8, i249, -1)
1372_0_cos_Load(EOS(STATIC_1372), i8, i249, matching1) → 1391_0_cos_InvokeMethod(EOS(STATIC_1391), i8, i249, -1, i249) | =(matching1, -1)
1391_0_cos_InvokeMethod(EOS(STATIC_1391), i8, i249, matching1, i249) → 1404_1_cos_InvokeMethod(1404_0_power_Load(EOS(STATIC_1404), -1, i249), i8, i249, -1, i249) | =(matching1, -1)
1404_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), i8, i278, matching1, i278) → 1464_0_power_Return(EOS(STATIC_1464), i8, i278, -1, i278) | =(matching1, -1)
1464_0_power_Return(EOS(STATIC_1464), i8, i278, matching1, i278) → 1477_0_cos_Load(EOS(STATIC_1477), i8, i278) | =(matching1, -1)
1477_0_cos_Load(EOS(STATIC_1477), i8, i278) → 1491_0_cos_ConstantStackPush(EOS(STATIC_1491), i8, i278, i8)
1491_0_cos_ConstantStackPush(EOS(STATIC_1491), i8, i278, i8) → 1500_0_cos_Load(EOS(STATIC_1500), i8, i278, i8, 2)
1500_0_cos_Load(EOS(STATIC_1500), i8, i278, i8, matching1) → 1511_0_cos_IntArithmetic(EOS(STATIC_1511), i8, i278, i8, 2, i278) | =(matching1, 2)
1511_0_cos_IntArithmetic(EOS(STATIC_1511), i8, i278, i8, matching1, i278) → 1528_0_cos_InvokeMethod(EOS(STATIC_1528), i8, i278, i8, *(2, i278)) | &&(>=(i278, 1), =(matching1, 2))
1528_0_cos_InvokeMethod(EOS(STATIC_1528), i8, i278, i8, i305) → 1534_1_cos_InvokeMethod(1534_0_power_Load(EOS(STATIC_1534), i8, i305), i8, i278, i8, i305)
1534_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), i320, i278, i320, i321) → 1575_0_power_Return(EOS(STATIC_1575), i320, i278, i320, i321)
1575_0_power_Return(EOS(STATIC_1575), i320, i278, i320, i321) → 1584_0_cos_IntArithmetic(EOS(STATIC_1584), i320, i278)
1584_0_cos_IntArithmetic(EOS(STATIC_1584), i320, i278) → 1591_0_cos_ConstantStackPush(EOS(STATIC_1591), i320, i278)
1591_0_cos_ConstantStackPush(EOS(STATIC_1591), i320, i278) → 1599_0_cos_Load(EOS(STATIC_1599), i320, i278, 2)
1599_0_cos_Load(EOS(STATIC_1599), i320, i278, matching1) → 1609_0_cos_IntArithmetic(EOS(STATIC_1609), i320, i278, 2, i278) | =(matching1, 2)
1609_0_cos_IntArithmetic(EOS(STATIC_1609), i320, i278, matching1, i278) → 1618_0_cos_InvokeMethod(EOS(STATIC_1618), i320, i278, *(2, i278)) | &&(>=(i278, 1), =(matching1, 2))
1618_0_cos_InvokeMethod(EOS(STATIC_1618), i320, i278, i337) → 1633_1_cos_InvokeMethod(1633_0_fact_Load(EOS(STATIC_1633), i337), i320, i278, i337)
1633_1_cos_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), i320, i278, i354) → 1685_0_fact_Return(EOS(STATIC_1685), i320, i278, i354)
1685_0_fact_Return(EOS(STATIC_1685), i320, i278, i354) → 1692_0_cos_IntArithmetic(EOS(STATIC_1692), i320, i278)
1692_0_cos_IntArithmetic(EOS(STATIC_1692), i320, i278) → 1701_0_cos_Load(EOS(STATIC_1701), i320, i278)
1701_0_cos_Load(EOS(STATIC_1701), i320, i278) → 1707_0_cos_Load(EOS(STATIC_1707), i278, i320)
1707_0_cos_Load(EOS(STATIC_1707), i278, i320) → 1714_0_cos_ConstantStackPush(EOS(STATIC_1714), i320, i278)
1714_0_cos_ConstantStackPush(EOS(STATIC_1714), i320, i278) → 1722_0_cos_IntArithmetic(EOS(STATIC_1722), i320, i278, 1)
1722_0_cos_IntArithmetic(EOS(STATIC_1722), i320, i278, matching1) → 1729_0_cos_InvokeMethod(EOS(STATIC_1729), i320, -(i278, 1)) | &&(>(i278, 0), =(matching1, 1))
1729_0_cos_InvokeMethod(EOS(STATIC_1729), i320, i363) → 1738_1_cos_InvokeMethod(1738_0_cos_Load(EOS(STATIC_1738), i320, i363), i320, i363)
1738_0_cos_Load(EOS(STATIC_1738), i320, i363) → 1746_0_cos_Load(EOS(STATIC_1746), i320, i363)
1746_0_cos_Load(EOS(STATIC_1746), i320, i363) → 1320_0_cos_Load(EOS(STATIC_1320), i320, i363)
1320_0_cos_Load(EOS(STATIC_1320), i8, i243) → 1331_0_cos_GT(EOS(STATIC_1331), i8, i243, i243)
R rules:
1404_0_power_Load(EOS(STATIC_1404), matching1, i249) → 1416_0_power_Load(EOS(STATIC_1416), -1, i249) | =(matching1, -1)
1416_0_power_Load(EOS(STATIC_1416), matching1, i249) → 741_0_power_Load(EOS(STATIC_741), -1, i249) | =(matching1, -1)
1534_0_power_Load(EOS(STATIC_1534), i8, i305) → 1548_0_power_Load(EOS(STATIC_1548), i8, i305)
1548_0_power_Load(EOS(STATIC_1548), i8, i305) → 741_0_power_Load(EOS(STATIC_741), i8, i305)
1633_0_fact_Load(EOS(STATIC_1633), i337) → 1661_0_fact_Load(EOS(STATIC_1661), i337)
1661_0_fact_Load(EOS(STATIC_1661), i337) → 1167_0_fact_Load(EOS(STATIC_1167), i337)
874_0_power_Load(EOS(STATIC_874), i87) → 741_0_power_Load(EOS(STATIC_741), i87, i111)
1261_0_fact_Load(EOS(STATIC_1261)) → 1167_0_fact_Load(EOS(STATIC_1167), i230)
741_0_power_Load(EOS(STATIC_741), i87, i88) → 757_0_power_GT(EOS(STATIC_757), i87, i88, i88)
757_0_power_GT(EOS(STATIC_757), i87, matching1, matching2) → 769_0_power_GT(EOS(STATIC_769), i87, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
757_0_power_GT(EOS(STATIC_757), i87, i96, i96) → 770_0_power_GT(EOS(STATIC_770), i87, i96, i96)
769_0_power_GT(EOS(STATIC_769), i87, matching1, matching2) → 785_0_power_ConstantStackPush(EOS(STATIC_785), i87, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
770_0_power_GT(EOS(STATIC_770), i87, i96, i96) → 786_0_power_Load(EOS(STATIC_786), i87, i96) | >(i96, 0)
785_0_power_ConstantStackPush(EOS(STATIC_785), i87, matching1) → 797_0_power_Return(EOS(STATIC_797), i87, 0) | =(matching1, 0)
786_0_power_Load(EOS(STATIC_786), i87, i96) → 799_0_power_Load(EOS(STATIC_799), i87, i96, i87)
799_0_power_Load(EOS(STATIC_799), i87, i96, i87) → 812_0_power_Load(EOS(STATIC_812), i96, i87, i87)
812_0_power_Load(EOS(STATIC_812), i96, i87, i87) → 832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96)
832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96) → 844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96)
844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96) → 857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) | >(i96, 0)
857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) → 864_1_power_InvokeMethod(864_0_power_Load(EOS(STATIC_864), i87), i87, i87)
864_0_power_Load(EOS(STATIC_864), i87) → 874_0_power_Load(EOS(STATIC_874), i87)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), i121, matching1), i121, i121) → 918_0_power_Return(EOS(STATIC_918), i121, i121, 0, i121, 0) | =(matching1, 0)
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), i192, i192) → 1159_0_power_Return(EOS(STATIC_1159), i192, i192)
918_0_power_Return(EOS(STATIC_918), i121, i121, matching1, i121, matching2) → 924_0_power_IntArithmetic(EOS(STATIC_924), i121) | &&(=(matching1, 0), =(matching2, 0))
924_0_power_IntArithmetic(EOS(STATIC_924), i121) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i121)
1094_0_power_Return(EOS(STATIC_1094), i179, i179) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i179)
1104_0_power_IntArithmetic(EOS(STATIC_1104), i179) → 1113_0_power_Return(EOS(STATIC_1113))
1159_0_power_Return(EOS(STATIC_1159), i192, i192) → 1094_0_power_Return(EOS(STATIC_1094), i192, i192)
1167_0_fact_Load(EOS(STATIC_1167), i206) → 1175_0_fact_GT(EOS(STATIC_1175), i206, i206)
1175_0_fact_GT(EOS(STATIC_1175), matching1, matching2) → 1182_0_fact_GT(EOS(STATIC_1182), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1175_0_fact_GT(EOS(STATIC_1175), i214, i214) → 1183_0_fact_GT(EOS(STATIC_1183), i214, i214)
1182_0_fact_GT(EOS(STATIC_1182), matching1, matching2) → 1195_0_fact_ConstantStackPush(EOS(STATIC_1195), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1183_0_fact_GT(EOS(STATIC_1183), i214, i214) → 1197_0_fact_Load(EOS(STATIC_1197), i214) | >(i214, 0)
1195_0_fact_ConstantStackPush(EOS(STATIC_1195), matching1) → 1204_0_fact_Return(EOS(STATIC_1204), 0) | =(matching1, 0)
1197_0_fact_Load(EOS(STATIC_1197), i214) → 1206_0_fact_Load(EOS(STATIC_1206), i214, i214)
1206_0_fact_Load(EOS(STATIC_1206), i214, i214) → 1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214)
1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214) → 1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214)
1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214) → 1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) | >(i214, 0)
1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) → 1252_1_fact_InvokeMethod(1252_0_fact_Load(EOS(STATIC_1252)), i214)
1252_0_fact_Load(EOS(STATIC_1252)) → 1261_0_fact_Load(EOS(STATIC_1261))
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), matching1), i214) → 1292_0_fact_Return(EOS(STATIC_1292), i214, 0, 0) | =(matching1, 0)
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), i214) → 1494_0_fact_Return(EOS(STATIC_1494), i214)
1292_0_fact_Return(EOS(STATIC_1292), i214, matching1, matching2) → 1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214) | &&(=(matching1, 0), =(matching2, 0))
1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214) → 1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214)
1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214)
1425_0_fact_Return(EOS(STATIC_1425), i214) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214)
1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214) → 1449_0_fact_Return(EOS(STATIC_1449)) | >=(i214, 1)
1494_0_fact_Return(EOS(STATIC_1494), i214) → 1425_0_fact_Return(EOS(STATIC_1425), i214)
1331_0_cos_GT(EOS(STATIC_1331), i8, matching1, matching2) → 1348_0_cos_GT(EOS(STATIC_1348), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1348_0_cos_GT(EOS(STATIC_1348), i8, matching1, matching2) → 1359_0_cos_ConstantStackPush(EOS(STATIC_1359), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1359_0_cos_ConstantStackPush(EOS(STATIC_1359), i8, matching1) → 1370_0_cos_Return(EOS(STATIC_1370), i8, 0) | =(matching1, 0)
1738_1_cos_InvokeMethod(1370_0_cos_Return(EOS(STATIC_1370), i384, matching1), i384, matching2) → 1774_0_cos_Return(EOS(STATIC_1774), i384, 0, i384, 0) | &&(=(matching1, 0), =(matching2, 0))
1738_1_cos_InvokeMethod(1854_0_cos_Return(EOS(STATIC_1854)), i429, i430) → 1897_0_cos_Return(EOS(STATIC_1897), i429, i430)
1774_0_cos_Return(EOS(STATIC_1774), i384, matching1, i384, matching2) → 1783_0_cos_IntArithmetic(EOS(STATIC_1783)) | &&(=(matching1, 0), =(matching2, 0))
1783_0_cos_IntArithmetic(EOS(STATIC_1783)) → 1841_0_cos_IntArithmetic(EOS(STATIC_1841))
1829_0_cos_Return(EOS(STATIC_1829), i405, i406) → 1841_0_cos_IntArithmetic(EOS(STATIC_1841))
1841_0_cos_IntArithmetic(EOS(STATIC_1841)) → 1854_0_cos_Return(EOS(STATIC_1854))
1897_0_cos_Return(EOS(STATIC_1897), i429, i430) → 1829_0_cos_Return(EOS(STATIC_1829), i429, i430)

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


P rules:
1404_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), x0, x1, -1, x1) → 1534_1_cos_InvokeMethod(1534_0_power_Load(EOS(STATIC_1534), x0, *(2, x1)), x0, x1, x0, *(2, x1)) | >(+(x1, 1), 1)
1534_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), x0, x1, x0, x2) → 1633_1_cos_InvokeMethod(1633_0_fact_Load(EOS(STATIC_1633), *(2, x1)), x0, x1, *(2, x1)) | >(+(x1, 1), 1)
1633_1_cos_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), x0, x1, x2) → 1738_1_cos_InvokeMethod(1404_1_cos_InvokeMethod(1404_0_power_Load(EOS(STATIC_1404), -1, -(x1, 1)), x0, -(x1, 1), -1, -(x1, 1)), x0, -(x1, 1)) | >(x1, 1)
R rules:
1404_0_power_Load(EOS(STATIC_1404), -1, x1) → 757_0_power_GT(EOS(STATIC_757), -1, x1, x1)
1534_0_power_Load(EOS(STATIC_1534), x0, x1) → 757_0_power_GT(EOS(STATIC_757), x0, x1, x1)
1633_0_fact_Load(EOS(STATIC_1633), x0) → 1175_0_fact_GT(EOS(STATIC_1175), x0, x0)
757_0_power_GT(EOS(STATIC_757), x0, 0, 0) → 797_0_power_Return(EOS(STATIC_797), x0, 0)
757_0_power_GT(EOS(STATIC_757), x0, x1, x1) → 864_1_power_InvokeMethod(757_0_power_GT(EOS(STATIC_757), x0, x2, x2), x0, x0) | >(x1, 0)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), x0, 0), x0, x0) → 1113_0_power_Return(EOS(STATIC_1113))
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113)), x0, x0) → 1113_0_power_Return(EOS(STATIC_1113))
1175_0_fact_GT(EOS(STATIC_1175), 0, 0) → 1204_0_fact_Return(EOS(STATIC_1204), 0)
1175_0_fact_GT(EOS(STATIC_1175), x0, x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), x1, x1), x0) | >(x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), 0), x1) → 1449_0_fact_Return(EOS(STATIC_1449)) | >(+(x1, 1), 1)
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449)), x0) → 1449_0_fact_Return(EOS(STATIC_1449)) | >(+(x0, 1), 1)
1738_1_cos_InvokeMethod(1370_0_cos_Return(EOS(STATIC_1370), x0, 0), x0, 0) → 1854_0_cos_Return(EOS(STATIC_1854))
1738_1_cos_InvokeMethod(1854_0_cos_Return(EOS(STATIC_1854)), x0, x1) → 1854_0_cos_Return(EOS(STATIC_1854))

Filtered ground terms:



1404_0_power_Load(x1, x2, x3) → 1404_0_power_Load(x3)
1404_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → 1404_1_cos_InvokeMethod(x1, x2, x3, x5)
Cond_1633_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1633_1_cos_InvokeMethod(x1, x3, x4, x5)
1449_0_fact_Return(x1) → 1449_0_fact_Return
1633_0_fact_Load(x1, x2) → 1633_0_fact_Load(x2)
Cond_1534_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1534_1_cos_InvokeMethod(x1, x3, x4, x5, x6)
1113_0_power_Return(x1) → 1113_0_power_Return
1534_0_power_Load(x1, x2, x3) → 1534_0_power_Load(x2, x3)
Cond_1404_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1404_1_cos_InvokeMethod(x1, x3, x4, x6)
1854_0_cos_Return(x1) → 1854_0_cos_Return
1370_0_cos_Return(x1, x2, x3) → 1370_0_cos_Return(x2)
Cond_1252_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod1(x1, x3)
Cond_1252_1_fact_InvokeMethod(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod(x1, x3)
1204_0_fact_Return(x1, x2) → 1204_0_fact_Return
1175_0_fact_GT(x1, x2, x3) → 1175_0_fact_GT(x2, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1175_0_fact_GT(x1, x3, x4, x5)
797_0_power_Return(x1, x2, x3) → 797_0_power_Return(x2)
757_0_power_GT(x1, x2, x3, x4) → 757_0_power_GT(x2, x3, x4)
Cond_757_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_757_0_power_GT(x1, x3, x4, x5, x6)

Filtered duplicate args:



1404_1_cos_InvokeMethod(x1, x2, x3, x4) → 1404_1_cos_InvokeMethod(x1, x2, x4)
Cond_1404_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1404_1_cos_InvokeMethod(x1, x2, x4)
1534_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → 1534_1_cos_InvokeMethod(x1, x3, x4, x5)
Cond_1534_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1534_1_cos_InvokeMethod(x1, x3, x4, x5)
757_0_power_GT(x1, x2, x3) → 757_0_power_GT(x1, x3)
1175_0_fact_GT(x1, x2) → 1175_0_fact_GT(x2)
Cond_757_0_power_GT(x1, x2, x3, x4, x5) → Cond_757_0_power_GT(x1, x2, x4, x5)
864_1_power_InvokeMethod(x1, x2, x3) → 864_1_power_InvokeMethod(x1, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4) → Cond_1175_0_fact_GT(x1, x3, x4)

Filtered unneeded arguments:



1404_1_cos_InvokeMethod(x1, x2, x3) → 1404_1_cos_InvokeMethod(x1, x3)
Cond_1404_1_cos_InvokeMethod(x1, x2, x3) → Cond_1404_1_cos_InvokeMethod(x1, x3)
1534_1_cos_InvokeMethod(x1, x2, x3, x4) → 1534_1_cos_InvokeMethod(x1, x2)
Cond_1534_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1534_1_cos_InvokeMethod(x1, x2)
1633_1_cos_InvokeMethod(x1, x2, x3, x4) → 1633_1_cos_InvokeMethod(x1, x3)
Cond_1633_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1633_1_cos_InvokeMethod(x1, x3)
1738_1_cos_InvokeMethod(x1, x2, x3) → 1738_1_cos_InvokeMethod(x1, x3)
757_0_power_GT(x1, x2) → 757_0_power_GT(x2)
Cond_757_0_power_GT(x1, x2, x3, x4) → Cond_757_0_power_GT(x1, x4)
864_1_power_InvokeMethod(x1, x2) → 864_1_power_InvokeMethod(x1)
Cond_1252_1_fact_InvokeMethod(x1, x2) → Cond_1252_1_fact_InvokeMethod(x1)
Cond_1252_1_fact_InvokeMethod1(x1, x2) → Cond_1252_1_fact_InvokeMethod1(x1)
1534_0_power_Load(x1, x2) → 1534_0_power_Load(x2)

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


P rules:
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(1534_0_power_Load(*(2, x1)), x1) | >(x1, 0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(1633_0_fact_Load(*(2, x1)), x1) | >(x1, 0)
1633_1_cos_InvokeMethod(1449_0_fact_Return, x1) → 1738_1_cos_InvokeMethod(1404_1_cos_InvokeMethod(1404_0_power_Load(-(x1, 1)), -(x1, 1)), -(x1, 1)) | >(x1, 1)
R rules:
1404_0_power_Load(x1) → 757_0_power_GT(x1)
1534_0_power_Load(x1) → 757_0_power_GT(x1)
1633_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → 864_1_power_InvokeMethod(757_0_power_GT(x2)) | >(x1, 0)
864_1_power_InvokeMethod(797_0_power_Return(x0)) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0) | >(x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x1) → 1449_0_fact_Return | >(x1, 0)
1252_1_fact_InvokeMethod(1449_0_fact_Return, x0) → 1449_0_fact_Return | >(x0, 0)
1738_1_cos_InvokeMethod(1370_0_cos_Return(x0), 0) → 1854_0_cos_Return
1738_1_cos_InvokeMethod(1854_0_cos_Return, x1) → 1854_0_cos_Return

Performed bisimulation on rules. Used the following equivalence classes: {[797_0_power_Return_1, 1370_0_cos_Return_1]=797_0_power_Return_1, [Cond_1252_1_fact_InvokeMethod_3, Cond_1252_1_fact_InvokeMethod1_3]=Cond_1252_1_fact_InvokeMethod_3, [1113_0_power_Return, 1204_0_fact_Return, 1449_0_fact_Return, 1854_0_cos_Return]=1113_0_power_Return}


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


P rules:
1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1404_1_COS_INVOKEMETHOD(>(x1, 0), 1113_0_power_Return, x1)
COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1)), x1)
1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1534_1_COS_INVOKEMETHOD(>(x1, 0), 1113_0_power_Return, x1)
COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1)), x1)
1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1633_1_COS_INVOKEMETHOD(>(x1, 1), 1113_0_power_Return, x1)
COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1, 1)), -(x1, 1))
R rules:
1404_0_power_Load(x1) → 757_0_power_GT(x1)
1534_0_power_Load(x1) → 757_0_power_GT(x1)
1633_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(>(x1, 0), x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(797_0_power_Return(x0)) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return
1175_0_fact_GT(0) → 1113_0_power_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(>(x0, 0), x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1113_0_power_Return, x1) → Cond_1252_1_fact_InvokeMethod(>(x1, 0), 1113_0_power_Return, x1)
Cond_1252_1_fact_InvokeMethod(TRUE, 1113_0_power_Return, x1) → 1113_0_power_Return
1738_1_cos_InvokeMethod(797_0_power_Return(x0), 0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1113_0_power_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


The ITRS R consists of the following rules:
1404_0_power_Load(x1) → 757_0_power_GT(x1)
1534_0_power_Load(x1) → 757_0_power_GT(x1)
1633_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(797_0_power_Return(x0)) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return
1175_0_fact_GT(0) → 1113_0_power_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1113_0_power_Return, x1) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1113_0_power_Return, x1)
Cond_1252_1_fact_InvokeMethod(TRUE, 1113_0_power_Return, x1) → 1113_0_power_Return
1738_1_cos_InvokeMethod(797_0_power_Return(x0), 0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1113_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0]) → COND_1404_1_COS_INVOKEMETHOD(x1[0] > 0, 1113_0_power_Return, x1[0])
(1): COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[1]) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(2 * x1[1]), x1[1])
(2): 1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2]) → COND_1534_1_COS_INVOKEMETHOD(x1[2] > 0, 1113_0_power_Return, x1[2])
(3): COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[3]) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(2 * x1[3]), x1[3])
(4): 1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4]) → COND_1633_1_COS_INVOKEMETHOD(x1[4] > 1, 1113_0_power_Return, x1[4])
(5): COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[5]) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(x1[5] - 1), x1[5] - 1)

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


(1) -> (2), if (1534_0_power_Load(2 * x1[1]) →* 1113_0_power_Returnx1[1]* x1[2])


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


(3) -> (4), if (1633_0_fact_Load(2 * x1[3]) →* 1113_0_power_Returnx1[3]* x1[4])


(4) -> (5), if (x1[4] > 1x1[4]* x1[5])


(5) -> (0), if (1404_0_power_Load(x1[5] - 1) →* 1113_0_power_Returnx1[5] - 1* x1[0])



The set Q consists of the following terms:
1404_0_power_Load(x0)
1534_0_power_Load(x0)
1633_0_fact_Load(x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(797_0_power_Return(x0))
864_1_power_InvokeMethod(1113_0_power_Return)
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1113_0_power_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(797_0_power_Return(x0), 0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)

(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@1c75ecf6 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 1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1404_1_COS_INVOKEMETHOD(>(x1, 0), 1113_0_power_Return, x1) the following chains were created:
  • We consider the chain 1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0]) → COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0]), COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[1]) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1]) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx1[0]=x1[1]1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0])≥NonInfC∧1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0])≥COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])∧(UIncreasing(COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])), ≥))



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

    (2)    (>(x1[0], 0)=TRUE1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0])≥NonInfC∧1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0])≥COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])∧(UIncreasing(COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])), ≥))



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

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33] + [bni_33]x1[0] ≥ 0∧[1 + (-1)bso_34] ≥ 0)



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

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33] + [bni_33]x1[0] ≥ 0∧[1 + (-1)bso_34] ≥ 0)



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

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33] + [bni_33]x1[0] ≥ 0∧[1 + (-1)bso_34] ≥ 0)



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

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33 + bni_33] + [bni_33]x1[0] ≥ 0∧[1 + (-1)bso_34] ≥ 0)







For Pair COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1)), x1) the following chains were created:
  • We consider the chain COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[1]) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1]) which results in the following constraint:

    (7)    (COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[1])≥NonInfC∧COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[1])≥1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])∧(UIncreasing(1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])), ≥))



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

    (8)    ((UIncreasing(1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])), ≥)∧[bni_35] = 0∧[(-1)bso_36] ≥ 0)



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

    (9)    ((UIncreasing(1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])), ≥)∧[bni_35] = 0∧[(-1)bso_36] ≥ 0)



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

    (10)    ((UIncreasing(1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])), ≥)∧[bni_35] = 0∧[(-1)bso_36] ≥ 0)



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

    (11)    ((UIncreasing(1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])), ≥)∧[bni_35] = 0∧0 = 0∧[(-1)bso_36] ≥ 0)







For Pair 1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1534_1_COS_INVOKEMETHOD(>(x1, 0), 1113_0_power_Return, x1) the following chains were created:
  • We consider the chain 1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2]) → COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2]), COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[3]) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3]) which results in the following constraint:

    (12)    (>(x1[2], 0)=TRUEx1[2]=x1[3]1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2])≥NonInfC∧1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2])≥COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])∧(UIncreasing(COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])), ≥))



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

    (13)    (>(x1[2], 0)=TRUE1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2])≥NonInfC∧1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2])≥COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])∧(UIncreasing(COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])), ≥))



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

    (14)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)



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

    (15)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)



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

    (16)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)



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

    (17)    (x1[2] ≥ 0 ⇒ (UIncreasing(COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)







For Pair COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1)), x1) the following chains were created:
  • We consider the chain COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[3]) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3]) which results in the following constraint:

    (18)    (COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[3])≥NonInfC∧COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[3])≥1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])∧(UIncreasing(1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])), ≥))



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

    (19)    ((UIncreasing(1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



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

    (20)    ((UIncreasing(1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



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

    (21)    ((UIncreasing(1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])), ≥)∧[bni_39] = 0∧[(-1)bso_40] ≥ 0)



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

    (22)    ((UIncreasing(1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])), ≥)∧[bni_39] = 0∧0 = 0∧[(-1)bso_40] ≥ 0)







For Pair 1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1633_1_COS_INVOKEMETHOD(>(x1, 1), 1113_0_power_Return, x1) the following chains were created:
  • We consider the chain 1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4]) → COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4]), COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[5]) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1)) which results in the following constraint:

    (23)    (>(x1[4], 1)=TRUEx1[4]=x1[5]1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4])≥NonInfC∧1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4])≥COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])∧(UIncreasing(COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])), ≥))



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

    (24)    (>(x1[4], 1)=TRUE1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4])≥NonInfC∧1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4])≥COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])∧(UIncreasing(COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])), ≥))



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

    (25)    (x1[4] + [-2] ≥ 0 ⇒ (UIncreasing(COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)



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

    (26)    (x1[4] + [-2] ≥ 0 ⇒ (UIncreasing(COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)



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

    (27)    (x1[4] + [-2] ≥ 0 ⇒ (UIncreasing(COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)



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

    (28)    (x1[4] ≥ 0 ⇒ (UIncreasing(COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])), ≥)∧[bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)







For Pair COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1, 1)), -(x1, 1)) the following chains were created:
  • We consider the chain COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[5]) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1)) which results in the following constraint:

    (29)    (COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[5])≥NonInfC∧COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[5])≥1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))∧(UIncreasing(1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))), ≥))



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

    (30)    ((UIncreasing(1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))), ≥)∧[bni_43] = 0∧[(-1)bso_44] ≥ 0)



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

    (31)    ((UIncreasing(1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))), ≥)∧[bni_43] = 0∧[(-1)bso_44] ≥ 0)



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

    (32)    ((UIncreasing(1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))), ≥)∧[bni_43] = 0∧[(-1)bso_44] ≥ 0)



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

    (33)    ((UIncreasing(1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))), ≥)∧[bni_43] = 0∧0 = 0∧[(-1)bso_44] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1404_1_COS_INVOKEMETHOD(>(x1, 0), 1113_0_power_Return, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33 + bni_33] + [bni_33]x1[0] ≥ 0∧[1 + (-1)bso_34] ≥ 0)

  • COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1)), x1)
    • ((UIncreasing(1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])), ≥)∧[bni_35] = 0∧0 = 0∧[(-1)bso_36] ≥ 0)

  • 1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1534_1_COS_INVOKEMETHOD(>(x1, 0), 1113_0_power_Return, x1)
    • (x1[2] ≥ 0 ⇒ (UIncreasing(COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)

  • COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1)), x1)
    • ((UIncreasing(1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])), ≥)∧[bni_39] = 0∧0 = 0∧[(-1)bso_40] ≥ 0)

  • 1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1) → COND_1633_1_COS_INVOKEMETHOD(>(x1, 1), 1113_0_power_Return, x1)
    • (x1[4] ≥ 0 ⇒ (UIncreasing(COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])), ≥)∧[bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)

  • COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1, 1)), -(x1, 1))
    • ((UIncreasing(1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))), ≥)∧[bni_43] = 0∧0 = 0∧[(-1)bso_44] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1404_0_power_Load(x1)) = [-1] + [-1]x1   
POL(757_0_power_GT(x1)) = 0   
POL(1534_0_power_Load(x1)) = 0   
POL(1633_0_fact_Load(x1)) = [-1] + x1   
POL(1175_0_fact_GT(x1)) = 0   
POL(0) = 0   
POL(797_0_power_Return(x1)) = 0   
POL(Cond_757_0_power_GT(x1, x2, x3)) = 0   
POL(>(x1, x2)) = 0   
POL(864_1_power_InvokeMethod(x1)) = 0   
POL(1113_0_power_Return) = 0   
POL(Cond_1175_0_fact_GT(x1, x2, x3)) = [-1]   
POL(1252_1_fact_InvokeMethod(x1, x2)) = [2] + [-1]x2   
POL(Cond_1252_1_fact_InvokeMethod(x1, x2, x3)) = [1] + x3   
POL(1738_1_cos_InvokeMethod(x1, x2)) = [-1]   
POL(1404_1_COS_INVOKEMETHOD(x1, x2)) = x2   
POL(COND_1404_1_COS_INVOKEMETHOD(x1, x2, x3)) = [-1] + x3   
POL(1534_1_COS_INVOKEMETHOD(x1, x2)) = [-1] + [2]x1 + x2   
POL(*(x1, x2)) = x1·x2   
POL(2) = [2]   
POL(COND_1534_1_COS_INVOKEMETHOD(x1, x2, x3)) = [-1] + x3   
POL(1633_1_COS_INVOKEMETHOD(x1, x2)) = [-1] + x2   
POL(COND_1633_1_COS_INVOKEMETHOD(x1, x2, x3)) = [-1] + x3   
POL(1) = [1]   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0]) → COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])

The following pairs are in Pbound:

1404_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[0]) → COND_1404_1_COS_INVOKEMETHOD(>(x1[0], 0), 1113_0_power_Return, x1[0])
1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2]) → COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])
1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4]) → COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])

The following pairs are in P:

COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[1]) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(*(2, x1[1])), x1[1])
1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2]) → COND_1534_1_COS_INVOKEMETHOD(>(x1[2], 0), 1113_0_power_Return, x1[2])
COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[3]) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(*(2, x1[3])), x1[3])
1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4]) → COND_1633_1_COS_INVOKEMETHOD(>(x1[4], 1), 1113_0_power_Return, x1[4])
COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[5]) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(-(x1[5], 1)), -(x1[5], 1))

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

1534_0_power_Load(x1)1757_0_power_GT(x1)1
757_0_power_GT(0)1797_0_power_Return(x0)1
757_0_power_GT(x1)1Cond_757_0_power_GT(>(x1, 0), x1, x2)1
Cond_757_0_power_GT(TRUE, x1, x2)1864_1_power_InvokeMethod(757_0_power_GT(x2))1
864_1_power_InvokeMethod(797_0_power_Return(x0))11113_0_power_Return1
864_1_power_InvokeMethod(1113_0_power_Return)11113_0_power_Return1
1175_0_fact_GT(0)11113_0_power_Return1
1175_0_fact_GT(x0)1Cond_1175_0_fact_GT(>(x0, 0), x0, x1)1

(42) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1404_0_power_Load(x1) → 757_0_power_GT(x1)
1534_0_power_Load(x1) → 757_0_power_GT(x1)
1633_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(797_0_power_Return(x0)) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return
1175_0_fact_GT(0) → 1113_0_power_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1113_0_power_Return, x1) → Cond_1252_1_fact_InvokeMethod(x1 > 0, 1113_0_power_Return, x1)
Cond_1252_1_fact_InvokeMethod(TRUE, 1113_0_power_Return, x1) → 1113_0_power_Return
1738_1_cos_InvokeMethod(797_0_power_Return(x0), 0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1113_0_power_Return

The integer pair graph contains the following rules and edges:
(1): COND_1404_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[1]) → 1534_1_COS_INVOKEMETHOD(1534_0_power_Load(2 * x1[1]), x1[1])
(2): 1534_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[2]) → COND_1534_1_COS_INVOKEMETHOD(x1[2] > 0, 1113_0_power_Return, x1[2])
(3): COND_1534_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[3]) → 1633_1_COS_INVOKEMETHOD(1633_0_fact_Load(2 * x1[3]), x1[3])
(4): 1633_1_COS_INVOKEMETHOD(1113_0_power_Return, x1[4]) → COND_1633_1_COS_INVOKEMETHOD(x1[4] > 1, 1113_0_power_Return, x1[4])
(5): COND_1633_1_COS_INVOKEMETHOD(TRUE, 1113_0_power_Return, x1[5]) → 1404_1_COS_INVOKEMETHOD(1404_0_power_Load(x1[5] - 1), x1[5] - 1)

(1) -> (2), if (1534_0_power_Load(2 * x1[1]) →* 1113_0_power_Returnx1[1]* x1[2])


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


(3) -> (4), if (1633_0_fact_Load(2 * x1[3]) →* 1113_0_power_Returnx1[3]* x1[4])


(4) -> (5), if (x1[4] > 1x1[4]* x1[5])



The set Q consists of the following terms:
1404_0_power_Load(x0)
1534_0_power_Load(x0)
1633_0_fact_Load(x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(797_0_power_Return(x0))
864_1_power_InvokeMethod(1113_0_power_Return)
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1113_0_power_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(797_0_power_Return(x0), 0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)

(43) IDependencyGraphProof (EQUIVALENT transformation)

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

(44) TRUE

(45) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: TaylorSeriesRec.sin(II)I
SCC calls the following helper methods: TaylorSeriesRec.power(II)I, TaylorSeriesRec.fact(I)I, TaylorSeriesRec.sin(II)I
Performed SCC analyses: UsedFieldsAnalysis

(46) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 34 rules for P and 58 rules for R.


P rules:
1276_0_sin_GT(EOS(STATIC_1276), i233, i240, i240) → 1290_0_sin_GT(EOS(STATIC_1290), i233, i240, i240)
1290_0_sin_GT(EOS(STATIC_1290), i233, i240, i240) → 1299_0_sin_ConstantStackPush(EOS(STATIC_1299), i233, i240) | >(i240, 0)
1299_0_sin_ConstantStackPush(EOS(STATIC_1299), i233, i240) → 1310_0_sin_Load(EOS(STATIC_1310), i233, i240, -1)
1310_0_sin_Load(EOS(STATIC_1310), i233, i240, matching1) → 1324_0_sin_InvokeMethod(EOS(STATIC_1324), i233, i240, -1, i240) | =(matching1, -1)
1324_0_sin_InvokeMethod(EOS(STATIC_1324), i233, i240, matching1, i240) → 1336_1_sin_InvokeMethod(1336_0_power_Load(EOS(STATIC_1336), -1, i240), i233, i240, -1, i240) | =(matching1, -1)
1336_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i186), i233, i253, matching1, i253) → 1395_0_power_Return(EOS(STATIC_1395), i233, i253, -1, i253, i186) | =(matching1, -1)
1395_0_power_Return(EOS(STATIC_1395), i233, i253, matching1, i253, i186) → 1407_0_sin_Load(EOS(STATIC_1407), i233, i253, i186) | =(matching1, -1)
1407_0_sin_Load(EOS(STATIC_1407), i233, i253, i186) → 1420_0_sin_ConstantStackPush(EOS(STATIC_1420), i233, i253, i186, i233)
1420_0_sin_ConstantStackPush(EOS(STATIC_1420), i233, i253, i186, i233) → 1433_0_sin_Load(EOS(STATIC_1433), i233, i253, i186, i233, 2)
1433_0_sin_Load(EOS(STATIC_1433), i233, i253, i186, i233, matching1) → 1447_0_sin_IntArithmetic(EOS(STATIC_1447), i233, i253, i186, i233, 2, i253) | =(matching1, 2)
1447_0_sin_IntArithmetic(EOS(STATIC_1447), i233, i253, i186, i233, matching1, i253) → 1466_0_sin_ConstantStackPush(EOS(STATIC_1466), i233, i253, i186, i233, *(2, i253)) | &&(>=(i253, 1), =(matching1, 2))
1466_0_sin_ConstantStackPush(EOS(STATIC_1466), i233, i253, i186, i233, i283) → 1478_0_sin_IntArithmetic(EOS(STATIC_1478), i233, i253, i186, i233, i283, 1)
1478_0_sin_IntArithmetic(EOS(STATIC_1478), i233, i253, i186, i233, i283, matching1) → 1492_0_sin_InvokeMethod(EOS(STATIC_1492), i233, i253, i186, i233, +(i283, 1)) | &&(>(i283, 0), =(matching1, 1))
1492_0_sin_InvokeMethod(EOS(STATIC_1492), i233, i253, i186, i233, i290) → 1501_1_sin_InvokeMethod(1501_0_power_Load(EOS(STATIC_1501), i233, i290), i233, i253, i186, i233, i290)
1501_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i310), i311, i253, i186, i311, i312) → 1551_0_power_Return(EOS(STATIC_1551), i311, i253, i186, i311, i312, i310)
1551_0_power_Return(EOS(STATIC_1551), i311, i253, i186, i311, i312, i310) → 1556_0_sin_IntArithmetic(EOS(STATIC_1556), i311, i253, i186, i310)
1556_0_sin_IntArithmetic(EOS(STATIC_1556), i311, i253, i186, i310) → 1566_0_sin_ConstantStackPush(EOS(STATIC_1566), i311, i253, *(i186, i310))
1566_0_sin_ConstantStackPush(EOS(STATIC_1566), i311, i253, i322) → 1576_0_sin_Load(EOS(STATIC_1576), i311, i253, i322, 2)
1576_0_sin_Load(EOS(STATIC_1576), i311, i253, i322, matching1) → 1585_0_sin_IntArithmetic(EOS(STATIC_1585), i311, i253, i322, 2, i253) | =(matching1, 2)
1585_0_sin_IntArithmetic(EOS(STATIC_1585), i311, i253, i322, matching1, i253) → 1593_0_sin_ConstantStackPush(EOS(STATIC_1593), i311, i253, i322, *(2, i253)) | &&(>=(i253, 1), =(matching1, 2))
1593_0_sin_ConstantStackPush(EOS(STATIC_1593), i311, i253, i322, i329) → 1601_0_sin_IntArithmetic(EOS(STATIC_1601), i311, i253, i322, i329, 1)
1601_0_sin_IntArithmetic(EOS(STATIC_1601), i311, i253, i322, i329, matching1) → 1611_0_sin_InvokeMethod(EOS(STATIC_1611), i311, i253, i322, +(i329, 1)) | &&(>(i329, 0), =(matching1, 1))
1611_0_sin_InvokeMethod(EOS(STATIC_1611), i311, i253, i322, i334) → 1619_1_sin_InvokeMethod(1619_0_fact_Load(EOS(STATIC_1619), i334), i311, i253, i322, i334)
1619_1_sin_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), i279), i311, i253, i322, i352) → 1678_0_fact_Return(EOS(STATIC_1678), i311, i253, i322, i352, i279)
1678_0_fact_Return(EOS(STATIC_1678), i311, i253, i322, i352, i279) → 1687_0_sin_IntArithmetic(EOS(STATIC_1687), i311, i253, i322, i279)
1687_0_sin_IntArithmetic(EOS(STATIC_1687), i311, i253, i322, i279) → 1693_0_sin_Load(EOS(STATIC_1693), i311, i253, /(i322, i279)) | >=(i279, 1)
1693_0_sin_Load(EOS(STATIC_1693), i311, i253, i355) → 1703_0_sin_Load(EOS(STATIC_1703), i253, i355, i311)
1703_0_sin_Load(EOS(STATIC_1703), i253, i355, i311) → 1709_0_sin_ConstantStackPush(EOS(STATIC_1709), i355, i311, i253)
1709_0_sin_ConstantStackPush(EOS(STATIC_1709), i355, i311, i253) → 1715_0_sin_IntArithmetic(EOS(STATIC_1715), i355, i311, i253, 1)
1715_0_sin_IntArithmetic(EOS(STATIC_1715), i355, i311, i253, matching1) → 1723_0_sin_InvokeMethod(EOS(STATIC_1723), i355, i311, -(i253, 1)) | &&(>(i253, 0), =(matching1, 1))
1723_0_sin_InvokeMethod(EOS(STATIC_1723), i355, i311, i362) → 1731_1_sin_InvokeMethod(1731_0_sin_Load(EOS(STATIC_1731), i311, i362), i355, i311, i362)
1731_0_sin_Load(EOS(STATIC_1731), i311, i362) → 1740_0_sin_Load(EOS(STATIC_1740), i311, i362)
1740_0_sin_Load(EOS(STATIC_1740), i311, i362) → 1268_0_sin_Load(EOS(STATIC_1268), i311, i362)
1268_0_sin_Load(EOS(STATIC_1268), i233, i234) → 1276_0_sin_GT(EOS(STATIC_1276), i233, i234, i234)
R rules:
1336_0_power_Load(EOS(STATIC_1336), matching1, i240) → 1352_0_power_Load(EOS(STATIC_1352), -1, i240) | =(matching1, -1)
1352_0_power_Load(EOS(STATIC_1352), matching1, i240) → 741_0_power_Load(EOS(STATIC_741), -1, i240) | =(matching1, -1)
1501_0_power_Load(EOS(STATIC_1501), i233, i290) → 1513_0_power_Load(EOS(STATIC_1513), i233, i290)
1513_0_power_Load(EOS(STATIC_1513), i233, i290) → 741_0_power_Load(EOS(STATIC_741), i233, i290)
1619_0_fact_Load(EOS(STATIC_1619), i334) → 1635_0_fact_Load(EOS(STATIC_1635), i334)
1635_0_fact_Load(EOS(STATIC_1635), i334) → 1167_0_fact_Load(EOS(STATIC_1167), i334)
874_0_power_Load(EOS(STATIC_874), i87) → 741_0_power_Load(EOS(STATIC_741), i87, i111)
1261_0_fact_Load(EOS(STATIC_1261)) → 1167_0_fact_Load(EOS(STATIC_1167), i230)
741_0_power_Load(EOS(STATIC_741), i87, i88) → 757_0_power_GT(EOS(STATIC_757), i87, i88, i88)
757_0_power_GT(EOS(STATIC_757), i87, matching1, matching2) → 769_0_power_GT(EOS(STATIC_769), i87, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
757_0_power_GT(EOS(STATIC_757), i87, i96, i96) → 770_0_power_GT(EOS(STATIC_770), i87, i96, i96)
769_0_power_GT(EOS(STATIC_769), i87, matching1, matching2) → 785_0_power_ConstantStackPush(EOS(STATIC_785), i87, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
770_0_power_GT(EOS(STATIC_770), i87, i96, i96) → 786_0_power_Load(EOS(STATIC_786), i87, i96) | >(i96, 0)
785_0_power_ConstantStackPush(EOS(STATIC_785), i87, matching1) → 797_0_power_Return(EOS(STATIC_797), i87, 0, 1) | =(matching1, 0)
786_0_power_Load(EOS(STATIC_786), i87, i96) → 799_0_power_Load(EOS(STATIC_799), i87, i96, i87)
799_0_power_Load(EOS(STATIC_799), i87, i96, i87) → 812_0_power_Load(EOS(STATIC_812), i96, i87, i87)
812_0_power_Load(EOS(STATIC_812), i96, i87, i87) → 832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96)
832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96) → 844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96)
844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96) → 857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) | >(i96, 0)
857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) → 864_1_power_InvokeMethod(864_0_power_Load(EOS(STATIC_864), i87), i87, i87)
864_0_power_Load(EOS(STATIC_864), i87) → 874_0_power_Load(EOS(STATIC_874), i87)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), i121, matching1, matching2), i121, i121) → 918_0_power_Return(EOS(STATIC_918), i121, i121, 0, i121, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i186), i192, i192) → 1159_0_power_Return(EOS(STATIC_1159), i192, i192, i186)
918_0_power_Return(EOS(STATIC_918), i121, i121, matching1, i121, matching2, matching3) → 924_0_power_IntArithmetic(EOS(STATIC_924), i121, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
924_0_power_IntArithmetic(EOS(STATIC_924), i121, matching1) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i121, 1) | =(matching1, 1)
1094_0_power_Return(EOS(STATIC_1094), i179, i179, i180) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i179, i180)
1104_0_power_IntArithmetic(EOS(STATIC_1104), i179, i180) → 1113_0_power_Return(EOS(STATIC_1113), *(i179, i180))
1159_0_power_Return(EOS(STATIC_1159), i192, i192, i186) → 1094_0_power_Return(EOS(STATIC_1094), i192, i192, i186)
1167_0_fact_Load(EOS(STATIC_1167), i206) → 1175_0_fact_GT(EOS(STATIC_1175), i206, i206)
1175_0_fact_GT(EOS(STATIC_1175), matching1, matching2) → 1182_0_fact_GT(EOS(STATIC_1182), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1175_0_fact_GT(EOS(STATIC_1175), i214, i214) → 1183_0_fact_GT(EOS(STATIC_1183), i214, i214)
1182_0_fact_GT(EOS(STATIC_1182), matching1, matching2) → 1195_0_fact_ConstantStackPush(EOS(STATIC_1195), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1183_0_fact_GT(EOS(STATIC_1183), i214, i214) → 1197_0_fact_Load(EOS(STATIC_1197), i214) | >(i214, 0)
1195_0_fact_ConstantStackPush(EOS(STATIC_1195), matching1) → 1204_0_fact_Return(EOS(STATIC_1204), 0, 1) | =(matching1, 0)
1197_0_fact_Load(EOS(STATIC_1197), i214) → 1206_0_fact_Load(EOS(STATIC_1206), i214, i214)
1206_0_fact_Load(EOS(STATIC_1206), i214, i214) → 1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214)
1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214) → 1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214)
1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214) → 1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) | >(i214, 0)
1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) → 1252_1_fact_InvokeMethod(1252_0_fact_Load(EOS(STATIC_1252)), i214)
1252_0_fact_Load(EOS(STATIC_1252)) → 1261_0_fact_Load(EOS(STATIC_1261))
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), matching1, matching2), i214) → 1292_0_fact_Return(EOS(STATIC_1292), i214, 0, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), i279), i214) → 1494_0_fact_Return(EOS(STATIC_1494), i214, i279)
1292_0_fact_Return(EOS(STATIC_1292), i214, matching1, matching2, matching3) → 1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214, matching1) → 1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214, 1) | =(matching1, 1)
1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214, i248) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214, i248)
1425_0_fact_Return(EOS(STATIC_1425), i214, i268) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214, i268)
1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214, i268) → 1449_0_fact_Return(EOS(STATIC_1449), *(i214, i268)) | &&(>=(i214, 1), >=(i268, 1))
1494_0_fact_Return(EOS(STATIC_1494), i214, i279) → 1425_0_fact_Return(EOS(STATIC_1425), i214, i279)
1276_0_sin_GT(EOS(STATIC_1276), i233, matching1, matching2) → 1289_0_sin_GT(EOS(STATIC_1289), i233, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1289_0_sin_GT(EOS(STATIC_1289), i233, matching1, matching2) → 1298_0_sin_Load(EOS(STATIC_1298), i233, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1298_0_sin_Load(EOS(STATIC_1298), i233, matching1) → 1308_0_sin_Return(EOS(STATIC_1308), i233, 0, i233) | =(matching1, 0)
1731_1_sin_InvokeMethod(1308_0_sin_Return(EOS(STATIC_1308), i376, matching1, i376), i355, i376, matching2) → 1766_0_sin_Return(EOS(STATIC_1766), i355, i376, 0, i376, 0, i376) | &&(=(matching1, 0), =(matching2, 0))
1731_1_sin_InvokeMethod(1842_0_sin_Return(EOS(STATIC_1842), i412), i355, i422, i423) → 1885_0_sin_Return(EOS(STATIC_1885), i355, i422, i423, i412)
1766_0_sin_Return(EOS(STATIC_1766), i355, i376, matching1, i376, matching2, i376) → 1775_0_sin_IntArithmetic(EOS(STATIC_1775), i355, i376) | &&(=(matching1, 0), =(matching2, 0))
1775_0_sin_IntArithmetic(EOS(STATIC_1775), i355, i376) → 1831_0_sin_IntArithmetic(EOS(STATIC_1831), i355, i376)
1820_0_sin_Return(EOS(STATIC_1820), i355, i399, i400, i388) → 1831_0_sin_IntArithmetic(EOS(STATIC_1831), i355, i388)
1831_0_sin_IntArithmetic(EOS(STATIC_1831), i355, i388) → 1842_0_sin_Return(EOS(STATIC_1842), +(i355, i388))
1885_0_sin_Return(EOS(STATIC_1885), i355, i422, i423, i412) → 1820_0_sin_Return(EOS(STATIC_1820), i355, i422, i423, i412)

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


P rules:
1336_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x2, -1, x2) → 1501_1_sin_InvokeMethod(1501_0_power_Load(EOS(STATIC_1501), x1, +(*(2, x2), 1)), x1, x2, x0, x1, +(*(2, x2), 1)) | &&(>(+(x2, 1), 1), <(0, *(2, x2)))
1501_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x2, x3, x1, x4) → 1619_1_sin_InvokeMethod(1619_0_fact_Load(EOS(STATIC_1619), +(*(2, x2), 1)), x1, x2, *(x3, x0), +(*(2, x2), 1)) | &&(>(+(x2, 1), 1), <(0, *(2, x2)))
1619_1_sin_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), x0), x1, x2, x3, x4) → 1731_1_sin_InvokeMethod(1336_1_sin_InvokeMethod(1336_0_power_Load(EOS(STATIC_1336), -1, -(x2, 1)), x1, -(x2, 1), -1, -(x2, 1)), /(x3, x0), x1, -(x2, 1)) | &&(>(x2, 1), >(+(x0, 1), 1))
R rules:
1336_0_power_Load(EOS(STATIC_1336), -1, x1) → 757_0_power_GT(EOS(STATIC_757), -1, x1, x1)
1501_0_power_Load(EOS(STATIC_1501), x0, x1) → 757_0_power_GT(EOS(STATIC_757), x0, x1, x1)
1619_0_fact_Load(EOS(STATIC_1619), x0) → 1175_0_fact_GT(EOS(STATIC_1175), x0, x0)
757_0_power_GT(EOS(STATIC_757), x0, 0, 0) → 797_0_power_Return(EOS(STATIC_797), x0, 0, 1)
757_0_power_GT(EOS(STATIC_757), x0, x1, x1) → 864_1_power_InvokeMethod(757_0_power_GT(EOS(STATIC_757), x0, x2, x2), x0, x0) | >(x1, 0)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), arith[1], 0, 1), arith[1], arith[1]) → 1113_0_power_Return(EOS(STATIC_1113), arith[1])
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x1) → 1113_0_power_Return(EOS(STATIC_1113), *(x1, x0))
1175_0_fact_GT(EOS(STATIC_1175), 0, 0) → 1204_0_fact_Return(EOS(STATIC_1204), 0, 1)
1175_0_fact_GT(EOS(STATIC_1175), x0, x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), x1, x1), x0) | >(x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), 0, 1), arith[1]) → 1449_0_fact_Return(EOS(STATIC_1449), arith[1]) | >(+(arith[1], 1), 1)
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), x0), x1) → 1449_0_fact_Return(EOS(STATIC_1449), *(x1, x0)) | &&(>(+(x1, 1), 1), >(+(x0, 1), 1))
1731_1_sin_InvokeMethod(1308_0_sin_Return(EOS(STATIC_1308), x0, 0, x0), x2, x0, 0) → 1842_0_sin_Return(EOS(STATIC_1842), +(x2, x0))
1731_1_sin_InvokeMethod(1842_0_sin_Return(EOS(STATIC_1842), x0), x1, x2, x3) → 1842_0_sin_Return(EOS(STATIC_1842), +(x1, x0))

Filtered ground terms:



1336_0_power_Load(x1, x2, x3) → 1336_0_power_Load(x3)
1336_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1336_1_sin_InvokeMethod(x1, x2, x3, x5)
1449_0_fact_Return(x1, x2) → 1449_0_fact_Return(x2)
1619_0_fact_Load(x1, x2) → 1619_0_fact_Load(x2)
1113_0_power_Return(x1, x2) → 1113_0_power_Return(x2)
1501_0_power_Load(x1, x2, x3) → 1501_0_power_Load(x2, x3)
Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x4, x6)
1842_0_sin_Return(x1, x2) → 1842_0_sin_Return(x2)
1308_0_sin_Return(x1, x2, x3, x4) → 1308_0_sin_Return(x2, x4)
Cond_1252_1_fact_InvokeMethod(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod(x1, x3)
1204_0_fact_Return(x1, x2, x3) → 1204_0_fact_Return
1175_0_fact_GT(x1, x2, x3) → 1175_0_fact_GT(x2, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1175_0_fact_GT(x1, x3, x4, x5)
797_0_power_Return(x1, x2, x3, x4) → 797_0_power_Return(x2)
757_0_power_GT(x1, x2, x3, x4) → 757_0_power_GT(x2, x3, x4)
Cond_757_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_757_0_power_GT(x1, x3, x4, x5, x6)

Filtered duplicate args:



1336_1_sin_InvokeMethod(x1, x2, x3, x4) → 1336_1_sin_InvokeMethod(x1, x2, x4)
Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x5)
1501_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1501_1_sin_InvokeMethod(x1, x3, x4, x5, x6)
Cond_1501_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1501_1_sin_InvokeMethod(x1, x2, x4, x5, x6, x7)
757_0_power_GT(x1, x2, x3) → 757_0_power_GT(x1, x3)
1175_0_fact_GT(x1, x2) → 1175_0_fact_GT(x2)
Cond_757_0_power_GT(x1, x2, x3, x4, x5) → Cond_757_0_power_GT(x1, x2, x4, x5)
864_1_power_InvokeMethod(x1, x2, x3) → 864_1_power_InvokeMethod(x1, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4) → Cond_1175_0_fact_GT(x1, x3, x4)
1308_0_sin_Return(x1, x2) → 1308_0_sin_Return(x2)

Filtered unneeded arguments:



1336_1_sin_InvokeMethod(x1, x2, x3) → 1336_1_sin_InvokeMethod(x1, x3)
Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x4) → Cond_1336_1_sin_InvokeMethod(x1, x4)
1501_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1501_1_sin_InvokeMethod(x1, x2)
Cond_1501_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1501_1_sin_InvokeMethod(x1, x3)
1619_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1619_1_sin_InvokeMethod(x1, x3)
Cond_1619_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1619_1_sin_InvokeMethod(x1, x4)
1731_1_sin_InvokeMethod(x1, x2, x3, x4) → 1731_1_sin_InvokeMethod(x1, x4)
757_0_power_GT(x1, x2) → 757_0_power_GT(x2)
Cond_757_0_power_GT(x1, x2, x3, x4) → Cond_757_0_power_GT(x1, x4)
864_1_power_InvokeMethod(x1, x2) → 864_1_power_InvokeMethod(x1)
1501_0_power_Load(x1, x2) → 1501_0_power_Load(x2)

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


P rules:
1336_1_sin_InvokeMethod(1113_0_power_Return(x0), x2) → 1501_1_sin_InvokeMethod(1501_0_power_Load(+(*(2, x2), 1)), x2) | &&(>(x2, 0), <(0, *(2, x2)))
1501_1_sin_InvokeMethod(1113_0_power_Return(x0), x2) → 1619_1_sin_InvokeMethod(1619_0_fact_Load(+(*(2, x2), 1)), x2) | &&(>(x2, 0), <(0, *(2, x2)))
1619_1_sin_InvokeMethod(1449_0_fact_Return(x0), x2) → 1731_1_sin_InvokeMethod(1336_1_sin_InvokeMethod(1336_0_power_Load(-(x2, 1)), -(x2, 1)), -(x2, 1)) | &&(>(x2, 1), >(x0, 0))
R rules:
1336_0_power_Load(x1) → 757_0_power_GT(x1)
1501_0_power_Load(x1) → 757_0_power_GT(x1)
1619_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → 864_1_power_InvokeMethod(757_0_power_GT(x2)) | >(x1, 0)
864_1_power_InvokeMethod(797_0_power_Return(arith[1])) → 1113_0_power_Return(arith[1])
864_1_power_InvokeMethod(1113_0_power_Return(x0)) → 1113_0_power_Return(*(x1, x0))
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0) | >(x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, arith[1]) → 1449_0_fact_Return(arith[1]) | >(arith[1], 0)
1252_1_fact_InvokeMethod(1449_0_fact_Return(x0), x1) → 1449_0_fact_Return(*(x1, x0)) | &&(>(x1, 0), >(x0, 0))
1731_1_sin_InvokeMethod(1308_0_sin_Return(x0), 0) → 1842_0_sin_Return(+(x2, x0))
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x3) → 1842_0_sin_Return(+(x1, x0))

Performed bisimulation on rules. Used the following equivalence classes: {[1113_0_power_Return_1, 1449_0_fact_Return_1]=1113_0_power_Return_1, [797_0_power_Return_1, 1308_0_sin_Return_1]=797_0_power_Return_1}


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


P rules:
1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 1113_0_power_Return(x0), x2)
COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2), 1)), x2)
1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 1113_0_power_Return(x0), x2)
COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2), 1)), x2)
1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2, 1), >(x0, 0)), 1113_0_power_Return(x0), x2)
COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2, 1)), -(x2, 1))
R rules:
1336_0_power_Load(x1) → 757_0_power_GT(x1)
1501_0_power_Load(x1) → 757_0_power_GT(x1)
1619_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(>(x1, 0), x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(797_0_power_Return(arith[1])) → 1113_0_power_Return(arith[1])
864_1_power_InvokeMethod(1113_0_power_Return(x0)) → 1113_0_power_Return(*(x1, x0))
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(>(x0, 0), x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, arith[1]) → Cond_1252_1_fact_InvokeMethod(>(arith[1], 0), 1204_0_fact_Return, arith[1])
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, arith[1]) → 1113_0_power_Return(arith[1])
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1) → Cond_1252_1_fact_InvokeMethod1(&&(>(x1, 0), >(x0, 0)), 1113_0_power_Return(x0), x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1113_0_power_Return(x0), x1) → 1113_0_power_Return(*(x1, x0))
1731_1_sin_InvokeMethod(797_0_power_Return(x0), 0) → 1842_0_sin_Return(+(x2, x0))
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x3) → 1842_0_sin_Return(+(x1, x0))

(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:
1336_0_power_Load(x1) → 757_0_power_GT(x1)
1501_0_power_Load(x1) → 757_0_power_GT(x1)
1619_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(797_0_power_Return(arith[1])) → 1113_0_power_Return(arith[1])
864_1_power_InvokeMethod(1113_0_power_Return(x0)) → 1113_0_power_Return(x1 * x0)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, arith[1]) → Cond_1252_1_fact_InvokeMethod(arith[1] > 0, 1204_0_fact_Return, arith[1])
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, arith[1]) → 1113_0_power_Return(arith[1])
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1) → Cond_1252_1_fact_InvokeMethod1(x1 > 0 && x0 > 0, 1113_0_power_Return(x0), x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1113_0_power_Return(x0), x1) → 1113_0_power_Return(x1 * x0)
1731_1_sin_InvokeMethod(797_0_power_Return(x0), 0) → 1842_0_sin_Return(x2 + x0)
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x3) → 1842_0_sin_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0]) → COND_1336_1_SIN_INVOKEMETHOD(x2[0] > 0 && 0 < 2 * x2[0], 1113_0_power_Return(x0[0]), x2[0])
(1): COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1]) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(2 * x2[1] + 1), x2[1])
(2): 1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2]) → COND_1501_1_SIN_INVOKEMETHOD(x2[2] > 0 && 0 < 2 * x2[2], 1113_0_power_Return(x0[2]), x2[2])
(3): COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[3]), x2[3]) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(2 * x2[3] + 1), x2[3])
(4): 1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4]) → COND_1619_1_SIN_INVOKEMETHOD(x2[4] > 1 && x0[4] > 0, 1113_0_power_Return(x0[4]), x2[4])
(5): COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5]) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(x2[5] - 1), x2[5] - 1)

(0) -> (1), if (x2[0] > 0 && 0 < 2 * x2[0]1113_0_power_Return(x0[0]) →* 1113_0_power_Return(x0[1])∧x2[0]* x2[1])


(1) -> (2), if (1501_0_power_Load(2 * x2[1] + 1) →* 1113_0_power_Return(x0[2])∧x2[1]* x2[2])


(2) -> (3), if (x2[2] > 0 && 0 < 2 * x2[2]1113_0_power_Return(x0[2]) →* 1113_0_power_Return(x0[3])∧x2[2]* x2[3])


(3) -> (4), if (1619_0_fact_Load(2 * x2[3] + 1) →* 1113_0_power_Return(x0[4])∧x2[3]* x2[4])


(4) -> (5), if (x2[4] > 1 && x0[4] > 01113_0_power_Return(x0[4]) →* 1113_0_power_Return(x0[5])∧x2[4]* x2[5])


(5) -> (0), if (1336_0_power_Load(x2[5] - 1) →* 1113_0_power_Return(x0[0])∧x2[5] - 1* x2[0])



The set Q consists of the following terms:
1336_0_power_Load(x0)
1501_0_power_Load(x0)
1619_0_fact_Load(x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(797_0_power_Return(x0))
864_1_power_InvokeMethod(1113_0_power_Return(x0))
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0)
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1113_0_power_Return(x0), x1)
1731_1_sin_InvokeMethod(797_0_power_Return(x0), 0)
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x1)

(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@1c75ecf6 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 1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 1113_0_power_Return(x0), x2) the following chains were created:
  • We consider the chain 1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0]) → COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0]), COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1]) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1]) which results in the following constraint:

    (1)    (&&(>(x2[0], 0), <(0, *(2, x2[0])))=TRUE1113_0_power_Return(x0[0])=1113_0_power_Return(x0[1])∧x2[0]=x2[1]1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0])≥NonInfC∧1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0])≥COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])∧(UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥))



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

    (2)    (>(x2[0], 0)=TRUE<(0, *(2, x2[0]))=TRUE1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0])≥NonInfC∧1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0])≥COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])∧(UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥))



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

    (3)    (x2[0] + [-1] ≥ 0∧[2]x2[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥)∧[(2)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



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

    (4)    (x2[0] + [-1] ≥ 0∧[2]x2[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥)∧[(2)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



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

    (5)    (x2[0] + [-1] ≥ 0∧[2]x2[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥)∧[(2)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧[1 + (-1)bso_36] ≥ 0)



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

    (6)    (x2[0] + [-1] ≥ 0∧[2]x2[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥)∧0 = 0∧[(2)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)



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

    (7)    (x2[0] ≥ 0∧[1] + [2]x2[0] ≥ 0 ⇒ (UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥)∧0 = 0∧[(4)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)







For Pair COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2), 1)), x2) the following chains were created:
  • We consider the chain COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1]) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1]) which results in the following constraint:

    (8)    (COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1])≥NonInfC∧COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1])≥1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])∧(UIncreasing(1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])), ≥))



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

    (9)    ((UIncreasing(1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])), ≥)∧[bni_37] = 0∧[(-1)bso_38] ≥ 0)



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

    (10)    ((UIncreasing(1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])), ≥)∧[bni_37] = 0∧[(-1)bso_38] ≥ 0)



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

    (11)    ((UIncreasing(1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])), ≥)∧[bni_37] = 0∧[(-1)bso_38] ≥ 0)



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

    (12)    ((UIncreasing(1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])), ≥)∧[bni_37] = 0∧0 = 0∧0 = 0∧[(-1)bso_38] ≥ 0)







For Pair 1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 1113_0_power_Return(x0), x2) the following chains were created:
  • We consider the chain 1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2]) → COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2]), COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[3]), x2[3]) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3]) which results in the following constraint:

    (13)    (&&(>(x2[2], 0), <(0, *(2, x2[2])))=TRUE1113_0_power_Return(x0[2])=1113_0_power_Return(x0[3])∧x2[2]=x2[3]1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2])≥NonInfC∧1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2])≥COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])∧(UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥))



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

    (14)    (>(x2[2], 0)=TRUE<(0, *(2, x2[2]))=TRUE1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2])≥NonInfC∧1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2])≥COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])∧(UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥))



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

    (15)    (x2[2] + [-1] ≥ 0∧[2]x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥)∧[bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧[(-1)bso_40] ≥ 0)



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

    (16)    (x2[2] + [-1] ≥ 0∧[2]x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥)∧[bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧[(-1)bso_40] ≥ 0)



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

    (17)    (x2[2] + [-1] ≥ 0∧[2]x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥)∧[bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧[(-1)bso_40] ≥ 0)



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

    (18)    (x2[2] + [-1] ≥ 0∧[2]x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥)∧0 = 0∧[bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧0 = 0∧[(-1)bso_40] ≥ 0)



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

    (19)    (x2[2] ≥ 0∧[1] + [2]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥)∧0 = 0∧[(3)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧0 = 0∧[(-1)bso_40] ≥ 0)







For Pair COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2), 1)), x2) the following chains were created:
  • We consider the chain COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[3]), x2[3]) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3]) which results in the following constraint:

    (20)    (COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[3]), x2[3])≥NonInfC∧COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[3]), x2[3])≥1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])∧(UIncreasing(1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])), ≥))



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

    (21)    ((UIncreasing(1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])), ≥)∧[bni_41] = 0∧[1 + (-1)bso_42] ≥ 0)



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

    (22)    ((UIncreasing(1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])), ≥)∧[bni_41] = 0∧[1 + (-1)bso_42] ≥ 0)



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

    (23)    ((UIncreasing(1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])), ≥)∧[bni_41] = 0∧[1 + (-1)bso_42] ≥ 0)



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

    (24)    ((UIncreasing(1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])), ≥)∧[bni_41] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_42] ≥ 0)







For Pair 1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2, 1), >(x0, 0)), 1113_0_power_Return(x0), x2) the following chains were created:
  • We consider the chain 1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4]) → COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4]), COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5]) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1)) which results in the following constraint:

    (25)    (&&(>(x2[4], 1), >(x0[4], 0))=TRUE1113_0_power_Return(x0[4])=1113_0_power_Return(x0[5])∧x2[4]=x2[5]1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4])≥NonInfC∧1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4])≥COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])∧(UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥))



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

    (26)    (>(x2[4], 1)=TRUE>(x0[4], 0)=TRUE1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4])≥NonInfC∧1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4])≥COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])∧(UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥))



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

    (27)    (x2[4] + [-2] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥)∧[(-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[(-1)bso_44] ≥ 0)



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

    (28)    (x2[4] + [-2] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥)∧[(-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[(-1)bso_44] ≥ 0)



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

    (29)    (x2[4] + [-2] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥)∧[(-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[(-1)bso_44] ≥ 0)



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

    (30)    (x2[4] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥)∧[(-1)Bound*bni_43 + (4)bni_43] + [(2)bni_43]x2[4] ≥ 0∧[(-1)bso_44] ≥ 0)



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

    (31)    (x2[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥)∧[(-1)Bound*bni_43 + (4)bni_43] + [(2)bni_43]x2[4] ≥ 0∧[(-1)bso_44] ≥ 0)







For Pair COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2, 1)), -(x2, 1)) the following chains were created:
  • We consider the chain COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5]) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1)) which results in the following constraint:

    (32)    (COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5])≥NonInfC∧COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5])≥1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))∧(UIncreasing(1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))), ≥))



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

    (33)    ((UIncreasing(1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))), ≥)∧[bni_45] = 0∧[(-1)bso_46] ≥ 0)



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

    (34)    ((UIncreasing(1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))), ≥)∧[bni_45] = 0∧[(-1)bso_46] ≥ 0)



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

    (35)    ((UIncreasing(1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))), ≥)∧[bni_45] = 0∧[(-1)bso_46] ≥ 0)



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

    (36)    ((UIncreasing(1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))), ≥)∧[bni_45] = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 1113_0_power_Return(x0), x2)
    • (x2[0] ≥ 0∧[1] + [2]x2[0] ≥ 0 ⇒ (UIncreasing(COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])), ≥)∧0 = 0∧[(4)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)

  • COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2), 1)), x2)
    • ((UIncreasing(1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])), ≥)∧[bni_37] = 0∧0 = 0∧0 = 0∧[(-1)bso_38] ≥ 0)

  • 1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 1113_0_power_Return(x0), x2)
    • (x2[2] ≥ 0∧[1] + [2]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])), ≥)∧0 = 0∧[(3)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧0 = 0∧[(-1)bso_40] ≥ 0)

  • COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2), 1)), x2)
    • ((UIncreasing(1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])), ≥)∧[bni_41] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_42] ≥ 0)

  • 1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0), x2) → COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2, 1), >(x0, 0)), 1113_0_power_Return(x0), x2)
    • (x2[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])), ≥)∧[(-1)Bound*bni_43 + (4)bni_43] + [(2)bni_43]x2[4] ≥ 0∧[(-1)bso_44] ≥ 0)

  • COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0), x2) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2, 1)), -(x2, 1))
    • ((UIncreasing(1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))), ≥)∧[bni_45] = 0∧0 = 0∧0 = 0∧[(-1)bso_46] ≥ 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(1336_0_power_Load(x1)) = [-1] + [-1]x1   
POL(757_0_power_GT(x1)) = [1] + x1   
POL(1501_0_power_Load(x1)) = [-1] + [-1]x1   
POL(1619_0_fact_Load(x1)) = [-1] + x1   
POL(1175_0_fact_GT(x1)) = [1] + [-1]x1   
POL(0) = 0   
POL(797_0_power_Return(x1)) = x1   
POL(Cond_757_0_power_GT(x1, x2, x3)) = [-1] + [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(864_1_power_InvokeMethod(x1)) = [1] + [-1]x1   
POL(1113_0_power_Return(x1)) = x1   
POL(*(x1, x2)) = x1·x2   
POL(1204_0_fact_Return) = [-1]   
POL(Cond_1175_0_fact_GT(x1, x2, x3)) = [1] + x2   
POL(1252_1_fact_InvokeMethod(x1, x2)) = [2] + x1 + x2   
POL(Cond_1252_1_fact_InvokeMethod(x1, x2, x3)) = x3   
POL(Cond_1252_1_fact_InvokeMethod1(x1, x2, x3)) = [-1] + x3 + x2   
POL(&&(x1, x2)) = [-1]   
POL(1731_1_sin_InvokeMethod(x1, x2)) = [-1] + [-1]x1   
POL(1842_0_sin_Return(x1)) = x1   
POL(+(x1, x2)) = x1 + x2   
POL(1336_1_SIN_INVOKEMETHOD(x1, x2)) = [2] + [2]x2   
POL(COND_1336_1_SIN_INVOKEMETHOD(x1, x2, x3)) = [1] + [2]x3   
POL(<(x1, x2)) = [-1]   
POL(2) = [2]   
POL(1501_1_SIN_INVOKEMETHOD(x1, x2)) = [1] + [2]x2   
POL(1) = [1]   
POL(COND_1501_1_SIN_INVOKEMETHOD(x1, x2, x3)) = [1] + [2]x3   
POL(1619_1_SIN_INVOKEMETHOD(x1, x2)) = [2]x2   
POL(COND_1619_1_SIN_INVOKEMETHOD(x1, x2, x3)) = [2]x3   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0]) → COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])
COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[3]), x2[3]) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])

The following pairs are in Pbound:

1336_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[0]), x2[0]) → COND_1336_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 1113_0_power_Return(x0[0]), x2[0])
1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2]) → COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])
1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4]) → COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])

The following pairs are in P:

COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1]) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(+(*(2, x2[1]), 1)), x2[1])
1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2]) → COND_1501_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 1113_0_power_Return(x0[2]), x2[2])
1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4]) → COND_1619_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 1113_0_power_Return(x0[4]), x2[4])
COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5]) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(-(x2[5], 1)), -(x2[5], 1))

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

1175_0_fact_GT(0)11204_0_fact_Return1
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1)1Cond_1252_1_fact_InvokeMethod1(&&(>(x1, 0), >(x0, 0)), 1113_0_power_Return(x0), x1)1
1113_0_power_Return(arith[1])1Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, arith[1])1

(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:
1336_0_power_Load(x1) → 757_0_power_GT(x1)
1501_0_power_Load(x1) → 757_0_power_GT(x1)
1619_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(797_0_power_Return(arith[1])) → 1113_0_power_Return(arith[1])
864_1_power_InvokeMethod(1113_0_power_Return(x0)) → 1113_0_power_Return(x1 * x0)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, arith[1]) → Cond_1252_1_fact_InvokeMethod(arith[1] > 0, 1204_0_fact_Return, arith[1])
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, arith[1]) → 1113_0_power_Return(arith[1])
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1) → Cond_1252_1_fact_InvokeMethod1(x1 > 0 && x0 > 0, 1113_0_power_Return(x0), x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1113_0_power_Return(x0), x1) → 1113_0_power_Return(x1 * x0)
1731_1_sin_InvokeMethod(797_0_power_Return(x0), 0) → 1842_0_sin_Return(x2 + x0)
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x3) → 1842_0_sin_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(1): COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1]) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(2 * x2[1] + 1), x2[1])
(2): 1501_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[2]), x2[2]) → COND_1501_1_SIN_INVOKEMETHOD(x2[2] > 0 && 0 < 2 * x2[2], 1113_0_power_Return(x0[2]), x2[2])
(4): 1619_1_SIN_INVOKEMETHOD(1113_0_power_Return(x0[4]), x2[4]) → COND_1619_1_SIN_INVOKEMETHOD(x2[4] > 1 && x0[4] > 0, 1113_0_power_Return(x0[4]), x2[4])
(5): COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5]) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(x2[5] - 1), x2[5] - 1)

(1) -> (2), if (1501_0_power_Load(2 * x2[1] + 1) →* 1113_0_power_Return(x0[2])∧x2[1]* x2[2])


(4) -> (5), if (x2[4] > 1 && x0[4] > 01113_0_power_Return(x0[4]) →* 1113_0_power_Return(x0[5])∧x2[4]* x2[5])



The set Q consists of the following terms:
1336_0_power_Load(x0)
1501_0_power_Load(x0)
1619_0_fact_Load(x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(797_0_power_Return(x0))
864_1_power_InvokeMethod(1113_0_power_Return(x0))
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0)
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1113_0_power_Return(x0), x1)
1731_1_sin_InvokeMethod(797_0_power_Return(x0), 0)
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x1)

(51) IDependencyGraphProof (EQUIVALENT transformation)

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

(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:
1336_0_power_Load(x1) → 757_0_power_GT(x1)
1501_0_power_Load(x1) → 757_0_power_GT(x1)
1619_0_fact_Load(x0) → 1175_0_fact_GT(x0)
757_0_power_GT(0) → 797_0_power_Return(x0)
757_0_power_GT(x1) → Cond_757_0_power_GT(x1 > 0, x1, x2)
Cond_757_0_power_GT(TRUE, x1, x2) → 864_1_power_InvokeMethod(757_0_power_GT(x2))
864_1_power_InvokeMethod(797_0_power_Return(arith[1])) → 1113_0_power_Return(arith[1])
864_1_power_InvokeMethod(1113_0_power_Return(x0)) → 1113_0_power_Return(x1 * x0)
1175_0_fact_GT(0) → 1204_0_fact_Return
1175_0_fact_GT(x0) → Cond_1175_0_fact_GT(x0 > 0, x0, x1)
Cond_1175_0_fact_GT(TRUE, x0, x1) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(x1), x0)
1252_1_fact_InvokeMethod(1204_0_fact_Return, arith[1]) → Cond_1252_1_fact_InvokeMethod(arith[1] > 0, 1204_0_fact_Return, arith[1])
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, arith[1]) → 1113_0_power_Return(arith[1])
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1) → Cond_1252_1_fact_InvokeMethod1(x1 > 0 && x0 > 0, 1113_0_power_Return(x0), x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1113_0_power_Return(x0), x1) → 1113_0_power_Return(x1 * x0)
1731_1_sin_InvokeMethod(797_0_power_Return(x0), 0) → 1842_0_sin_Return(x2 + x0)
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x3) → 1842_0_sin_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(1): COND_1336_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[1]), x2[1]) → 1501_1_SIN_INVOKEMETHOD(1501_0_power_Load(2 * x2[1] + 1), x2[1])
(3): COND_1501_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[3]), x2[3]) → 1619_1_SIN_INVOKEMETHOD(1619_0_fact_Load(2 * x2[3] + 1), x2[3])
(5): COND_1619_1_SIN_INVOKEMETHOD(TRUE, 1113_0_power_Return(x0[5]), x2[5]) → 1336_1_SIN_INVOKEMETHOD(1336_0_power_Load(x2[5] - 1), x2[5] - 1)


The set Q consists of the following terms:
1336_0_power_Load(x0)
1501_0_power_Load(x0)
1619_0_fact_Load(x0)
757_0_power_GT(x0)
Cond_757_0_power_GT(TRUE, x0, x1)
864_1_power_InvokeMethod(797_0_power_Return(x0))
864_1_power_InvokeMethod(1113_0_power_Return(x0))
1175_0_fact_GT(x0)
Cond_1175_0_fact_GT(TRUE, x0, x1)
1252_1_fact_InvokeMethod(1204_0_fact_Return, x0)
Cond_1252_1_fact_InvokeMethod(TRUE, 1204_0_fact_Return, x0)
1252_1_fact_InvokeMethod(1113_0_power_Return(x0), x1)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1113_0_power_Return(x0), x1)
1731_1_sin_InvokeMethod(797_0_power_Return(x0), 0)
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x1)

(54) IDependencyGraphProof (EQUIVALENT transformation)

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

(55) TRUE

(56) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: TaylorSeriesRec.main([Ljava/lang/String;)V
SCC calls the following helper methods: TaylorSeriesRec.exp(II)I, TaylorSeriesRec.cos(II)I, TaylorSeriesRec.sin(II)I, TaylorSeriesRec.power(II)I, TaylorSeriesRec.fact(I)I
Performed SCC analyses: UsedFieldsAnalysis

(57) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 87 rules for P and 178 rules for R.


P rules:
1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(i8)), i339, i339) → 1662_0_main_ArrayLength(EOS(STATIC_1662), java.lang.Object(ARRAY(i8)), i339, i339, java.lang.Object(ARRAY(i8)))
1662_0_main_ArrayLength(EOS(STATIC_1662), java.lang.Object(ARRAY(i8)), i339, i339, java.lang.Object(ARRAY(i8))) → 1670_0_main_GE(EOS(STATIC_1670), java.lang.Object(ARRAY(i8)), i339, i339, i8) | >=(i8, 0)
1670_0_main_GE(EOS(STATIC_1670), java.lang.Object(ARRAY(i8)), i339, i339, i8) → 1681_0_main_GE(EOS(STATIC_1681), java.lang.Object(ARRAY(i8)), i339, i339, i8)
1681_0_main_GE(EOS(STATIC_1681), java.lang.Object(ARRAY(i8)), i339, i339, i8) → 1690_0_main_Load(EOS(STATIC_1690), java.lang.Object(ARRAY(i8)), i339) | <(i339, i8)
1690_0_main_Load(EOS(STATIC_1690), java.lang.Object(ARRAY(i8)), i339) → 1696_0_main_ConstantStackPush(EOS(STATIC_1696), java.lang.Object(ARRAY(i8)), i339, i339)
1696_0_main_ConstantStackPush(EOS(STATIC_1696), java.lang.Object(ARRAY(i8)), i339, i339) → 1704_0_main_IntArithmetic(EOS(STATIC_1704), java.lang.Object(ARRAY(i8)), i339, i339, 2)
1704_0_main_IntArithmetic(EOS(STATIC_1704), java.lang.Object(ARRAY(i8)), i339, i339, matching1) → 1711_0_main_NE(EOS(STATIC_1711), java.lang.Object(ARRAY(i8)), i339, %(i339, 2)) | =(matching1, 2)
1711_0_main_NE(EOS(STATIC_1711), java.lang.Object(ARRAY(i8)), i339, matching1) → 1717_0_main_NE(EOS(STATIC_1717), java.lang.Object(ARRAY(i8)), i339, 1) | =(matching1, 1)
1711_0_main_NE(EOS(STATIC_1711), java.lang.Object(ARRAY(i8)), i339, matching1) → 1718_0_main_NE(EOS(STATIC_1718), java.lang.Object(ARRAY(i8)), i339, 0) | =(matching1, 0)
1717_0_main_NE(EOS(STATIC_1717), java.lang.Object(ARRAY(i8)), i339, matching1) → 1725_0_main_Load(EOS(STATIC_1725), java.lang.Object(ARRAY(i8)), i339) | &&(>(1, 0), =(matching1, 1))
1725_0_main_Load(EOS(STATIC_1725), java.lang.Object(ARRAY(i8)), i339) → 1732_0_main_ConstantStackPush(EOS(STATIC_1732), java.lang.Object(ARRAY(i8)), i339, i339)
1732_0_main_ConstantStackPush(EOS(STATIC_1732), java.lang.Object(ARRAY(i8)), i339, i339) → 1741_0_main_IntArithmetic(EOS(STATIC_1741), java.lang.Object(ARRAY(i8)), i339, i339, 3)
1741_0_main_IntArithmetic(EOS(STATIC_1741), java.lang.Object(ARRAY(i8)), i339, i339, matching1) → 1748_0_main_NE(EOS(STATIC_1748), java.lang.Object(ARRAY(i8)), i339, %(i339, 3)) | =(matching1, 3)
1748_0_main_NE(EOS(STATIC_1748), java.lang.Object(ARRAY(i8)), i339, i379) → 1758_0_main_NE(EOS(STATIC_1758), java.lang.Object(ARRAY(i8)), i339, i379)
1748_0_main_NE(EOS(STATIC_1748), java.lang.Object(ARRAY(i8)), i339, matching1) → 1759_0_main_NE(EOS(STATIC_1759), java.lang.Object(ARRAY(i8)), i339, 0) | =(matching1, 0)
1758_0_main_NE(EOS(STATIC_1758), java.lang.Object(ARRAY(i8)), i339, i379) → 1768_0_main_Load(EOS(STATIC_1768), java.lang.Object(ARRAY(i8)), i339) | >(i379, 0)
1768_0_main_Load(EOS(STATIC_1768), java.lang.Object(ARRAY(i8)), i339) → 1777_0_main_ConstantStackPush(EOS(STATIC_1777), java.lang.Object(ARRAY(i8)), i339, i339)
1777_0_main_ConstantStackPush(EOS(STATIC_1777), java.lang.Object(ARRAY(i8)), i339, i339) → 1786_0_main_IntArithmetic(EOS(STATIC_1786), java.lang.Object(ARRAY(i8)), i339, i339, 5)
1786_0_main_IntArithmetic(EOS(STATIC_1786), java.lang.Object(ARRAY(i8)), i339, i339, matching1) → 1799_0_main_NE(EOS(STATIC_1799), java.lang.Object(ARRAY(i8)), i339, %(i339, 5)) | =(matching1, 5)
1799_0_main_NE(EOS(STATIC_1799), java.lang.Object(ARRAY(i8)), i339, i403) → 1812_0_main_NE(EOS(STATIC_1812), java.lang.Object(ARRAY(i8)), i339, i403)
1799_0_main_NE(EOS(STATIC_1799), java.lang.Object(ARRAY(i8)), i339, matching1) → 1814_0_main_NE(EOS(STATIC_1814), java.lang.Object(ARRAY(i8)), i339, 0) | =(matching1, 0)
1812_0_main_NE(EOS(STATIC_1812), java.lang.Object(ARRAY(i8)), i339, i403) → 1823_0_main_ConstantStackPush(EOS(STATIC_1823), java.lang.Object(ARRAY(i8)), i339) | >(i403, 0)
1823_0_main_ConstantStackPush(EOS(STATIC_1823), java.lang.Object(ARRAY(i8)), i339) → 1835_0_main_Store(EOS(STATIC_1835), java.lang.Object(ARRAY(i8)), i339, 0)
1835_0_main_Store(EOS(STATIC_1835), java.lang.Object(ARRAY(i8)), i339, matching1) → 1846_0_main_Load(EOS(STATIC_1846), java.lang.Object(ARRAY(i8)), i339, 0) | =(matching1, 0)
1846_0_main_Load(EOS(STATIC_1846), java.lang.Object(ARRAY(i8)), i339, matching1) → 1912_0_main_Load(EOS(STATIC_1912), java.lang.Object(ARRAY(i8)), i339, 0) | =(matching1, 0)
1912_0_main_Load(EOS(STATIC_1912), java.lang.Object(ARRAY(i8)), i339, i448) → 1962_0_main_Load(EOS(STATIC_1962), java.lang.Object(ARRAY(i8)), i339, i448)
1962_0_main_Load(EOS(STATIC_1962), java.lang.Object(ARRAY(i8)), i339, i474) → 1984_0_main_Load(EOS(STATIC_1984), java.lang.Object(ARRAY(i8)), i339, i474)
1984_0_main_Load(EOS(STATIC_1984), java.lang.Object(ARRAY(i8)), i339, i483) → 1996_0_main_Load(EOS(STATIC_1996), java.lang.Object(ARRAY(i8)), i339, i483)
1996_0_main_Load(EOS(STATIC_1996), java.lang.Object(ARRAY(i8)), i339, i486) → 1998_0_main_ConstantStackPush(EOS(STATIC_1998), java.lang.Object(ARRAY(i8)), i339, i486, i486)
1998_0_main_ConstantStackPush(EOS(STATIC_1998), java.lang.Object(ARRAY(i8)), i339, i486, i486) → 2000_0_main_GE(EOS(STATIC_2000), java.lang.Object(ARRAY(i8)), i339, i486, i486, 100)
2000_0_main_GE(EOS(STATIC_2000), java.lang.Object(ARRAY(i8)), i339, i489, i489, matching1) → 2002_0_main_GE(EOS(STATIC_2002), java.lang.Object(ARRAY(i8)), i339, i489, i489, 100) | =(matching1, 100)
2000_0_main_GE(EOS(STATIC_2000), java.lang.Object(ARRAY(i8)), i339, matching1, matching2, matching3) → 2003_0_main_GE(EOS(STATIC_2003), java.lang.Object(ARRAY(i8)), i339, 100, 100, 100) | &&(&&(=(matching1, 100), =(matching2, 100)), =(matching3, 100))
2002_0_main_GE(EOS(STATIC_2002), java.lang.Object(ARRAY(i8)), i339, i489, i489, matching1) → 2004_0_main_Inc(EOS(STATIC_2004), java.lang.Object(ARRAY(i8)), i339, i489) | &&(<(i489, 100), =(matching1, 100))
2004_0_main_Inc(EOS(STATIC_2004), java.lang.Object(ARRAY(i8)), i339, i489) → 2010_0_main_JMP(EOS(STATIC_2010), java.lang.Object(ARRAY(i8)), i339, +(i489, 1)) | >=(i489, 0)
2010_0_main_JMP(EOS(STATIC_2010), java.lang.Object(ARRAY(i8)), i339, i494) → 2014_0_main_Load(EOS(STATIC_2014), java.lang.Object(ARRAY(i8)), i339, i494)
2014_0_main_Load(EOS(STATIC_2014), java.lang.Object(ARRAY(i8)), i339, i494) → 1996_0_main_Load(EOS(STATIC_1996), java.lang.Object(ARRAY(i8)), i339, i494)
2003_0_main_GE(EOS(STATIC_2003), java.lang.Object(ARRAY(i8)), i339, matching1, matching2, matching3) → 2008_0_main_Inc(EOS(STATIC_2008), java.lang.Object(ARRAY(i8)), i339) | &&(&&(=(matching1, 100), =(matching2, 100)), =(matching3, 100))
2008_0_main_Inc(EOS(STATIC_2008), java.lang.Object(ARRAY(i8)), i339) → 2012_0_main_JMP(EOS(STATIC_2012), java.lang.Object(ARRAY(i8)), +(i339, 1)) | >=(i339, 0)
2012_0_main_JMP(EOS(STATIC_2012), java.lang.Object(ARRAY(i8)), i495) → 2017_0_main_Load(EOS(STATIC_2017), java.lang.Object(ARRAY(i8)), i495)
2017_0_main_Load(EOS(STATIC_2017), java.lang.Object(ARRAY(i8)), i495) → 1628_0_main_Load(EOS(STATIC_1628), java.lang.Object(ARRAY(i8)), i495)
1628_0_main_Load(EOS(STATIC_1628), java.lang.Object(ARRAY(i8)), i339) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(i8)), i339, i339)
1814_0_main_NE(EOS(STATIC_1814), java.lang.Object(ARRAY(i8)), i339, matching1) → 1824_0_main_Load(EOS(STATIC_1824), java.lang.Object(ARRAY(i8)), i339) | =(matching1, 0)
1824_0_main_Load(EOS(STATIC_1824), java.lang.Object(ARRAY(i8)), i339) → 1837_0_main_ArrayLength(EOS(STATIC_1837), java.lang.Object(ARRAY(i8)), i339, java.lang.Object(ARRAY(i8)))
1837_0_main_ArrayLength(EOS(STATIC_1837), java.lang.Object(ARRAY(i8)), i339, java.lang.Object(ARRAY(i8))) → 1848_0_main_Load(EOS(STATIC_1848), java.lang.Object(ARRAY(i8)), i339, i8) | >=(i8, 0)
1848_0_main_Load(EOS(STATIC_1848), java.lang.Object(ARRAY(i8)), i339, i8) → 1860_0_main_InvokeMethod(EOS(STATIC_1860), java.lang.Object(ARRAY(i8)), i339, i8, i339)
1860_0_main_InvokeMethod(EOS(STATIC_1860), java.lang.Object(ARRAY(i8)), i339, i8, i339) → 1876_1_main_InvokeMethod(1876_0_exp_Load(EOS(STATIC_1876), i8, i339), java.lang.Object(ARRAY(i8)), i339, i8, i339)
1876_1_main_InvokeMethod(1438_0_exp_Return(EOS(STATIC_1438), i452, matching1), java.lang.Object(ARRAY(i8)), matching2, i452, matching3) → 1924_0_exp_Return(EOS(STATIC_1924), java.lang.Object(ARRAY(i452)), 0, i452, 0, i452, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1876_1_main_InvokeMethod(1762_0_exp_Return(EOS(STATIC_1762)), java.lang.Object(ARRAY(i8)), i454, i453, i454) → 1926_0_exp_Return(EOS(STATIC_1926), java.lang.Object(ARRAY(i453)), i454, i453, i454)
1924_0_exp_Return(EOS(STATIC_1924), java.lang.Object(ARRAY(i452)), matching1, i452, matching2, i452, matching3) → 1933_0_main_StackPop(EOS(STATIC_1933), java.lang.Object(ARRAY(i452)), 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1933_0_main_StackPop(EOS(STATIC_1933), java.lang.Object(ARRAY(i452)), matching1) → 1941_0_main_JMP(EOS(STATIC_1941), java.lang.Object(ARRAY(i452)), 0) | =(matching1, 0)
1941_0_main_JMP(EOS(STATIC_1941), java.lang.Object(ARRAY(i452)), matching1) → 1951_0_main_Inc(EOS(STATIC_1951), java.lang.Object(ARRAY(i452)), 0) | =(matching1, 0)
1951_0_main_Inc(EOS(STATIC_1951), java.lang.Object(ARRAY(i452)), matching1) → 2008_0_main_Inc(EOS(STATIC_2008), java.lang.Object(ARRAY(i452)), 0) | =(matching1, 0)
1926_0_exp_Return(EOS(STATIC_1926), java.lang.Object(ARRAY(i453)), i454, i453, i454) → 1935_0_main_StackPop(EOS(STATIC_1935), java.lang.Object(ARRAY(i453)), i454)
1935_0_main_StackPop(EOS(STATIC_1935), java.lang.Object(ARRAY(i453)), i454) → 1943_0_main_JMP(EOS(STATIC_1943), java.lang.Object(ARRAY(i453)), i454)
1943_0_main_JMP(EOS(STATIC_1943), java.lang.Object(ARRAY(i453)), i454) → 1955_0_main_Inc(EOS(STATIC_1955), java.lang.Object(ARRAY(i453)), i454)
1955_0_main_Inc(EOS(STATIC_1955), java.lang.Object(ARRAY(i453)), i454) → 2008_0_main_Inc(EOS(STATIC_2008), java.lang.Object(ARRAY(i453)), i454)
1759_0_main_NE(EOS(STATIC_1759), java.lang.Object(ARRAY(i8)), i339, matching1) → 1770_0_main_Load(EOS(STATIC_1770), java.lang.Object(ARRAY(i8)), i339) | =(matching1, 0)
1770_0_main_Load(EOS(STATIC_1770), java.lang.Object(ARRAY(i8)), i339) → 1779_0_main_ArrayLength(EOS(STATIC_1779), java.lang.Object(ARRAY(i8)), i339, java.lang.Object(ARRAY(i8)))
1779_0_main_ArrayLength(EOS(STATIC_1779), java.lang.Object(ARRAY(i8)), i339, java.lang.Object(ARRAY(i8))) → 1788_0_main_Load(EOS(STATIC_1788), java.lang.Object(ARRAY(i8)), i339, i8) | >=(i8, 0)
1788_0_main_Load(EOS(STATIC_1788), java.lang.Object(ARRAY(i8)), i339, i8) → 1801_0_main_InvokeMethod(EOS(STATIC_1801), java.lang.Object(ARRAY(i8)), i339, i8, i339)
1801_0_main_InvokeMethod(EOS(STATIC_1801), java.lang.Object(ARRAY(i8)), i339, i8, i339) → 1815_1_main_InvokeMethod(1815_0_cos_Load(EOS(STATIC_1815), i8, i339), java.lang.Object(ARRAY(i8)), i339, i8, i339)
1815_1_main_InvokeMethod(1370_0_cos_Return(EOS(STATIC_1370), i416, matching1), java.lang.Object(ARRAY(i8)), matching2, i416, matching3) → 1862_0_cos_Return(EOS(STATIC_1862), java.lang.Object(ARRAY(i416)), 0, i416, 0, i416, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1815_1_main_InvokeMethod(1854_0_cos_Return(EOS(STATIC_1854)), java.lang.Object(ARRAY(i8)), i433, i432, i433) → 1899_0_cos_Return(EOS(STATIC_1899), java.lang.Object(ARRAY(i432)), i433, i432, i433)
1862_0_cos_Return(EOS(STATIC_1862), java.lang.Object(ARRAY(i416)), matching1, i416, matching2, i416, matching3) → 1878_0_main_StackPop(EOS(STATIC_1878), java.lang.Object(ARRAY(i416)), 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1878_0_main_StackPop(EOS(STATIC_1878), java.lang.Object(ARRAY(i416)), matching1) → 1895_0_main_JMP(EOS(STATIC_1895), java.lang.Object(ARRAY(i416)), 0) | =(matching1, 0)
1895_0_main_JMP(EOS(STATIC_1895), java.lang.Object(ARRAY(i416)), matching1) → 1903_0_main_Inc(EOS(STATIC_1903), java.lang.Object(ARRAY(i416)), 0) | =(matching1, 0)
1903_0_main_Inc(EOS(STATIC_1903), java.lang.Object(ARRAY(i416)), matching1) → 1951_0_main_Inc(EOS(STATIC_1951), java.lang.Object(ARRAY(i416)), 0) | =(matching1, 0)
1899_0_cos_Return(EOS(STATIC_1899), java.lang.Object(ARRAY(i432)), i433, i432, i433) → 1906_0_main_StackPop(EOS(STATIC_1906), java.lang.Object(ARRAY(i432)), i433)
1906_0_main_StackPop(EOS(STATIC_1906), java.lang.Object(ARRAY(i432)), i433) → 1922_0_main_JMP(EOS(STATIC_1922), java.lang.Object(ARRAY(i432)), i433)
1922_0_main_JMP(EOS(STATIC_1922), java.lang.Object(ARRAY(i432)), i433) → 1930_0_main_Inc(EOS(STATIC_1930), java.lang.Object(ARRAY(i432)), i433)
1930_0_main_Inc(EOS(STATIC_1930), java.lang.Object(ARRAY(i432)), i433) → 1955_0_main_Inc(EOS(STATIC_1955), java.lang.Object(ARRAY(i432)), i433)
1718_0_main_NE(EOS(STATIC_1718), java.lang.Object(ARRAY(i8)), i339, matching1) → 1726_0_main_Load(EOS(STATIC_1726), java.lang.Object(ARRAY(i8)), i339) | =(matching1, 0)
1726_0_main_Load(EOS(STATIC_1726), java.lang.Object(ARRAY(i8)), i339) → 1734_0_main_ArrayLength(EOS(STATIC_1734), java.lang.Object(ARRAY(i8)), i339, java.lang.Object(ARRAY(i8)))
1734_0_main_ArrayLength(EOS(STATIC_1734), java.lang.Object(ARRAY(i8)), i339, java.lang.Object(ARRAY(i8))) → 1743_0_main_Load(EOS(STATIC_1743), java.lang.Object(ARRAY(i8)), i339, i8) | >=(i8, 0)
1743_0_main_Load(EOS(STATIC_1743), java.lang.Object(ARRAY(i8)), i339, i8) → 1749_0_main_InvokeMethod(EOS(STATIC_1749), java.lang.Object(ARRAY(i8)), i339, i8, i339)
1749_0_main_InvokeMethod(EOS(STATIC_1749), java.lang.Object(ARRAY(i8)), i339, i8, i339) → 1760_1_main_InvokeMethod(1760_0_sin_Load(EOS(STATIC_1760), i8, i339), java.lang.Object(ARRAY(i8)), i339, i8, i339)
1760_1_main_InvokeMethod(1308_0_sin_Return(EOS(STATIC_1308), i391, matching1, i391), java.lang.Object(ARRAY(i8)), matching2, i391, matching3) → 1802_0_sin_Return(EOS(STATIC_1802), java.lang.Object(ARRAY(i391)), 0, i391, 0, i391, 0, i391) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1760_1_main_InvokeMethod(1842_0_sin_Return(EOS(STATIC_1842), i412), java.lang.Object(ARRAY(i8)), i425, i424, i425) → 1888_0_sin_Return(EOS(STATIC_1888), java.lang.Object(ARRAY(i424)), i425, i424, i425, i412)
1802_0_sin_Return(EOS(STATIC_1802), java.lang.Object(ARRAY(i391)), matching1, i391, matching2, i391, matching3, i391) → 1817_0_main_StackPop(EOS(STATIC_1817), java.lang.Object(ARRAY(i391)), 0, i391) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1817_0_main_StackPop(EOS(STATIC_1817), java.lang.Object(ARRAY(i391)), matching1, i391) → 1828_0_main_JMP(EOS(STATIC_1828), java.lang.Object(ARRAY(i391)), 0) | =(matching1, 0)
1828_0_main_JMP(EOS(STATIC_1828), java.lang.Object(ARRAY(i391)), matching1) → 1838_0_main_Inc(EOS(STATIC_1838), java.lang.Object(ARRAY(i391)), 0) | =(matching1, 0)
1838_0_main_Inc(EOS(STATIC_1838), java.lang.Object(ARRAY(i391)), matching1) → 1903_0_main_Inc(EOS(STATIC_1903), java.lang.Object(ARRAY(i391)), 0) | =(matching1, 0)
1888_0_sin_Return(EOS(STATIC_1888), java.lang.Object(ARRAY(i424)), i425, i424, i425, i412) → 1821_0_sin_Return(EOS(STATIC_1821), java.lang.Object(ARRAY(i424)), i425, i424, i425, i412)
1821_0_sin_Return(EOS(STATIC_1821), java.lang.Object(ARRAY(i401)), i402, i401, i402, i388) → 1834_0_main_StackPop(EOS(STATIC_1834), java.lang.Object(ARRAY(i401)), i402, i388)
1834_0_main_StackPop(EOS(STATIC_1834), java.lang.Object(ARRAY(i401)), i402, i388) → 1845_0_main_JMP(EOS(STATIC_1845), java.lang.Object(ARRAY(i401)), i402)
1845_0_main_JMP(EOS(STATIC_1845), java.lang.Object(ARRAY(i401)), i402) → 1857_0_main_Inc(EOS(STATIC_1857), java.lang.Object(ARRAY(i401)), i402)
1857_0_main_Inc(EOS(STATIC_1857), java.lang.Object(ARRAY(i401)), i402) → 1930_0_main_Inc(EOS(STATIC_1930), java.lang.Object(ARRAY(i401)), i402)
R rules:
1876_0_exp_Load(EOS(STATIC_1876), i8, i339) → 1894_0_exp_Load(EOS(STATIC_1894), i8, i339)
1894_0_exp_Load(EOS(STATIC_1894), i8, i339) → 1388_0_exp_Load(EOS(STATIC_1388), i8, i339)
1815_0_cos_Load(EOS(STATIC_1815), i8, i339) → 1826_0_cos_Load(EOS(STATIC_1826), i8, i339)
1826_0_cos_Load(EOS(STATIC_1826), i8, i339) → 1320_0_cos_Load(EOS(STATIC_1320), i8, i339)
1760_0_sin_Load(EOS(STATIC_1760), i8, i339) → 1771_0_sin_Load(EOS(STATIC_1771), i8, i339)
1771_0_sin_Load(EOS(STATIC_1771), i8, i339) → 1268_0_sin_Load(EOS(STATIC_1268), i8, i339)
1486_0_power_Load(EOS(STATIC_1486), i8, i264) → 741_0_power_Load(EOS(STATIC_741), i8, i264)
1559_0_fact_Load(EOS(STATIC_1559), i299) → 1167_0_fact_Load(EOS(STATIC_1167), i299)
1683_0_exp_Load(EOS(STATIC_1683), i298) → 1388_0_exp_Load(EOS(STATIC_1388), i298, i350)
1416_0_power_Load(EOS(STATIC_1416), i249) → 741_0_power_Load(EOS(STATIC_741), -1, i249)
1548_0_power_Load(EOS(STATIC_1548), i8) → 741_0_power_Load(EOS(STATIC_741), i8, i305)
1661_0_fact_Load(EOS(STATIC_1661)) → 1167_0_fact_Load(EOS(STATIC_1167), i337)
1746_0_cos_Load(EOS(STATIC_1746), i320) → 1320_0_cos_Load(EOS(STATIC_1320), i320, i363)
1352_0_power_Load(EOS(STATIC_1352), i240) → 741_0_power_Load(EOS(STATIC_741), -1, i240)
1513_0_power_Load(EOS(STATIC_1513), i233) → 741_0_power_Load(EOS(STATIC_741), i233, i290)
1635_0_fact_Load(EOS(STATIC_1635)) → 1167_0_fact_Load(EOS(STATIC_1167), i334)
1740_0_sin_Load(EOS(STATIC_1740), i311) → 1268_0_sin_Load(EOS(STATIC_1268), i311, i362)
874_0_power_Load(EOS(STATIC_874), i87) → 741_0_power_Load(EOS(STATIC_741), i87, i111)
1261_0_fact_Load(EOS(STATIC_1261)) → 1167_0_fact_Load(EOS(STATIC_1167), i230)
1388_0_exp_Load(EOS(STATIC_1388), i8, i258) → 1400_0_exp_GT(EOS(STATIC_1400), i8, i258, i258)
1400_0_exp_GT(EOS(STATIC_1400), i8, matching1, matching2) → 1412_0_exp_GT(EOS(STATIC_1412), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1400_0_exp_GT(EOS(STATIC_1400), i8, i264, i264) → 1413_0_exp_GT(EOS(STATIC_1413), i8, i264, i264)
1412_0_exp_GT(EOS(STATIC_1412), i8, matching1, matching2) → 1428_0_exp_ConstantStackPush(EOS(STATIC_1428), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1413_0_exp_GT(EOS(STATIC_1413), i8, i264, i264) → 1430_0_exp_Load(EOS(STATIC_1430), i8, i264) | >(i264, 0)
1428_0_exp_ConstantStackPush(EOS(STATIC_1428), i8, matching1) → 1438_0_exp_Return(EOS(STATIC_1438), i8, 0) | =(matching1, 0)
1430_0_exp_Load(EOS(STATIC_1430), i8, i264) → 1440_0_exp_Load(EOS(STATIC_1440), i8, i264, i8)
1440_0_exp_Load(EOS(STATIC_1440), i8, i264, i8) → 1458_0_exp_InvokeMethod(EOS(STATIC_1458), i8, i264, i8, i264)
1458_0_exp_InvokeMethod(EOS(STATIC_1458), i8, i264, i8, i264) → 1474_1_exp_InvokeMethod(1474_0_power_Load(EOS(STATIC_1474), i8, i264), i8, i264, i8, i264)
1474_0_power_Load(EOS(STATIC_1474), i8, i264) → 1486_0_power_Load(EOS(STATIC_1486), i8, i264)
1474_1_exp_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i186), i298, i299, i298, i299) → 1526_0_power_Return(EOS(STATIC_1526), i298, i299, i298, i299, i186)
1526_0_power_Return(EOS(STATIC_1526), i298, i299, i298, i299, i186) → 1533_0_exp_Load(EOS(STATIC_1533), i298, i299, i186)
1533_0_exp_Load(EOS(STATIC_1533), i298, i299, i186) → 1546_0_exp_InvokeMethod(EOS(STATIC_1546), i298, i299, i186, i299)
1546_0_exp_InvokeMethod(EOS(STATIC_1546), i298, i299, i186, i299) → 1554_1_exp_InvokeMethod(1554_0_fact_Load(EOS(STATIC_1554), i299), i298, i299, i186, i299)
1554_0_fact_Load(EOS(STATIC_1554), i299) → 1559_0_fact_Load(EOS(STATIC_1559), i299)
1554_1_exp_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), i279), i298, i326, i186, i326) → 1590_0_fact_Return(EOS(STATIC_1590), i298, i326, i186, i326, i279)
1590_0_fact_Return(EOS(STATIC_1590), i298, i326, i186, i326, i279) → 1598_0_exp_IntArithmetic(EOS(STATIC_1598), i298, i326, i186, i279)
1598_0_exp_IntArithmetic(EOS(STATIC_1598), i298, i326, i186, i279) → 1608_0_exp_Load(EOS(STATIC_1608), i298, i326) | >=(i279, 1)
1608_0_exp_Load(EOS(STATIC_1608), i298, i326) → 1616_0_exp_Load(EOS(STATIC_1616), i326, i298)
1616_0_exp_Load(EOS(STATIC_1616), i326, i298) → 1632_0_exp_ConstantStackPush(EOS(STATIC_1632), i298, i326)
1632_0_exp_ConstantStackPush(EOS(STATIC_1632), i298, i326) → 1659_0_exp_IntArithmetic(EOS(STATIC_1659), i298, i326)
1659_0_exp_IntArithmetic(EOS(STATIC_1659), i298, i326) → 1664_0_exp_InvokeMethod(EOS(STATIC_1664), i298) | >(i326, 0)
1664_0_exp_InvokeMethod(EOS(STATIC_1664), i298) → 1672_1_exp_InvokeMethod(1672_0_exp_Load(EOS(STATIC_1672), i298), i298)
1672_0_exp_Load(EOS(STATIC_1672), i298) → 1683_0_exp_Load(EOS(STATIC_1683), i298)
1672_1_exp_InvokeMethod(1438_0_exp_Return(EOS(STATIC_1438), i358, matching1), i358) → 1706_0_exp_Return(EOS(STATIC_1706), i358, 0, i358, 0) | =(matching1, 0)
1672_1_exp_InvokeMethod(1762_0_exp_Return(EOS(STATIC_1762)), i386) → 1794_0_exp_Return(EOS(STATIC_1794), i386)
1706_0_exp_Return(EOS(STATIC_1706), i358, matching1, i358, matching2) → 1712_0_exp_IntArithmetic(EOS(STATIC_1712)) | &&(=(matching1, 0), =(matching2, 0))
1712_0_exp_IntArithmetic(EOS(STATIC_1712)) → 1752_0_exp_IntArithmetic(EOS(STATIC_1752))
1744_0_exp_Return(EOS(STATIC_1744), i365) → 1752_0_exp_IntArithmetic(EOS(STATIC_1752))
1752_0_exp_IntArithmetic(EOS(STATIC_1752)) → 1762_0_exp_Return(EOS(STATIC_1762))
1794_0_exp_Return(EOS(STATIC_1794), i386) → 1744_0_exp_Return(EOS(STATIC_1744), i386)
1320_0_cos_Load(EOS(STATIC_1320), i8, i243) → 1331_0_cos_GT(EOS(STATIC_1331), i8, i243, i243)
1331_0_cos_GT(EOS(STATIC_1331), i8, matching1, matching2) → 1348_0_cos_GT(EOS(STATIC_1348), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1331_0_cos_GT(EOS(STATIC_1331), i8, i249, i249) → 1349_0_cos_GT(EOS(STATIC_1349), i8, i249, i249)
1348_0_cos_GT(EOS(STATIC_1348), i8, matching1, matching2) → 1359_0_cos_ConstantStackPush(EOS(STATIC_1359), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1349_0_cos_GT(EOS(STATIC_1349), i8, i249, i249) → 1361_0_cos_ConstantStackPush(EOS(STATIC_1361), i8, i249) | >(i249, 0)
1359_0_cos_ConstantStackPush(EOS(STATIC_1359), i8, matching1) → 1370_0_cos_Return(EOS(STATIC_1370), i8, 0) | =(matching1, 0)
1361_0_cos_ConstantStackPush(EOS(STATIC_1361), i8, i249) → 1372_0_cos_Load(EOS(STATIC_1372), i8, i249)
1372_0_cos_Load(EOS(STATIC_1372), i8, i249) → 1391_0_cos_InvokeMethod(EOS(STATIC_1391), i8, i249, i249)
1391_0_cos_InvokeMethod(EOS(STATIC_1391), i8, i249, i249) → 1404_1_cos_InvokeMethod(1404_0_power_Load(EOS(STATIC_1404), i249), i8, i249, i249)
1404_0_power_Load(EOS(STATIC_1404), i249) → 1416_0_power_Load(EOS(STATIC_1416), i249)
1404_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i186), i8, i278, i278) → 1464_0_power_Return(EOS(STATIC_1464), i8, i278, i278, i186)
1464_0_power_Return(EOS(STATIC_1464), i8, i278, i278, i186) → 1477_0_cos_Load(EOS(STATIC_1477), i8, i278, i186)
1477_0_cos_Load(EOS(STATIC_1477), i8, i278, i186) → 1491_0_cos_ConstantStackPush(EOS(STATIC_1491), i8, i278, i186, i8)
1491_0_cos_ConstantStackPush(EOS(STATIC_1491), i8, i278, i186, i8) → 1500_0_cos_Load(EOS(STATIC_1500), i8, i278, i186, i8)
1500_0_cos_Load(EOS(STATIC_1500), i8, i278, i186, i8) → 1511_0_cos_IntArithmetic(EOS(STATIC_1511), i8, i278, i186, i8, i278)
1511_0_cos_IntArithmetic(EOS(STATIC_1511), i8, i278, i186, i8, i278) → 1528_0_cos_InvokeMethod(EOS(STATIC_1528), i8, i278, i186, i8) | >=(i278, 1)
1528_0_cos_InvokeMethod(EOS(STATIC_1528), i8, i278, i186, i8) → 1534_1_cos_InvokeMethod(1534_0_power_Load(EOS(STATIC_1534), i8), i8, i278, i186, i8)
1534_0_power_Load(EOS(STATIC_1534), i8) → 1548_0_power_Load(EOS(STATIC_1548), i8)
1534_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i319), i320, i278, i186, i320) → 1575_0_power_Return(EOS(STATIC_1575), i320, i278, i186, i320, i319)
1575_0_power_Return(EOS(STATIC_1575), i320, i278, i186, i320, i319) → 1584_0_cos_IntArithmetic(EOS(STATIC_1584), i320, i278, i186, i319)
1584_0_cos_IntArithmetic(EOS(STATIC_1584), i320, i278, i186, i319) → 1591_0_cos_ConstantStackPush(EOS(STATIC_1591), i320, i278)
1591_0_cos_ConstantStackPush(EOS(STATIC_1591), i320, i278) → 1599_0_cos_Load(EOS(STATIC_1599), i320, i278)
1599_0_cos_Load(EOS(STATIC_1599), i320, i278) → 1609_0_cos_IntArithmetic(EOS(STATIC_1609), i320, i278, i278)
1609_0_cos_IntArithmetic(EOS(STATIC_1609), i320, i278, i278) → 1618_0_cos_InvokeMethod(EOS(STATIC_1618), i320, i278) | >=(i278, 1)
1618_0_cos_InvokeMethod(EOS(STATIC_1618), i320, i278) → 1633_1_cos_InvokeMethod(1633_0_fact_Load(EOS(STATIC_1633)), i320, i278)
1633_0_fact_Load(EOS(STATIC_1633)) → 1661_0_fact_Load(EOS(STATIC_1661))
1633_1_cos_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), i279), i320, i278) → 1685_0_fact_Return(EOS(STATIC_1685), i320, i278, i279)
1685_0_fact_Return(EOS(STATIC_1685), i320, i278, i279) → 1692_0_cos_IntArithmetic(EOS(STATIC_1692), i320, i278, i279)
1692_0_cos_IntArithmetic(EOS(STATIC_1692), i320, i278, i279) → 1701_0_cos_Load(EOS(STATIC_1701), i320, i278) | >=(i279, 1)
1701_0_cos_Load(EOS(STATIC_1701), i320, i278) → 1707_0_cos_Load(EOS(STATIC_1707), i278, i320)
1707_0_cos_Load(EOS(STATIC_1707), i278, i320) → 1714_0_cos_ConstantStackPush(EOS(STATIC_1714), i320, i278)
1714_0_cos_ConstantStackPush(EOS(STATIC_1714), i320, i278) → 1722_0_cos_IntArithmetic(EOS(STATIC_1722), i320, i278)
1722_0_cos_IntArithmetic(EOS(STATIC_1722), i320, i278) → 1729_0_cos_InvokeMethod(EOS(STATIC_1729), i320) | >(i278, 0)
1729_0_cos_InvokeMethod(EOS(STATIC_1729), i320) → 1738_1_cos_InvokeMethod(1738_0_cos_Load(EOS(STATIC_1738), i320), i320)
1738_0_cos_Load(EOS(STATIC_1738), i320) → 1746_0_cos_Load(EOS(STATIC_1746), i320)
1738_1_cos_InvokeMethod(1370_0_cos_Return(EOS(STATIC_1370), i384, matching1), i384) → 1774_0_cos_Return(EOS(STATIC_1774), i384, 0, i384, 0) | =(matching1, 0)
1738_1_cos_InvokeMethod(1854_0_cos_Return(EOS(STATIC_1854)), i429) → 1897_0_cos_Return(EOS(STATIC_1897), i429)
1774_0_cos_Return(EOS(STATIC_1774), i384, matching1, i384, matching2) → 1783_0_cos_IntArithmetic(EOS(STATIC_1783)) | &&(=(matching1, 0), =(matching2, 0))
1783_0_cos_IntArithmetic(EOS(STATIC_1783)) → 1841_0_cos_IntArithmetic(EOS(STATIC_1841))
1829_0_cos_Return(EOS(STATIC_1829), i405) → 1841_0_cos_IntArithmetic(EOS(STATIC_1841))
1841_0_cos_IntArithmetic(EOS(STATIC_1841)) → 1854_0_cos_Return(EOS(STATIC_1854))
1897_0_cos_Return(EOS(STATIC_1897), i429) → 1829_0_cos_Return(EOS(STATIC_1829), i429)
1268_0_sin_Load(EOS(STATIC_1268), i233, i234) → 1276_0_sin_GT(EOS(STATIC_1276), i233, i234, i234)
1276_0_sin_GT(EOS(STATIC_1276), i233, matching1, matching2) → 1289_0_sin_GT(EOS(STATIC_1289), i233, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1276_0_sin_GT(EOS(STATIC_1276), i233, i240, i240) → 1290_0_sin_GT(EOS(STATIC_1290), i233, i240, i240)
1289_0_sin_GT(EOS(STATIC_1289), i233, matching1, matching2) → 1298_0_sin_Load(EOS(STATIC_1298), i233, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1290_0_sin_GT(EOS(STATIC_1290), i233, i240, i240) → 1299_0_sin_ConstantStackPush(EOS(STATIC_1299), i233, i240) | >(i240, 0)
1298_0_sin_Load(EOS(STATIC_1298), i233, matching1) → 1308_0_sin_Return(EOS(STATIC_1308), i233, 0, i233) | =(matching1, 0)
1299_0_sin_ConstantStackPush(EOS(STATIC_1299), i233, i240) → 1310_0_sin_Load(EOS(STATIC_1310), i233, i240)
1310_0_sin_Load(EOS(STATIC_1310), i233, i240) → 1324_0_sin_InvokeMethod(EOS(STATIC_1324), i233, i240, i240)
1324_0_sin_InvokeMethod(EOS(STATIC_1324), i233, i240, i240) → 1336_1_sin_InvokeMethod(1336_0_power_Load(EOS(STATIC_1336), i240), i233, i240, i240)
1336_0_power_Load(EOS(STATIC_1336), i240) → 1352_0_power_Load(EOS(STATIC_1352), i240)
1336_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i186), i233, i253, i253) → 1395_0_power_Return(EOS(STATIC_1395), i233, i253, i253, i186)
1395_0_power_Return(EOS(STATIC_1395), i233, i253, i253, i186) → 1407_0_sin_Load(EOS(STATIC_1407), i233, i253, i186)
1407_0_sin_Load(EOS(STATIC_1407), i233, i253, i186) → 1420_0_sin_ConstantStackPush(EOS(STATIC_1420), i233, i253, i186, i233)
1420_0_sin_ConstantStackPush(EOS(STATIC_1420), i233, i253, i186, i233) → 1433_0_sin_Load(EOS(STATIC_1433), i233, i253, i186, i233)
1433_0_sin_Load(EOS(STATIC_1433), i233, i253, i186, i233) → 1447_0_sin_IntArithmetic(EOS(STATIC_1447), i233, i253, i186, i233, i253)
1447_0_sin_IntArithmetic(EOS(STATIC_1447), i233, i253, i186, i233, i253) → 1466_0_sin_ConstantStackPush(EOS(STATIC_1466), i233, i253, i186, i233) | >=(i253, 1)
1466_0_sin_ConstantStackPush(EOS(STATIC_1466), i233, i253, i186, i233) → 1478_0_sin_IntArithmetic(EOS(STATIC_1478), i233, i253, i186, i233)
1478_0_sin_IntArithmetic(EOS(STATIC_1478), i233, i253, i186, i233) → 1492_0_sin_InvokeMethod(EOS(STATIC_1492), i233, i253, i186, i233)
1492_0_sin_InvokeMethod(EOS(STATIC_1492), i233, i253, i186, i233) → 1501_1_sin_InvokeMethod(1501_0_power_Load(EOS(STATIC_1501), i233), i233, i253, i186, i233)
1501_0_power_Load(EOS(STATIC_1501), i233) → 1513_0_power_Load(EOS(STATIC_1513), i233)
1501_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i310), i311, i253, i186, i311) → 1551_0_power_Return(EOS(STATIC_1551), i311, i253, i186, i311, i310)
1551_0_power_Return(EOS(STATIC_1551), i311, i253, i186, i311, i310) → 1556_0_sin_IntArithmetic(EOS(STATIC_1556), i311, i253, i186, i310)
1556_0_sin_IntArithmetic(EOS(STATIC_1556), i311, i253, i186, i310) → 1566_0_sin_ConstantStackPush(EOS(STATIC_1566), i311, i253, *(i186, i310))
1566_0_sin_ConstantStackPush(EOS(STATIC_1566), i311, i253, i322) → 1576_0_sin_Load(EOS(STATIC_1576), i311, i253, i322)
1576_0_sin_Load(EOS(STATIC_1576), i311, i253, i322) → 1585_0_sin_IntArithmetic(EOS(STATIC_1585), i311, i253, i322, i253)
1585_0_sin_IntArithmetic(EOS(STATIC_1585), i311, i253, i322, i253) → 1593_0_sin_ConstantStackPush(EOS(STATIC_1593), i311, i253, i322) | >=(i253, 1)
1593_0_sin_ConstantStackPush(EOS(STATIC_1593), i311, i253, i322) → 1601_0_sin_IntArithmetic(EOS(STATIC_1601), i311, i253, i322)
1601_0_sin_IntArithmetic(EOS(STATIC_1601), i311, i253, i322) → 1611_0_sin_InvokeMethod(EOS(STATIC_1611), i311, i253, i322)
1611_0_sin_InvokeMethod(EOS(STATIC_1611), i311, i253, i322) → 1619_1_sin_InvokeMethod(1619_0_fact_Load(EOS(STATIC_1619)), i311, i253, i322)
1619_0_fact_Load(EOS(STATIC_1619)) → 1635_0_fact_Load(EOS(STATIC_1635))
1619_1_sin_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), i279), i311, i253, i322) → 1678_0_fact_Return(EOS(STATIC_1678), i311, i253, i322, i279)
1678_0_fact_Return(EOS(STATIC_1678), i311, i253, i322, i279) → 1687_0_sin_IntArithmetic(EOS(STATIC_1687), i311, i253, i322, i279)
1687_0_sin_IntArithmetic(EOS(STATIC_1687), i311, i253, i322, i279) → 1693_0_sin_Load(EOS(STATIC_1693), i311, i253, /(i322, i279)) | >=(i279, 1)
1693_0_sin_Load(EOS(STATIC_1693), i311, i253, i355) → 1703_0_sin_Load(EOS(STATIC_1703), i253, i355, i311)
1703_0_sin_Load(EOS(STATIC_1703), i253, i355, i311) → 1709_0_sin_ConstantStackPush(EOS(STATIC_1709), i355, i311, i253)
1709_0_sin_ConstantStackPush(EOS(STATIC_1709), i355, i311, i253) → 1715_0_sin_IntArithmetic(EOS(STATIC_1715), i355, i311, i253)
1715_0_sin_IntArithmetic(EOS(STATIC_1715), i355, i311, i253) → 1723_0_sin_InvokeMethod(EOS(STATIC_1723), i355, i311) | >(i253, 0)
1723_0_sin_InvokeMethod(EOS(STATIC_1723), i355, i311) → 1731_1_sin_InvokeMethod(1731_0_sin_Load(EOS(STATIC_1731), i311), i355, i311)
1731_0_sin_Load(EOS(STATIC_1731), i311) → 1740_0_sin_Load(EOS(STATIC_1740), i311)
1731_1_sin_InvokeMethod(1308_0_sin_Return(EOS(STATIC_1308), i376, matching1, i376), i355, i376) → 1766_0_sin_Return(EOS(STATIC_1766), i355, i376, 0, i376, 0, i376) | =(matching1, 0)
1731_1_sin_InvokeMethod(1842_0_sin_Return(EOS(STATIC_1842), i412), i355, i422) → 1885_0_sin_Return(EOS(STATIC_1885), i355, i422, i412)
1766_0_sin_Return(EOS(STATIC_1766), i355, i376, matching1, i376, matching2, i376) → 1775_0_sin_IntArithmetic(EOS(STATIC_1775), i355, i376) | &&(=(matching1, 0), =(matching2, 0))
1775_0_sin_IntArithmetic(EOS(STATIC_1775), i355, i376) → 1831_0_sin_IntArithmetic(EOS(STATIC_1831), i355, i376)
1820_0_sin_Return(EOS(STATIC_1820), i355, i399, i388) → 1831_0_sin_IntArithmetic(EOS(STATIC_1831), i355, i388)
1831_0_sin_IntArithmetic(EOS(STATIC_1831), i355, i388) → 1842_0_sin_Return(EOS(STATIC_1842), +(i355, i388))
1885_0_sin_Return(EOS(STATIC_1885), i355, i422, i412) → 1820_0_sin_Return(EOS(STATIC_1820), i355, i422, i412)
741_0_power_Load(EOS(STATIC_741), i87, i88) → 757_0_power_GT(EOS(STATIC_757), i87, i88, i88)
757_0_power_GT(EOS(STATIC_757), i87, matching1, matching2) → 769_0_power_GT(EOS(STATIC_769), i87, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
757_0_power_GT(EOS(STATIC_757), i87, i96, i96) → 770_0_power_GT(EOS(STATIC_770), i87, i96, i96)
769_0_power_GT(EOS(STATIC_769), i87, matching1, matching2) → 785_0_power_ConstantStackPush(EOS(STATIC_785), i87, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
770_0_power_GT(EOS(STATIC_770), i87, i96, i96) → 786_0_power_Load(EOS(STATIC_786), i87, i96) | >(i96, 0)
785_0_power_ConstantStackPush(EOS(STATIC_785), i87, matching1) → 797_0_power_Return(EOS(STATIC_797), i87, 0, 1) | =(matching1, 0)
786_0_power_Load(EOS(STATIC_786), i87, i96) → 799_0_power_Load(EOS(STATIC_799), i87, i96, i87)
799_0_power_Load(EOS(STATIC_799), i87, i96, i87) → 812_0_power_Load(EOS(STATIC_812), i96, i87, i87)
812_0_power_Load(EOS(STATIC_812), i96, i87, i87) → 832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96)
832_0_power_ConstantStackPush(EOS(STATIC_832), i87, i87, i96) → 844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96)
844_0_power_IntArithmetic(EOS(STATIC_844), i87, i87, i96) → 857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) | >(i96, 0)
857_0_power_InvokeMethod(EOS(STATIC_857), i87, i87) → 864_1_power_InvokeMethod(864_0_power_Load(EOS(STATIC_864), i87), i87, i87)
864_0_power_Load(EOS(STATIC_864), i87) → 874_0_power_Load(EOS(STATIC_874), i87)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), i121, matching1, matching2), i121, i121) → 918_0_power_Return(EOS(STATIC_918), i121, i121, 0, i121, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), i186), i192, i192) → 1159_0_power_Return(EOS(STATIC_1159), i192, i192, i186)
918_0_power_Return(EOS(STATIC_918), i121, i121, matching1, i121, matching2, matching3) → 924_0_power_IntArithmetic(EOS(STATIC_924), i121, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
924_0_power_IntArithmetic(EOS(STATIC_924), i121, matching1) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i121, 1) | =(matching1, 1)
1094_0_power_Return(EOS(STATIC_1094), i179, i179, i180) → 1104_0_power_IntArithmetic(EOS(STATIC_1104), i179, i180)
1104_0_power_IntArithmetic(EOS(STATIC_1104), i179, i180) → 1113_0_power_Return(EOS(STATIC_1113), *(i179, i180))
1159_0_power_Return(EOS(STATIC_1159), i192, i192, i186) → 1094_0_power_Return(EOS(STATIC_1094), i192, i192, i186)
1167_0_fact_Load(EOS(STATIC_1167), i206) → 1175_0_fact_GT(EOS(STATIC_1175), i206, i206)
1175_0_fact_GT(EOS(STATIC_1175), matching1, matching2) → 1182_0_fact_GT(EOS(STATIC_1182), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1175_0_fact_GT(EOS(STATIC_1175), i214, i214) → 1183_0_fact_GT(EOS(STATIC_1183), i214, i214)
1182_0_fact_GT(EOS(STATIC_1182), matching1, matching2) → 1195_0_fact_ConstantStackPush(EOS(STATIC_1195), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1183_0_fact_GT(EOS(STATIC_1183), i214, i214) → 1197_0_fact_Load(EOS(STATIC_1197), i214) | >(i214, 0)
1195_0_fact_ConstantStackPush(EOS(STATIC_1195), matching1) → 1204_0_fact_Return(EOS(STATIC_1204), 0, 1) | =(matching1, 0)
1197_0_fact_Load(EOS(STATIC_1197), i214) → 1206_0_fact_Load(EOS(STATIC_1206), i214, i214)
1206_0_fact_Load(EOS(STATIC_1206), i214, i214) → 1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214)
1220_0_fact_ConstantStackPush(EOS(STATIC_1220), i214, i214) → 1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214)
1231_0_fact_IntArithmetic(EOS(STATIC_1231), i214, i214) → 1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) | >(i214, 0)
1242_0_fact_InvokeMethod(EOS(STATIC_1242), i214) → 1252_1_fact_InvokeMethod(1252_0_fact_Load(EOS(STATIC_1252)), i214)
1252_0_fact_Load(EOS(STATIC_1252)) → 1261_0_fact_Load(EOS(STATIC_1261))
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), matching1, matching2), i214) → 1292_0_fact_Return(EOS(STATIC_1292), i214, 0, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), i279), i214) → 1494_0_fact_Return(EOS(STATIC_1494), i214, i279)
1292_0_fact_Return(EOS(STATIC_1292), i214, matching1, matching2, matching3) → 1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
1302_0_fact_IntArithmetic(EOS(STATIC_1302), i214, matching1) → 1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214, 1) | =(matching1, 1)
1367_0_fact_IntArithmetic(EOS(STATIC_1367), i214, i248) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214, i248)
1425_0_fact_Return(EOS(STATIC_1425), i214, i268) → 1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214, i268)
1435_0_fact_IntArithmetic(EOS(STATIC_1435), i214, i268) → 1449_0_fact_Return(EOS(STATIC_1449), *(i214, i268)) | &&(>=(i214, 1), >=(i268, 1))
1494_0_fact_Return(EOS(STATIC_1494), i214, i279) → 1425_0_fact_Return(EOS(STATIC_1425), i214, i279)

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


P rules:
1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), x1, x1) → 2000_0_main_GE(EOS(STATIC_2000), java.lang.Object(ARRAY(x0)), x1, 0, 0, 100) | &&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), <(0, %(x1, 5))), <(0, %(x1, 3)))
2000_0_main_GE(EOS(STATIC_2000), java.lang.Object(ARRAY(x0)), x1, x2, x2, 100) → 2000_0_main_GE(EOS(STATIC_2000), java.lang.Object(ARRAY(x0)), x1, +(x2, 1), +(x2, 1), 100) | &&(>(+(x2, 1), 0), <(x2, 100))
2000_0_main_GE(EOS(STATIC_2000), java.lang.Object(ARRAY(x0)), x1, 100, 100, 100) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), +(x1, 1), +(x1, 1)) | >(+(x1, 1), 0)
1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), x1, x1) → 1876_1_main_InvokeMethod(1876_0_exp_Load(EOS(STATIC_1876), x0, x1), java.lang.Object(ARRAY(x0)), x1, x0, x1) | &&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 5))), <(0, %(x1, 3)))
1876_1_main_InvokeMethod(1438_0_exp_Return(EOS(STATIC_1438), x0, 0), java.lang.Object(ARRAY(x2)), 0, x0, 0) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), 1, 1)
1876_1_main_InvokeMethod(1762_0_exp_Return(EOS(STATIC_1762)), java.lang.Object(ARRAY(x0)), x1, x2, x1) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x2)), +(x1, 1), +(x1, 1)) | >(+(x1, 1), 0)
1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), x1, x1) → 1815_1_main_InvokeMethod(1815_0_cos_Load(EOS(STATIC_1815), x0, x1), java.lang.Object(ARRAY(x0)), x1, x0, x1) | &&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 3)))
1815_1_main_InvokeMethod(1370_0_cos_Return(EOS(STATIC_1370), x0, 0), java.lang.Object(ARRAY(x2)), 0, x0, 0) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), 1, 1)
1815_1_main_InvokeMethod(1854_0_cos_Return(EOS(STATIC_1854)), java.lang.Object(ARRAY(x0)), x1, x2, x1) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x2)), +(x1, 1), +(x1, 1)) | >(+(x1, 1), 0)
1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), x1, x1) → 1760_1_main_InvokeMethod(1760_0_sin_Load(EOS(STATIC_1760), x0, x1), java.lang.Object(ARRAY(x0)), x1, x0, x1) | &&(&&(<(x1, x0), >(+(x0, 1), 0)), =(0, %(x1, 2)))
1760_1_main_InvokeMethod(1308_0_sin_Return(EOS(STATIC_1308), x0, 0, x0), java.lang.Object(ARRAY(x2)), 0, x0, 0) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x0)), 1, 1)
1760_1_main_InvokeMethod(1842_0_sin_Return(EOS(STATIC_1842), x0), java.lang.Object(ARRAY(x1)), x2, x3, x2) → 1657_0_main_Load(EOS(STATIC_1657), java.lang.Object(ARRAY(x3)), +(x2, 1), +(x2, 1)) | >(+(x2, 1), 0)
R rules:
1876_0_exp_Load(EOS(STATIC_1876), x0, x1) → 1400_0_exp_GT(EOS(STATIC_1400), x0, x1, x1)
1815_0_cos_Load(EOS(STATIC_1815), x0, x1) → 1331_0_cos_GT(EOS(STATIC_1331), x0, x1, x1)
1760_0_sin_Load(EOS(STATIC_1760), x0, x1) → 1276_0_sin_GT(EOS(STATIC_1276), x0, x1, x1)
1400_0_exp_GT(EOS(STATIC_1400), x0, 0, 0) → 1438_0_exp_Return(EOS(STATIC_1438), x0, 0)
1400_0_exp_GT(EOS(STATIC_1400), x0, x1, x1) → 1474_1_exp_InvokeMethod(757_0_power_GT(EOS(STATIC_757), x0, x1, x1), x0, x1, x0, x1) | >(x1, 0)
1474_1_exp_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x2, x1, x2) → 1554_1_exp_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), x2, x2), x1, x2, x0, x2)
1554_1_exp_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), x0), x1, x2, x3, x2) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(EOS(STATIC_1400), x1, x4, x4), x1) | &&(>(x2, 0), >(+(x0, 1), 1))
1672_1_exp_InvokeMethod(1438_0_exp_Return(EOS(STATIC_1438), x0, 0), x0) → 1762_0_exp_Return(EOS(STATIC_1762))
1672_1_exp_InvokeMethod(1762_0_exp_Return(EOS(STATIC_1762)), x0) → 1762_0_exp_Return(EOS(STATIC_1762))
1331_0_cos_GT(EOS(STATIC_1331), x0, 0, 0) → 1370_0_cos_Return(EOS(STATIC_1370), x0, 0)
1331_0_cos_GT(EOS(STATIC_1331), x0, x1, x1) → 1404_1_cos_InvokeMethod(757_0_power_GT(EOS(STATIC_757), -1, x1, x1), x0, x1, x1) | >(x1, 0)
1404_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x2, x2) → 1534_1_cos_InvokeMethod(757_0_power_GT(EOS(STATIC_757), x1, x3, x3), x1, x2, x0, x1) | >(+(x2, 1), 1)
1534_1_cos_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x2, x3, x1) → 1633_1_cos_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), x4, x4), x1, x2) | >(+(x2, 1), 1)
1633_1_cos_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), x0), x1, x2) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(EOS(STATIC_1331), x1, x3, x3), x1) | &&(>(x2, 0), >(+(x0, 1), 1))
1738_1_cos_InvokeMethod(1370_0_cos_Return(EOS(STATIC_1370), x0, 0), x0) → 1854_0_cos_Return(EOS(STATIC_1854))
1738_1_cos_InvokeMethod(1854_0_cos_Return(EOS(STATIC_1854)), x0) → 1854_0_cos_Return(EOS(STATIC_1854))
1276_0_sin_GT(EOS(STATIC_1276), x0, 0, 0) → 1308_0_sin_Return(EOS(STATIC_1308), x0, 0, x0)
1276_0_sin_GT(EOS(STATIC_1276), x0, x1, x1) → 1336_1_sin_InvokeMethod(757_0_power_GT(EOS(STATIC_757), -1, x1, x1), x0, x1, x1) | >(x1, 0)
1336_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x2, x2) → 1501_1_sin_InvokeMethod(757_0_power_GT(EOS(STATIC_757), x1, x3, x3), x1, x2, x0, x1) | >(+(x2, 1), 1)
1501_1_sin_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x2, x3, x1) → 1619_1_sin_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), x4, x4), x1, x2, *(x3, x0)) | >(+(x2, 1), 1)
1619_1_sin_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), x0), x1, x2, x3) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(EOS(STATIC_1276), x1, x4, x4), /(x3, x0), x1) | &&(>(x2, 0), >(+(x0, 1), 1))
1731_1_sin_InvokeMethod(1308_0_sin_Return(EOS(STATIC_1308), x0, 0, x0), x2, x0) → 1842_0_sin_Return(EOS(STATIC_1842), +(x2, x0))
1731_1_sin_InvokeMethod(1842_0_sin_Return(EOS(STATIC_1842), x0), x1, x2) → 1842_0_sin_Return(EOS(STATIC_1842), +(x1, x0))
757_0_power_GT(EOS(STATIC_757), x0, 0, 0) → 797_0_power_Return(EOS(STATIC_797), x0, 0, 1)
757_0_power_GT(EOS(STATIC_757), x0, x1, x1) → 864_1_power_InvokeMethod(757_0_power_GT(EOS(STATIC_757), x0, x2, x2), x0, x0) | >(x1, 0)
864_1_power_InvokeMethod(797_0_power_Return(EOS(STATIC_797), arith[1], 0, 1), arith[1], arith[1]) → 1113_0_power_Return(EOS(STATIC_1113), arith[1])
864_1_power_InvokeMethod(1113_0_power_Return(EOS(STATIC_1113), x0), x1, x1) → 1113_0_power_Return(EOS(STATIC_1113), *(x1, x0))
1175_0_fact_GT(EOS(STATIC_1175), 0, 0) → 1204_0_fact_Return(EOS(STATIC_1204), 0, 1)
1175_0_fact_GT(EOS(STATIC_1175), x0, x0) → 1252_1_fact_InvokeMethod(1175_0_fact_GT(EOS(STATIC_1175), x1, x1), x0) | >(x0, 0)
1252_1_fact_InvokeMethod(1204_0_fact_Return(EOS(STATIC_1204), 0, 1), arith[1]) → 1449_0_fact_Return(EOS(STATIC_1449), arith[1]) | >(+(arith[1], 1), 1)
1252_1_fact_InvokeMethod(1449_0_fact_Return(EOS(STATIC_1449), x0), x1) → 1449_0_fact_Return(EOS(STATIC_1449), *(x1, x0)) | &&(>(+(x1, 1), 1), >(+(x0, 1), 1))

Filtered ground terms:



1657_0_main_Load(x1, x2, x3, x4) → 1657_0_main_Load(x2, x3, x4)
1842_0_sin_Return(x1, x2) → 1842_0_sin_Return(x2)
1308_0_sin_Return(x1, x2, x3, x4) → 1308_0_sin_Return(x2, x4)
1760_0_sin_Load(x1, x2, x3) → 1760_0_sin_Load(x2, x3)
Cond_1657_0_main_Load3(x1, x2, x3, x4, x5) → Cond_1657_0_main_Load3(x1, x3, x4, x5)
Cond_1815_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1815_1_main_InvokeMethod(x1, x3, x4, x5, x6)
1854_0_cos_Return(x1) → 1854_0_cos_Return
1370_0_cos_Return(x1, x2, x3) → 1370_0_cos_Return(x2)
1815_0_cos_Load(x1, x2, x3) → 1815_0_cos_Load(x2, x3)
Cond_1657_0_main_Load2(x1, x2, x3, x4, x5) → Cond_1657_0_main_Load2(x1, x3, x4, x5)
Cond_1876_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1876_1_main_InvokeMethod(x1, x3, x4, x5, x6)
1762_0_exp_Return(x1) → 1762_0_exp_Return
1438_0_exp_Return(x1, x2, x3) → 1438_0_exp_Return(x2)
1876_0_exp_Load(x1, x2, x3) → 1876_0_exp_Load(x2, x3)
Cond_1657_0_main_Load1(x1, x2, x3, x4, x5) → Cond_1657_0_main_Load1(x1, x3, x4, x5)
Cond_2000_0_main_GE1(x1, x2, x3, x4, x5, x6, x7) → Cond_2000_0_main_GE1(x1, x3, x4)
2000_0_main_GE(x1, x2, x3, x4, x5, x6) → 2000_0_main_GE(x2, x3, x4, x5)
Cond_2000_0_main_GE(x1, x2, x3, x4, x5, x6, x7) → Cond_2000_0_main_GE(x1, x3, x4, x5, x6)
Cond_1657_0_main_Load(x1, x2, x3, x4, x5) → Cond_1657_0_main_Load(x1, x3, x4, x5)
1449_0_fact_Return(x1, x2) → 1449_0_fact_Return(x2)
Cond_1252_1_fact_InvokeMethod(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod(x1, x3)
1204_0_fact_Return(x1, x2, x3) → 1204_0_fact_Return
1175_0_fact_GT(x1, x2, x3) → 1175_0_fact_GT(x2, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1175_0_fact_GT(x1, x3, x4, x5)
1113_0_power_Return(x1, x2) → 1113_0_power_Return(x2)
797_0_power_Return(x1, x2, x3, x4) → 797_0_power_Return(x2)
757_0_power_GT(x1, x2, x3, x4) → 757_0_power_GT(x2, x3, x4)
Cond_757_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_757_0_power_GT(x1, x3, x4, x5, x6)
1276_0_sin_GT(x1, x2, x3, x4) → 1276_0_sin_GT(x2, x3, x4)
Cond_1276_0_sin_GT(x1, x2, x3, x4, x5) → Cond_1276_0_sin_GT(x1, x3, x4, x5)
1331_0_cos_GT(x1, x2, x3, x4) → 1331_0_cos_GT(x2, x3, x4)
Cond_1331_0_cos_GT(x1, x2, x3, x4, x5) → Cond_1331_0_cos_GT(x1, x3, x4, x5)
1400_0_exp_GT(x1, x2, x3, x4) → 1400_0_exp_GT(x2, x3, x4)
Cond_1400_0_exp_GT(x1, x2, x3, x4, x5) → Cond_1400_0_exp_GT(x1, x3, x4, x5)

Filtered duplicate args:



1657_0_main_Load(x1, x2, x3) → 1657_0_main_Load(x1, x3)
Cond_1657_0_main_Load(x1, x2, x3, x4) → Cond_1657_0_main_Load(x1, x2, x4)
2000_0_main_GE(x1, x2, x3, x4) → 2000_0_main_GE(x1, x2, x4)
Cond_2000_0_main_GE(x1, x2, x3, x4, x5) → Cond_2000_0_main_GE(x1, x2, x3, x5)
Cond_1657_0_main_Load1(x1, x2, x3, x4) → Cond_1657_0_main_Load1(x1, x2, x4)
1876_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1876_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1876_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1876_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1657_0_main_Load2(x1, x2, x3, x4) → Cond_1657_0_main_Load2(x1, x2, x4)
1815_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1815_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1815_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1815_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1657_0_main_Load3(x1, x2, x3, x4) → Cond_1657_0_main_Load3(x1, x2, x4)
1760_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1760_1_main_InvokeMethod(x1, x2, x4, x5)
1308_0_sin_Return(x1, x2) → 1308_0_sin_Return(x2)
Cond_1760_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1760_1_main_InvokeMethod(x1, x2, x3, x5, x6)
1400_0_exp_GT(x1, x2, x3) → 1400_0_exp_GT(x1, x3)
1331_0_cos_GT(x1, x2, x3) → 1331_0_cos_GT(x1, x3)
1276_0_sin_GT(x1, x2, x3) → 1276_0_sin_GT(x1, x3)
Cond_1400_0_exp_GT(x1, x2, x3, x4) → Cond_1400_0_exp_GT(x1, x2, x4)
1474_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → 1474_1_exp_InvokeMethod(x1, x4, x5)
757_0_power_GT(x1, x2, x3) → 757_0_power_GT(x1, x3)
1554_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → 1554_1_exp_InvokeMethod(x1, x2, x4, x5)
1175_0_fact_GT(x1, x2) → 1175_0_fact_GT(x2)
Cond_1554_1_exp_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1554_1_exp_InvokeMethod(x1, x2, x3, x5, x6, x7)
Cond_1331_0_cos_GT(x1, x2, x3, x4) → Cond_1331_0_cos_GT(x1, x2, x4)
1404_1_cos_InvokeMethod(x1, x2, x3, x4) → 1404_1_cos_InvokeMethod(x1, x2, x4)
Cond_1404_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1404_1_cos_InvokeMethod(x1, x2, x3, x5, x6)
1534_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → 1534_1_cos_InvokeMethod(x1, x3, x4, x5)
Cond_1534_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1534_1_cos_InvokeMethod(x1, x2, x4, x5, x6, x7)
Cond_1276_0_sin_GT(x1, x2, x3, x4) → Cond_1276_0_sin_GT(x1, x2, x4)
1336_1_sin_InvokeMethod(x1, x2, x3, x4) → 1336_1_sin_InvokeMethod(x1, x2, x4)
Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x5, x6)
1501_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1501_1_sin_InvokeMethod(x1, x3, x4, x5)
Cond_1501_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1501_1_sin_InvokeMethod(x1, x2, x4, x5, x6, x7)
Cond_757_0_power_GT(x1, x2, x3, x4, x5) → Cond_757_0_power_GT(x1, x2, x4, x5)
864_1_power_InvokeMethod(x1, x2, x3) → 864_1_power_InvokeMethod(x1, x3)
Cond_1175_0_fact_GT(x1, x2, x3, x4) → Cond_1175_0_fact_GT(x1, x3, x4)

Filtered unneeded arguments:



1876_1_main_InvokeMethod(x1, x2, x3, x4) → 1876_1_main_InvokeMethod(x1, x3, x4)
Cond_1876_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_1876_1_main_InvokeMethod(x1, x3, x4)
1815_1_main_InvokeMethod(x1, x2, x3, x4) → 1815_1_main_InvokeMethod(x1, x3, x4)
Cond_1815_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_1815_1_main_InvokeMethod(x1, x3, x4)
1760_1_main_InvokeMethod(x1, x2, x3, x4) → 1760_1_main_InvokeMethod(x1, x3, x4)
Cond_1760_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1760_1_main_InvokeMethod(x1, x4, x5)
1554_1_exp_InvokeMethod(x1, x2, x3, x4) → 1554_1_exp_InvokeMethod(x1, x2, x4)
Cond_1554_1_exp_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1554_1_exp_InvokeMethod(x1, x3, x6)
Cond_1404_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1404_1_cos_InvokeMethod(x1, x3, x4, x5)
1534_1_cos_InvokeMethod(x1, x2, x3, x4) → 1534_1_cos_InvokeMethod(x1, x2, x4)
Cond_1534_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1534_1_cos_InvokeMethod(x1, x3, x5, x6)
Cond_1633_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1633_1_cos_InvokeMethod(x1, x3, x5)
Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1336_1_sin_InvokeMethod(x1, x3, x4, x5)
1501_1_sin_InvokeMethod(x1, x2, x3, x4) → 1501_1_sin_InvokeMethod(x1, x2, x4)
Cond_1501_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1501_1_sin_InvokeMethod(x1, x3, x5, x6)
1619_1_sin_InvokeMethod(x1, x2, x3, x4) → 1619_1_sin_InvokeMethod(x1, x2, x3)
Cond_1619_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1619_1_sin_InvokeMethod(x1, x3, x6)
1731_1_sin_InvokeMethod(x1, x2, x3) → 1731_1_sin_InvokeMethod(x1, x3)
757_0_power_GT(x1, x2) → 757_0_power_GT(x2)
Cond_757_0_power_GT(x1, x2, x3, x4) → Cond_757_0_power_GT(x1, x4)
864_1_power_InvokeMethod(x1, x2) → 864_1_power_InvokeMethod(x1)

Filtered free variables in P:



Cond_1554_1_exp_InvokeMethod(x1, x2, x3) → Cond_1554_1_exp_InvokeMethod(x1, x2)
1400_0_exp_GT(x1, x2) → 1400_0_exp_GT(x1)
Cond_1404_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1404_1_cos_InvokeMethod(x1, x2)
757_0_power_GT(x1) → 757_0_power_GT
Cond_1534_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1534_1_cos_InvokeMethod(x1, x3)
1175_0_fact_GT(x1) → 1175_0_fact_GT
Cond_1633_1_cos_InvokeMethod(x1, x2, x3) → Cond_1633_1_cos_InvokeMethod(x1, x2)
1331_0_cos_GT(x1, x2) → 1331_0_cos_GT(x1)
Cond_1336_1_sin_InvokeMethod(x1, x2, x3, x4) → Cond_1336_1_sin_InvokeMethod(x1, x2)
Cond_1501_1_sin_InvokeMethod(x1, x2, x3, x4) → Cond_1501_1_sin_InvokeMethod(x1, x3)
Cond_1619_1_sin_InvokeMethod(x1, x2, x3) → Cond_1619_1_sin_InvokeMethod(x1, x2)
1276_0_sin_GT(x1, x2) → 1276_0_sin_GT(x1)
797_0_power_Return(x1) → 797_0_power_Return
Cond_757_0_power_GT(x1, x2) → Cond_757_0_power_GT(x1)
1113_0_power_Return(x1) → 1113_0_power_Return
Cond_1175_0_fact_GT(x1, x2, x3) → Cond_1175_0_fact_GT(x1)
1252_1_fact_InvokeMethod(x1, x2) → 1252_1_fact_InvokeMethod(x1)
Cond_1252_1_fact_InvokeMethod(x1, x2) → Cond_1252_1_fact_InvokeMethod(x1)
1449_0_fact_Return(x1) → 1449_0_fact_Return
Cond_1252_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1252_1_fact_InvokeMethod1(x1, x2)
Cond_1400_0_exp_GT(x1, x2, x3) → Cond_1400_0_exp_GT(x1, x2)
1474_1_exp_InvokeMethod(x1, x2, x3) → 1474_1_exp_InvokeMethod(x1, x2)
1554_1_exp_InvokeMethod(x1, x2, x3) → 1554_1_exp_InvokeMethod(x1, x2)
Cond_1331_0_cos_GT(x1, x2, x3) → Cond_1331_0_cos_GT(x1, x2)
1404_1_cos_InvokeMethod(x1, x2, x3) → 1404_1_cos_InvokeMethod(x1, x2)
1534_1_cos_InvokeMethod(x1, x2, x3) → 1534_1_cos_InvokeMethod(x1, x3)
1633_1_cos_InvokeMethod(x1, x2, x3) → 1633_1_cos_InvokeMethod(x1, x2)
Cond_1276_0_sin_GT(x1, x2, x3) → Cond_1276_0_sin_GT(x1, x2)
1336_1_sin_InvokeMethod(x1, x2, x3) → 1336_1_sin_InvokeMethod(x1, x2)
1501_1_sin_InvokeMethod(x1, x2, x3) → 1501_1_sin_InvokeMethod(x1, x3)
1619_1_sin_InvokeMethod(x1, x2, x3) → 1619_1_sin_InvokeMethod(x1, x2)

Current set of rules:


P rules:
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1657_0_main_Load(&&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), <(0, %(x1, 5))), <(0, %(x1, 3))), java.lang.Object(ARRAY(x0)), x1)
Cond_1657_0_main_Load(TRUE, java.lang.Object(ARRAY(x0)), x1) → 2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 0)
2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, x2) → Cond_2000_0_main_GE(&&(>(+(x2, 1), 0), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2)
Cond_2000_0_main_GE(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1))
2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 100) → Cond_2000_0_main_GE1(>(+(x1, 1), 0), java.lang.Object(ARRAY(x0)), x1)
Cond_2000_0_main_GE1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), +(x1, 1))
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1657_0_main_Load1(&&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 5))), <(0, %(x1, 3))), java.lang.Object(ARRAY(x0)), x1)
Cond_1657_0_main_Load1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1876_1_main_InvokeMethod(1876_0_exp_Load(x0, x1), x0, x1)
1876_1_main_InvokeMethod(1438_0_exp_Return(x0), x0, 0) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1876_1_main_InvokeMethod(1762_0_exp_Return, x2, x1) → Cond_1876_1_main_InvokeMethod(>(+(x1, 1), 0), x2, x1)
Cond_1876_1_main_InvokeMethod(TRUE, x2, x1) → 1657_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1))
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1657_0_main_Load2(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 3))), java.lang.Object(ARRAY(x0)), x1)
Cond_1657_0_main_Load2(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1815_1_main_InvokeMethod(1815_0_cos_Load(x0, x1), x0, x1)
1815_1_main_InvokeMethod(1370_0_cos_Return(x0), x0, 0) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1815_1_main_InvokeMethod(1854_0_cos_Return, x2, x1) → Cond_1815_1_main_InvokeMethod(>(+(x1, 1), 0), x2, x1)
Cond_1815_1_main_InvokeMethod(TRUE, x2, x1) → 1657_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1))
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1657_0_main_Load3(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(0, %(x1, 2))), java.lang.Object(ARRAY(x0)), x1)
Cond_1657_0_main_Load3(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1760_1_main_InvokeMethod(1760_0_sin_Load(x0, x1), x0, x1)
1760_1_main_InvokeMethod(1308_0_sin_Return(x0), x0, 0) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1760_1_main_InvokeMethod(1842_0_sin_Return(x0), x3, x2) → Cond_1760_1_main_InvokeMethod(>(+(x2, 1), 0), x3, x2)
Cond_1760_1_main_InvokeMethod(TRUE, x3, x2) → 1657_0_main_Load(java.lang.Object(ARRAY(x3)), +(x2, 1))
R rules:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → Cond_1400_0_exp_GT(x1_[0], x0)
Cond_1400_0_exp_GT(TRUE, x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(1175_0_fact_GT, x1)
1554_1_exp_InvokeMethod(1449_0_fact_Return, x1) → Cond_1554_1_exp_InvokeMethod(x0_[0,0]_[0], x1)
Cond_1554_1_exp_InvokeMethod(TRUE, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1762_0_exp_Return
1672_1_exp_InvokeMethod(1762_0_exp_Return, x0) → 1762_0_exp_Return
1331_0_cos_GT(x0) → 1370_0_cos_Return(x0)
1331_0_cos_GT(x0) → Cond_1331_0_cos_GT(x1_[0], x0)
Cond_1331_0_cos_GT(TRUE, x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → Cond_1404_1_cos_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1404_1_cos_InvokeMethod(TRUE, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → Cond_1534_1_cos_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1534_1_cos_InvokeMethod(TRUE, x1) → 1633_1_cos_InvokeMethod(1175_0_fact_GT, x1)
1633_1_cos_InvokeMethod(1449_0_fact_Return, x1) → Cond_1633_1_cos_InvokeMethod(x0_[0,0]_[0], x1)
Cond_1633_1_cos_InvokeMethod(TRUE, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1370_0_cos_Return(x0), x0) → 1854_0_cos_Return
1738_1_cos_InvokeMethod(1854_0_cos_Return, x0) → 1854_0_cos_Return
1276_0_sin_GT(x0) → 1308_0_sin_Return(x0)
1276_0_sin_GT(x0) → Cond_1276_0_sin_GT(x1_[0], x0)
Cond_1276_0_sin_GT(TRUE, x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → Cond_1336_1_sin_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1336_1_sin_InvokeMethod(TRUE, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → Cond_1501_1_sin_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1501_1_sin_InvokeMethod(TRUE, x1) → 1619_1_sin_InvokeMethod(1175_0_fact_GT, x1)
1619_1_sin_InvokeMethod(1449_0_fact_Return, x1) → Cond_1619_1_sin_InvokeMethod(x0_[0,0]_[0], x1)
Cond_1619_1_sin_InvokeMethod(TRUE, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1308_0_sin_Return(x0), x0) → 1842_0_sin_Return(x2_[0])
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x2) → 1842_0_sin_Return(x1_[0])
757_0_power_GT797_0_power_Return
757_0_power_GTCond_757_0_power_GT(x1_[0])
Cond_757_0_power_GT(TRUE) → 864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(797_0_power_Return) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return
1175_0_fact_GT1204_0_fact_Return
1175_0_fact_GTCond_1175_0_fact_GT(x0_[0])
Cond_1175_0_fact_GT(TRUE) → 1252_1_fact_InvokeMethod(1175_0_fact_GT)
1252_1_fact_InvokeMethod(1204_0_fact_Return) → Cond_1252_1_fact_InvokeMethod(arith[1]_[0,0]_[0])
Cond_1252_1_fact_InvokeMethod(TRUE) → 1449_0_fact_Return
1252_1_fact_InvokeMethod(1449_0_fact_Return) → Cond_1252_1_fact_InvokeMethod1(x0_[0,0]_[0], 1449_0_fact_Return)
Cond_1252_1_fact_InvokeMethod1(TRUE, 1449_0_fact_Return) → 1449_0_fact_Return

Filtered ground terms:



Cond_1252_1_fact_InvokeMethod1(x1, x2) → Cond_1252_1_fact_InvokeMethod1(x1)

Filtered modulo operations.


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


P rules:
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 0) | &&(<(x1, x0), >(x0, -1))
2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, x2) → 2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1)) | &&(>(x2, -1), <(x2, 100))
2000_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 100) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), +(x1, 1)) | >(x1, -1)
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 1876_1_main_InvokeMethod(1876_0_exp_Load(x0, x1), x0, x1) | &&(<(x1, x0), >(x0, -1))
1876_1_main_InvokeMethod(1438_0_exp_Return(x0), x0, 0) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1876_1_main_InvokeMethod(1762_0_exp_Return, x2, x1) → 1657_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1)) | >(x1, -1)
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 1815_1_main_InvokeMethod(1815_0_cos_Load(x0, x1), x0, x1) | &&(<(x1, x0), >(x0, -1))
1815_1_main_InvokeMethod(1370_0_cos_Return(x0), x0, 0) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1815_1_main_InvokeMethod(1854_0_cos_Return, x2, x1) → 1657_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1)) | >(x1, -1)
1657_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 1760_1_main_InvokeMethod(1760_0_sin_Load(x0, x1), x0, x1) | &&(<(x1, x0), >(x0, -1))
1760_1_main_InvokeMethod(1308_0_sin_Return(x0), x0, 0) → 1657_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1760_1_main_InvokeMethod(1842_0_sin_Return(x0), x3, x2) → 1657_0_main_Load(java.lang.Object(ARRAY(x3)), +(x2, 1)) | >(x2, -1)
R rules:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(1175_0_fact_GT, x1)
1554_1_exp_InvokeMethod(1449_0_fact_Return, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1762_0_exp_Return
1672_1_exp_InvokeMethod(1762_0_exp_Return, x0) → 1762_0_exp_Return
1331_0_cos_GT(x0) → 1370_0_cos_Return(x0)
1331_0_cos_GT(x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(1175_0_fact_GT, x1)
1633_1_cos_InvokeMethod(1449_0_fact_Return, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1370_0_cos_Return(x0), x0) → 1854_0_cos_Return
1738_1_cos_InvokeMethod(1854_0_cos_Return, x0) → 1854_0_cos_Return
1276_0_sin_GT(x0) → 1308_0_sin_Return(x0)
1276_0_sin_GT(x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1619_1_sin_InvokeMethod(1175_0_fact_GT, x1)
1619_1_sin_InvokeMethod(1449_0_fact_Return, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1308_0_sin_Return(x0), x0) → 1842_0_sin_Return(x2_[0])
1731_1_sin_InvokeMethod(1842_0_sin_Return(x0), x2) → 1842_0_sin_Return(x1_[0])
757_0_power_GT797_0_power_Return
757_0_power_GT864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(797_0_power_Return) → 1113_0_power_Return
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return
1175_0_fact_GT1204_0_fact_Return
1175_0_fact_GT1252_1_fact_InvokeMethod(1175_0_fact_GT)
1252_1_fact_InvokeMethod(1204_0_fact_Return) → 1449_0_fact_Return
1252_1_fact_InvokeMethod(1449_0_fact_Return) → 1449_0_fact_Return

Performed bisimulation on rules. Used the following equivalence classes: {[1438_0_exp_Return_1, 1370_0_cos_Return_1, 1308_0_sin_Return_1, 1842_0_sin_Return_1]=1438_0_exp_Return_1, [864_1_power_InvokeMethod_1, 1252_1_fact_InvokeMethod_1]=864_1_power_InvokeMethod_1, [757_0_power_GT, 1175_0_fact_GT]=757_0_power_GT, [1113_0_power_Return, 1449_0_fact_Return, 1762_0_exp_Return, 1854_0_cos_Return, 797_0_power_Return, 1204_0_fact_Return]=1113_0_power_Return, [Cond_1876_1_main_InvokeMethod_4, Cond_1815_1_main_InvokeMethod_4]=Cond_1876_1_main_InvokeMethod_4}


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


P rules:
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0)), x1) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 0)
2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, x2) → COND_2000_0_MAIN_GE(&&(>(x2, -1), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2)
COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1))
2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 100) → COND_2000_0_MAIN_GE1(>(x1, -1), java.lang.Object(ARRAY(x0)), x1, 100)
COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0)), x1, 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), +(x1, 1))
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD1(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0, x1), x0, x1)
1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2, x1) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1, -1), 1113_0_power_Return, x2, x1)
COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2, x1) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2)), +(x1, 1))
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD2(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0, x1), x0, x1)
1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2, x1) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1, -1), 1113_0_power_Return, x2, x1)
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD3(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0, x1), x0, x1)
1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x3, x2) → COND_1760_1_MAIN_INVOKEMETHOD(>(x2, -1), 1438_0_exp_Return(x0), x3, x2)
COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0), x3, x2) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3)), +(x2, 1))
R rules:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(757_0_power_GT, x1)
1554_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1672_1_exp_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1331_0_cos_GT(x0) → 1438_0_exp_Return(x0)
1331_0_cos_GT(x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(757_0_power_GT, x1)
1633_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1276_0_sin_GT(x0) → 1438_0_exp_Return(x0)
1276_0_sin_GT(x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1619_1_sin_InvokeMethod(757_0_power_GT, x1)
1619_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x0) → 1438_0_exp_Return(x2_[0])
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x2) → 1438_0_exp_Return(x1_[0])
757_0_power_GT1113_0_power_Return
757_0_power_GT864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_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:

Boolean, Integer


The ITRS R consists of the following rules:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(757_0_power_GT, x1)
1554_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1672_1_exp_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1331_0_cos_GT(x0) → 1438_0_exp_Return(x0)
1331_0_cos_GT(x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(757_0_power_GT, x1)
1633_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1276_0_sin_GT(x0) → 1438_0_exp_Return(x0)
1276_0_sin_GT(x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1619_1_sin_InvokeMethod(757_0_power_GT, x1)
1619_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x0) → 1438_0_exp_Return(x2_[0])
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x2) → 1438_0_exp_Return(x1_[0])
757_0_power_GT1113_0_power_Return
757_0_power_GT864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1657_0_MAIN_LOAD(x1[0] < x0[0] && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0])
(1): COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(4): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_2000_0_MAIN_GE1(x1[4] > -1, java.lang.Object(ARRAY(x0[4])), x1[4], 100)
(5): COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), x1[5] + 1)
(6): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1657_0_MAIN_LOAD1(x1[6] < x0[6] && x0[6] > -1, java.lang.Object(ARRAY(x0[6])), x1[6])
(7): COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
(8): 1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[8]), x0[8], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)
(9): 1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9]) → COND_1876_1_MAIN_INVOKEMETHOD(x1[9] > -1, 1113_0_power_Return, x2[9], x1[9])
(10): COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), x1[10] + 1)
(11): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1657_0_MAIN_LOAD2(x1[11] < x0[11] && x0[11] > -1, java.lang.Object(ARRAY(x0[11])), x1[11])
(12): COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
(13): 1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[13]), x0[13], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)
(14): 1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14]) → COND_1876_1_MAIN_INVOKEMETHOD(x1[14] > -1, 1113_0_power_Return, x2[14], x1[14])
(15): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1657_0_MAIN_LOAD3(x1[15] < x0[15] && x0[15] > -1, java.lang.Object(ARRAY(x0[15])), x1[15])
(16): COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
(17): 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[17]), x0[17], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)
(18): 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1760_1_MAIN_INVOKEMETHOD(x2[18] > -1, 1438_0_exp_Return(x0[18]), x3[18], x2[18])
(19): COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0[19]), x3[19], x2[19]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), x2[19] + 1)

(0) -> (1), if (x1[0] < x0[0] && x0[0] > -1java.lang.Object(ARRAY(x0[0])) →* java.lang.Object(ARRAY(x0[1]))∧x1[0]* x1[1])


(1) -> (2), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[2]))∧x1[1]* x1[2]0* x2[2])


(1) -> (4), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[4]))∧x1[1]* x1[4]0* 100)


(2) -> (3), if (x2[2] > -1 && x2[2] < 100java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(3) -> (2), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[2]))∧x1[3]* x1[2]x2[3] + 1* x2[2])


(3) -> (4), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[4]))∧x1[3]* x1[4]x2[3] + 1* 100)


(4) -> (5), if (x1[4] > -1java.lang.Object(ARRAY(x0[4])) →* java.lang.Object(ARRAY(x0[5]))∧x1[4]* x1[5])


(5) -> (0), if (java.lang.Object(ARRAY(x0[5])) →* java.lang.Object(ARRAY(x0[0]))∧x1[5] + 1* x1[0])


(5) -> (6), if (java.lang.Object(ARRAY(x0[5])) →* java.lang.Object(ARRAY(x0[6]))∧x1[5] + 1* x1[6])


(5) -> (11), if (java.lang.Object(ARRAY(x0[5])) →* java.lang.Object(ARRAY(x0[11]))∧x1[5] + 1* x1[11])


(5) -> (15), if (java.lang.Object(ARRAY(x0[5])) →* java.lang.Object(ARRAY(x0[15]))∧x1[5] + 1* x1[15])


(6) -> (7), if (x1[6] < x0[6] && x0[6] > -1java.lang.Object(ARRAY(x0[6])) →* java.lang.Object(ARRAY(x0[7]))∧x1[6]* x1[7])


(7) -> (8), if (1876_0_exp_Load(x0[7], x1[7]) →* 1438_0_exp_Return(x0[8])∧x0[7]* x0[8]x1[7]* 0)


(7) -> (9), if (1876_0_exp_Load(x0[7], x1[7]) →* 1113_0_power_Returnx0[7]* x2[9]x1[7]* x1[9])


(8) -> (0), if (java.lang.Object(ARRAY(x0[8])) →* java.lang.Object(ARRAY(x0[0]))∧1* x1[0])


(8) -> (6), if (java.lang.Object(ARRAY(x0[8])) →* java.lang.Object(ARRAY(x0[6]))∧1* x1[6])


(8) -> (11), if (java.lang.Object(ARRAY(x0[8])) →* java.lang.Object(ARRAY(x0[11]))∧1* x1[11])


(8) -> (15), if (java.lang.Object(ARRAY(x0[8])) →* java.lang.Object(ARRAY(x0[15]))∧1* x1[15])


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


(10) -> (0), if (java.lang.Object(ARRAY(x2[10])) →* java.lang.Object(ARRAY(x0[0]))∧x1[10] + 1* x1[0])


(10) -> (6), if (java.lang.Object(ARRAY(x2[10])) →* java.lang.Object(ARRAY(x0[6]))∧x1[10] + 1* x1[6])


(10) -> (11), if (java.lang.Object(ARRAY(x2[10])) →* java.lang.Object(ARRAY(x0[11]))∧x1[10] + 1* x1[11])


(10) -> (15), if (java.lang.Object(ARRAY(x2[10])) →* java.lang.Object(ARRAY(x0[15]))∧x1[10] + 1* x1[15])


(11) -> (12), if (x1[11] < x0[11] && x0[11] > -1java.lang.Object(ARRAY(x0[11])) →* java.lang.Object(ARRAY(x0[12]))∧x1[11]* x1[12])


(12) -> (13), if (1815_0_cos_Load(x0[12], x1[12]) →* 1438_0_exp_Return(x0[13])∧x0[12]* x0[13]x1[12]* 0)


(12) -> (14), if (1815_0_cos_Load(x0[12], x1[12]) →* 1113_0_power_Returnx0[12]* x2[14]x1[12]* x1[14])


(13) -> (0), if (java.lang.Object(ARRAY(x0[13])) →* java.lang.Object(ARRAY(x0[0]))∧1* x1[0])


(13) -> (6), if (java.lang.Object(ARRAY(x0[13])) →* java.lang.Object(ARRAY(x0[6]))∧1* x1[6])


(13) -> (11), if (java.lang.Object(ARRAY(x0[13])) →* java.lang.Object(ARRAY(x0[11]))∧1* x1[11])


(13) -> (15), if (java.lang.Object(ARRAY(x0[13])) →* java.lang.Object(ARRAY(x0[15]))∧1* x1[15])


(14) -> (10), if (x1[14] > -1x2[14]* x2[10]x1[14]* x1[10])


(15) -> (16), if (x1[15] < x0[15] && x0[15] > -1java.lang.Object(ARRAY(x0[15])) →* java.lang.Object(ARRAY(x0[16]))∧x1[15]* x1[16])


(16) -> (17), if (1760_0_sin_Load(x0[16], x1[16]) →* 1438_0_exp_Return(x0[17])∧x0[16]* x0[17]x1[16]* 0)


(16) -> (18), if (1760_0_sin_Load(x0[16], x1[16]) →* 1438_0_exp_Return(x0[18])∧x0[16]* x3[18]x1[16]* x2[18])


(17) -> (0), if (java.lang.Object(ARRAY(x0[17])) →* java.lang.Object(ARRAY(x0[0]))∧1* x1[0])


(17) -> (6), if (java.lang.Object(ARRAY(x0[17])) →* java.lang.Object(ARRAY(x0[6]))∧1* x1[6])


(17) -> (11), if (java.lang.Object(ARRAY(x0[17])) →* java.lang.Object(ARRAY(x0[11]))∧1* x1[11])


(17) -> (15), if (java.lang.Object(ARRAY(x0[17])) →* java.lang.Object(ARRAY(x0[15]))∧1* x1[15])


(18) -> (19), if (x2[18] > -11438_0_exp_Return(x0[18]) →* 1438_0_exp_Return(x0[19])∧x3[18]* x3[19]x2[18]* x2[19])


(19) -> (0), if (java.lang.Object(ARRAY(x3[19])) →* java.lang.Object(ARRAY(x0[0]))∧x2[19] + 1* x1[0])


(19) -> (6), if (java.lang.Object(ARRAY(x3[19])) →* java.lang.Object(ARRAY(x0[6]))∧x2[19] + 1* x1[6])


(19) -> (11), if (java.lang.Object(ARRAY(x3[19])) →* java.lang.Object(ARRAY(x0[11]))∧x2[19] + 1* x1[11])


(19) -> (15), if (java.lang.Object(ARRAY(x3[19])) →* java.lang.Object(ARRAY(x0[15]))∧x2[19] + 1* x1[15])



The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_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@1c75ecf6 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 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0]), COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0) which results in the following constraint:

    (1)    (&&(<(x1[0], x0[0]), >(x0[0], -1))=TRUEjava.lang.Object(ARRAY(x0[0]))=java.lang.Object(ARRAY(x0[1]))∧x1[0]=x1[1]1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])∧(UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥))



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

    (2)    (<(x1[0], x0[0])=TRUE>(x0[0], -1)=TRUE1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])∧(UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥))



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

    (3)    (x0[0] + [-1] + [-1]x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [(-1)bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)



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

    (4)    (x0[0] + [-1] + [-1]x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [(-1)bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)



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

    (5)    (x0[0] + [-1] + [-1]x1[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [(-1)bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)



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

    (6)    (x0[0] + [-1] + [-1]x1[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [(-1)bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)


    (7)    (x0[0] + [-1] + x1[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)



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

    (8)    (x0[0] ≥ 0∧[1] + x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[bni_67 + (-1)Bound*bni_67] + [bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)







For Pair COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0)), x1) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 0) the following chains were created:
  • We consider the chain COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0) which results in the following constraint:

    (9)    (COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1])≥NonInfC∧COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1])≥2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)∧(UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)), ≥))



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

    (10)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)), ≥)∧[bni_69] = 0∧[(-1)bso_70] ≥ 0)



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

    (11)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)), ≥)∧[bni_69] = 0∧[(-1)bso_70] ≥ 0)



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

    (12)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)), ≥)∧[bni_69] = 0∧[(-1)bso_70] ≥ 0)



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

    (13)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)), ≥)∧[bni_69] = 0∧0 = 0∧0 = 0∧[(-1)bso_70] ≥ 0)







For Pair 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, x2) → COND_2000_0_MAIN_GE(&&(>(x2, -1), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (14)    (&&(>(x2[2], -1), <(x2[2], 100))=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



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

    (15)    (>(x2[2], -1)=TRUE<(x2[2], 100)=TRUE2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



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

    (16)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_71 + (-1)Bound*bni_71] + [(-1)bni_71]x1[2] + [(2)bni_71]x0[2] ≥ 0∧[(-1)bso_72] ≥ 0)



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

    (17)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_71 + (-1)Bound*bni_71] + [(-1)bni_71]x1[2] + [(2)bni_71]x0[2] ≥ 0∧[(-1)bso_72] ≥ 0)



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

    (18)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_71 + (-1)Bound*bni_71] + [(-1)bni_71]x1[2] + [(2)bni_71]x0[2] ≥ 0∧[(-1)bso_72] ≥ 0)



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

    (19)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_71] = 0∧[(2)bni_71] = 0∧[(-1)bni_71 + (-1)Bound*bni_71] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_72] ≥ 0)







For Pair COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1)) the following chains were created:
  • We consider the chain COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (20)    (COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))∧(UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥))



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

    (21)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_73] = 0∧[(-1)bso_74] ≥ 0)



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

    (22)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_73] = 0∧[(-1)bso_74] ≥ 0)



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

    (23)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_73] = 0∧[(-1)bso_74] ≥ 0)



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

    (24)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_73] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_74] ≥ 0)







For Pair 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 100) → COND_2000_0_MAIN_GE1(>(x1, -1), java.lang.Object(ARRAY(x0)), x1, 100) the following chains were created:
  • We consider the chain 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100), COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1)) which results in the following constraint:

    (25)    (>(x1[4], -1)=TRUEjava.lang.Object(ARRAY(x0[4]))=java.lang.Object(ARRAY(x0[5]))∧x1[4]=x1[5]2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)∧(UIncreasing(COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥))



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

    (26)    (>(x1[4], -1)=TRUE2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)∧(UIncreasing(COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥))



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

    (27)    (x1[4] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] + [(-1)bni_75]x1[4] + [(2)bni_75]x0[4] ≥ 0∧[(-1)bso_76] ≥ 0)



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

    (28)    (x1[4] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] + [(-1)bni_75]x1[4] + [(2)bni_75]x0[4] ≥ 0∧[(-1)bso_76] ≥ 0)



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

    (29)    (x1[4] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(-1)bni_75 + (-1)Bound*bni_75] + [(-1)bni_75]x1[4] + [(2)bni_75]x0[4] ≥ 0∧[(-1)bso_76] ≥ 0)



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

    (30)    (x1[4] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(2)bni_75] = 0∧[(-1)bni_75 + (-1)Bound*bni_75] + [(-1)bni_75]x1[4] ≥ 0∧0 = 0∧[(-1)bso_76] ≥ 0)







For Pair COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0)), x1, 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), +(x1, 1)) the following chains were created:
  • We consider the chain COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1)) which results in the following constraint:

    (31)    (COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100)≥NonInfC∧COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100)≥1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))∧(UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))), ≥))



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

    (32)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))), ≥)∧[bni_77] = 0∧[1 + (-1)bso_78] ≥ 0)



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

    (33)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))), ≥)∧[bni_77] = 0∧[1 + (-1)bso_78] ≥ 0)



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

    (34)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))), ≥)∧[bni_77] = 0∧[1 + (-1)bso_78] ≥ 0)



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

    (35)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))), ≥)∧[bni_77] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_78] ≥ 0)







For Pair 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD1(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6]), COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7]) which results in the following constraint:

    (36)    (&&(<(x1[6], x0[6]), >(x0[6], -1))=TRUEjava.lang.Object(ARRAY(x0[6]))=java.lang.Object(ARRAY(x0[7]))∧x1[6]=x1[7]1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])∧(UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥))



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

    (37)    (<(x1[6], x0[6])=TRUE>(x0[6], -1)=TRUE1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])∧(UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥))



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

    (38)    (x0[6] + [-1] + [-1]x1[6] ≥ 0∧x0[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)bni_79 + (-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)



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

    (39)    (x0[6] + [-1] + [-1]x1[6] ≥ 0∧x0[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)bni_79 + (-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)



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

    (40)    (x0[6] + [-1] + [-1]x1[6] ≥ 0∧x0[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)bni_79 + (-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)



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

    (41)    (x0[6] + [-1] + [-1]x1[6] ≥ 0∧x0[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)bni_79 + (-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)


    (42)    (x0[6] + [-1] + x1[6] ≥ 0∧x0[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)bni_79 + (-1)Bound*bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)



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

    (43)    (x0[6] ≥ 0∧[1] + x1[6] + x0[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[bni_79 + (-1)Bound*bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)







For Pair COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0, x1), x0, x1) the following chains were created:
  • We consider the chain COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7]) which results in the following constraint:

    (44)    (COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7])≥NonInfC∧COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7])≥1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])∧(UIncreasing(1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])), ≥))



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

    (45)    ((UIncreasing(1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])), ≥)∧[bni_81] = 0∧[(-1)bso_82] ≥ 0)



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

    (46)    ((UIncreasing(1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])), ≥)∧[bni_81] = 0∧[(-1)bso_82] ≥ 0)



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

    (47)    ((UIncreasing(1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])), ≥)∧[bni_81] = 0∧[(-1)bso_82] ≥ 0)



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

    (48)    ((UIncreasing(1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])), ≥)∧[bni_81] = 0∧0 = 0∧0 = 0∧[(-1)bso_82] ≥ 0)







For Pair 1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1) the following chains were created:
  • We consider the chain 1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[8]), x0[8], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1) which results in the following constraint:

    (49)    (1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[8]), x0[8], 0)≥NonInfC∧1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[8]), x0[8], 0)≥1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)∧(UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥))



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

    (50)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥)∧[bni_83] = 0∧[1 + (-1)bso_84] ≥ 0)



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

    (51)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥)∧[bni_83] = 0∧[1 + (-1)bso_84] ≥ 0)



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

    (52)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥)∧[bni_83] = 0∧[1 + (-1)bso_84] ≥ 0)



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

    (53)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥)∧[bni_83] = 0∧0 = 0∧[1 + (-1)bso_84] ≥ 0)







For Pair 1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2, x1) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1, -1), 1113_0_power_Return, x2, x1) the following chains were created:
  • We consider the chain 1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9]) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9]), COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1)) which results in the following constraint:

    (54)    (>(x1[9], -1)=TRUEx2[9]=x2[10]x1[9]=x1[10]1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9])≥NonInfC∧1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9])≥COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])∧(UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])), ≥))



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

    (55)    (>(x1[9], -1)=TRUE1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9])≥NonInfC∧1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9])≥COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])∧(UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])), ≥))



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

    (56)    (x1[9] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(2)bni_85]x2[9] + [(-1)bni_85]x1[9] ≥ 0∧[(-1)bso_86] ≥ 0)



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

    (57)    (x1[9] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(2)bni_85]x2[9] + [(-1)bni_85]x1[9] ≥ 0∧[(-1)bso_86] ≥ 0)



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

    (58)    (x1[9] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(2)bni_85]x2[9] + [(-1)bni_85]x1[9] ≥ 0∧[(-1)bso_86] ≥ 0)



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

    (59)    (x1[9] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])), ≥)∧[(2)bni_85] = 0∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]x1[9] ≥ 0∧0 = 0∧[(-1)bso_86] ≥ 0)







For Pair COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2, x1) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2)), +(x1, 1)) the following chains were created:
  • We consider the chain COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1)) which results in the following constraint:

    (60)    (COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10])≥NonInfC∧COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10])≥1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))∧(UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥))



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

    (61)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥)∧[bni_87] = 0∧[1 + (-1)bso_88] ≥ 0)



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

    (62)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥)∧[bni_87] = 0∧[1 + (-1)bso_88] ≥ 0)



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

    (63)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥)∧[bni_87] = 0∧[1 + (-1)bso_88] ≥ 0)



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

    (64)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥)∧[bni_87] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_88] ≥ 0)







For Pair 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD2(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11]), COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12]) which results in the following constraint:

    (65)    (&&(<(x1[11], x0[11]), >(x0[11], -1))=TRUEjava.lang.Object(ARRAY(x0[11]))=java.lang.Object(ARRAY(x0[12]))∧x1[11]=x1[12]1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])∧(UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥))



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

    (66)    (<(x1[11], x0[11])=TRUE>(x0[11], -1)=TRUE1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])∧(UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥))



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

    (67)    (x0[11] + [-1] + [-1]x1[11] ≥ 0∧x0[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)



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

    (68)    (x0[11] + [-1] + [-1]x1[11] ≥ 0∧x0[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)



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

    (69)    (x0[11] + [-1] + [-1]x1[11] ≥ 0∧x0[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)



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

    (70)    (x0[11] + [-1] + [-1]x1[11] ≥ 0∧x0[11] ≥ 0∧x1[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)


    (71)    (x0[11] + [-1] + x1[11] ≥ 0∧x0[11] ≥ 0∧x1[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)



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

    (72)    (x0[11] ≥ 0∧[1] + x1[11] + x0[11] ≥ 0∧x1[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[bni_89 + (-1)Bound*bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)







For Pair COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0, x1), x0, x1) the following chains were created:
  • We consider the chain COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12]) which results in the following constraint:

    (73)    (COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12])≥NonInfC∧COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12])≥1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])∧(UIncreasing(1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])), ≥))



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

    (74)    ((UIncreasing(1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])), ≥)∧[bni_91] = 0∧[(-1)bso_92] ≥ 0)



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

    (75)    ((UIncreasing(1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])), ≥)∧[bni_91] = 0∧[(-1)bso_92] ≥ 0)



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

    (76)    ((UIncreasing(1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])), ≥)∧[bni_91] = 0∧[(-1)bso_92] ≥ 0)



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

    (77)    ((UIncreasing(1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])), ≥)∧[bni_91] = 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)







For Pair 1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1) the following chains were created:
  • We consider the chain 1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[13]), x0[13], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1) which results in the following constraint:

    (78)    (1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[13]), x0[13], 0)≥NonInfC∧1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[13]), x0[13], 0)≥1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)∧(UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥))



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

    (79)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥)∧[bni_93] = 0∧[1 + (-1)bso_94] ≥ 0)



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

    (80)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥)∧[bni_93] = 0∧[1 + (-1)bso_94] ≥ 0)



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

    (81)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥)∧[bni_93] = 0∧[1 + (-1)bso_94] ≥ 0)



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

    (82)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥)∧[bni_93] = 0∧0 = 0∧[1 + (-1)bso_94] ≥ 0)







For Pair 1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2, x1) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1, -1), 1113_0_power_Return, x2, x1) the following chains were created:
  • We consider the chain 1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14]) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14]), COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1)) which results in the following constraint:

    (83)    (>(x1[14], -1)=TRUEx2[14]=x2[10]x1[14]=x1[10]1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14])≥NonInfC∧1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14])≥COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])∧(UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])), ≥))



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

    (84)    (>(x1[14], -1)=TRUE1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14])≥NonInfC∧1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14])≥COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])∧(UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])), ≥))



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

    (85)    (x1[14] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(2)bni_95]x2[14] + [(-1)bni_95]x1[14] ≥ 0∧[(-1)bso_96] ≥ 0)



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

    (86)    (x1[14] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(2)bni_95]x2[14] + [(-1)bni_95]x1[14] ≥ 0∧[(-1)bso_96] ≥ 0)



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

    (87)    (x1[14] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(2)bni_95]x2[14] + [(-1)bni_95]x1[14] ≥ 0∧[(-1)bso_96] ≥ 0)



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

    (88)    (x1[14] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])), ≥)∧[(2)bni_95] = 0∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]x1[14] ≥ 0∧0 = 0∧[(-1)bso_96] ≥ 0)







For Pair 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD3(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15]), COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16]) which results in the following constraint:

    (89)    (&&(<(x1[15], x0[15]), >(x0[15], -1))=TRUEjava.lang.Object(ARRAY(x0[15]))=java.lang.Object(ARRAY(x0[16]))∧x1[15]=x1[16]1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])∧(UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥))



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

    (90)    (<(x1[15], x0[15])=TRUE>(x0[15], -1)=TRUE1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥NonInfC∧1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])∧(UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥))



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

    (91)    (x0[15] + [-1] + [-1]x1[15] ≥ 0∧x0[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)



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

    (92)    (x0[15] + [-1] + [-1]x1[15] ≥ 0∧x0[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)



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

    (93)    (x0[15] + [-1] + [-1]x1[15] ≥ 0∧x0[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)



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

    (94)    (x0[15] + [-1] + [-1]x1[15] ≥ 0∧x0[15] ≥ 0∧x1[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)


    (95)    (x0[15] + [-1] + x1[15] ≥ 0∧x0[15] ≥ 0∧x1[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)



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

    (96)    (x0[15] ≥ 0∧[1] + x1[15] + x0[15] ≥ 0∧x1[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[bni_97 + (-1)Bound*bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)







For Pair COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0, x1), x0, x1) the following chains were created:
  • We consider the chain COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16]) which results in the following constraint:

    (97)    (COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16])≥NonInfC∧COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16])≥1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])∧(UIncreasing(1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])), ≥))



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

    (98)    ((UIncreasing(1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])), ≥)∧[bni_99] = 0∧[(-1)bso_100] ≥ 0)



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

    (99)    ((UIncreasing(1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])), ≥)∧[bni_99] = 0∧[(-1)bso_100] ≥ 0)



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

    (100)    ((UIncreasing(1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])), ≥)∧[bni_99] = 0∧[(-1)bso_100] ≥ 0)



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

    (101)    ((UIncreasing(1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])), ≥)∧[bni_99] = 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)







For Pair 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1) the following chains were created:
  • We consider the chain 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[17]), x0[17], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1) which results in the following constraint:

    (102)    (1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[17]), x0[17], 0)≥NonInfC∧1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[17]), x0[17], 0)≥1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)∧(UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥))



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

    (103)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥)∧[bni_101] = 0∧[1 + (-1)bso_102] ≥ 0)



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

    (104)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥)∧[bni_101] = 0∧[1 + (-1)bso_102] ≥ 0)



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

    (105)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥)∧[bni_101] = 0∧[1 + (-1)bso_102] ≥ 0)



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

    (106)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥)∧[bni_101] = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)







For Pair 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x3, x2) → COND_1760_1_MAIN_INVOKEMETHOD(>(x2, -1), 1438_0_exp_Return(x0), x3, x2) the following chains were created:
  • We consider the chain 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18]), COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0[19]), x3[19], x2[19]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1)) which results in the following constraint:

    (107)    (>(x2[18], -1)=TRUE1438_0_exp_Return(x0[18])=1438_0_exp_Return(x0[19])∧x3[18]=x3[19]x2[18]=x2[19]1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18])≥NonInfC∧1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18])≥COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])∧(UIncreasing(COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])), ≥))



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

    (108)    (>(x2[18], -1)=TRUE1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18])≥NonInfC∧1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18])≥COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])∧(UIncreasing(COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])), ≥))



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

    (109)    (x2[18] ≥ 0 ⇒ (UIncreasing(COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(2)bni_103]x3[18] + [(-1)bni_103]x2[18] ≥ 0∧[(-1)bso_104] ≥ 0)



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

    (110)    (x2[18] ≥ 0 ⇒ (UIncreasing(COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(2)bni_103]x3[18] + [(-1)bni_103]x2[18] ≥ 0∧[(-1)bso_104] ≥ 0)



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

    (111)    (x2[18] ≥ 0 ⇒ (UIncreasing(COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(2)bni_103]x3[18] + [(-1)bni_103]x2[18] ≥ 0∧[(-1)bso_104] ≥ 0)



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

    (112)    (x2[18] ≥ 0 ⇒ (UIncreasing(COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])), ≥)∧[(2)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]x2[18] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)







For Pair COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0), x3, x2) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3)), +(x2, 1)) the following chains were created:
  • We consider the chain COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0[19]), x3[19], x2[19]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1)) which results in the following constraint:

    (113)    (COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0[19]), x3[19], x2[19])≥NonInfC∧COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0[19]), x3[19], x2[19])≥1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))∧(UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥))



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

    (114)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥)∧[bni_105] = 0∧[1 + (-1)bso_106] ≥ 0)



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

    (115)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥)∧[bni_105] = 0∧[1 + (-1)bso_106] ≥ 0)



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

    (116)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥)∧[bni_105] = 0∧[1 + (-1)bso_106] ≥ 0)



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

    (117)    ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥)∧[bni_105] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_106] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
    • (x0[0] + [-1] + x1[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)
    • (x0[0] ≥ 0∧[1] + x1[0] + x0[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[bni_67 + (-1)Bound*bni_67] + [bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)

  • COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0)), x1) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 0)
    • ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)), ≥)∧[bni_69] = 0∧0 = 0∧0 = 0∧[(-1)bso_70] ≥ 0)

  • 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, x2) → COND_2000_0_MAIN_GE(&&(>(x2, -1), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2)
    • (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_71] = 0∧[(2)bni_71] = 0∧[(-1)bni_71 + (-1)Bound*bni_71] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_72] ≥ 0)

  • COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1))
    • ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_73] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_74] ≥ 0)

  • 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 100) → COND_2000_0_MAIN_GE1(>(x1, -1), java.lang.Object(ARRAY(x0)), x1, 100)
    • (x1[4] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(2)bni_75] = 0∧[(-1)bni_75 + (-1)Bound*bni_75] + [(-1)bni_75]x1[4] ≥ 0∧0 = 0∧[(-1)bso_76] ≥ 0)

  • COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0)), x1, 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), +(x1, 1))
    • ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))), ≥)∧[bni_77] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_78] ≥ 0)

  • 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD1(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
    • (x0[6] + [-1] + x1[6] ≥ 0∧x0[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)bni_79 + (-1)Bound*bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)
    • (x0[6] ≥ 0∧[1] + x1[6] + x0[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[bni_79 + (-1)Bound*bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[(-1)bso_80] ≥ 0)

  • COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0, x1), x0, x1)
    • ((UIncreasing(1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])), ≥)∧[bni_81] = 0∧0 = 0∧0 = 0∧[(-1)bso_82] ≥ 0)

  • 1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
    • ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥)∧[bni_83] = 0∧0 = 0∧[1 + (-1)bso_84] ≥ 0)

  • 1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2, x1) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1, -1), 1113_0_power_Return, x2, x1)
    • (x1[9] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])), ≥)∧[(2)bni_85] = 0∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]x1[9] ≥ 0∧0 = 0∧[(-1)bso_86] ≥ 0)

  • COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2, x1) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2)), +(x1, 1))
    • ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥)∧[bni_87] = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_88] ≥ 0)

  • 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD2(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
    • (x0[11] + [-1] + x1[11] ≥ 0∧x0[11] ≥ 0∧x1[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)
    • (x0[11] ≥ 0∧[1] + x1[11] + x0[11] ≥ 0∧x1[11] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[bni_89 + (-1)Bound*bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[(-1)bso_90] ≥ 0)

  • COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0, x1), x0, x1)
    • ((UIncreasing(1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])), ≥)∧[bni_91] = 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)

  • 1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
    • ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥)∧[bni_93] = 0∧0 = 0∧[1 + (-1)bso_94] ≥ 0)

  • 1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2, x1) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1, -1), 1113_0_power_Return, x2, x1)
    • (x1[14] ≥ 0 ⇒ (UIncreasing(COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])), ≥)∧[(2)bni_95] = 0∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]x1[14] ≥ 0∧0 = 0∧[(-1)bso_96] ≥ 0)

  • 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1657_0_MAIN_LOAD3(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
    • (x0[15] + [-1] + x1[15] ≥ 0∧x0[15] ≥ 0∧x1[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)
    • (x0[15] ≥ 0∧[1] + x1[15] + x0[15] ≥ 0∧x1[15] ≥ 0 ⇒ (UIncreasing(COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[bni_97 + (-1)Bound*bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[(-1)bso_98] ≥ 0)

  • COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0, x1), x0, x1)
    • ((UIncreasing(1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])), ≥)∧[bni_99] = 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)

  • 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x0, 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
    • ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥)∧[bni_101] = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

  • 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0), x3, x2) → COND_1760_1_MAIN_INVOKEMETHOD(>(x2, -1), 1438_0_exp_Return(x0), x3, x2)
    • (x2[18] ≥ 0 ⇒ (UIncreasing(COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])), ≥)∧[(2)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]x2[18] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)

  • COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0), x3, x2) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3)), +(x2, 1))
    • ((UIncreasing(1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥)∧[bni_105] = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_106] ≥ 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(1876_0_exp_Load(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(1400_0_exp_GT(x1)) = [-1] + [-1]x1   
POL(1815_0_cos_Load(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(1331_0_cos_GT(x1)) = [1] + [2]x1   
POL(1760_0_sin_Load(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(1276_0_sin_GT(x1)) = [1] + [-1]x1   
POL(1438_0_exp_Return(x1)) = x1   
POL(1474_1_exp_InvokeMethod(x1, x2)) = [-1]x2   
POL(757_0_power_GT) = [-1]   
POL(1113_0_power_Return) = [-1]   
POL(1554_1_exp_InvokeMethod(x1, x2)) = [-1] + [-1]x2   
POL(1672_1_exp_InvokeMethod(x1, x2)) = [-1] + [-1]x1 + [-1]x2   
POL(1404_1_cos_InvokeMethod(x1, x2)) = 0   
POL(1534_1_cos_InvokeMethod(x1, x2)) = [-1]   
POL(1633_1_cos_InvokeMethod(x1, x2)) = [2]x2   
POL(1738_1_cos_InvokeMethod(x1, x2)) = [2] + [-1]x1 + [-1]x2   
POL(1336_1_sin_InvokeMethod(x1, x2)) = [-1]x2   
POL(1501_1_sin_InvokeMethod(x1, x2)) = [2]x2   
POL(1619_1_sin_InvokeMethod(x1, x2)) = [-1] + [-1]x2   
POL(1731_1_sin_InvokeMethod(x1, x2)) = [2] + [-1]x1 + [-1]x2   
POL(864_1_power_InvokeMethod(x1)) = [-1]   
POL(1657_0_MAIN_LOAD(x1, x2)) = [-1] + [-1]x2 + [2]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(COND_1657_0_MAIN_LOAD(x1, x2, x3)) = [-1] + [-1]x3 + [2]x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(2000_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x2 + [2]x1   
POL(0) = 0   
POL(COND_2000_0_MAIN_GE(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(100) = [100]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(COND_2000_0_MAIN_GE1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [2]x2   
POL(COND_1657_0_MAIN_LOAD1(x1, x2, x3)) = [-1] + [-1]x3 + [2]x2   
POL(1876_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x2 + [-1]x3   
POL(COND_1876_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4 + [2]x3   
POL(COND_1657_0_MAIN_LOAD2(x1, x2, x3)) = [-1] + [-1]x3 + [2]x2   
POL(1815_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x2 + [-1]x3   
POL(COND_1657_0_MAIN_LOAD3(x1, x2, x3)) = [-1] + [-1]x3 + [2]x2   
POL(1760_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x2 + [-1]x3   
POL(COND_1760_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4 + [2]x3   

The following pairs are in P>:

COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))
1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[8]), x0[8], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)
COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))
1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[13]), x0[13], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)
1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[17]), x0[17], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)
COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0[19]), x3[19], x2[19]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))

The following pairs are in Pbound:

1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])

The following pairs are in P:

1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1657_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])
COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))
2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_2000_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1657_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])
COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9]) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 1113_0_power_Return, x2[9], x1[9])
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1657_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])
COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14]) → COND_1876_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 1113_0_power_Return, x2[14], x1[14])
1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1657_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])
COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1760_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1438_0_exp_Return(x0[18]), x3[18], x2[18])

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

1474_1_exp_InvokeMethod(1113_0_power_Return, x1)11554_1_exp_InvokeMethod(757_0_power_GT, x1)1

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

Boolean, Integer


The ITRS R consists of the following rules:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(757_0_power_GT, x1)
1554_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1672_1_exp_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1331_0_cos_GT(x0) → 1438_0_exp_Return(x0)
1331_0_cos_GT(x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(757_0_power_GT, x1)
1633_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1276_0_sin_GT(x0) → 1438_0_exp_Return(x0)
1276_0_sin_GT(x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1619_1_sin_InvokeMethod(757_0_power_GT, x1)
1619_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x0) → 1438_0_exp_Return(x2_[0])
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x2) → 1438_0_exp_Return(x1_[0])
757_0_power_GT1113_0_power_Return
757_0_power_GT864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1657_0_MAIN_LOAD(x1[0] < x0[0] && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0])
(1): COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(4): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_2000_0_MAIN_GE1(x1[4] > -1, java.lang.Object(ARRAY(x0[4])), x1[4], 100)
(6): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1657_0_MAIN_LOAD1(x1[6] < x0[6] && x0[6] > -1, java.lang.Object(ARRAY(x0[6])), x1[6])
(7): COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
(9): 1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9]) → COND_1876_1_MAIN_INVOKEMETHOD(x1[9] > -1, 1113_0_power_Return, x2[9], x1[9])
(11): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1657_0_MAIN_LOAD2(x1[11] < x0[11] && x0[11] > -1, java.lang.Object(ARRAY(x0[11])), x1[11])
(12): COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
(14): 1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14]) → COND_1876_1_MAIN_INVOKEMETHOD(x1[14] > -1, 1113_0_power_Return, x2[14], x1[14])
(15): 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1657_0_MAIN_LOAD3(x1[15] < x0[15] && x0[15] > -1, java.lang.Object(ARRAY(x0[15])), x1[15])
(16): COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
(18): 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1760_1_MAIN_INVOKEMETHOD(x2[18] > -1, 1438_0_exp_Return(x0[18]), x3[18], x2[18])

(0) -> (1), if (x1[0] < x0[0] && x0[0] > -1java.lang.Object(ARRAY(x0[0])) →* java.lang.Object(ARRAY(x0[1]))∧x1[0]* x1[1])


(1) -> (2), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[2]))∧x1[1]* x1[2]0* x2[2])


(3) -> (2), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[2]))∧x1[3]* x1[2]x2[3] + 1* x2[2])


(2) -> (3), if (x2[2] > -1 && x2[2] < 100java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(1) -> (4), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[4]))∧x1[1]* x1[4]0* 100)


(3) -> (4), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[4]))∧x1[3]* x1[4]x2[3] + 1* 100)


(6) -> (7), if (x1[6] < x0[6] && x0[6] > -1java.lang.Object(ARRAY(x0[6])) →* java.lang.Object(ARRAY(x0[7]))∧x1[6]* x1[7])


(7) -> (9), if (1876_0_exp_Load(x0[7], x1[7]) →* 1113_0_power_Returnx0[7]* x2[9]x1[7]* x1[9])


(11) -> (12), if (x1[11] < x0[11] && x0[11] > -1java.lang.Object(ARRAY(x0[11])) →* java.lang.Object(ARRAY(x0[12]))∧x1[11]* x1[12])


(12) -> (14), if (1815_0_cos_Load(x0[12], x1[12]) →* 1113_0_power_Returnx0[12]* x2[14]x1[12]* x1[14])


(15) -> (16), if (x1[15] < x0[15] && x0[15] > -1java.lang.Object(ARRAY(x0[15])) →* java.lang.Object(ARRAY(x0[16]))∧x1[15]* x1[16])


(16) -> (18), if (1760_0_sin_Load(x0[16], x1[16]) →* 1438_0_exp_Return(x0[18])∧x0[16]* x3[18]x1[16]* x2[18])



The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(62) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 12 less nodes.

(63) 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:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(757_0_power_GT, x1)
1554_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1672_1_exp_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1331_0_cos_GT(x0) → 1438_0_exp_Return(x0)
1331_0_cos_GT(x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(757_0_power_GT, x1)
1633_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1276_0_sin_GT(x0) → 1438_0_exp_Return(x0)
1276_0_sin_GT(x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1619_1_sin_InvokeMethod(757_0_power_GT, x1)
1619_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x0) → 1438_0_exp_Return(x2_[0])
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x2) → 1438_0_exp_Return(x1_[0])
757_0_power_GT1113_0_power_Return
757_0_power_GT864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return

The integer pair graph contains the following rules and edges:
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(3) -> (2), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[2]))∧x1[3]* x1[2]x2[3] + 1* x2[2])


(2) -> (3), if (x2[2] > -1 && x2[2] < 100java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])



The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(64) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(65) Obligation:

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


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(3) -> (2), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[2]))∧x1[3]* x1[2]x2[3] + 1* x2[2])


(2) -> (3), if (x2[2] > -1 && x2[2] < 100java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])



The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(66) 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@1c75ecf6 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

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


For Pair COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) the following chains were created:
  • We consider the chain COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (1)    (COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))∧(UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥))



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

    (2)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_10] = 0∧[1 + (-1)bso_11] ≥ 0)



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

    (3)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_10] = 0∧[1 + (-1)bso_11] ≥ 0)



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

    (4)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_10] = 0∧[1 + (-1)bso_11] ≥ 0)



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

    (5)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_10] = 0∧0 = 0∧[1 + (-1)bso_11] ≥ 0)







For Pair 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (6)    (&&(>(x2[2], -1), <(x2[2], 100))=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



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

    (7)    (>(x2[2], -1)=TRUE<(x2[2], 100)=TRUE2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



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

    (8)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [(-1)bni_12]x2[2] ≥ 0∧[(-1)bso_13] ≥ 0)



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

    (9)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [(-1)bni_12]x2[2] ≥ 0∧[(-1)bso_13] ≥ 0)



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

    (10)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [(-1)bni_12]x2[2] ≥ 0∧[(-1)bso_13] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))
    • ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_10] = 0∧0 = 0∧[1 + (-1)bso_11] ≥ 0)

  • 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [(-1)bni_12]x2[2] ≥ 0∧[(-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(COND_2000_0_MAIN_GE(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(java.lang.Object(x1)) = [-1]   
POL(ARRAY(x1)) = [-1]   
POL(2000_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x3   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   

The following pairs are in P>:

COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))

The following pairs are in Pbound:

2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

The following pairs are in P:

2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

There are no usable rules.

(67) Complex Obligation (AND)

(68) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])


The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(69) IDependencyGraphProof (EQUIVALENT transformation)

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

(70) TRUE

(71) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)


The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(72) IDependencyGraphProof (EQUIVALENT transformation)

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

(73) TRUE

(74) Obligation:

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


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(757_0_power_GT, x1)
1554_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1672_1_exp_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1331_0_cos_GT(x0) → 1438_0_exp_Return(x0)
1331_0_cos_GT(x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(757_0_power_GT, x1)
1633_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1276_0_sin_GT(x0) → 1438_0_exp_Return(x0)
1276_0_sin_GT(x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1619_1_sin_InvokeMethod(757_0_power_GT, x1)
1619_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x0) → 1438_0_exp_Return(x2_[0])
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x2) → 1438_0_exp_Return(x1_[0])
757_0_power_GT1113_0_power_Return
757_0_power_GT864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return

The integer pair graph contains the following rules and edges:
(1): COND_1657_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(4): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_2000_0_MAIN_GE1(x1[4] > -1, java.lang.Object(ARRAY(x0[4])), x1[4], 100)
(5): COND_2000_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), x1[5] + 1)
(7): COND_1657_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1876_1_MAIN_INVOKEMETHOD(1876_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
(8): 1876_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[8]), x0[8], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)
(9): 1876_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[9], x1[9]) → COND_1876_1_MAIN_INVOKEMETHOD(x1[9] > -1, 1113_0_power_Return, x2[9], x1[9])
(10): COND_1876_1_MAIN_INVOKEMETHOD(TRUE, 1113_0_power_Return, x2[10], x1[10]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), x1[10] + 1)
(12): COND_1657_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1815_1_MAIN_INVOKEMETHOD(1815_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
(13): 1815_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[13]), x0[13], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)
(14): 1815_1_MAIN_INVOKEMETHOD(1113_0_power_Return, x2[14], x1[14]) → COND_1876_1_MAIN_INVOKEMETHOD(x1[14] > -1, 1113_0_power_Return, x2[14], x1[14])
(16): COND_1657_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1760_1_MAIN_INVOKEMETHOD(1760_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
(17): 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[17]), x0[17], 0) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)
(18): 1760_1_MAIN_INVOKEMETHOD(1438_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1760_1_MAIN_INVOKEMETHOD(x2[18] > -1, 1438_0_exp_Return(x0[18]), x3[18], x2[18])
(19): COND_1760_1_MAIN_INVOKEMETHOD(TRUE, 1438_0_exp_Return(x0[19]), x3[19], x2[19]) → 1657_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), x2[19] + 1)

(1) -> (2), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[2]))∧x1[1]* x1[2]0* x2[2])


(3) -> (2), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[2]))∧x1[3]* x1[2]x2[3] + 1* x2[2])


(2) -> (3), if (x2[2] > -1 && x2[2] < 100java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])


(1) -> (4), if (java.lang.Object(ARRAY(x0[1])) →* java.lang.Object(ARRAY(x0[4]))∧x1[1]* x1[4]0* 100)


(3) -> (4), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[4]))∧x1[3]* x1[4]x2[3] + 1* 100)


(4) -> (5), if (x1[4] > -1java.lang.Object(ARRAY(x0[4])) →* java.lang.Object(ARRAY(x0[5]))∧x1[4]* x1[5])


(7) -> (8), if (1876_0_exp_Load(x0[7], x1[7]) →* 1438_0_exp_Return(x0[8])∧x0[7]* x0[8]x1[7]* 0)


(7) -> (9), if (1876_0_exp_Load(x0[7], x1[7]) →* 1113_0_power_Returnx0[7]* x2[9]x1[7]* x1[9])


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


(14) -> (10), if (x1[14] > -1x2[14]* x2[10]x1[14]* x1[10])


(12) -> (13), if (1815_0_cos_Load(x0[12], x1[12]) →* 1438_0_exp_Return(x0[13])∧x0[12]* x0[13]x1[12]* 0)


(12) -> (14), if (1815_0_cos_Load(x0[12], x1[12]) →* 1113_0_power_Returnx0[12]* x2[14]x1[12]* x1[14])


(16) -> (17), if (1760_0_sin_Load(x0[16], x1[16]) →* 1438_0_exp_Return(x0[17])∧x0[16]* x0[17]x1[16]* 0)


(16) -> (18), if (1760_0_sin_Load(x0[16], x1[16]) →* 1438_0_exp_Return(x0[18])∧x0[16]* x3[18]x1[16]* x2[18])


(18) -> (19), if (x2[18] > -11438_0_exp_Return(x0[18]) →* 1438_0_exp_Return(x0[19])∧x3[18]* x3[19]x2[18]* x2[19])



The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(75) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 14 less nodes.

(76) 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:
1876_0_exp_Load(x0, x1) → 1400_0_exp_GT(x0)
1815_0_cos_Load(x0, x1) → 1331_0_cos_GT(x0)
1760_0_sin_Load(x0, x1) → 1276_0_sin_GT(x0)
1400_0_exp_GT(x0) → 1438_0_exp_Return(x0)
1400_0_exp_GT(x0) → 1474_1_exp_InvokeMethod(757_0_power_GT, x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1554_1_exp_InvokeMethod(757_0_power_GT, x1)
1554_1_exp_InvokeMethod(1113_0_power_Return, x1) → 1672_1_exp_InvokeMethod(1400_0_exp_GT(x1), x1)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1672_1_exp_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1331_0_cos_GT(x0) → 1438_0_exp_Return(x0)
1331_0_cos_GT(x0) → 1404_1_cos_InvokeMethod(757_0_power_GT, x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1534_1_cos_InvokeMethod(757_0_power_GT, x1)
1534_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1633_1_cos_InvokeMethod(757_0_power_GT, x1)
1633_1_cos_InvokeMethod(1113_0_power_Return, x1) → 1738_1_cos_InvokeMethod(1331_0_cos_GT(x1), x1)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0) → 1113_0_power_Return
1738_1_cos_InvokeMethod(1113_0_power_Return, x0) → 1113_0_power_Return
1276_0_sin_GT(x0) → 1438_0_exp_Return(x0)
1276_0_sin_GT(x0) → 1336_1_sin_InvokeMethod(757_0_power_GT, x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1501_1_sin_InvokeMethod(757_0_power_GT, x1)
1501_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1619_1_sin_InvokeMethod(757_0_power_GT, x1)
1619_1_sin_InvokeMethod(1113_0_power_Return, x1) → 1731_1_sin_InvokeMethod(1276_0_sin_GT(x1), x1)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x0) → 1438_0_exp_Return(x2_[0])
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x2) → 1438_0_exp_Return(x1_[0])
757_0_power_GT1113_0_power_Return
757_0_power_GT864_1_power_InvokeMethod(757_0_power_GT)
864_1_power_InvokeMethod(1113_0_power_Return) → 1113_0_power_Return

The integer pair graph contains the following rules and edges:
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(3) -> (2), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[2]))∧x1[3]* x1[2]x2[3] + 1* x2[2])


(2) -> (3), if (x2[2] > -1 && x2[2] < 100java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])



The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(77) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(78) Obligation:

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


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

(3) -> (2), if (java.lang.Object(ARRAY(x0[3])) →* java.lang.Object(ARRAY(x0[2]))∧x1[3]* x1[2]x2[3] + 1* x2[2])


(2) -> (3), if (x2[2] > -1 && x2[2] < 100java.lang.Object(ARRAY(x0[2])) →* java.lang.Object(ARRAY(x0[3]))∧x1[2]* x1[3]x2[2]* x2[3])



The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(79) 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@1c75ecf6 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

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


For Pair COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) the following chains were created:
  • We consider the chain COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (1)    (COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))∧(UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥))



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

    (2)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_11] = 0∧[1 + (-1)bso_12] ≥ 0)



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

    (3)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_11] = 0∧[1 + (-1)bso_12] ≥ 0)



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

    (4)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_11] = 0∧[1 + (-1)bso_12] ≥ 0)



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

    (5)    ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_11] = 0∧0 = 0∧[1 + (-1)bso_12] ≥ 0)







For Pair 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) the following chains were created:
  • We consider the chain 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (6)    (&&(>(x2[2], -1), <(x2[2], 100))=TRUEjava.lang.Object(ARRAY(x0[2]))=java.lang.Object(ARRAY(x0[3]))∧x1[2]=x1[3]x2[2]=x2[3]2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



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

    (7)    (>(x2[2], -1)=TRUE<(x2[2], 100)=TRUE2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥))



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

    (8)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [(-1)bni_13]x2[2] ≥ 0∧[(-1)bso_14] ≥ 0)



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

    (9)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [(-1)bni_13]x2[2] ≥ 0∧[(-1)bso_14] ≥ 0)



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

    (10)    (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [(-1)bni_13]x2[2] ≥ 0∧[(-1)bso_14] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))
    • ((UIncreasing(2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_11] = 0∧0 = 0∧[1 + (-1)bso_12] ≥ 0)

  • 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
    • (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [(-1)bni_13]x2[2] ≥ 0∧[(-1)bso_14] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_2000_0_MAIN_GE(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(java.lang.Object(x1)) = [-1]   
POL(ARRAY(x1)) = [-1]   
POL(2000_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x3   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   

The following pairs are in P>:

COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))

The following pairs are in Pbound:

2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

The following pairs are in P:

2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])

There are no usable rules.

(80) Complex Obligation (AND)

(81) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_2000_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])


The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(82) IDependencyGraphProof (EQUIVALENT transformation)

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

(83) TRUE

(84) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_2000_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 2000_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)


The set Q consists of the following terms:
1876_0_exp_Load(x0, x1)
1815_0_cos_Load(x0, x1)
1760_0_sin_Load(x0, x1)
1400_0_exp_GT(x0)
1474_1_exp_InvokeMethod(1113_0_power_Return, x0)
1554_1_exp_InvokeMethod(1113_0_power_Return, x0)
1672_1_exp_InvokeMethod(1438_0_exp_Return(x0), x0)
1672_1_exp_InvokeMethod(1113_0_power_Return, x0)
1331_0_cos_GT(x0)
1404_1_cos_InvokeMethod(1113_0_power_Return, x0)
1534_1_cos_InvokeMethod(1113_0_power_Return, x0)
1633_1_cos_InvokeMethod(1113_0_power_Return, x0)
1738_1_cos_InvokeMethod(1438_0_exp_Return(x0), x0)
1738_1_cos_InvokeMethod(1113_0_power_Return, x0)
1276_0_sin_GT(x0)
1336_1_sin_InvokeMethod(1113_0_power_Return, x0)
1501_1_sin_InvokeMethod(1113_0_power_Return, x0)
1619_1_sin_InvokeMethod(1113_0_power_Return, x0)
1731_1_sin_InvokeMethod(1438_0_exp_Return(x0), x1)
757_0_power_GT
864_1_power_InvokeMethod(1113_0_power_Return)

(85) IDependencyGraphProof (EQUIVALENT transformation)

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

(86) TRUE