(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:
1061_0_fact_GT(EOS(STATIC_1061), i191, i191) → 1068_0_fact_GT(EOS(STATIC_1068), i191, i191)
1068_0_fact_GT(EOS(STATIC_1068), i191, i191) → 1080_0_fact_Load(EOS(STATIC_1080), i191) | >(i191, 0)
1080_0_fact_Load(EOS(STATIC_1080), i191) → 1090_0_fact_Load(EOS(STATIC_1090), i191, i191)
1090_0_fact_Load(EOS(STATIC_1090), i191, i191) → 1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191)
1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191) → 1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191, 1)
1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191, matching1) → 1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191, -(i191, 1)) | &&(>(i191, 0), =(matching1, 1))
1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191, i207) → 1137_1_fact_InvokeMethod(1137_0_fact_Load(EOS(STATIC_1137), i207), i191, i207)
1137_0_fact_Load(EOS(STATIC_1137), i207) → 1147_0_fact_Load(EOS(STATIC_1147), i207)
1147_0_fact_Load(EOS(STATIC_1147), i207) → 1054_0_fact_Load(EOS(STATIC_1054), i207)
1054_0_fact_Load(EOS(STATIC_1054), i187) → 1061_0_fact_GT(EOS(STATIC_1061), i187, i187)
R rules:
1061_0_fact_GT(EOS(STATIC_1061), matching1, matching2) → 1067_0_fact_GT(EOS(STATIC_1067), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1067_0_fact_GT(EOS(STATIC_1067), matching1, matching2) → 1078_0_fact_ConstantStackPush(EOS(STATIC_1078), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1078_0_fact_ConstantStackPush(EOS(STATIC_1078), matching1) → 1088_0_fact_Return(EOS(STATIC_1088), 0) | =(matching1, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), matching1), i191, matching2) → 1177_0_fact_Return(EOS(STATIC_1177), i191, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), i191, i265) → 1398_0_fact_Return(EOS(STATIC_1398), i191, i265)
1177_0_fact_Return(EOS(STATIC_1177), i191, matching1, matching2) → 1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191) | &&(=(matching1, 0), =(matching2, 0))
1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191) → 1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191)
1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191)
1323_0_fact_Return(EOS(STATIC_1323), i191, i249) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191)
1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191) → 1350_0_fact_Return(EOS(STATIC_1350)) | >=(i191, 1)
1398_0_fact_Return(EOS(STATIC_1398), i191, i265) → 1323_0_fact_Return(EOS(STATIC_1323), i191, i265)

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


P rules:
1061_0_fact_GT(EOS(STATIC_1061), x0, x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), -(x0, 1), -(x0, 1)), x0, -(x0, 1)) | >(x0, 0)
R rules:
1061_0_fact_GT(EOS(STATIC_1061), 0, 0) → 1088_0_fact_Return(EOS(STATIC_1088), 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), 0), x1, 0) → 1350_0_fact_Return(EOS(STATIC_1350)) | >(+(x1, 1), 1)
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), x0, x1) → 1350_0_fact_Return(EOS(STATIC_1350)) | >(+(x0, 1), 1)

Filtered ground terms:



1061_0_fact_GT(x1, x2, x3) → 1061_0_fact_GT(x2, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4) → Cond_1061_0_fact_GT(x1, x3, x4)
1350_0_fact_Return(x1) → 1350_0_fact_Return
Cond_1137_1_fact_InvokeMethod1(x1, x2, x3, x4) → Cond_1137_1_fact_InvokeMethod1(x1, x3, x4)
Cond_1137_1_fact_InvokeMethod(x1, x2, x3, x4) → Cond_1137_1_fact_InvokeMethod(x1, x3)
1088_0_fact_Return(x1, x2) → 1088_0_fact_Return

Filtered duplicate args:



1061_0_fact_GT(x1, x2) → 1061_0_fact_GT(x2)
Cond_1061_0_fact_GT(x1, x2, x3) → Cond_1061_0_fact_GT(x1, x3)

Filtered unneeded arguments:



Cond_1137_1_fact_InvokeMethod(x1, x2) → Cond_1137_1_fact_InvokeMethod(x1)
Cond_1137_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod1(x1)

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


P rules:
1061_0_fact_GT(x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(-(x0, 1)), x0, -(x0, 1)) | >(x0, 0)
R rules:
1061_0_fact_GT(0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1, 0) → 1350_0_fact_Return | >(x1, 0)
1137_1_fact_InvokeMethod(1350_0_fact_Return, x0, x1) → 1350_0_fact_Return | >(x0, 0)

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


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


P rules:
1061_0_FACT_GT(x0) → COND_1061_0_FACT_GT(>(x0, 0), x0)
COND_1061_0_FACT_GT(TRUE, x0) → 1061_0_FACT_GT(-(x0, 1))
R rules:
1061_0_fact_GT(0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1, 0) → Cond_1137_1_fact_InvokeMethod(>(x1, 0), 1088_0_fact_Return, x1, 0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1, 0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0, x1) → Cond_1137_1_fact_InvokeMethod1(>(x0, 0), 1088_0_fact_Return, x0, x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1088_0_fact_Return, x0, x1) → 1088_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:
1061_0_fact_GT(0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1, 0) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 1088_0_fact_Return, x1, 0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1, 0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0, x1) → Cond_1137_1_fact_InvokeMethod1(x0 > 0, 1088_0_fact_Return, x0, x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1088_0_fact_Return, x0, x1) → 1088_0_fact_Return

The integer pair graph contains the following rules and edges:
(0): 1061_0_FACT_GT(x0[0]) → COND_1061_0_FACT_GT(x0[0] > 0, x0[0])
(1): COND_1061_0_FACT_GT(TRUE, x0[1]) → 1061_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:
1061_0_fact_GT(0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0, x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1088_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@600a05f6 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 1061_0_FACT_GT(x0) → COND_1061_0_FACT_GT(>(x0, 0), x0) the following chains were created:
  • We consider the chain 1061_0_FACT_GT(x0[0]) → COND_1061_0_FACT_GT(>(x0[0], 0), x0[0]), COND_1061_0_FACT_GT(TRUE, x0[1]) → 1061_0_FACT_GT(-(x0[1], 1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]1061_0_FACT_GT(x0[0])≥NonInfC∧1061_0_FACT_GT(x0[0])≥COND_1061_0_FACT_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1061_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)=TRUE1061_0_FACT_GT(x0[0])≥NonInfC∧1061_0_FACT_GT(x0[0])≥COND_1061_0_FACT_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1061_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_1061_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_1061_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_1061_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_1061_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_1061_0_FACT_GT(TRUE, x0) → 1061_0_FACT_GT(-(x0, 1)) the following chains were created:
  • We consider the chain COND_1061_0_FACT_GT(TRUE, x0[1]) → 1061_0_FACT_GT(-(x0[1], 1)) which results in the following constraint:

    (7)    (COND_1061_0_FACT_GT(TRUE, x0[1])≥NonInfC∧COND_1061_0_FACT_GT(TRUE, x0[1])≥1061_0_FACT_GT(-(x0[1], 1))∧(UIncreasing(1061_0_FACT_GT(-(x0[1], 1))), ≥))



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

    (8)    ((UIncreasing(1061_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(1061_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(1061_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(1061_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.
  • 1061_0_FACT_GT(x0) → COND_1061_0_FACT_GT(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1061_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_1061_0_FACT_GT(TRUE, x0) → 1061_0_FACT_GT(-(x0, 1))
    • ((UIncreasing(1061_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(1061_0_fact_GT(x1)) = [-1]   
POL(0) = 0   
POL(1088_0_fact_Return) = [-1]   
POL(1137_1_fact_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x2   
POL(Cond_1137_1_fact_InvokeMethod(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(Cond_1137_1_fact_InvokeMethod1(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(1061_0_FACT_GT(x1)) = [2]x1   
POL(COND_1061_0_FACT_GT(x1, x2)) = [2]x2   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_1061_0_FACT_GT(TRUE, x0[1]) → 1061_0_FACT_GT(-(x0[1], 1))

The following pairs are in Pbound:

1061_0_FACT_GT(x0[0]) → COND_1061_0_FACT_GT(>(x0[0], 0), x0[0])

The following pairs are in P:

1061_0_FACT_GT(x0[0]) → COND_1061_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:
1061_0_fact_GT(0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1, 0) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 1088_0_fact_Return, x1, 0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1, 0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0, x1) → Cond_1137_1_fact_InvokeMethod1(x0 > 0, 1088_0_fact_Return, x0, x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1088_0_fact_Return, x0, x1) → 1088_0_fact_Return

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


The set Q consists of the following terms:
1061_0_fact_GT(0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0, x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1088_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:
1061_0_fact_GT(0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1, 0) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 1088_0_fact_Return, x1, 0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1, 0) → 1088_0_fact_Return
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0, x1) → Cond_1137_1_fact_InvokeMethod1(x0 > 0, 1088_0_fact_Return, x0, x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1088_0_fact_Return, x0, x1) → 1088_0_fact_Return

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


The set Q consists of the following terms:
1061_0_fact_GT(0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0, x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1088_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:
667_0_power_GT(EOS(STATIC_667), i87, i87) → 677_0_power_GT(EOS(STATIC_677), i87, i87)
677_0_power_GT(EOS(STATIC_677), i87, i87) → 689_0_power_Load(EOS(STATIC_689), i87) | >(i87, 0)
689_0_power_Load(EOS(STATIC_689), i87) → 699_0_power_Load(EOS(STATIC_699), i87)
699_0_power_Load(EOS(STATIC_699), i87) → 708_0_power_Load(EOS(STATIC_708), i87)
708_0_power_Load(EOS(STATIC_708), i87) → 721_0_power_ConstantStackPush(EOS(STATIC_721), i87)
721_0_power_ConstantStackPush(EOS(STATIC_721), i87) → 731_0_power_IntArithmetic(EOS(STATIC_731), i87, 1)
731_0_power_IntArithmetic(EOS(STATIC_731), i87, matching1) → 743_0_power_InvokeMethod(EOS(STATIC_743), -(i87, 1)) | &&(>(i87, 0), =(matching1, 1))
743_0_power_InvokeMethod(EOS(STATIC_743), i102) → 751_1_power_InvokeMethod(751_0_power_Load(EOS(STATIC_751), i102), i102)
751_0_power_Load(EOS(STATIC_751), i102) → 763_0_power_Load(EOS(STATIC_763), i102)
763_0_power_Load(EOS(STATIC_763), i102) → 654_0_power_Load(EOS(STATIC_654), i102)
654_0_power_Load(EOS(STATIC_654), i79) → 667_0_power_GT(EOS(STATIC_667), i79, i79)
R rules:
667_0_power_GT(EOS(STATIC_667), matching1, matching2) → 676_0_power_GT(EOS(STATIC_676), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
676_0_power_GT(EOS(STATIC_676), matching1, matching2) → 688_0_power_ConstantStackPush(EOS(STATIC_688), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
688_0_power_ConstantStackPush(EOS(STATIC_688), matching1) → 697_0_power_Return(EOS(STATIC_697), 0) | =(matching1, 0)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), matching1), matching2) → 804_0_power_Return(EOS(STATIC_804), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), i174) → 1047_0_power_Return(EOS(STATIC_1047), i174)
804_0_power_Return(EOS(STATIC_804), matching1, matching2) → 810_0_power_IntArithmetic(EOS(STATIC_810)) | &&(=(matching1, 0), =(matching2, 0))
810_0_power_IntArithmetic(EOS(STATIC_810)) → 985_0_power_IntArithmetic(EOS(STATIC_985))
972_0_power_Return(EOS(STATIC_972), i162) → 985_0_power_IntArithmetic(EOS(STATIC_985))
985_0_power_IntArithmetic(EOS(STATIC_985)) → 996_0_power_Return(EOS(STATIC_996))
1047_0_power_Return(EOS(STATIC_1047), i174) → 972_0_power_Return(EOS(STATIC_972), i174)

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


P rules:
667_0_power_GT(EOS(STATIC_667), x0, x0) → 751_1_power_InvokeMethod(667_0_power_GT(EOS(STATIC_667), -(x0, 1), -(x0, 1)), -(x0, 1)) | >(x0, 0)
R rules:
667_0_power_GT(EOS(STATIC_667), 0, 0) → 697_0_power_Return(EOS(STATIC_697), 0)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), 0), 0) → 996_0_power_Return(EOS(STATIC_996))
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), x0) → 996_0_power_Return(EOS(STATIC_996))

Filtered ground terms:



667_0_power_GT(x1, x2, x3) → 667_0_power_GT(x2, x3)
Cond_667_0_power_GT(x1, x2, x3, x4) → Cond_667_0_power_GT(x1, x3, x4)
996_0_power_Return(x1) → 996_0_power_Return
697_0_power_Return(x1, x2) → 697_0_power_Return

Filtered duplicate args:



667_0_power_GT(x1, x2) → 667_0_power_GT(x2)
Cond_667_0_power_GT(x1, x2, x3) → Cond_667_0_power_GT(x1, x3)

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


P rules:
667_0_power_GT(x0) → 751_1_power_InvokeMethod(667_0_power_GT(-(x0, 1)), -(x0, 1)) | >(x0, 0)
R rules:
667_0_power_GT(0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, 0) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return

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


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


P rules:
667_0_POWER_GT(x0) → COND_667_0_POWER_GT(>(x0, 0), x0)
COND_667_0_POWER_GT(TRUE, x0) → 667_0_POWER_GT(-(x0, 1))
R rules:
667_0_power_GT(0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, 0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, x0) → 697_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:
667_0_power_GT(0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, 0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, x0) → 697_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 667_0_POWER_GT(x0[0]) → COND_667_0_POWER_GT(x0[0] > 0, x0[0])
(1): COND_667_0_POWER_GT(TRUE, x0[1]) → 667_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:
667_0_power_GT(0)
751_1_power_InvokeMethod(697_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@600a05f6 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 667_0_POWER_GT(x0) → COND_667_0_POWER_GT(>(x0, 0), x0) the following chains were created:
  • We consider the chain 667_0_POWER_GT(x0[0]) → COND_667_0_POWER_GT(>(x0[0], 0), x0[0]), COND_667_0_POWER_GT(TRUE, x0[1]) → 667_0_POWER_GT(-(x0[1], 1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]667_0_POWER_GT(x0[0])≥NonInfC∧667_0_POWER_GT(x0[0])≥COND_667_0_POWER_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_667_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)=TRUE667_0_POWER_GT(x0[0])≥NonInfC∧667_0_POWER_GT(x0[0])≥COND_667_0_POWER_GT(>(x0[0], 0), x0[0])∧(UIncreasing(COND_667_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_667_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_667_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_667_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_667_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_667_0_POWER_GT(TRUE, x0) → 667_0_POWER_GT(-(x0, 1)) the following chains were created:
  • We consider the chain COND_667_0_POWER_GT(TRUE, x0[1]) → 667_0_POWER_GT(-(x0[1], 1)) which results in the following constraint:

    (7)    (COND_667_0_POWER_GT(TRUE, x0[1])≥NonInfC∧COND_667_0_POWER_GT(TRUE, x0[1])≥667_0_POWER_GT(-(x0[1], 1))∧(UIncreasing(667_0_POWER_GT(-(x0[1], 1))), ≥))



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

    (8)    ((UIncreasing(667_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(667_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(667_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(667_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.
  • 667_0_POWER_GT(x0) → COND_667_0_POWER_GT(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_667_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_667_0_POWER_GT(TRUE, x0) → 667_0_POWER_GT(-(x0, 1))
    • ((UIncreasing(667_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(667_0_power_GT(x1)) = [-1]   
POL(0) = 0   
POL(697_0_power_Return) = [-1]   
POL(751_1_power_InvokeMethod(x1, x2)) = [-1]   
POL(667_0_POWER_GT(x1)) = [2]x1   
POL(COND_667_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_667_0_POWER_GT(TRUE, x0[1]) → 667_0_POWER_GT(-(x0[1], 1))

The following pairs are in Pbound:

667_0_POWER_GT(x0[0]) → COND_667_0_POWER_GT(>(x0[0], 0), x0[0])

The following pairs are in P:

667_0_POWER_GT(x0[0]) → COND_667_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:
667_0_power_GT(0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, 0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, x0) → 697_0_power_Return

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


The set Q consists of the following terms:
667_0_power_GT(0)
751_1_power_InvokeMethod(697_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:
667_0_power_GT(0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, 0) → 697_0_power_Return
751_1_power_InvokeMethod(697_0_power_Return, x0) → 697_0_power_Return

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


The set Q consists of the following terms:
667_0_power_GT(0)
751_1_power_InvokeMethod(697_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:
1429_0_power_Return(EOS(STATIC_1429), i276, i277, i276, i277) → 1436_0_exp_Load(EOS(STATIC_1436), i276, i277)
1436_0_exp_Load(EOS(STATIC_1436), i276, i277) → 1453_0_exp_InvokeMethod(EOS(STATIC_1453), i276, i277, i277)
1453_0_exp_InvokeMethod(EOS(STATIC_1453), i276, i277, i277) → 1461_1_exp_InvokeMethod(1461_0_fact_Load(EOS(STATIC_1461), i277), i276, i277, i277)
1461_1_exp_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), i276, i304, i304) → 1507_0_fact_Return(EOS(STATIC_1507), i276, i304, i304)
1507_0_fact_Return(EOS(STATIC_1507), i276, i304, i304) → 1516_0_exp_IntArithmetic(EOS(STATIC_1516), i276, i304)
1516_0_exp_IntArithmetic(EOS(STATIC_1516), i276, i304) → 1528_0_exp_Load(EOS(STATIC_1528), i276, i304)
1528_0_exp_Load(EOS(STATIC_1528), i276, i304) → 1537_0_exp_Load(EOS(STATIC_1537), i304, i276)
1537_0_exp_Load(EOS(STATIC_1537), i304, i276) → 1553_0_exp_ConstantStackPush(EOS(STATIC_1553), i276, i304)
1553_0_exp_ConstantStackPush(EOS(STATIC_1553), i276, i304) → 1560_0_exp_IntArithmetic(EOS(STATIC_1560), i276, i304, 1)
1560_0_exp_IntArithmetic(EOS(STATIC_1560), i276, i304, matching1) → 1565_0_exp_InvokeMethod(EOS(STATIC_1565), i276, -(i304, 1)) | &&(>(i304, 0), =(matching1, 1))
1565_0_exp_InvokeMethod(EOS(STATIC_1565), i276, i320) → 1574_1_exp_InvokeMethod(1574_0_exp_Load(EOS(STATIC_1574), i276, i320), i276, i320)
1574_0_exp_Load(EOS(STATIC_1574), i276, i320) → 1586_0_exp_Load(EOS(STATIC_1586), i276, i320)
1586_0_exp_Load(EOS(STATIC_1586), i276, i320) → 1281_0_exp_Load(EOS(STATIC_1281), i276, i320)
1281_0_exp_Load(EOS(STATIC_1281), i8, i236) → 1294_0_exp_GT(EOS(STATIC_1294), i8, i236, i236)
1294_0_exp_GT(EOS(STATIC_1294), i8, i245, i245) → 1309_0_exp_GT(EOS(STATIC_1309), i8, i245, i245)
1309_0_exp_GT(EOS(STATIC_1309), i8, i245, i245) → 1328_0_exp_Load(EOS(STATIC_1328), i8, i245) | >(i245, 0)
1328_0_exp_Load(EOS(STATIC_1328), i8, i245) → 1340_0_exp_Load(EOS(STATIC_1340), i8, i245, i8)
1340_0_exp_Load(EOS(STATIC_1340), i8, i245, i8) → 1361_0_exp_InvokeMethod(EOS(STATIC_1361), i8, i245, i8, i245)
1361_0_exp_InvokeMethod(EOS(STATIC_1361), i8, i245, i8, i245) → 1376_1_exp_InvokeMethod(1376_0_power_Load(EOS(STATIC_1376), i8, i245), i8, i245, i8, i245)
1376_1_exp_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), i276, i277, i276, i277) → 1429_0_power_Return(EOS(STATIC_1429), i276, i277, i276, i277)
R rules:
1461_0_fact_Load(EOS(STATIC_1461), i277) → 1467_0_fact_Load(EOS(STATIC_1467), i277)
1467_0_fact_Load(EOS(STATIC_1467), i277) → 1054_0_fact_Load(EOS(STATIC_1054), i277)
1376_0_power_Load(EOS(STATIC_1376), i8, i245) → 1389_0_power_Load(EOS(STATIC_1389), i8, i245)
1389_0_power_Load(EOS(STATIC_1389), i8, i245) → 654_0_power_Load(EOS(STATIC_654), i8, i245)
1147_0_fact_Load(EOS(STATIC_1147)) → 1054_0_fact_Load(EOS(STATIC_1054), i207)
763_0_power_Load(EOS(STATIC_763), i78) → 654_0_power_Load(EOS(STATIC_654), i78, i102)
1054_0_fact_Load(EOS(STATIC_1054), i187) → 1061_0_fact_GT(EOS(STATIC_1061), i187, i187)
1061_0_fact_GT(EOS(STATIC_1061), matching1, matching2) → 1067_0_fact_GT(EOS(STATIC_1067), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1061_0_fact_GT(EOS(STATIC_1061), i191, i191) → 1068_0_fact_GT(EOS(STATIC_1068), i191, i191)
1067_0_fact_GT(EOS(STATIC_1067), matching1, matching2) → 1078_0_fact_ConstantStackPush(EOS(STATIC_1078), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1068_0_fact_GT(EOS(STATIC_1068), i191, i191) → 1080_0_fact_Load(EOS(STATIC_1080), i191) | >(i191, 0)
1078_0_fact_ConstantStackPush(EOS(STATIC_1078), matching1) → 1088_0_fact_Return(EOS(STATIC_1088), 0) | =(matching1, 0)
1080_0_fact_Load(EOS(STATIC_1080), i191) → 1090_0_fact_Load(EOS(STATIC_1090), i191, i191)
1090_0_fact_Load(EOS(STATIC_1090), i191, i191) → 1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191)
1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191) → 1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191)
1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191) → 1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) | >(i191, 0)
1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) → 1137_1_fact_InvokeMethod(1137_0_fact_Load(EOS(STATIC_1137)), i191)
1137_0_fact_Load(EOS(STATIC_1137)) → 1147_0_fact_Load(EOS(STATIC_1147))
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), matching1), i191) → 1177_0_fact_Return(EOS(STATIC_1177), i191, 0, 0) | =(matching1, 0)
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), i191) → 1398_0_fact_Return(EOS(STATIC_1398), i191)
1177_0_fact_Return(EOS(STATIC_1177), i191, matching1, matching2) → 1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191) | &&(=(matching1, 0), =(matching2, 0))
1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191) → 1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191)
1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191)
1323_0_fact_Return(EOS(STATIC_1323), i191) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191)
1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191) → 1350_0_fact_Return(EOS(STATIC_1350)) | >=(i191, 1)
1398_0_fact_Return(EOS(STATIC_1398), i191) → 1323_0_fact_Return(EOS(STATIC_1323), i191)
1294_0_exp_GT(EOS(STATIC_1294), i8, matching1, matching2) → 1308_0_exp_GT(EOS(STATIC_1308), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1308_0_exp_GT(EOS(STATIC_1308), i8, matching1, matching2) → 1326_0_exp_ConstantStackPush(EOS(STATIC_1326), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1326_0_exp_ConstantStackPush(EOS(STATIC_1326), i8, matching1) → 1338_0_exp_Return(EOS(STATIC_1338), i8, 0) | =(matching1, 0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(EOS(STATIC_1338), i331, matching1), i331, matching2) → 1614_0_exp_Return(EOS(STATIC_1614), i331, 0, i331, 0) | &&(=(matching1, 0), =(matching2, 0))
1574_1_exp_InvokeMethod(1676_0_exp_Return(EOS(STATIC_1676)), i353, i354) → 1711_0_exp_Return(EOS(STATIC_1711), i353, i354)
1614_0_exp_Return(EOS(STATIC_1614), i331, matching1, i331, matching2) → 1622_0_exp_IntArithmetic(EOS(STATIC_1622)) | &&(=(matching1, 0), =(matching2, 0))
1622_0_exp_IntArithmetic(EOS(STATIC_1622)) → 1666_0_exp_IntArithmetic(EOS(STATIC_1666))
1657_0_exp_Return(EOS(STATIC_1657), i338, i339) → 1666_0_exp_IntArithmetic(EOS(STATIC_1666))
1666_0_exp_IntArithmetic(EOS(STATIC_1666)) → 1676_0_exp_Return(EOS(STATIC_1676))
1711_0_exp_Return(EOS(STATIC_1711), i353, i354) → 1657_0_exp_Return(EOS(STATIC_1657), i353, i354)
654_0_power_Load(EOS(STATIC_654), i78, i79) → 667_0_power_GT(EOS(STATIC_667), i78, i79, i79)
667_0_power_GT(EOS(STATIC_667), i78, matching1, matching2) → 676_0_power_GT(EOS(STATIC_676), i78, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
667_0_power_GT(EOS(STATIC_667), i78, i87, i87) → 677_0_power_GT(EOS(STATIC_677), i78, i87, i87)
676_0_power_GT(EOS(STATIC_676), i78, matching1, matching2) → 688_0_power_ConstantStackPush(EOS(STATIC_688), i78, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
677_0_power_GT(EOS(STATIC_677), i78, i87, i87) → 689_0_power_Load(EOS(STATIC_689), i78, i87) | >(i87, 0)
688_0_power_ConstantStackPush(EOS(STATIC_688), i78, matching1) → 697_0_power_Return(EOS(STATIC_697), i78, 0) | =(matching1, 0)
689_0_power_Load(EOS(STATIC_689), i78, i87) → 699_0_power_Load(EOS(STATIC_699), i78, i87, i78)
699_0_power_Load(EOS(STATIC_699), i78, i87, i78) → 708_0_power_Load(EOS(STATIC_708), i87, i78, i78)
708_0_power_Load(EOS(STATIC_708), i87, i78, i78) → 721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87)
721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87) → 731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87)
731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87) → 743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) | >(i87, 0)
743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) → 751_1_power_InvokeMethod(751_0_power_Load(EOS(STATIC_751), i78), i78, i78)
751_0_power_Load(EOS(STATIC_751), i78) → 763_0_power_Load(EOS(STATIC_763), i78)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), i112, matching1), i112, i112) → 804_0_power_Return(EOS(STATIC_804), i112, i112, 0, i112, 0) | =(matching1, 0)
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), i173, i173) → 1047_0_power_Return(EOS(STATIC_1047), i173, i173)
804_0_power_Return(EOS(STATIC_804), i112, i112, matching1, i112, matching2) → 810_0_power_IntArithmetic(EOS(STATIC_810), i112) | &&(=(matching1, 0), =(matching2, 0))
810_0_power_IntArithmetic(EOS(STATIC_810), i112) → 985_0_power_IntArithmetic(EOS(STATIC_985), i112)
972_0_power_Return(EOS(STATIC_972), i160, i160) → 985_0_power_IntArithmetic(EOS(STATIC_985), i160)
985_0_power_IntArithmetic(EOS(STATIC_985), i160) → 996_0_power_Return(EOS(STATIC_996))
1047_0_power_Return(EOS(STATIC_1047), i173, i173) → 972_0_power_Return(EOS(STATIC_972), i173, i173)

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


P rules:
1461_1_exp_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), x0, x1, x1) → 1574_1_exp_InvokeMethod(1376_1_exp_InvokeMethod(1376_0_power_Load(EOS(STATIC_1376), x0, -(x1, 1)), x0, -(x1, 1), x0, -(x1, 1)), x0, -(x1, 1)) | >(x1, 1)
1376_1_exp_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), x0, x1, x0, x1) → 1461_1_exp_InvokeMethod(1461_0_fact_Load(EOS(STATIC_1461), x1), x0, x1, x1)
R rules:
1461_0_fact_Load(EOS(STATIC_1461), x0) → 1061_0_fact_GT(EOS(STATIC_1061), x0, x0)
1376_0_power_Load(EOS(STATIC_1376), x0, x1) → 667_0_power_GT(EOS(STATIC_667), x0, x1, x1)
1061_0_fact_GT(EOS(STATIC_1061), 0, 0) → 1088_0_fact_Return(EOS(STATIC_1088), 0)
1061_0_fact_GT(EOS(STATIC_1061), x0, x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), x1, x1), x0) | >(x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), 0), x1) → 1350_0_fact_Return(EOS(STATIC_1350)) | >(+(x1, 1), 1)
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), x0) → 1350_0_fact_Return(EOS(STATIC_1350)) | >(+(x0, 1), 1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(EOS(STATIC_1338), x0, 0), x0, 0) → 1676_0_exp_Return(EOS(STATIC_1676))
1574_1_exp_InvokeMethod(1676_0_exp_Return(EOS(STATIC_1676)), x0, x1) → 1676_0_exp_Return(EOS(STATIC_1676))
667_0_power_GT(EOS(STATIC_667), x0, 0, 0) → 697_0_power_Return(EOS(STATIC_697), x0, 0)
667_0_power_GT(EOS(STATIC_667), x0, x1, x1) → 751_1_power_InvokeMethod(667_0_power_GT(EOS(STATIC_667), x0, x2, x2), x0, x0) | >(x1, 0)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), x0, 0), x0, x0) → 996_0_power_Return(EOS(STATIC_996))
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), x0, x0) → 996_0_power_Return(EOS(STATIC_996))

Filtered ground terms:



1461_0_fact_Load(x1, x2) → 1461_0_fact_Load(x2)
996_0_power_Return(x1) → 996_0_power_Return
1376_0_power_Load(x1, x2, x3) → 1376_0_power_Load(x2, x3)
Cond_1461_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1461_1_exp_InvokeMethod(x1, x3, x4, x5)
1350_0_fact_Return(x1) → 1350_0_fact_Return
697_0_power_Return(x1, x2, x3) → 697_0_power_Return(x2)
667_0_power_GT(x1, x2, x3, x4) → 667_0_power_GT(x2, x3, x4)
Cond_667_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_667_0_power_GT(x1, x3, x4, x5, x6)
1676_0_exp_Return(x1) → 1676_0_exp_Return
1338_0_exp_Return(x1, x2, x3) → 1338_0_exp_Return(x2)
Cond_1137_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod1(x1, x3)
Cond_1137_1_fact_InvokeMethod(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod(x1, x3)
1088_0_fact_Return(x1, x2) → 1088_0_fact_Return
1061_0_fact_GT(x1, x2, x3) → 1061_0_fact_GT(x2, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1061_0_fact_GT(x1, x3, x4, x5)

Filtered duplicate args:



1461_1_exp_InvokeMethod(x1, x2, x3, x4) → 1461_1_exp_InvokeMethod(x1, x2, x4)
Cond_1461_1_exp_InvokeMethod(x1, x2, x3, x4) → Cond_1461_1_exp_InvokeMethod(x1, x2, x4)
1376_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → 1376_1_exp_InvokeMethod(x1, x4, x5)
1061_0_fact_GT(x1, x2) → 1061_0_fact_GT(x2)
667_0_power_GT(x1, x2, x3) → 667_0_power_GT(x1, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4) → Cond_1061_0_fact_GT(x1, x3, x4)
Cond_667_0_power_GT(x1, x2, x3, x4, x5) → Cond_667_0_power_GT(x1, x2, x4, x5)
751_1_power_InvokeMethod(x1, x2, x3) → 751_1_power_InvokeMethod(x1, x3)

Filtered unneeded arguments:



1461_1_exp_InvokeMethod(x1, x2, x3) → 1461_1_exp_InvokeMethod(x1, x3)
Cond_1461_1_exp_InvokeMethod(x1, x2, x3) → Cond_1461_1_exp_InvokeMethod(x1, x3)
1574_1_exp_InvokeMethod(x1, x2, x3) → 1574_1_exp_InvokeMethod(x1, x3)
1376_1_exp_InvokeMethod(x1, x2, x3) → 1376_1_exp_InvokeMethod(x1, x3)
Cond_1137_1_fact_InvokeMethod(x1, x2) → Cond_1137_1_fact_InvokeMethod(x1)
Cond_1137_1_fact_InvokeMethod1(x1, x2) → Cond_1137_1_fact_InvokeMethod1(x1)
667_0_power_GT(x1, x2) → 667_0_power_GT(x2)
Cond_667_0_power_GT(x1, x2, x3, x4) → Cond_667_0_power_GT(x1, x4)
751_1_power_InvokeMethod(x1, x2) → 751_1_power_InvokeMethod(x1)
1376_0_power_Load(x1, x2) → 1376_0_power_Load(x2)

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


P rules:
1461_1_exp_InvokeMethod(1350_0_fact_Return, x1) → 1574_1_exp_InvokeMethod(1376_1_exp_InvokeMethod(1376_0_power_Load(-(x1, 1)), -(x1, 1)), -(x1, 1)) | >(x1, 1)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(1461_0_fact_Load(x1), x1)
R rules:
1461_0_fact_Load(x0) → 1061_0_fact_GT(x0)
1376_0_power_Load(x1) → 667_0_power_GT(x1)
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0) | >(x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1) → 1350_0_fact_Return | >(x1, 0)
1137_1_fact_InvokeMethod(1350_0_fact_Return, x0) → 1350_0_fact_Return | >(x0, 0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0) → 1676_0_exp_Return
1574_1_exp_InvokeMethod(1676_0_exp_Return, x1) → 1676_0_exp_Return
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → 751_1_power_InvokeMethod(667_0_power_GT(x2)) | >(x1, 0)
751_1_power_InvokeMethod(697_0_power_Return(x0)) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return

Performed bisimulation on rules. Used the following equivalence classes: {[1338_0_exp_Return_1, 697_0_power_Return_1]=1338_0_exp_Return_1, [1088_0_fact_Return, 1350_0_fact_Return, 1676_0_exp_Return, 996_0_power_Return]=1088_0_fact_Return, [Cond_1137_1_fact_InvokeMethod_3, Cond_1137_1_fact_InvokeMethod1_3]=Cond_1137_1_fact_InvokeMethod_3}


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


P rules:
1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1) → COND_1461_1_EXP_INVOKEMETHOD(>(x1, 1), 1088_0_fact_Return, x1)
COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1) → 1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(-(x1, 1)), -(x1, 1))
1376_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1) → 1461_1_EXP_INVOKEMETHOD(1461_0_fact_Load(x1), x1)
R rules:
1461_0_fact_Load(x0) → 1061_0_fact_GT(x0)
1376_0_power_Load(x1) → 667_0_power_GT(x1)
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(>(x0, 0), x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1) → Cond_1137_1_fact_InvokeMethod(>(x1, 0), 1088_0_fact_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1088_0_fact_Return, x1) → 1088_0_fact_Return
667_0_power_GT(0) → 1338_0_exp_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(>(x1, 0), x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(1338_0_exp_Return(x0)) → 1088_0_fact_Return
751_1_power_InvokeMethod(1088_0_fact_Return) → 1088_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:
1461_0_fact_Load(x0) → 1061_0_fact_GT(x0)
1376_0_power_Load(x1) → 667_0_power_GT(x1)
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 1088_0_fact_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1088_0_fact_Return, x1) → 1088_0_fact_Return
667_0_power_GT(0) → 1338_0_exp_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(1338_0_exp_Return(x0)) → 1088_0_fact_Return
751_1_power_InvokeMethod(1088_0_fact_Return) → 1088_0_fact_Return

The integer pair graph contains the following rules and edges:
(0): 1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0]) → COND_1461_1_EXP_INVOKEMETHOD(x1[0] > 1, 1088_0_fact_Return, x1[0])
(1): COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1[1]) → 1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(x1[1] - 1), x1[1] - 1)
(2): 1376_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[2]) → 1461_1_EXP_INVOKEMETHOD(1461_0_fact_Load(x1[2]), x1[2])

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


(1) -> (2), if (1376_0_power_Load(x1[1] - 1) →* 1088_0_fact_Returnx1[1] - 1* x1[2])


(2) -> (0), if (1461_0_fact_Load(x1[2]) →* 1088_0_fact_Returnx1[2]* x1[0])



The set Q consists of the following terms:
1461_0_fact_Load(x0)
1376_0_power_Load(x0)
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0)
1574_1_exp_InvokeMethod(1088_0_fact_Return, x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(1338_0_exp_Return(x0))
751_1_power_InvokeMethod(1088_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@600a05f6 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 1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1) → COND_1461_1_EXP_INVOKEMETHOD(>(x1, 1), 1088_0_fact_Return, x1) the following chains were created:
  • We consider the chain 1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0]) → COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0]), COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1[1]) → 1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(-(x1[1], 1)), -(x1[1], 1)) which results in the following constraint:

    (1)    (>(x1[0], 1)=TRUEx1[0]=x1[1]1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0])≥NonInfC∧1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0])≥COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])∧(UIncreasing(COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])), ≥))



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

    (2)    (>(x1[0], 1)=TRUE1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0])≥NonInfC∧1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0])≥COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])∧(UIncreasing(COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_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_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])), ≥)∧[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_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])), ≥)∧[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_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])), ≥)∧[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_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])), ≥)∧[(5)bni_30 + (-1)Bound*bni_30] + [(2)bni_30]x1[0] ≥ 0∧[(-1)bso_31] ≥ 0)







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

    (7)    (COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1[1])≥NonInfC∧COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1[1])≥1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(-(x1[1], 1)), -(x1[1], 1))∧(UIncreasing(1376_1_EXP_INVOKEMETHOD(1376_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(1376_1_EXP_INVOKEMETHOD(1376_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(1376_1_EXP_INVOKEMETHOD(1376_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(1376_1_EXP_INVOKEMETHOD(1376_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(1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥)∧[bni_32] = 0∧0 = 0∧[(-1)bso_33] ≥ 0)







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

    (12)    (1376_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[2])≥NonInfC∧1376_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[2])≥1461_1_EXP_INVOKEMETHOD(1461_0_fact_Load(x1[2]), x1[2])∧(UIncreasing(1461_1_EXP_INVOKEMETHOD(1461_0_fact_Load(x1[2]), x1[2])), ≥))



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

    (13)    ((UIncreasing(1461_1_EXP_INVOKEMETHOD(1461_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(1461_1_EXP_INVOKEMETHOD(1461_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(1461_1_EXP_INVOKEMETHOD(1461_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(1461_1_EXP_INVOKEMETHOD(1461_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.
  • 1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1) → COND_1461_1_EXP_INVOKEMETHOD(>(x1, 1), 1088_0_fact_Return, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])), ≥)∧[(5)bni_30 + (-1)Bound*bni_30] + [(2)bni_30]x1[0] ≥ 0∧[(-1)bso_31] ≥ 0)

  • COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1) → 1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(-(x1, 1)), -(x1, 1))
    • ((UIncreasing(1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(-(x1[1], 1)), -(x1[1], 1))), ≥)∧[bni_32] = 0∧0 = 0∧[(-1)bso_33] ≥ 0)

  • 1376_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1) → 1461_1_EXP_INVOKEMETHOD(1461_0_fact_Load(x1), x1)
    • ((UIncreasing(1461_1_EXP_INVOKEMETHOD(1461_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(1461_0_fact_Load(x1)) = [-1] + [-1]x1   
POL(1061_0_fact_GT(x1)) = [1] + [-1]x1   
POL(1376_0_power_Load(x1)) = [-1]   
POL(667_0_power_GT(x1)) = [-1]   
POL(0) = 0   
POL(1088_0_fact_Return) = [-1]   
POL(Cond_1061_0_fact_GT(x1, x2, x3)) = [-1] + [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(1137_1_fact_InvokeMethod(x1, x2)) = [2] + [2]x2   
POL(Cond_1137_1_fact_InvokeMethod(x1, x2, x3)) = [-1]x3   
POL(1574_1_exp_InvokeMethod(x1, x2)) = [-1]   
POL(1338_0_exp_Return(x1)) = [-1]   
POL(Cond_667_0_power_GT(x1, x2, x3)) = [-1]   
POL(751_1_power_InvokeMethod(x1)) = [-1]   
POL(1461_1_EXP_INVOKEMETHOD(x1, x2)) = [1] + [2]x2   
POL(COND_1461_1_EXP_INVOKEMETHOD(x1, x2, x3)) = [1] + [2]x3   
POL(1) = [1]   
POL(1376_1_EXP_INVOKEMETHOD(x1, x2)) = [2] + [2]x2 + [-1]x1   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

1376_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[2]) → 1461_1_EXP_INVOKEMETHOD(1461_0_fact_Load(x1[2]), x1[2])

The following pairs are in Pbound:

1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0]) → COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])

The following pairs are in P:

1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0]) → COND_1461_1_EXP_INVOKEMETHOD(>(x1[0], 1), 1088_0_fact_Return, x1[0])
COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1[1]) → 1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(-(x1[1], 1)), -(x1[1], 1))

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

1376_0_power_Load(x1)1667_0_power_GT(x1)1
667_0_power_GT(0)11338_0_exp_Return(x0)1
667_0_power_GT(x1)1Cond_667_0_power_GT(>(x1, 0), x1, x2)1
Cond_667_0_power_GT(TRUE, x1, x2)1751_1_power_InvokeMethod(667_0_power_GT(x2))1
751_1_power_InvokeMethod(1338_0_exp_Return(x0))11088_0_fact_Return1
751_1_power_InvokeMethod(1088_0_fact_Return)11088_0_fact_Return1
1061_0_fact_GT(x0)11461_0_fact_Load(x0)1
1061_0_fact_GT(0)11088_0_fact_Return1
1061_0_fact_GT(x0)1Cond_1061_0_fact_GT(>(x0, 0), x0, x1)1

(31) Complex Obligation (AND)

(32) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1461_0_fact_Load(x0) → 1061_0_fact_GT(x0)
1376_0_power_Load(x1) → 667_0_power_GT(x1)
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 1088_0_fact_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1088_0_fact_Return, x1) → 1088_0_fact_Return
667_0_power_GT(0) → 1338_0_exp_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(1338_0_exp_Return(x0)) → 1088_0_fact_Return
751_1_power_InvokeMethod(1088_0_fact_Return) → 1088_0_fact_Return

The integer pair graph contains the following rules and edges:
(0): 1461_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[0]) → COND_1461_1_EXP_INVOKEMETHOD(x1[0] > 1, 1088_0_fact_Return, x1[0])
(1): COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1[1]) → 1376_1_EXP_INVOKEMETHOD(1376_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:
1461_0_fact_Load(x0)
1376_0_power_Load(x0)
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0)
1574_1_exp_InvokeMethod(1088_0_fact_Return, x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(1338_0_exp_Return(x0))
751_1_power_InvokeMethod(1088_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:
1461_0_fact_Load(x0) → 1061_0_fact_GT(x0)
1376_0_power_Load(x1) → 667_0_power_GT(x1)
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 1088_0_fact_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x1) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0) → 1088_0_fact_Return
1574_1_exp_InvokeMethod(1088_0_fact_Return, x1) → 1088_0_fact_Return
667_0_power_GT(0) → 1338_0_exp_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(1338_0_exp_Return(x0)) → 1088_0_fact_Return
751_1_power_InvokeMethod(1088_0_fact_Return) → 1088_0_fact_Return

The integer pair graph contains the following rules and edges:
(1): COND_1461_1_EXP_INVOKEMETHOD(TRUE, 1088_0_fact_Return, x1[1]) → 1376_1_EXP_INVOKEMETHOD(1376_0_power_Load(x1[1] - 1), x1[1] - 1)
(2): 1376_1_EXP_INVOKEMETHOD(1088_0_fact_Return, x1[2]) → 1461_1_EXP_INVOKEMETHOD(1461_0_fact_Load(x1[2]), x1[2])

(1) -> (2), if (1376_0_power_Load(x1[1] - 1) →* 1088_0_fact_Returnx1[1] - 1* x1[2])



The set Q consists of the following terms:
1461_0_fact_Load(x0)
1376_0_power_Load(x0)
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), 0)
1574_1_exp_InvokeMethod(1088_0_fact_Return, x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(1338_0_exp_Return(x0))
751_1_power_InvokeMethod(1088_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:
1218_0_cos_GT(EOS(STATIC_1218), i8, i225, i225) → 1235_0_cos_GT(EOS(STATIC_1235), i8, i225, i225)
1235_0_cos_GT(EOS(STATIC_1235), i8, i225, i225) → 1248_0_cos_ConstantStackPush(EOS(STATIC_1248), i8, i225) | >(i225, 0)
1248_0_cos_ConstantStackPush(EOS(STATIC_1248), i8, i225) → 1260_0_cos_Load(EOS(STATIC_1260), i8, i225, -1)
1260_0_cos_Load(EOS(STATIC_1260), i8, i225, matching1) → 1284_0_cos_InvokeMethod(EOS(STATIC_1284), i8, i225, -1, i225) | =(matching1, -1)
1284_0_cos_InvokeMethod(EOS(STATIC_1284), i8, i225, matching1, i225) → 1298_1_cos_InvokeMethod(1298_0_power_Load(EOS(STATIC_1298), -1, i225), i8, i225, -1, i225) | =(matching1, -1)
1298_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), i8, i256, matching1, i256) → 1366_0_power_Return(EOS(STATIC_1366), i8, i256, -1, i256) | =(matching1, -1)
1366_0_power_Return(EOS(STATIC_1366), i8, i256, matching1, i256) → 1380_0_cos_Load(EOS(STATIC_1380), i8, i256) | =(matching1, -1)
1380_0_cos_Load(EOS(STATIC_1380), i8, i256) → 1394_0_cos_ConstantStackPush(EOS(STATIC_1394), i8, i256, i8)
1394_0_cos_ConstantStackPush(EOS(STATIC_1394), i8, i256, i8) → 1403_0_cos_Load(EOS(STATIC_1403), i8, i256, i8, 2)
1403_0_cos_Load(EOS(STATIC_1403), i8, i256, i8, matching1) → 1414_0_cos_IntArithmetic(EOS(STATIC_1414), i8, i256, i8, 2, i256) | =(matching1, 2)
1414_0_cos_IntArithmetic(EOS(STATIC_1414), i8, i256, i8, matching1, i256) → 1431_0_cos_InvokeMethod(EOS(STATIC_1431), i8, i256, i8, *(2, i256)) | &&(>=(i256, 1), =(matching1, 2))
1431_0_cos_InvokeMethod(EOS(STATIC_1431), i8, i256, i8, i281) → 1438_1_cos_InvokeMethod(1438_0_power_Load(EOS(STATIC_1438), i8, i281), i8, i256, i8, i281)
1438_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), i295, i256, i295, i296) → 1488_0_power_Return(EOS(STATIC_1488), i295, i256, i295, i296)
1488_0_power_Return(EOS(STATIC_1488), i295, i256, i295, i296) → 1500_0_cos_IntArithmetic(EOS(STATIC_1500), i295, i256)
1500_0_cos_IntArithmetic(EOS(STATIC_1500), i295, i256) → 1509_0_cos_ConstantStackPush(EOS(STATIC_1509), i295, i256)
1509_0_cos_ConstantStackPush(EOS(STATIC_1509), i295, i256) → 1518_0_cos_Load(EOS(STATIC_1518), i295, i256, 2)
1518_0_cos_Load(EOS(STATIC_1518), i295, i256, matching1) → 1530_0_cos_IntArithmetic(EOS(STATIC_1530), i295, i256, 2, i256) | =(matching1, 2)
1530_0_cos_IntArithmetic(EOS(STATIC_1530), i295, i256, matching1, i256) → 1538_0_cos_InvokeMethod(EOS(STATIC_1538), i295, i256, *(2, i256)) | &&(>=(i256, 1), =(matching1, 2))
1538_0_cos_InvokeMethod(EOS(STATIC_1538), i295, i256, i315) → 1555_1_cos_InvokeMethod(1555_0_fact_Load(EOS(STATIC_1555), i315), i295, i256, i315)
1555_1_cos_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), i295, i256, i324) → 1588_0_fact_Return(EOS(STATIC_1588), i295, i256, i324)
1588_0_fact_Return(EOS(STATIC_1588), i295, i256, i324) → 1596_0_cos_IntArithmetic(EOS(STATIC_1596), i295, i256)
1596_0_cos_IntArithmetic(EOS(STATIC_1596), i295, i256) → 1609_0_cos_Load(EOS(STATIC_1609), i295, i256)
1609_0_cos_Load(EOS(STATIC_1609), i295, i256) → 1615_0_cos_Load(EOS(STATIC_1615), i256, i295)
1615_0_cos_Load(EOS(STATIC_1615), i256, i295) → 1624_0_cos_ConstantStackPush(EOS(STATIC_1624), i295, i256)
1624_0_cos_ConstantStackPush(EOS(STATIC_1624), i295, i256) → 1632_0_cos_IntArithmetic(EOS(STATIC_1632), i295, i256, 1)
1632_0_cos_IntArithmetic(EOS(STATIC_1632), i295, i256, matching1) → 1640_0_cos_InvokeMethod(EOS(STATIC_1640), i295, -(i256, 1)) | &&(>(i256, 0), =(matching1, 1))
1640_0_cos_InvokeMethod(EOS(STATIC_1640), i295, i336) → 1651_1_cos_InvokeMethod(1651_0_cos_Load(EOS(STATIC_1651), i295, i336), i295, i336)
1651_0_cos_Load(EOS(STATIC_1651), i295, i336) → 1659_0_cos_Load(EOS(STATIC_1659), i295, i336)
1659_0_cos_Load(EOS(STATIC_1659), i295, i336) → 1207_0_cos_Load(EOS(STATIC_1207), i295, i336)
1207_0_cos_Load(EOS(STATIC_1207), i8, i219) → 1218_0_cos_GT(EOS(STATIC_1218), i8, i219, i219)
R rules:
1298_0_power_Load(EOS(STATIC_1298), matching1, i225) → 1313_0_power_Load(EOS(STATIC_1313), -1, i225) | =(matching1, -1)
1313_0_power_Load(EOS(STATIC_1313), matching1, i225) → 654_0_power_Load(EOS(STATIC_654), -1, i225) | =(matching1, -1)
1438_0_power_Load(EOS(STATIC_1438), i8, i281) → 1455_0_power_Load(EOS(STATIC_1455), i8, i281)
1455_0_power_Load(EOS(STATIC_1455), i8, i281) → 654_0_power_Load(EOS(STATIC_654), i8, i281)
1555_0_fact_Load(EOS(STATIC_1555), i315) → 1562_0_fact_Load(EOS(STATIC_1562), i315)
1562_0_fact_Load(EOS(STATIC_1562), i315) → 1054_0_fact_Load(EOS(STATIC_1054), i315)
763_0_power_Load(EOS(STATIC_763), i78) → 654_0_power_Load(EOS(STATIC_654), i78, i102)
1147_0_fact_Load(EOS(STATIC_1147)) → 1054_0_fact_Load(EOS(STATIC_1054), i207)
654_0_power_Load(EOS(STATIC_654), i78, i79) → 667_0_power_GT(EOS(STATIC_667), i78, i79, i79)
667_0_power_GT(EOS(STATIC_667), i78, matching1, matching2) → 676_0_power_GT(EOS(STATIC_676), i78, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
667_0_power_GT(EOS(STATIC_667), i78, i87, i87) → 677_0_power_GT(EOS(STATIC_677), i78, i87, i87)
676_0_power_GT(EOS(STATIC_676), i78, matching1, matching2) → 688_0_power_ConstantStackPush(EOS(STATIC_688), i78, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
677_0_power_GT(EOS(STATIC_677), i78, i87, i87) → 689_0_power_Load(EOS(STATIC_689), i78, i87) | >(i87, 0)
688_0_power_ConstantStackPush(EOS(STATIC_688), i78, matching1) → 697_0_power_Return(EOS(STATIC_697), i78, 0) | =(matching1, 0)
689_0_power_Load(EOS(STATIC_689), i78, i87) → 699_0_power_Load(EOS(STATIC_699), i78, i87, i78)
699_0_power_Load(EOS(STATIC_699), i78, i87, i78) → 708_0_power_Load(EOS(STATIC_708), i87, i78, i78)
708_0_power_Load(EOS(STATIC_708), i87, i78, i78) → 721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87)
721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87) → 731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87)
731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87) → 743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) | >(i87, 0)
743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) → 751_1_power_InvokeMethod(751_0_power_Load(EOS(STATIC_751), i78), i78, i78)
751_0_power_Load(EOS(STATIC_751), i78) → 763_0_power_Load(EOS(STATIC_763), i78)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), i112, matching1), i112, i112) → 804_0_power_Return(EOS(STATIC_804), i112, i112, 0, i112, 0) | =(matching1, 0)
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), i173, i173) → 1047_0_power_Return(EOS(STATIC_1047), i173, i173)
804_0_power_Return(EOS(STATIC_804), i112, i112, matching1, i112, matching2) → 810_0_power_IntArithmetic(EOS(STATIC_810), i112) | &&(=(matching1, 0), =(matching2, 0))
810_0_power_IntArithmetic(EOS(STATIC_810), i112) → 985_0_power_IntArithmetic(EOS(STATIC_985), i112)
972_0_power_Return(EOS(STATIC_972), i160, i160) → 985_0_power_IntArithmetic(EOS(STATIC_985), i160)
985_0_power_IntArithmetic(EOS(STATIC_985), i160) → 996_0_power_Return(EOS(STATIC_996))
1047_0_power_Return(EOS(STATIC_1047), i173, i173) → 972_0_power_Return(EOS(STATIC_972), i173, i173)
1054_0_fact_Load(EOS(STATIC_1054), i187) → 1061_0_fact_GT(EOS(STATIC_1061), i187, i187)
1061_0_fact_GT(EOS(STATIC_1061), matching1, matching2) → 1067_0_fact_GT(EOS(STATIC_1067), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1061_0_fact_GT(EOS(STATIC_1061), i191, i191) → 1068_0_fact_GT(EOS(STATIC_1068), i191, i191)
1067_0_fact_GT(EOS(STATIC_1067), matching1, matching2) → 1078_0_fact_ConstantStackPush(EOS(STATIC_1078), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1068_0_fact_GT(EOS(STATIC_1068), i191, i191) → 1080_0_fact_Load(EOS(STATIC_1080), i191) | >(i191, 0)
1078_0_fact_ConstantStackPush(EOS(STATIC_1078), matching1) → 1088_0_fact_Return(EOS(STATIC_1088), 0) | =(matching1, 0)
1080_0_fact_Load(EOS(STATIC_1080), i191) → 1090_0_fact_Load(EOS(STATIC_1090), i191, i191)
1090_0_fact_Load(EOS(STATIC_1090), i191, i191) → 1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191)
1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191) → 1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191)
1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191) → 1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) | >(i191, 0)
1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) → 1137_1_fact_InvokeMethod(1137_0_fact_Load(EOS(STATIC_1137)), i191)
1137_0_fact_Load(EOS(STATIC_1137)) → 1147_0_fact_Load(EOS(STATIC_1147))
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), matching1), i191) → 1177_0_fact_Return(EOS(STATIC_1177), i191, 0, 0) | =(matching1, 0)
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), i191) → 1398_0_fact_Return(EOS(STATIC_1398), i191)
1177_0_fact_Return(EOS(STATIC_1177), i191, matching1, matching2) → 1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191) | &&(=(matching1, 0), =(matching2, 0))
1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191) → 1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191)
1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191)
1323_0_fact_Return(EOS(STATIC_1323), i191) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191)
1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191) → 1350_0_fact_Return(EOS(STATIC_1350)) | >=(i191, 1)
1398_0_fact_Return(EOS(STATIC_1398), i191) → 1323_0_fact_Return(EOS(STATIC_1323), i191)
1218_0_cos_GT(EOS(STATIC_1218), i8, matching1, matching2) → 1234_0_cos_GT(EOS(STATIC_1234), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1234_0_cos_GT(EOS(STATIC_1234), i8, matching1, matching2) → 1246_0_cos_ConstantStackPush(EOS(STATIC_1246), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1246_0_cos_ConstantStackPush(EOS(STATIC_1246), i8, matching1) → 1258_0_cos_Return(EOS(STATIC_1258), i8, 0) | =(matching1, 0)
1651_1_cos_InvokeMethod(1258_0_cos_Return(EOS(STATIC_1258), i351, matching1), i351, matching2) → 1690_0_cos_Return(EOS(STATIC_1690), i351, 0, i351, 0) | &&(=(matching1, 0), =(matching2, 0))
1651_1_cos_InvokeMethod(1771_0_cos_Return(EOS(STATIC_1771)), i396, i397) → 1820_0_cos_Return(EOS(STATIC_1820), i396, i397)
1690_0_cos_Return(EOS(STATIC_1690), i351, matching1, i351, matching2) → 1700_0_cos_IntArithmetic(EOS(STATIC_1700)) | &&(=(matching1, 0), =(matching2, 0))
1700_0_cos_IntArithmetic(EOS(STATIC_1700)) → 1758_0_cos_IntArithmetic(EOS(STATIC_1758))
1746_0_cos_Return(EOS(STATIC_1746), i372, i373) → 1758_0_cos_IntArithmetic(EOS(STATIC_1758))
1758_0_cos_IntArithmetic(EOS(STATIC_1758)) → 1771_0_cos_Return(EOS(STATIC_1771))
1820_0_cos_Return(EOS(STATIC_1820), i396, i397) → 1746_0_cos_Return(EOS(STATIC_1746), i396, i397)

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


P rules:
1298_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), x0, x1, -1, x1) → 1438_1_cos_InvokeMethod(1438_0_power_Load(EOS(STATIC_1438), x0, *(2, x1)), x0, x1, x0, *(2, x1)) | >(+(x1, 1), 1)
1438_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), x0, x1, x0, x2) → 1555_1_cos_InvokeMethod(1555_0_fact_Load(EOS(STATIC_1555), *(2, x1)), x0, x1, *(2, x1)) | >(+(x1, 1), 1)
1555_1_cos_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), x0, x1, x2) → 1651_1_cos_InvokeMethod(1298_1_cos_InvokeMethod(1298_0_power_Load(EOS(STATIC_1298), -1, -(x1, 1)), x0, -(x1, 1), -1, -(x1, 1)), x0, -(x1, 1)) | >(x1, 1)
R rules:
1298_0_power_Load(EOS(STATIC_1298), -1, x1) → 667_0_power_GT(EOS(STATIC_667), -1, x1, x1)
1438_0_power_Load(EOS(STATIC_1438), x0, x1) → 667_0_power_GT(EOS(STATIC_667), x0, x1, x1)
1555_0_fact_Load(EOS(STATIC_1555), x0) → 1061_0_fact_GT(EOS(STATIC_1061), x0, x0)
667_0_power_GT(EOS(STATIC_667), x0, 0, 0) → 697_0_power_Return(EOS(STATIC_697), x0, 0)
667_0_power_GT(EOS(STATIC_667), x0, x1, x1) → 751_1_power_InvokeMethod(667_0_power_GT(EOS(STATIC_667), x0, x2, x2), x0, x0) | >(x1, 0)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), x0, 0), x0, x0) → 996_0_power_Return(EOS(STATIC_996))
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996)), x0, x0) → 996_0_power_Return(EOS(STATIC_996))
1061_0_fact_GT(EOS(STATIC_1061), 0, 0) → 1088_0_fact_Return(EOS(STATIC_1088), 0)
1061_0_fact_GT(EOS(STATIC_1061), x0, x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), x1, x1), x0) | >(x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), 0), x1) → 1350_0_fact_Return(EOS(STATIC_1350)) | >(+(x1, 1), 1)
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350)), x0) → 1350_0_fact_Return(EOS(STATIC_1350)) | >(+(x0, 1), 1)
1651_1_cos_InvokeMethod(1258_0_cos_Return(EOS(STATIC_1258), x0, 0), x0, 0) → 1771_0_cos_Return(EOS(STATIC_1771))
1651_1_cos_InvokeMethod(1771_0_cos_Return(EOS(STATIC_1771)), x0, x1) → 1771_0_cos_Return(EOS(STATIC_1771))

Filtered ground terms:



1298_0_power_Load(x1, x2, x3) → 1298_0_power_Load(x3)
1298_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → 1298_1_cos_InvokeMethod(x1, x2, x3, x5)
Cond_1555_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1555_1_cos_InvokeMethod(x1, x3, x4, x5)
1350_0_fact_Return(x1) → 1350_0_fact_Return
1555_0_fact_Load(x1, x2) → 1555_0_fact_Load(x2)
Cond_1438_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1438_1_cos_InvokeMethod(x1, x3, x4, x5, x6)
996_0_power_Return(x1) → 996_0_power_Return
1438_0_power_Load(x1, x2, x3) → 1438_0_power_Load(x2, x3)
Cond_1298_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1298_1_cos_InvokeMethod(x1, x3, x4, x6)
1771_0_cos_Return(x1) → 1771_0_cos_Return
1258_0_cos_Return(x1, x2, x3) → 1258_0_cos_Return(x2)
Cond_1137_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod1(x1, x3)
Cond_1137_1_fact_InvokeMethod(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod(x1, x3)
1088_0_fact_Return(x1, x2) → 1088_0_fact_Return
1061_0_fact_GT(x1, x2, x3) → 1061_0_fact_GT(x2, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1061_0_fact_GT(x1, x3, x4, x5)
697_0_power_Return(x1, x2, x3) → 697_0_power_Return(x2)
667_0_power_GT(x1, x2, x3, x4) → 667_0_power_GT(x2, x3, x4)
Cond_667_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_667_0_power_GT(x1, x3, x4, x5, x6)

Filtered duplicate args:



1298_1_cos_InvokeMethod(x1, x2, x3, x4) → 1298_1_cos_InvokeMethod(x1, x2, x4)
Cond_1298_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1298_1_cos_InvokeMethod(x1, x2, x4)
1438_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → 1438_1_cos_InvokeMethod(x1, x3, x4, x5)
Cond_1438_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1438_1_cos_InvokeMethod(x1, x3, x4, x5)
667_0_power_GT(x1, x2, x3) → 667_0_power_GT(x1, x3)
1061_0_fact_GT(x1, x2) → 1061_0_fact_GT(x2)
Cond_667_0_power_GT(x1, x2, x3, x4, x5) → Cond_667_0_power_GT(x1, x2, x4, x5)
751_1_power_InvokeMethod(x1, x2, x3) → 751_1_power_InvokeMethod(x1, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4) → Cond_1061_0_fact_GT(x1, x3, x4)

Filtered unneeded arguments:



1298_1_cos_InvokeMethod(x1, x2, x3) → 1298_1_cos_InvokeMethod(x1, x3)
Cond_1298_1_cos_InvokeMethod(x1, x2, x3) → Cond_1298_1_cos_InvokeMethod(x1, x3)
1438_1_cos_InvokeMethod(x1, x2, x3, x4) → 1438_1_cos_InvokeMethod(x1, x2)
Cond_1438_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1438_1_cos_InvokeMethod(x1, x2)
1555_1_cos_InvokeMethod(x1, x2, x3, x4) → 1555_1_cos_InvokeMethod(x1, x3)
Cond_1555_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1555_1_cos_InvokeMethod(x1, x3)
1651_1_cos_InvokeMethod(x1, x2, x3) → 1651_1_cos_InvokeMethod(x1, x3)
667_0_power_GT(x1, x2) → 667_0_power_GT(x2)
Cond_667_0_power_GT(x1, x2, x3, x4) → Cond_667_0_power_GT(x1, x4)
751_1_power_InvokeMethod(x1, x2) → 751_1_power_InvokeMethod(x1)
Cond_1137_1_fact_InvokeMethod(x1, x2) → Cond_1137_1_fact_InvokeMethod(x1)
Cond_1137_1_fact_InvokeMethod1(x1, x2) → Cond_1137_1_fact_InvokeMethod1(x1)
1438_0_power_Load(x1, x2) → 1438_0_power_Load(x2)

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


P rules:
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(1438_0_power_Load(*(2, x1)), x1) | >(x1, 0)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(1555_0_fact_Load(*(2, x1)), x1) | >(x1, 0)
1555_1_cos_InvokeMethod(1350_0_fact_Return, x1) → 1651_1_cos_InvokeMethod(1298_1_cos_InvokeMethod(1298_0_power_Load(-(x1, 1)), -(x1, 1)), -(x1, 1)) | >(x1, 1)
R rules:
1298_0_power_Load(x1) → 667_0_power_GT(x1)
1438_0_power_Load(x1) → 667_0_power_GT(x1)
1555_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → 751_1_power_InvokeMethod(667_0_power_GT(x2)) | >(x1, 0)
751_1_power_InvokeMethod(697_0_power_Return(x0)) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0) | >(x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x1) → 1350_0_fact_Return | >(x1, 0)
1137_1_fact_InvokeMethod(1350_0_fact_Return, x0) → 1350_0_fact_Return | >(x0, 0)
1651_1_cos_InvokeMethod(1258_0_cos_Return(x0), 0) → 1771_0_cos_Return
1651_1_cos_InvokeMethod(1771_0_cos_Return, x1) → 1771_0_cos_Return

Performed bisimulation on rules. Used the following equivalence classes: {[697_0_power_Return_1, 1258_0_cos_Return_1]=697_0_power_Return_1, [Cond_1137_1_fact_InvokeMethod_3, Cond_1137_1_fact_InvokeMethod1_3]=Cond_1137_1_fact_InvokeMethod_3, [996_0_power_Return, 1088_0_fact_Return, 1350_0_fact_Return, 1771_0_cos_Return]=996_0_power_Return}


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


P rules:
1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1) → COND_1298_1_COS_INVOKEMETHOD(>(x1, 0), 996_0_power_Return, x1)
COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1) → 1438_1_COS_INVOKEMETHOD(1438_0_power_Load(*(2, x1)), x1)
1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1) → COND_1438_1_COS_INVOKEMETHOD(>(x1, 0), 996_0_power_Return, x1)
COND_1438_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1) → 1555_1_COS_INVOKEMETHOD(1555_0_fact_Load(*(2, x1)), x1)
1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1) → COND_1555_1_COS_INVOKEMETHOD(>(x1, 1), 996_0_power_Return, x1)
COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1) → 1298_1_COS_INVOKEMETHOD(1298_0_power_Load(-(x1, 1)), -(x1, 1))
R rules:
1298_0_power_Load(x1) → 667_0_power_GT(x1)
1438_0_power_Load(x1) → 667_0_power_GT(x1)
1555_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(>(x1, 0), x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(697_0_power_Return(x0)) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return
1061_0_fact_GT(0) → 996_0_power_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(>(x0, 0), x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(996_0_power_Return, x1) → Cond_1137_1_fact_InvokeMethod(>(x1, 0), 996_0_power_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 996_0_power_Return, x1) → 996_0_power_Return
1651_1_cos_InvokeMethod(697_0_power_Return(x0), 0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x1) → 996_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:
1298_0_power_Load(x1) → 667_0_power_GT(x1)
1438_0_power_Load(x1) → 667_0_power_GT(x1)
1555_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(697_0_power_Return(x0)) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return
1061_0_fact_GT(0) → 996_0_power_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(996_0_power_Return, x1) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 996_0_power_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 996_0_power_Return, x1) → 996_0_power_Return
1651_1_cos_InvokeMethod(697_0_power_Return(x0), 0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x1) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0]) → COND_1298_1_COS_INVOKEMETHOD(x1[0] > 0, 996_0_power_Return, x1[0])
(1): COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[1]) → 1438_1_COS_INVOKEMETHOD(1438_0_power_Load(2 * x1[1]), x1[1])
(2): 1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2]) → COND_1438_1_COS_INVOKEMETHOD(x1[2] > 0, 996_0_power_Return, x1[2])
(3): COND_1438_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[3]) → 1555_1_COS_INVOKEMETHOD(1555_0_fact_Load(2 * x1[3]), x1[3])
(4): 1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4]) → COND_1555_1_COS_INVOKEMETHOD(x1[4] > 1, 996_0_power_Return, x1[4])
(5): COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[5]) → 1298_1_COS_INVOKEMETHOD(1298_0_power_Load(x1[5] - 1), x1[5] - 1)

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


(1) -> (2), if (1438_0_power_Load(2 * x1[1]) →* 996_0_power_Returnx1[1]* x1[2])


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


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


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


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



The set Q consists of the following terms:
1298_0_power_Load(x0)
1438_0_power_Load(x0)
1555_0_fact_Load(x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(697_0_power_Return(x0))
751_1_power_InvokeMethod(996_0_power_Return)
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(996_0_power_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 996_0_power_Return, x0)
1651_1_cos_InvokeMethod(697_0_power_Return(x0), 0)
1651_1_cos_InvokeMethod(996_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@600a05f6 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 1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1) → COND_1298_1_COS_INVOKEMETHOD(>(x1, 0), 996_0_power_Return, x1) the following chains were created:
  • We consider the chain 1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0]) → COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0]), COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[1]) → 1438_1_COS_INVOKEMETHOD(1438_0_power_Load(*(2, x1[1])), x1[1]) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx1[0]=x1[1]1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0])≥NonInfC∧1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0])≥COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])∧(UIncreasing(COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])), ≥))



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

    (2)    (>(x1[0], 0)=TRUE1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0])≥NonInfC∧1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0])≥COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])∧(UIncreasing(COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_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_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33] + [bni_33]x1[0] ≥ 0∧[(-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_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33] + [bni_33]x1[0] ≥ 0∧[(-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_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33] + [bni_33]x1[0] ≥ 0∧[(-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_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33 + bni_33] + [bni_33]x1[0] ≥ 0∧[(-1)bso_34] ≥ 0)







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

    (7)    (COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[1])≥NonInfC∧COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[1])≥1438_1_COS_INVOKEMETHOD(1438_0_power_Load(*(2, x1[1])), x1[1])∧(UIncreasing(1438_1_COS_INVOKEMETHOD(1438_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(1438_1_COS_INVOKEMETHOD(1438_0_power_Load(*(2, x1[1])), x1[1])), ≥)∧[bni_35] = 0∧[1 + (-1)bso_36] ≥ 0)



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

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



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

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



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

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







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

    (12)    (>(x1[2], 0)=TRUEx1[2]=x1[3]1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2])≥NonInfC∧1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2])≥COND_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_0_power_Return, x1[2])∧(UIncreasing(COND_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_0_power_Return, x1[2])), ≥))



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

    (13)    (>(x1[2], 0)=TRUE1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2])≥NonInfC∧1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2])≥COND_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_0_power_Return, x1[2])∧(UIncreasing(COND_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_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_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_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_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_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_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_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_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_0_power_Return, x1[2])), ≥)∧[(-1)Bound*bni_37] + [bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)







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

    (18)    (COND_1438_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[3])≥NonInfC∧COND_1438_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[3])≥1555_1_COS_INVOKEMETHOD(1555_0_fact_Load(*(2, x1[3])), x1[3])∧(UIncreasing(1555_1_COS_INVOKEMETHOD(1555_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(1555_1_COS_INVOKEMETHOD(1555_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(1555_1_COS_INVOKEMETHOD(1555_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(1555_1_COS_INVOKEMETHOD(1555_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(1555_1_COS_INVOKEMETHOD(1555_0_fact_Load(*(2, x1[3])), x1[3])), ≥)∧[bni_39] = 0∧0 = 0∧[(-1)bso_40] ≥ 0)







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

    (23)    (>(x1[4], 1)=TRUEx1[4]=x1[5]1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4])≥NonInfC∧1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4])≥COND_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_0_power_Return, x1[4])∧(UIncreasing(COND_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_0_power_Return, x1[4])), ≥))



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

    (24)    (>(x1[4], 1)=TRUE1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4])≥NonInfC∧1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4])≥COND_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_0_power_Return, x1[4])∧(UIncreasing(COND_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_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_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_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_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_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_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_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_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_0_power_Return, x1[4])), ≥)∧[bni_41 + (-1)Bound*bni_41] + [bni_41]x1[4] ≥ 0∧[(-1)bso_42] ≥ 0)







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

    (29)    (COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[5])≥NonInfC∧COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[5])≥1298_1_COS_INVOKEMETHOD(1298_0_power_Load(-(x1[5], 1)), -(x1[5], 1))∧(UIncreasing(1298_1_COS_INVOKEMETHOD(1298_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(1298_1_COS_INVOKEMETHOD(1298_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(1298_1_COS_INVOKEMETHOD(1298_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(1298_1_COS_INVOKEMETHOD(1298_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(1298_1_COS_INVOKEMETHOD(1298_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.
  • 1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1) → COND_1298_1_COS_INVOKEMETHOD(>(x1, 0), 996_0_power_Return, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])), ≥)∧[(-1)Bound*bni_33 + bni_33] + [bni_33]x1[0] ≥ 0∧[(-1)bso_34] ≥ 0)

  • COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1) → 1438_1_COS_INVOKEMETHOD(1438_0_power_Load(*(2, x1)), x1)
    • ((UIncreasing(1438_1_COS_INVOKEMETHOD(1438_0_power_Load(*(2, x1[1])), x1[1])), ≥)∧[bni_35] = 0∧0 = 0∧[1 + (-1)bso_36] ≥ 0)

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

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

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

  • COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1) → 1298_1_COS_INVOKEMETHOD(1298_0_power_Load(-(x1, 1)), -(x1, 1))
    • ((UIncreasing(1298_1_COS_INVOKEMETHOD(1298_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(1298_0_power_Load(x1)) = [-1] + [-1]x1   
POL(667_0_power_GT(x1)) = x1   
POL(1438_0_power_Load(x1)) = [-1] + [-1]x1   
POL(1555_0_fact_Load(x1)) = [-1] + x1   
POL(1061_0_fact_GT(x1)) = [1] + [-1]x1   
POL(0) = 0   
POL(697_0_power_Return(x1)) = [-1]   
POL(Cond_667_0_power_GT(x1, x2, x3)) = [1]   
POL(>(x1, x2)) = [-1]   
POL(751_1_power_InvokeMethod(x1)) = [2]   
POL(996_0_power_Return) = [-1]   
POL(Cond_1061_0_fact_GT(x1, x2, x3)) = [-1]x2   
POL(1137_1_fact_InvokeMethod(x1, x2)) = 0   
POL(Cond_1137_1_fact_InvokeMethod(x1, x2, x3)) = [1] + x3   
POL(1651_1_cos_InvokeMethod(x1, x2)) = [-1]   
POL(1298_1_COS_INVOKEMETHOD(x1, x2)) = x2   
POL(COND_1298_1_COS_INVOKEMETHOD(x1, x2, x3)) = x3   
POL(1438_1_COS_INVOKEMETHOD(x1, x2)) = [-1] + x2   
POL(*(x1, x2)) = x1·x2   
POL(2) = [2]   
POL(COND_1438_1_COS_INVOKEMETHOD(x1, x2, x3)) = [-1] + x3   
POL(1555_1_COS_INVOKEMETHOD(x1, x2)) = [-1] + x2   
POL(COND_1555_1_COS_INVOKEMETHOD(x1, x2, x3)) = [-1] + x3   
POL(1) = [1]   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[1]) → 1438_1_COS_INVOKEMETHOD(1438_0_power_Load(*(2, x1[1])), x1[1])

The following pairs are in Pbound:

1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0]) → COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])
1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2]) → COND_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_0_power_Return, x1[2])
1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4]) → COND_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_0_power_Return, x1[4])

The following pairs are in P:

1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0]) → COND_1298_1_COS_INVOKEMETHOD(>(x1[0], 0), 996_0_power_Return, x1[0])
1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2]) → COND_1438_1_COS_INVOKEMETHOD(>(x1[2], 0), 996_0_power_Return, x1[2])
COND_1438_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[3]) → 1555_1_COS_INVOKEMETHOD(1555_0_fact_Load(*(2, x1[3])), x1[3])
1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4]) → COND_1555_1_COS_INVOKEMETHOD(>(x1[4], 1), 996_0_power_Return, x1[4])
COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[5]) → 1298_1_COS_INVOKEMETHOD(1298_0_power_Load(-(x1[5], 1)), -(x1[5], 1))

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

751_1_power_InvokeMethod(667_0_power_GT(x2))1Cond_667_0_power_GT(TRUE, x1, x2)1
751_1_power_InvokeMethod(697_0_power_Return(x0))1996_0_power_Return1
751_1_power_InvokeMethod(996_0_power_Return)1996_0_power_Return1
1061_0_fact_GT(0)1996_0_power_Return1
1061_0_fact_GT(x0)1Cond_1061_0_fact_GT(>(x0, 0), x0, x1)1

(42) Complex Obligation (AND)

(43) 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:
1298_0_power_Load(x1) → 667_0_power_GT(x1)
1438_0_power_Load(x1) → 667_0_power_GT(x1)
1555_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(697_0_power_Return(x0)) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return
1061_0_fact_GT(0) → 996_0_power_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(996_0_power_Return, x1) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 996_0_power_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 996_0_power_Return, x1) → 996_0_power_Return
1651_1_cos_InvokeMethod(697_0_power_Return(x0), 0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x1) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 1298_1_COS_INVOKEMETHOD(996_0_power_Return, x1[0]) → COND_1298_1_COS_INVOKEMETHOD(x1[0] > 0, 996_0_power_Return, x1[0])
(2): 1438_1_COS_INVOKEMETHOD(996_0_power_Return, x1[2]) → COND_1438_1_COS_INVOKEMETHOD(x1[2] > 0, 996_0_power_Return, x1[2])
(3): COND_1438_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[3]) → 1555_1_COS_INVOKEMETHOD(1555_0_fact_Load(2 * x1[3]), x1[3])
(4): 1555_1_COS_INVOKEMETHOD(996_0_power_Return, x1[4]) → COND_1555_1_COS_INVOKEMETHOD(x1[4] > 1, 996_0_power_Return, x1[4])
(5): COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[5]) → 1298_1_COS_INVOKEMETHOD(1298_0_power_Load(x1[5] - 1), x1[5] - 1)

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


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


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


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



The set Q consists of the following terms:
1298_0_power_Load(x0)
1438_0_power_Load(x0)
1555_0_fact_Load(x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(697_0_power_Return(x0))
751_1_power_InvokeMethod(996_0_power_Return)
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(996_0_power_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 996_0_power_Return, x0)
1651_1_cos_InvokeMethod(697_0_power_Return(x0), 0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)

(44) IDependencyGraphProof (EQUIVALENT transformation)

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

(45) TRUE

(46) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1298_0_power_Load(x1) → 667_0_power_GT(x1)
1438_0_power_Load(x1) → 667_0_power_GT(x1)
1555_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(697_0_power_Return(x0)) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return
1061_0_fact_GT(0) → 996_0_power_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(996_0_power_Return, x1) → Cond_1137_1_fact_InvokeMethod(x1 > 0, 996_0_power_Return, x1)
Cond_1137_1_fact_InvokeMethod(TRUE, 996_0_power_Return, x1) → 996_0_power_Return
1651_1_cos_InvokeMethod(697_0_power_Return(x0), 0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x1) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(1): COND_1298_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[1]) → 1438_1_COS_INVOKEMETHOD(1438_0_power_Load(2 * x1[1]), x1[1])
(3): COND_1438_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[3]) → 1555_1_COS_INVOKEMETHOD(1555_0_fact_Load(2 * x1[3]), x1[3])
(5): COND_1555_1_COS_INVOKEMETHOD(TRUE, 996_0_power_Return, x1[5]) → 1298_1_COS_INVOKEMETHOD(1298_0_power_Load(x1[5] - 1), x1[5] - 1)


The set Q consists of the following terms:
1298_0_power_Load(x0)
1438_0_power_Load(x0)
1555_0_fact_Load(x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(697_0_power_Return(x0))
751_1_power_InvokeMethod(996_0_power_Return)
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(996_0_power_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 996_0_power_Return, x0)
1651_1_cos_InvokeMethod(697_0_power_Return(x0), 0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)

(47) IDependencyGraphProof (EQUIVALENT transformation)

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

(48) TRUE

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

(50) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 34 rules for P and 58 rules for R.


P rules:
1162_0_sin_GT(EOS(STATIC_1162), i210, i217, i217) → 1176_0_sin_GT(EOS(STATIC_1176), i210, i217, i217)
1176_0_sin_GT(EOS(STATIC_1176), i210, i217, i217) → 1186_0_sin_ConstantStackPush(EOS(STATIC_1186), i210, i217) | >(i217, 0)
1186_0_sin_ConstantStackPush(EOS(STATIC_1186), i210, i217) → 1197_0_sin_Load(EOS(STATIC_1197), i210, i217, -1)
1197_0_sin_Load(EOS(STATIC_1197), i210, i217, matching1) → 1210_0_sin_InvokeMethod(EOS(STATIC_1210), i210, i217, -1, i217) | =(matching1, -1)
1210_0_sin_InvokeMethod(EOS(STATIC_1210), i210, i217, matching1, i217) → 1222_1_sin_InvokeMethod(1222_0_power_Load(EOS(STATIC_1222), -1, i217), i210, i217, -1, i217) | =(matching1, -1)
1222_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i167), i210, i229, matching1, i229) → 1288_0_power_Return(EOS(STATIC_1288), i210, i229, -1, i229, i167) | =(matching1, -1)
1288_0_power_Return(EOS(STATIC_1288), i210, i229, matching1, i229, i167) → 1302_0_sin_Load(EOS(STATIC_1302), i210, i229, i167) | =(matching1, -1)
1302_0_sin_Load(EOS(STATIC_1302), i210, i229, i167) → 1317_0_sin_ConstantStackPush(EOS(STATIC_1317), i210, i229, i167, i210)
1317_0_sin_ConstantStackPush(EOS(STATIC_1317), i210, i229, i167, i210) → 1332_0_sin_Load(EOS(STATIC_1332), i210, i229, i167, i210, 2)
1332_0_sin_Load(EOS(STATIC_1332), i210, i229, i167, i210, matching1) → 1348_0_sin_IntArithmetic(EOS(STATIC_1348), i210, i229, i167, i210, 2, i229) | =(matching1, 2)
1348_0_sin_IntArithmetic(EOS(STATIC_1348), i210, i229, i167, i210, matching1, i229) → 1368_0_sin_ConstantStackPush(EOS(STATIC_1368), i210, i229, i167, i210, *(2, i229)) | &&(>=(i229, 1), =(matching1, 2))
1368_0_sin_ConstantStackPush(EOS(STATIC_1368), i210, i229, i167, i210, i261) → 1381_0_sin_IntArithmetic(EOS(STATIC_1381), i210, i229, i167, i210, i261, 1)
1381_0_sin_IntArithmetic(EOS(STATIC_1381), i210, i229, i167, i210, i261, matching1) → 1395_0_sin_InvokeMethod(EOS(STATIC_1395), i210, i229, i167, i210, +(i261, 1)) | &&(>(i261, 0), =(matching1, 1))
1395_0_sin_InvokeMethod(EOS(STATIC_1395), i210, i229, i167, i210, i269) → 1405_1_sin_InvokeMethod(1405_0_power_Load(EOS(STATIC_1405), i210, i269), i210, i229, i167, i210, i269)
1405_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i285), i286, i229, i167, i286, i287) → 1458_0_power_Return(EOS(STATIC_1458), i286, i229, i167, i286, i287, i285)
1458_0_power_Return(EOS(STATIC_1458), i286, i229, i167, i286, i287, i285) → 1463_0_sin_IntArithmetic(EOS(STATIC_1463), i286, i229, i167, i285)
1463_0_sin_IntArithmetic(EOS(STATIC_1463), i286, i229, i167, i285) → 1476_0_sin_ConstantStackPush(EOS(STATIC_1476), i286, i229, *(i167, i285))
1476_0_sin_ConstantStackPush(EOS(STATIC_1476), i286, i229, i297) → 1489_0_sin_Load(EOS(STATIC_1489), i286, i229, i297, 2)
1489_0_sin_Load(EOS(STATIC_1489), i286, i229, i297, matching1) → 1501_0_sin_IntArithmetic(EOS(STATIC_1501), i286, i229, i297, 2, i229) | =(matching1, 2)
1501_0_sin_IntArithmetic(EOS(STATIC_1501), i286, i229, i297, matching1, i229) → 1511_0_sin_ConstantStackPush(EOS(STATIC_1511), i286, i229, i297, *(2, i229)) | &&(>=(i229, 1), =(matching1, 2))
1511_0_sin_ConstantStackPush(EOS(STATIC_1511), i286, i229, i297, i307) → 1520_0_sin_IntArithmetic(EOS(STATIC_1520), i286, i229, i297, i307, 1)
1520_0_sin_IntArithmetic(EOS(STATIC_1520), i286, i229, i297, i307, matching1) → 1532_0_sin_InvokeMethod(EOS(STATIC_1532), i286, i229, i297, +(i307, 1)) | &&(>(i307, 0), =(matching1, 1))
1532_0_sin_InvokeMethod(EOS(STATIC_1532), i286, i229, i297, i312) → 1540_1_sin_InvokeMethod(1540_0_fact_Load(EOS(STATIC_1540), i312), i286, i229, i297, i312)
1540_1_sin_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), i257), i286, i229, i297, i322) → 1581_0_fact_Return(EOS(STATIC_1581), i286, i229, i297, i322, i257)
1581_0_fact_Return(EOS(STATIC_1581), i286, i229, i297, i322, i257) → 1590_0_sin_IntArithmetic(EOS(STATIC_1590), i286, i229, i297, i257)
1590_0_sin_IntArithmetic(EOS(STATIC_1590), i286, i229, i297, i257) → 1598_0_sin_Load(EOS(STATIC_1598), i286, i229, /(i297, i257)) | >=(i257, 1)
1598_0_sin_Load(EOS(STATIC_1598), i286, i229, i327) → 1611_0_sin_Load(EOS(STATIC_1611), i229, i327, i286)
1611_0_sin_Load(EOS(STATIC_1611), i229, i327, i286) → 1617_0_sin_ConstantStackPush(EOS(STATIC_1617), i327, i286, i229)
1617_0_sin_ConstantStackPush(EOS(STATIC_1617), i327, i286, i229) → 1625_0_sin_IntArithmetic(EOS(STATIC_1625), i327, i286, i229, 1)
1625_0_sin_IntArithmetic(EOS(STATIC_1625), i327, i286, i229, matching1) → 1634_0_sin_InvokeMethod(EOS(STATIC_1634), i327, i286, -(i229, 1)) | &&(>(i229, 0), =(matching1, 1))
1634_0_sin_InvokeMethod(EOS(STATIC_1634), i327, i286, i335) → 1642_1_sin_InvokeMethod(1642_0_sin_Load(EOS(STATIC_1642), i286, i335), i327, i286, i335)
1642_0_sin_Load(EOS(STATIC_1642), i286, i335) → 1652_0_sin_Load(EOS(STATIC_1652), i286, i335)
1652_0_sin_Load(EOS(STATIC_1652), i286, i335) → 1154_0_sin_Load(EOS(STATIC_1154), i286, i335)
1154_0_sin_Load(EOS(STATIC_1154), i210, i211) → 1162_0_sin_GT(EOS(STATIC_1162), i210, i211, i211)
R rules:
1222_0_power_Load(EOS(STATIC_1222), matching1, i217) → 1238_0_power_Load(EOS(STATIC_1238), -1, i217) | =(matching1, -1)
1238_0_power_Load(EOS(STATIC_1238), matching1, i217) → 654_0_power_Load(EOS(STATIC_654), -1, i217) | =(matching1, -1)
1405_0_power_Load(EOS(STATIC_1405), i210, i269) → 1416_0_power_Load(EOS(STATIC_1416), i210, i269)
1416_0_power_Load(EOS(STATIC_1416), i210, i269) → 654_0_power_Load(EOS(STATIC_654), i210, i269)
1540_0_fact_Load(EOS(STATIC_1540), i312) → 1557_0_fact_Load(EOS(STATIC_1557), i312)
1557_0_fact_Load(EOS(STATIC_1557), i312) → 1054_0_fact_Load(EOS(STATIC_1054), i312)
763_0_power_Load(EOS(STATIC_763), i78) → 654_0_power_Load(EOS(STATIC_654), i78, i102)
1147_0_fact_Load(EOS(STATIC_1147)) → 1054_0_fact_Load(EOS(STATIC_1054), i207)
654_0_power_Load(EOS(STATIC_654), i78, i79) → 667_0_power_GT(EOS(STATIC_667), i78, i79, i79)
667_0_power_GT(EOS(STATIC_667), i78, matching1, matching2) → 676_0_power_GT(EOS(STATIC_676), i78, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
667_0_power_GT(EOS(STATIC_667), i78, i87, i87) → 677_0_power_GT(EOS(STATIC_677), i78, i87, i87)
676_0_power_GT(EOS(STATIC_676), i78, matching1, matching2) → 688_0_power_ConstantStackPush(EOS(STATIC_688), i78, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
677_0_power_GT(EOS(STATIC_677), i78, i87, i87) → 689_0_power_Load(EOS(STATIC_689), i78, i87) | >(i87, 0)
688_0_power_ConstantStackPush(EOS(STATIC_688), i78, matching1) → 697_0_power_Return(EOS(STATIC_697), i78, 0, 1) | =(matching1, 0)
689_0_power_Load(EOS(STATIC_689), i78, i87) → 699_0_power_Load(EOS(STATIC_699), i78, i87, i78)
699_0_power_Load(EOS(STATIC_699), i78, i87, i78) → 708_0_power_Load(EOS(STATIC_708), i87, i78, i78)
708_0_power_Load(EOS(STATIC_708), i87, i78, i78) → 721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87)
721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87) → 731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87)
731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87) → 743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) | >(i87, 0)
743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) → 751_1_power_InvokeMethod(751_0_power_Load(EOS(STATIC_751), i78), i78, i78)
751_0_power_Load(EOS(STATIC_751), i78) → 763_0_power_Load(EOS(STATIC_763), i78)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), i112, matching1, matching2), i112, i112) → 804_0_power_Return(EOS(STATIC_804), i112, i112, 0, i112, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i167), i173, i173) → 1047_0_power_Return(EOS(STATIC_1047), i173, i173, i167)
804_0_power_Return(EOS(STATIC_804), i112, i112, matching1, i112, matching2, matching3) → 810_0_power_IntArithmetic(EOS(STATIC_810), i112, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
810_0_power_IntArithmetic(EOS(STATIC_810), i112, matching1) → 985_0_power_IntArithmetic(EOS(STATIC_985), i112, 1) | =(matching1, 1)
972_0_power_Return(EOS(STATIC_972), i160, i160, i161) → 985_0_power_IntArithmetic(EOS(STATIC_985), i160, i161)
985_0_power_IntArithmetic(EOS(STATIC_985), i160, i161) → 996_0_power_Return(EOS(STATIC_996), *(i160, i161))
1047_0_power_Return(EOS(STATIC_1047), i173, i173, i167) → 972_0_power_Return(EOS(STATIC_972), i173, i173, i167)
1054_0_fact_Load(EOS(STATIC_1054), i187) → 1061_0_fact_GT(EOS(STATIC_1061), i187, i187)
1061_0_fact_GT(EOS(STATIC_1061), matching1, matching2) → 1067_0_fact_GT(EOS(STATIC_1067), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1061_0_fact_GT(EOS(STATIC_1061), i191, i191) → 1068_0_fact_GT(EOS(STATIC_1068), i191, i191)
1067_0_fact_GT(EOS(STATIC_1067), matching1, matching2) → 1078_0_fact_ConstantStackPush(EOS(STATIC_1078), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1068_0_fact_GT(EOS(STATIC_1068), i191, i191) → 1080_0_fact_Load(EOS(STATIC_1080), i191) | >(i191, 0)
1078_0_fact_ConstantStackPush(EOS(STATIC_1078), matching1) → 1088_0_fact_Return(EOS(STATIC_1088), 0, 1) | =(matching1, 0)
1080_0_fact_Load(EOS(STATIC_1080), i191) → 1090_0_fact_Load(EOS(STATIC_1090), i191, i191)
1090_0_fact_Load(EOS(STATIC_1090), i191, i191) → 1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191)
1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191) → 1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191)
1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191) → 1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) | >(i191, 0)
1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) → 1137_1_fact_InvokeMethod(1137_0_fact_Load(EOS(STATIC_1137)), i191)
1137_0_fact_Load(EOS(STATIC_1137)) → 1147_0_fact_Load(EOS(STATIC_1147))
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), matching1, matching2), i191) → 1177_0_fact_Return(EOS(STATIC_1177), i191, 0, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), i257), i191) → 1398_0_fact_Return(EOS(STATIC_1398), i191, i257)
1177_0_fact_Return(EOS(STATIC_1177), i191, matching1, matching2, matching3) → 1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191, matching1) → 1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191, 1) | =(matching1, 1)
1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191, i224) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191, i224)
1323_0_fact_Return(EOS(STATIC_1323), i191, i248) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191, i248)
1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191, i248) → 1350_0_fact_Return(EOS(STATIC_1350), *(i191, i248)) | &&(>=(i191, 1), >=(i248, 1))
1398_0_fact_Return(EOS(STATIC_1398), i191, i257) → 1323_0_fact_Return(EOS(STATIC_1323), i191, i257)
1162_0_sin_GT(EOS(STATIC_1162), i210, matching1, matching2) → 1175_0_sin_GT(EOS(STATIC_1175), i210, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1175_0_sin_GT(EOS(STATIC_1175), i210, matching1, matching2) → 1184_0_sin_Load(EOS(STATIC_1184), i210, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1184_0_sin_Load(EOS(STATIC_1184), i210, matching1) → 1195_0_sin_Return(EOS(STATIC_1195), i210, 0, i210) | =(matching1, 0)
1642_1_sin_InvokeMethod(1195_0_sin_Return(EOS(STATIC_1195), i346, matching1, i346), i327, i346, matching2) → 1682_0_sin_Return(EOS(STATIC_1682), i327, i346, 0, i346, 0, i346) | &&(=(matching1, 0), =(matching2, 0))
1642_1_sin_InvokeMethod(1760_0_sin_Return(EOS(STATIC_1760), i379), i327, i389, i390) → 1806_0_sin_Return(EOS(STATIC_1806), i327, i389, i390, i379)
1682_0_sin_Return(EOS(STATIC_1682), i327, i346, matching1, i346, matching2, i346) → 1691_0_sin_IntArithmetic(EOS(STATIC_1691), i327, i346) | &&(=(matching1, 0), =(matching2, 0))
1691_0_sin_IntArithmetic(EOS(STATIC_1691), i327, i346) → 1748_0_sin_IntArithmetic(EOS(STATIC_1748), i327, i346)
1737_0_sin_Return(EOS(STATIC_1737), i327, i366, i367, i355) → 1748_0_sin_IntArithmetic(EOS(STATIC_1748), i327, i355)
1748_0_sin_IntArithmetic(EOS(STATIC_1748), i327, i355) → 1760_0_sin_Return(EOS(STATIC_1760), +(i327, i355))
1806_0_sin_Return(EOS(STATIC_1806), i327, i389, i390, i379) → 1737_0_sin_Return(EOS(STATIC_1737), i327, i389, i390, i379)

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


P rules:
1222_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x2, -1, x2) → 1405_1_sin_InvokeMethod(1405_0_power_Load(EOS(STATIC_1405), x1, +(*(2, x2), 1)), x1, x2, x0, x1, +(*(2, x2), 1)) | &&(>(+(x2, 1), 1), <(0, *(2, x2)))
1405_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x2, x3, x1, x4) → 1540_1_sin_InvokeMethod(1540_0_fact_Load(EOS(STATIC_1540), +(*(2, x2), 1)), x1, x2, *(x3, x0), +(*(2, x2), 1)) | &&(>(+(x2, 1), 1), <(0, *(2, x2)))
1540_1_sin_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), x0), x1, x2, x3, x4) → 1642_1_sin_InvokeMethod(1222_1_sin_InvokeMethod(1222_0_power_Load(EOS(STATIC_1222), -1, -(x2, 1)), x1, -(x2, 1), -1, -(x2, 1)), /(x3, x0), x1, -(x2, 1)) | &&(>(x2, 1), >(+(x0, 1), 1))
R rules:
1222_0_power_Load(EOS(STATIC_1222), -1, x1) → 667_0_power_GT(EOS(STATIC_667), -1, x1, x1)
1405_0_power_Load(EOS(STATIC_1405), x0, x1) → 667_0_power_GT(EOS(STATIC_667), x0, x1, x1)
1540_0_fact_Load(EOS(STATIC_1540), x0) → 1061_0_fact_GT(EOS(STATIC_1061), x0, x0)
667_0_power_GT(EOS(STATIC_667), x0, 0, 0) → 697_0_power_Return(EOS(STATIC_697), x0, 0, 1)
667_0_power_GT(EOS(STATIC_667), x0, x1, x1) → 751_1_power_InvokeMethod(667_0_power_GT(EOS(STATIC_667), x0, x2, x2), x0, x0) | >(x1, 0)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), arith[1], 0, 1), arith[1], arith[1]) → 996_0_power_Return(EOS(STATIC_996), arith[1])
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x1) → 996_0_power_Return(EOS(STATIC_996), *(x1, x0))
1061_0_fact_GT(EOS(STATIC_1061), 0, 0) → 1088_0_fact_Return(EOS(STATIC_1088), 0, 1)
1061_0_fact_GT(EOS(STATIC_1061), x0, x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), x1, x1), x0) | >(x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), 0, 1), arith[1]) → 1350_0_fact_Return(EOS(STATIC_1350), arith[1]) | >(+(arith[1], 1), 1)
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), x0), x1) → 1350_0_fact_Return(EOS(STATIC_1350), *(x1, x0)) | &&(>(+(x1, 1), 1), >(+(x0, 1), 1))
1642_1_sin_InvokeMethod(1195_0_sin_Return(EOS(STATIC_1195), x0, 0, x0), x2, x0, 0) → 1760_0_sin_Return(EOS(STATIC_1760), +(x2, x0))
1642_1_sin_InvokeMethod(1760_0_sin_Return(EOS(STATIC_1760), x0), x1, x2, x3) → 1760_0_sin_Return(EOS(STATIC_1760), +(x1, x0))

Filtered ground terms:



1222_0_power_Load(x1, x2, x3) → 1222_0_power_Load(x3)
1222_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1222_1_sin_InvokeMethod(x1, x2, x3, x5)
1350_0_fact_Return(x1, x2) → 1350_0_fact_Return(x2)
1540_0_fact_Load(x1, x2) → 1540_0_fact_Load(x2)
996_0_power_Return(x1, x2) → 996_0_power_Return(x2)
1405_0_power_Load(x1, x2, x3) → 1405_0_power_Load(x2, x3)
Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x4, x6)
1760_0_sin_Return(x1, x2) → 1760_0_sin_Return(x2)
1195_0_sin_Return(x1, x2, x3, x4) → 1195_0_sin_Return(x2, x4)
Cond_1137_1_fact_InvokeMethod(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod(x1, x3)
1088_0_fact_Return(x1, x2, x3) → 1088_0_fact_Return
1061_0_fact_GT(x1, x2, x3) → 1061_0_fact_GT(x2, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1061_0_fact_GT(x1, x3, x4, x5)
697_0_power_Return(x1, x2, x3, x4) → 697_0_power_Return(x2)
667_0_power_GT(x1, x2, x3, x4) → 667_0_power_GT(x2, x3, x4)
Cond_667_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_667_0_power_GT(x1, x3, x4, x5, x6)

Filtered duplicate args:



1222_1_sin_InvokeMethod(x1, x2, x3, x4) → 1222_1_sin_InvokeMethod(x1, x2, x4)
Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x5)
1405_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1405_1_sin_InvokeMethod(x1, x3, x4, x5, x6)
Cond_1405_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1405_1_sin_InvokeMethod(x1, x2, x4, x5, x6, x7)
667_0_power_GT(x1, x2, x3) → 667_0_power_GT(x1, x3)
1061_0_fact_GT(x1, x2) → 1061_0_fact_GT(x2)
Cond_667_0_power_GT(x1, x2, x3, x4, x5) → Cond_667_0_power_GT(x1, x2, x4, x5)
751_1_power_InvokeMethod(x1, x2, x3) → 751_1_power_InvokeMethod(x1, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4) → Cond_1061_0_fact_GT(x1, x3, x4)
1195_0_sin_Return(x1, x2) → 1195_0_sin_Return(x2)

Filtered unneeded arguments:



1222_1_sin_InvokeMethod(x1, x2, x3) → 1222_1_sin_InvokeMethod(x1, x3)
Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x4) → Cond_1222_1_sin_InvokeMethod(x1, x4)
1405_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1405_1_sin_InvokeMethod(x1, x2)
Cond_1405_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1405_1_sin_InvokeMethod(x1, x3)
1540_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1540_1_sin_InvokeMethod(x1, x3)
Cond_1540_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1540_1_sin_InvokeMethod(x1, x4)
1642_1_sin_InvokeMethod(x1, x2, x3, x4) → 1642_1_sin_InvokeMethod(x1, x4)
667_0_power_GT(x1, x2) → 667_0_power_GT(x2)
Cond_667_0_power_GT(x1, x2, x3, x4) → Cond_667_0_power_GT(x1, x4)
751_1_power_InvokeMethod(x1, x2) → 751_1_power_InvokeMethod(x1)
1405_0_power_Load(x1, x2) → 1405_0_power_Load(x2)

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


P rules:
1222_1_sin_InvokeMethod(996_0_power_Return(x0), x2) → 1405_1_sin_InvokeMethod(1405_0_power_Load(+(*(2, x2), 1)), x2) | &&(>(x2, 0), <(0, *(2, x2)))
1405_1_sin_InvokeMethod(996_0_power_Return(x0), x2) → 1540_1_sin_InvokeMethod(1540_0_fact_Load(+(*(2, x2), 1)), x2) | &&(>(x2, 0), <(0, *(2, x2)))
1540_1_sin_InvokeMethod(1350_0_fact_Return(x0), x2) → 1642_1_sin_InvokeMethod(1222_1_sin_InvokeMethod(1222_0_power_Load(-(x2, 1)), -(x2, 1)), -(x2, 1)) | &&(>(x2, 1), >(x0, 0))
R rules:
1222_0_power_Load(x1) → 667_0_power_GT(x1)
1405_0_power_Load(x1) → 667_0_power_GT(x1)
1540_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → 751_1_power_InvokeMethod(667_0_power_GT(x2)) | >(x1, 0)
751_1_power_InvokeMethod(697_0_power_Return(arith[1])) → 996_0_power_Return(arith[1])
751_1_power_InvokeMethod(996_0_power_Return(x0)) → 996_0_power_Return(*(x1, x0))
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0) | >(x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, arith[1]) → 1350_0_fact_Return(arith[1]) | >(arith[1], 0)
1137_1_fact_InvokeMethod(1350_0_fact_Return(x0), x1) → 1350_0_fact_Return(*(x1, x0)) | &&(>(x1, 0), >(x0, 0))
1642_1_sin_InvokeMethod(1195_0_sin_Return(x0), 0) → 1760_0_sin_Return(+(x2, x0))
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x3) → 1760_0_sin_Return(+(x1, x0))

Performed bisimulation on rules. Used the following equivalence classes: {[996_0_power_Return_1, 1350_0_fact_Return_1]=996_0_power_Return_1, [697_0_power_Return_1, 1195_0_sin_Return_1]=697_0_power_Return_1}


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


P rules:
1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0), x2) → COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 996_0_power_Return(x0), x2)
COND_1222_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0), x2) → 1405_1_SIN_INVOKEMETHOD(1405_0_power_Load(+(*(2, x2), 1)), x2)
1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0), x2) → COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 996_0_power_Return(x0), x2)
COND_1405_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0), x2) → 1540_1_SIN_INVOKEMETHOD(1540_0_fact_Load(+(*(2, x2), 1)), x2)
1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0), x2) → COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2, 1), >(x0, 0)), 996_0_power_Return(x0), x2)
COND_1540_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0), x2) → 1222_1_SIN_INVOKEMETHOD(1222_0_power_Load(-(x2, 1)), -(x2, 1))
R rules:
1222_0_power_Load(x1) → 667_0_power_GT(x1)
1405_0_power_Load(x1) → 667_0_power_GT(x1)
1540_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(>(x1, 0), x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(697_0_power_Return(arith[1])) → 996_0_power_Return(arith[1])
751_1_power_InvokeMethod(996_0_power_Return(x0)) → 996_0_power_Return(*(x1, x0))
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(>(x0, 0), x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, arith[1]) → Cond_1137_1_fact_InvokeMethod(>(arith[1], 0), 1088_0_fact_Return, arith[1])
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, arith[1]) → 996_0_power_Return(arith[1])
1137_1_fact_InvokeMethod(996_0_power_Return(x0), x1) → Cond_1137_1_fact_InvokeMethod1(&&(>(x1, 0), >(x0, 0)), 996_0_power_Return(x0), x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 996_0_power_Return(x0), x1) → 996_0_power_Return(*(x1, x0))
1642_1_sin_InvokeMethod(697_0_power_Return(x0), 0) → 1760_0_sin_Return(+(x2, x0))
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x3) → 1760_0_sin_Return(+(x1, x0))

(51) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
1222_0_power_Load(x1) → 667_0_power_GT(x1)
1405_0_power_Load(x1) → 667_0_power_GT(x1)
1540_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(697_0_power_Return(arith[1])) → 996_0_power_Return(arith[1])
751_1_power_InvokeMethod(996_0_power_Return(x0)) → 996_0_power_Return(x1 * x0)
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, arith[1]) → Cond_1137_1_fact_InvokeMethod(arith[1] > 0, 1088_0_fact_Return, arith[1])
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, arith[1]) → 996_0_power_Return(arith[1])
1137_1_fact_InvokeMethod(996_0_power_Return(x0), x1) → Cond_1137_1_fact_InvokeMethod1(x1 > 0 && x0 > 0, 996_0_power_Return(x0), x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 996_0_power_Return(x0), x1) → 996_0_power_Return(x1 * x0)
1642_1_sin_InvokeMethod(697_0_power_Return(x0), 0) → 1760_0_sin_Return(x2 + x0)
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x3) → 1760_0_sin_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0]) → COND_1222_1_SIN_INVOKEMETHOD(x2[0] > 0 && 0 < 2 * x2[0], 996_0_power_Return(x0[0]), x2[0])
(1): COND_1222_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[1]), x2[1]) → 1405_1_SIN_INVOKEMETHOD(1405_0_power_Load(2 * x2[1] + 1), x2[1])
(2): 1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[2]), x2[2]) → COND_1405_1_SIN_INVOKEMETHOD(x2[2] > 0 && 0 < 2 * x2[2], 996_0_power_Return(x0[2]), x2[2])
(3): COND_1405_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[3]), x2[3]) → 1540_1_SIN_INVOKEMETHOD(1540_0_fact_Load(2 * x2[3] + 1), x2[3])
(4): 1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[4]), x2[4]) → COND_1540_1_SIN_INVOKEMETHOD(x2[4] > 1 && x0[4] > 0, 996_0_power_Return(x0[4]), x2[4])
(5): COND_1540_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[5]), x2[5]) → 1222_1_SIN_INVOKEMETHOD(1222_0_power_Load(x2[5] - 1), x2[5] - 1)

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


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


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


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


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


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



The set Q consists of the following terms:
1222_0_power_Load(x0)
1405_0_power_Load(x0)
1540_0_fact_Load(x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(697_0_power_Return(x0))
751_1_power_InvokeMethod(996_0_power_Return(x0))
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0)
1137_1_fact_InvokeMethod(996_0_power_Return(x0), x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 996_0_power_Return(x0), x1)
1642_1_sin_InvokeMethod(697_0_power_Return(x0), 0)
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x1)

(52) 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@600a05f6 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

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


For Pair 1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0), x2) → COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 996_0_power_Return(x0), x2) the following chains were created:
  • We consider the chain 1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0]) → COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0]), COND_1222_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[1]), x2[1]) → 1405_1_SIN_INVOKEMETHOD(1405_0_power_Load(+(*(2, x2[1]), 1)), x2[1]) which results in the following constraint:

    (1)    (&&(>(x2[0], 0), <(0, *(2, x2[0])))=TRUE996_0_power_Return(x0[0])=996_0_power_Return(x0[1])∧x2[0]=x2[1]1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0])≥NonInfC∧1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0])≥COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0])∧(UIncreasing(COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_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]))=TRUE1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0])≥NonInfC∧1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0])≥COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0])∧(UIncreasing(COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_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_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0])), ≥)∧[(2)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧[(-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_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0])), ≥)∧[(2)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧[(-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_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0])), ≥)∧[(2)bni_35 + (-1)Bound*bni_35] + [(2)bni_35]x2[0] ≥ 0∧[(-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_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_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)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_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_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)bso_36] ≥ 0)







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

    (8)    (COND_1222_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[1]), x2[1])≥NonInfC∧COND_1222_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[1]), x2[1])≥1405_1_SIN_INVOKEMETHOD(1405_0_power_Load(+(*(2, x2[1]), 1)), x2[1])∧(UIncreasing(1405_1_SIN_INVOKEMETHOD(1405_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(1405_1_SIN_INVOKEMETHOD(1405_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(1405_1_SIN_INVOKEMETHOD(1405_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(1405_1_SIN_INVOKEMETHOD(1405_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(1405_1_SIN_INVOKEMETHOD(1405_0_power_Load(+(*(2, x2[1]), 1)), x2[1])), ≥)∧[bni_37] = 0∧0 = 0∧0 = 0∧[(-1)bso_38] ≥ 0)







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

    (13)    (&&(>(x2[2], 0), <(0, *(2, x2[2])))=TRUE996_0_power_Return(x0[2])=996_0_power_Return(x0[3])∧x2[2]=x2[3]1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[2]), x2[2])≥NonInfC∧1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[2]), x2[2])≥COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])∧(UIncreasing(COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_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]))=TRUE1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[2]), x2[2])≥NonInfC∧1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[2]), x2[2])≥COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])∧(UIncreasing(COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_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_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])), ≥)∧[(2)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧[1 + (-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_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])), ≥)∧[(2)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧[1 + (-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_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])), ≥)∧[(2)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧[1 + (-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_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])), ≥)∧0 = 0∧[(2)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧0 = 0∧[1 + (-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_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])), ≥)∧0 = 0∧[(4)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧0 = 0∧[1 + (-1)bso_40] ≥ 0)







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

    (20)    (COND_1405_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[3]), x2[3])≥NonInfC∧COND_1405_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[3]), x2[3])≥1540_1_SIN_INVOKEMETHOD(1540_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])∧(UIncreasing(1540_1_SIN_INVOKEMETHOD(1540_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(1540_1_SIN_INVOKEMETHOD(1540_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])), ≥)∧[bni_41] = 0∧[(-1)bso_42] ≥ 0)



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

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



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

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



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

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







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

    (25)    (&&(>(x2[4], 1), >(x0[4], 0))=TRUE996_0_power_Return(x0[4])=996_0_power_Return(x0[5])∧x2[4]=x2[5]1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[4]), x2[4])≥NonInfC∧1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[4]), x2[4])≥COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])∧(UIncreasing(COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_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)=TRUE1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[4]), x2[4])≥NonInfC∧1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[4]), x2[4])≥COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])∧(UIncreasing(COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_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_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])), ≥)∧[bni_43 + (-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[1 + (-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_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])), ≥)∧[bni_43 + (-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[1 + (-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_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])), ≥)∧[bni_43 + (-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[1 + (-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_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])), ≥)∧[(5)bni_43 + (-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[1 + (-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_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])), ≥)∧[(5)bni_43 + (-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[1 + (-1)bso_44] ≥ 0)







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

    (32)    (COND_1540_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[5]), x2[5])≥NonInfC∧COND_1540_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[5]), x2[5])≥1222_1_SIN_INVOKEMETHOD(1222_0_power_Load(-(x2[5], 1)), -(x2[5], 1))∧(UIncreasing(1222_1_SIN_INVOKEMETHOD(1222_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(1222_1_SIN_INVOKEMETHOD(1222_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(1222_1_SIN_INVOKEMETHOD(1222_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(1222_1_SIN_INVOKEMETHOD(1222_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(1222_1_SIN_INVOKEMETHOD(1222_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.
  • 1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0), x2) → COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 996_0_power_Return(x0), x2)
    • (x2[0] ≥ 0∧[1] + [2]x2[0] ≥ 0 ⇒ (UIncreasing(COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_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)bso_36] ≥ 0)

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

  • 1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0), x2) → COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2, 0), <(0, *(2, x2))), 996_0_power_Return(x0), x2)
    • (x2[2] ≥ 0∧[1] + [2]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])), ≥)∧0 = 0∧[(4)bni_39 + (-1)Bound*bni_39] + [(2)bni_39]x2[2] ≥ 0∧0 = 0∧[1 + (-1)bso_40] ≥ 0)

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

  • 1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0), x2) → COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2, 1), >(x0, 0)), 996_0_power_Return(x0), x2)
    • (x2[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])), ≥)∧[(5)bni_43 + (-1)Bound*bni_43] + [(2)bni_43]x2[4] ≥ 0∧[1 + (-1)bso_44] ≥ 0)

  • COND_1540_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0), x2) → 1222_1_SIN_INVOKEMETHOD(1222_0_power_Load(-(x2, 1)), -(x2, 1))
    • ((UIncreasing(1222_1_SIN_INVOKEMETHOD(1222_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(1222_0_power_Load(x1)) = [-1] + [-1]x1   
POL(667_0_power_GT(x1)) = [-1] + [-1]x1   
POL(1405_0_power_Load(x1)) = [-1] + [-1]x1   
POL(1540_0_fact_Load(x1)) = [-1] + [-1]x1   
POL(1061_0_fact_GT(x1)) = [-1] + [-1]x1   
POL(0) = 0   
POL(697_0_power_Return(x1)) = x1   
POL(Cond_667_0_power_GT(x1, x2, x3)) = [-1] + [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(751_1_power_InvokeMethod(x1)) = [1] + [-1]x1   
POL(996_0_power_Return(x1)) = x1   
POL(*(x1, x2)) = x1·x2   
POL(1088_0_fact_Return) = [-1]   
POL(Cond_1061_0_fact_GT(x1, x2, x3)) = [-1] + x2   
POL(1137_1_fact_InvokeMethod(x1, x2)) = [2] + [-1]x1 + [-1]x2   
POL(Cond_1137_1_fact_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3   
POL(Cond_1137_1_fact_InvokeMethod1(x1, x2, x3)) = [2] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(1642_1_sin_InvokeMethod(x1, x2)) = [-1] + [-1]x1   
POL(1760_0_sin_Return(x1)) = x1   
POL(+(x1, x2)) = x1 + x2   
POL(1222_1_SIN_INVOKEMETHOD(x1, x2)) = [2] + [2]x2   
POL(COND_1222_1_SIN_INVOKEMETHOD(x1, x2, x3)) = [2] + [2]x3   
POL(<(x1, x2)) = [-1]   
POL(2) = [2]   
POL(1405_1_SIN_INVOKEMETHOD(x1, x2)) = [2] + [2]x2   
POL(1) = [1]   
POL(COND_1405_1_SIN_INVOKEMETHOD(x1, x2, x3)) = [1] + [2]x3   
POL(1540_1_SIN_INVOKEMETHOD(x1, x2)) = [1] + [2]x2   
POL(COND_1540_1_SIN_INVOKEMETHOD(x1, x2, x3)) = [2]x3   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[2]), x2[2]) → COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])
1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[4]), x2[4]) → COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])

The following pairs are in Pbound:

1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0]) → COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0])
1405_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[2]), x2[2]) → COND_1405_1_SIN_INVOKEMETHOD(&&(>(x2[2], 0), <(0, *(2, x2[2]))), 996_0_power_Return(x0[2]), x2[2])
1540_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[4]), x2[4]) → COND_1540_1_SIN_INVOKEMETHOD(&&(>(x2[4], 1), >(x0[4], 0)), 996_0_power_Return(x0[4]), x2[4])

The following pairs are in P:

1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0]) → COND_1222_1_SIN_INVOKEMETHOD(&&(>(x2[0], 0), <(0, *(2, x2[0]))), 996_0_power_Return(x0[0]), x2[0])
COND_1222_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[1]), x2[1]) → 1405_1_SIN_INVOKEMETHOD(1405_0_power_Load(+(*(2, x2[1]), 1)), x2[1])
COND_1405_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[3]), x2[3]) → 1540_1_SIN_INVOKEMETHOD(1540_0_fact_Load(+(*(2, x2[3]), 1)), x2[3])
COND_1540_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[5]), x2[5]) → 1222_1_SIN_INVOKEMETHOD(1222_0_power_Load(-(x2[5], 1)), -(x2[5], 1))

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

1405_0_power_Load(x1)1667_0_power_GT(x1)1
667_0_power_GT(x1)1Cond_667_0_power_GT(>(x1, 0), x1, x2)1
1540_0_fact_Load(x0)11061_0_fact_GT(x0)1
1061_0_fact_GT(0)11088_0_fact_Return1
1137_1_fact_InvokeMethod(1088_0_fact_Return, arith[1])1Cond_1137_1_fact_InvokeMethod(>(arith[1], 0), 1088_0_fact_Return, arith[1])1

(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:
1222_0_power_Load(x1) → 667_0_power_GT(x1)
1405_0_power_Load(x1) → 667_0_power_GT(x1)
1540_0_fact_Load(x0) → 1061_0_fact_GT(x0)
667_0_power_GT(0) → 697_0_power_Return(x0)
667_0_power_GT(x1) → Cond_667_0_power_GT(x1 > 0, x1, x2)
Cond_667_0_power_GT(TRUE, x1, x2) → 751_1_power_InvokeMethod(667_0_power_GT(x2))
751_1_power_InvokeMethod(697_0_power_Return(arith[1])) → 996_0_power_Return(arith[1])
751_1_power_InvokeMethod(996_0_power_Return(x0)) → 996_0_power_Return(x1 * x0)
1061_0_fact_GT(0) → 1088_0_fact_Return
1061_0_fact_GT(x0) → Cond_1061_0_fact_GT(x0 > 0, x0, x1)
Cond_1061_0_fact_GT(TRUE, x0, x1) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(x1), x0)
1137_1_fact_InvokeMethod(1088_0_fact_Return, arith[1]) → Cond_1137_1_fact_InvokeMethod(arith[1] > 0, 1088_0_fact_Return, arith[1])
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, arith[1]) → 996_0_power_Return(arith[1])
1137_1_fact_InvokeMethod(996_0_power_Return(x0), x1) → Cond_1137_1_fact_InvokeMethod1(x1 > 0 && x0 > 0, 996_0_power_Return(x0), x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 996_0_power_Return(x0), x1) → 996_0_power_Return(x1 * x0)
1642_1_sin_InvokeMethod(697_0_power_Return(x0), 0) → 1760_0_sin_Return(x2 + x0)
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x3) → 1760_0_sin_Return(x1 + x0)

The integer pair graph contains the following rules and edges:
(0): 1222_1_SIN_INVOKEMETHOD(996_0_power_Return(x0[0]), x2[0]) → COND_1222_1_SIN_INVOKEMETHOD(x2[0] > 0 && 0 < 2 * x2[0], 996_0_power_Return(x0[0]), x2[0])
(1): COND_1222_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[1]), x2[1]) → 1405_1_SIN_INVOKEMETHOD(1405_0_power_Load(2 * x2[1] + 1), x2[1])
(3): COND_1405_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[3]), x2[3]) → 1540_1_SIN_INVOKEMETHOD(1540_0_fact_Load(2 * x2[3] + 1), x2[3])
(5): COND_1540_1_SIN_INVOKEMETHOD(TRUE, 996_0_power_Return(x0[5]), x2[5]) → 1222_1_SIN_INVOKEMETHOD(1222_0_power_Load(x2[5] - 1), x2[5] - 1)

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


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



The set Q consists of the following terms:
1222_0_power_Load(x0)
1405_0_power_Load(x0)
1540_0_fact_Load(x0)
667_0_power_GT(x0)
Cond_667_0_power_GT(TRUE, x0, x1)
751_1_power_InvokeMethod(697_0_power_Return(x0))
751_1_power_InvokeMethod(996_0_power_Return(x0))
1061_0_fact_GT(x0)
Cond_1061_0_fact_GT(TRUE, x0, x1)
1137_1_fact_InvokeMethod(1088_0_fact_Return, x0)
Cond_1137_1_fact_InvokeMethod(TRUE, 1088_0_fact_Return, x0)
1137_1_fact_InvokeMethod(996_0_power_Return(x0), x1)
Cond_1137_1_fact_InvokeMethod1(TRUE, 996_0_power_Return(x0), x1)
1642_1_sin_InvokeMethod(697_0_power_Return(x0), 0)
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x1)

(54) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 4 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:
1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(i8)), i317, i317) → 1564_0_main_ArrayLength(EOS(STATIC_1564), java.lang.Object(ARRAY(i8)), i317, i317, java.lang.Object(ARRAY(i8)))
1564_0_main_ArrayLength(EOS(STATIC_1564), java.lang.Object(ARRAY(i8)), i317, i317, java.lang.Object(ARRAY(i8))) → 1572_0_main_GE(EOS(STATIC_1572), java.lang.Object(ARRAY(i8)), i317, i317, i8) | >=(i8, 0)
1572_0_main_GE(EOS(STATIC_1572), java.lang.Object(ARRAY(i8)), i317, i317, i8) → 1584_0_main_GE(EOS(STATIC_1584), java.lang.Object(ARRAY(i8)), i317, i317, i8)
1584_0_main_GE(EOS(STATIC_1584), java.lang.Object(ARRAY(i8)), i317, i317, i8) → 1593_0_main_Load(EOS(STATIC_1593), java.lang.Object(ARRAY(i8)), i317) | <(i317, i8)
1593_0_main_Load(EOS(STATIC_1593), java.lang.Object(ARRAY(i8)), i317) → 1601_0_main_ConstantStackPush(EOS(STATIC_1601), java.lang.Object(ARRAY(i8)), i317, i317)
1601_0_main_ConstantStackPush(EOS(STATIC_1601), java.lang.Object(ARRAY(i8)), i317, i317) → 1612_0_main_IntArithmetic(EOS(STATIC_1612), java.lang.Object(ARRAY(i8)), i317, i317, 2)
1612_0_main_IntArithmetic(EOS(STATIC_1612), java.lang.Object(ARRAY(i8)), i317, i317, matching1) → 1620_0_main_NE(EOS(STATIC_1620), java.lang.Object(ARRAY(i8)), i317, %(i317, 2)) | =(matching1, 2)
1620_0_main_NE(EOS(STATIC_1620), java.lang.Object(ARRAY(i8)), i317, matching1) → 1628_0_main_NE(EOS(STATIC_1628), java.lang.Object(ARRAY(i8)), i317, 1) | =(matching1, 1)
1620_0_main_NE(EOS(STATIC_1620), java.lang.Object(ARRAY(i8)), i317, matching1) → 1629_0_main_NE(EOS(STATIC_1629), java.lang.Object(ARRAY(i8)), i317, 0) | =(matching1, 0)
1628_0_main_NE(EOS(STATIC_1628), java.lang.Object(ARRAY(i8)), i317, matching1) → 1635_0_main_Load(EOS(STATIC_1635), java.lang.Object(ARRAY(i8)), i317) | &&(>(1, 0), =(matching1, 1))
1635_0_main_Load(EOS(STATIC_1635), java.lang.Object(ARRAY(i8)), i317) → 1644_0_main_ConstantStackPush(EOS(STATIC_1644), java.lang.Object(ARRAY(i8)), i317, i317)
1644_0_main_ConstantStackPush(EOS(STATIC_1644), java.lang.Object(ARRAY(i8)), i317, i317) → 1654_0_main_IntArithmetic(EOS(STATIC_1654), java.lang.Object(ARRAY(i8)), i317, i317, 3)
1654_0_main_IntArithmetic(EOS(STATIC_1654), java.lang.Object(ARRAY(i8)), i317, i317, matching1) → 1661_0_main_NE(EOS(STATIC_1661), java.lang.Object(ARRAY(i8)), i317, %(i317, 3)) | =(matching1, 3)
1661_0_main_NE(EOS(STATIC_1661), java.lang.Object(ARRAY(i8)), i317, i347) → 1672_0_main_NE(EOS(STATIC_1672), java.lang.Object(ARRAY(i8)), i317, i347)
1661_0_main_NE(EOS(STATIC_1661), java.lang.Object(ARRAY(i8)), i317, matching1) → 1673_0_main_NE(EOS(STATIC_1673), java.lang.Object(ARRAY(i8)), i317, 0) | =(matching1, 0)
1672_0_main_NE(EOS(STATIC_1672), java.lang.Object(ARRAY(i8)), i317, i347) → 1683_0_main_Load(EOS(STATIC_1683), java.lang.Object(ARRAY(i8)), i317) | >(i347, 0)
1683_0_main_Load(EOS(STATIC_1683), java.lang.Object(ARRAY(i8)), i317) → 1693_0_main_ConstantStackPush(EOS(STATIC_1693), java.lang.Object(ARRAY(i8)), i317, i317)
1693_0_main_ConstantStackPush(EOS(STATIC_1693), java.lang.Object(ARRAY(i8)), i317, i317) → 1703_0_main_IntArithmetic(EOS(STATIC_1703), java.lang.Object(ARRAY(i8)), i317, i317, 5)
1703_0_main_IntArithmetic(EOS(STATIC_1703), java.lang.Object(ARRAY(i8)), i317, i317, matching1) → 1716_0_main_NE(EOS(STATIC_1716), java.lang.Object(ARRAY(i8)), i317, %(i317, 5)) | =(matching1, 5)
1716_0_main_NE(EOS(STATIC_1716), java.lang.Object(ARRAY(i8)), i317, i370) → 1728_0_main_NE(EOS(STATIC_1728), java.lang.Object(ARRAY(i8)), i317, i370)
1716_0_main_NE(EOS(STATIC_1716), java.lang.Object(ARRAY(i8)), i317, matching1) → 1729_0_main_NE(EOS(STATIC_1729), java.lang.Object(ARRAY(i8)), i317, 0) | =(matching1, 0)
1728_0_main_NE(EOS(STATIC_1728), java.lang.Object(ARRAY(i8)), i317, i370) → 1739_0_main_ConstantStackPush(EOS(STATIC_1739), java.lang.Object(ARRAY(i8)), i317) | >(i370, 0)
1739_0_main_ConstantStackPush(EOS(STATIC_1739), java.lang.Object(ARRAY(i8)), i317) → 1752_0_main_Store(EOS(STATIC_1752), java.lang.Object(ARRAY(i8)), i317, 0)
1752_0_main_Store(EOS(STATIC_1752), java.lang.Object(ARRAY(i8)), i317, matching1) → 1764_0_main_Load(EOS(STATIC_1764), java.lang.Object(ARRAY(i8)), i317, 0) | =(matching1, 0)
1764_0_main_Load(EOS(STATIC_1764), java.lang.Object(ARRAY(i8)), i317, matching1) → 1835_0_main_Load(EOS(STATIC_1835), java.lang.Object(ARRAY(i8)), i317, 0) | =(matching1, 0)
1835_0_main_Load(EOS(STATIC_1835), java.lang.Object(ARRAY(i8)), i317, i420) → 1887_0_main_Load(EOS(STATIC_1887), java.lang.Object(ARRAY(i8)), i317, i420)
1887_0_main_Load(EOS(STATIC_1887), java.lang.Object(ARRAY(i8)), i317, i446) → 1908_0_main_Load(EOS(STATIC_1908), java.lang.Object(ARRAY(i8)), i317, i446)
1908_0_main_Load(EOS(STATIC_1908), java.lang.Object(ARRAY(i8)), i317, i455) → 1921_0_main_Load(EOS(STATIC_1921), java.lang.Object(ARRAY(i8)), i317, i455)
1921_0_main_Load(EOS(STATIC_1921), java.lang.Object(ARRAY(i8)), i317, i458) → 1923_0_main_ConstantStackPush(EOS(STATIC_1923), java.lang.Object(ARRAY(i8)), i317, i458, i458)
1923_0_main_ConstantStackPush(EOS(STATIC_1923), java.lang.Object(ARRAY(i8)), i317, i458, i458) → 1925_0_main_GE(EOS(STATIC_1925), java.lang.Object(ARRAY(i8)), i317, i458, i458, 100)
1925_0_main_GE(EOS(STATIC_1925), java.lang.Object(ARRAY(i8)), i317, i461, i461, matching1) → 1927_0_main_GE(EOS(STATIC_1927), java.lang.Object(ARRAY(i8)), i317, i461, i461, 100) | =(matching1, 100)
1925_0_main_GE(EOS(STATIC_1925), java.lang.Object(ARRAY(i8)), i317, matching1, matching2, matching3) → 1928_0_main_GE(EOS(STATIC_1928), java.lang.Object(ARRAY(i8)), i317, 100, 100, 100) | &&(&&(=(matching1, 100), =(matching2, 100)), =(matching3, 100))
1927_0_main_GE(EOS(STATIC_1927), java.lang.Object(ARRAY(i8)), i317, i461, i461, matching1) → 1929_0_main_Inc(EOS(STATIC_1929), java.lang.Object(ARRAY(i8)), i317, i461) | &&(<(i461, 100), =(matching1, 100))
1929_0_main_Inc(EOS(STATIC_1929), java.lang.Object(ARRAY(i8)), i317, i461) → 1936_0_main_JMP(EOS(STATIC_1936), java.lang.Object(ARRAY(i8)), i317, +(i461, 1)) | >=(i461, 0)
1936_0_main_JMP(EOS(STATIC_1936), java.lang.Object(ARRAY(i8)), i317, i467) → 1940_0_main_Load(EOS(STATIC_1940), java.lang.Object(ARRAY(i8)), i317, i467)
1940_0_main_Load(EOS(STATIC_1940), java.lang.Object(ARRAY(i8)), i317, i467) → 1921_0_main_Load(EOS(STATIC_1921), java.lang.Object(ARRAY(i8)), i317, i467)
1928_0_main_GE(EOS(STATIC_1928), java.lang.Object(ARRAY(i8)), i317, matching1, matching2, matching3) → 1933_0_main_Inc(EOS(STATIC_1933), java.lang.Object(ARRAY(i8)), i317) | &&(&&(=(matching1, 100), =(matching2, 100)), =(matching3, 100))
1933_0_main_Inc(EOS(STATIC_1933), java.lang.Object(ARRAY(i8)), i317) → 1938_0_main_JMP(EOS(STATIC_1938), java.lang.Object(ARRAY(i8)), +(i317, 1)) | >=(i317, 0)
1938_0_main_JMP(EOS(STATIC_1938), java.lang.Object(ARRAY(i8)), i468) → 1943_0_main_Load(EOS(STATIC_1943), java.lang.Object(ARRAY(i8)), i468)
1943_0_main_Load(EOS(STATIC_1943), java.lang.Object(ARRAY(i8)), i468) → 1549_0_main_Load(EOS(STATIC_1549), java.lang.Object(ARRAY(i8)), i468)
1549_0_main_Load(EOS(STATIC_1549), java.lang.Object(ARRAY(i8)), i317) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(i8)), i317, i317)
1729_0_main_NE(EOS(STATIC_1729), java.lang.Object(ARRAY(i8)), i317, matching1) → 1741_0_main_Load(EOS(STATIC_1741), java.lang.Object(ARRAY(i8)), i317) | =(matching1, 0)
1741_0_main_Load(EOS(STATIC_1741), java.lang.Object(ARRAY(i8)), i317) → 1754_0_main_ArrayLength(EOS(STATIC_1754), java.lang.Object(ARRAY(i8)), i317, java.lang.Object(ARRAY(i8)))
1754_0_main_ArrayLength(EOS(STATIC_1754), java.lang.Object(ARRAY(i8)), i317, java.lang.Object(ARRAY(i8))) → 1765_0_main_Load(EOS(STATIC_1765), java.lang.Object(ARRAY(i8)), i317, i8) | >=(i8, 0)
1765_0_main_Load(EOS(STATIC_1765), java.lang.Object(ARRAY(i8)), i317, i8) → 1778_0_main_InvokeMethod(EOS(STATIC_1778), java.lang.Object(ARRAY(i8)), i317, i8, i317)
1778_0_main_InvokeMethod(EOS(STATIC_1778), java.lang.Object(ARRAY(i8)), i317, i8, i317) → 1795_1_main_InvokeMethod(1795_0_exp_Load(EOS(STATIC_1795), i8, i317), java.lang.Object(ARRAY(i8)), i317, i8, i317)
1795_1_main_InvokeMethod(1338_0_exp_Return(EOS(STATIC_1338), i424, matching1), java.lang.Object(ARRAY(i8)), matching2, i424, matching3) → 1849_0_exp_Return(EOS(STATIC_1849), java.lang.Object(ARRAY(i424)), 0, i424, 0, i424, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1795_1_main_InvokeMethod(1676_0_exp_Return(EOS(STATIC_1676)), java.lang.Object(ARRAY(i8)), i426, i425, i426) → 1850_0_exp_Return(EOS(STATIC_1850), java.lang.Object(ARRAY(i425)), i426, i425, i426)
1849_0_exp_Return(EOS(STATIC_1849), java.lang.Object(ARRAY(i424)), matching1, i424, matching2, i424, matching3) → 1859_0_main_StackPop(EOS(STATIC_1859), java.lang.Object(ARRAY(i424)), 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1859_0_main_StackPop(EOS(STATIC_1859), java.lang.Object(ARRAY(i424)), matching1) → 1867_0_main_JMP(EOS(STATIC_1867), java.lang.Object(ARRAY(i424)), 0) | =(matching1, 0)
1867_0_main_JMP(EOS(STATIC_1867), java.lang.Object(ARRAY(i424)), matching1) → 1876_0_main_Inc(EOS(STATIC_1876), java.lang.Object(ARRAY(i424)), 0) | =(matching1, 0)
1876_0_main_Inc(EOS(STATIC_1876), java.lang.Object(ARRAY(i424)), matching1) → 1933_0_main_Inc(EOS(STATIC_1933), java.lang.Object(ARRAY(i424)), 0) | =(matching1, 0)
1850_0_exp_Return(EOS(STATIC_1850), java.lang.Object(ARRAY(i425)), i426, i425, i426) → 1862_0_main_StackPop(EOS(STATIC_1862), java.lang.Object(ARRAY(i425)), i426)
1862_0_main_StackPop(EOS(STATIC_1862), java.lang.Object(ARRAY(i425)), i426) → 1869_0_main_JMP(EOS(STATIC_1869), java.lang.Object(ARRAY(i425)), i426)
1869_0_main_JMP(EOS(STATIC_1869), java.lang.Object(ARRAY(i425)), i426) → 1880_0_main_Inc(EOS(STATIC_1880), java.lang.Object(ARRAY(i425)), i426)
1880_0_main_Inc(EOS(STATIC_1880), java.lang.Object(ARRAY(i425)), i426) → 1933_0_main_Inc(EOS(STATIC_1933), java.lang.Object(ARRAY(i425)), i426)
1673_0_main_NE(EOS(STATIC_1673), java.lang.Object(ARRAY(i8)), i317, matching1) → 1685_0_main_Load(EOS(STATIC_1685), java.lang.Object(ARRAY(i8)), i317) | =(matching1, 0)
1685_0_main_Load(EOS(STATIC_1685), java.lang.Object(ARRAY(i8)), i317) → 1695_0_main_ArrayLength(EOS(STATIC_1695), java.lang.Object(ARRAY(i8)), i317, java.lang.Object(ARRAY(i8)))
1695_0_main_ArrayLength(EOS(STATIC_1695), java.lang.Object(ARRAY(i8)), i317, java.lang.Object(ARRAY(i8))) → 1705_0_main_Load(EOS(STATIC_1705), java.lang.Object(ARRAY(i8)), i317, i8) | >=(i8, 0)
1705_0_main_Load(EOS(STATIC_1705), java.lang.Object(ARRAY(i8)), i317, i8) → 1718_0_main_InvokeMethod(EOS(STATIC_1718), java.lang.Object(ARRAY(i8)), i317, i8, i317)
1718_0_main_InvokeMethod(EOS(STATIC_1718), java.lang.Object(ARRAY(i8)), i317, i8, i317) → 1731_1_main_InvokeMethod(1731_0_cos_Load(EOS(STATIC_1731), i8, i317), java.lang.Object(ARRAY(i8)), i317, i8, i317)
1731_1_main_InvokeMethod(1258_0_cos_Return(EOS(STATIC_1258), i383, matching1), java.lang.Object(ARRAY(i8)), matching2, i383, matching3) → 1779_0_cos_Return(EOS(STATIC_1779), java.lang.Object(ARRAY(i383)), 0, i383, 0, i383, 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1731_1_main_InvokeMethod(1771_0_cos_Return(EOS(STATIC_1771)), java.lang.Object(ARRAY(i8)), i399, i398, i399) → 1821_0_cos_Return(EOS(STATIC_1821), java.lang.Object(ARRAY(i398)), i399, i398, i399)
1779_0_cos_Return(EOS(STATIC_1779), java.lang.Object(ARRAY(i383)), matching1, i383, matching2, i383, matching3) → 1797_0_main_StackPop(EOS(STATIC_1797), java.lang.Object(ARRAY(i383)), 0) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1797_0_main_StackPop(EOS(STATIC_1797), java.lang.Object(ARRAY(i383)), matching1) → 1817_0_main_JMP(EOS(STATIC_1817), java.lang.Object(ARRAY(i383)), 0) | =(matching1, 0)
1817_0_main_JMP(EOS(STATIC_1817), java.lang.Object(ARRAY(i383)), matching1) → 1826_0_main_Inc(EOS(STATIC_1826), java.lang.Object(ARRAY(i383)), 0) | =(matching1, 0)
1826_0_main_Inc(EOS(STATIC_1826), java.lang.Object(ARRAY(i383)), matching1) → 1876_0_main_Inc(EOS(STATIC_1876), java.lang.Object(ARRAY(i383)), 0) | =(matching1, 0)
1821_0_cos_Return(EOS(STATIC_1821), java.lang.Object(ARRAY(i398)), i399, i398, i399) → 1829_0_main_StackPop(EOS(STATIC_1829), java.lang.Object(ARRAY(i398)), i399)
1829_0_main_StackPop(EOS(STATIC_1829), java.lang.Object(ARRAY(i398)), i399) → 1846_0_main_JMP(EOS(STATIC_1846), java.lang.Object(ARRAY(i398)), i399)
1846_0_main_JMP(EOS(STATIC_1846), java.lang.Object(ARRAY(i398)), i399) → 1855_0_main_Inc(EOS(STATIC_1855), java.lang.Object(ARRAY(i398)), i399)
1855_0_main_Inc(EOS(STATIC_1855), java.lang.Object(ARRAY(i398)), i399) → 1880_0_main_Inc(EOS(STATIC_1880), java.lang.Object(ARRAY(i398)), i399)
1629_0_main_NE(EOS(STATIC_1629), java.lang.Object(ARRAY(i8)), i317, matching1) → 1637_0_main_Load(EOS(STATIC_1637), java.lang.Object(ARRAY(i8)), i317) | =(matching1, 0)
1637_0_main_Load(EOS(STATIC_1637), java.lang.Object(ARRAY(i8)), i317) → 1645_0_main_ArrayLength(EOS(STATIC_1645), java.lang.Object(ARRAY(i8)), i317, java.lang.Object(ARRAY(i8)))
1645_0_main_ArrayLength(EOS(STATIC_1645), java.lang.Object(ARRAY(i8)), i317, java.lang.Object(ARRAY(i8))) → 1656_0_main_Load(EOS(STATIC_1656), java.lang.Object(ARRAY(i8)), i317, i8) | >=(i8, 0)
1656_0_main_Load(EOS(STATIC_1656), java.lang.Object(ARRAY(i8)), i317, i8) → 1663_0_main_InvokeMethod(EOS(STATIC_1663), java.lang.Object(ARRAY(i8)), i317, i8, i317)
1663_0_main_InvokeMethod(EOS(STATIC_1663), java.lang.Object(ARRAY(i8)), i317, i8, i317) → 1675_1_main_InvokeMethod(1675_0_sin_Load(EOS(STATIC_1675), i8, i317), java.lang.Object(ARRAY(i8)), i317, i8, i317)
1675_1_main_InvokeMethod(1195_0_sin_Return(EOS(STATIC_1195), i358, matching1, i358), java.lang.Object(ARRAY(i8)), matching2, i358, matching3) → 1719_0_sin_Return(EOS(STATIC_1719), java.lang.Object(ARRAY(i358)), 0, i358, 0, i358, 0, i358) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1675_1_main_InvokeMethod(1760_0_sin_Return(EOS(STATIC_1760), i379), java.lang.Object(ARRAY(i8)), i392, i391, i392) → 1809_0_sin_Return(EOS(STATIC_1809), java.lang.Object(ARRAY(i391)), i392, i391, i392, i379)
1719_0_sin_Return(EOS(STATIC_1719), java.lang.Object(ARRAY(i358)), matching1, i358, matching2, i358, matching3, i358) → 1733_0_main_StackPop(EOS(STATIC_1733), java.lang.Object(ARRAY(i358)), 0, i358) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
1733_0_main_StackPop(EOS(STATIC_1733), java.lang.Object(ARRAY(i358)), matching1, i358) → 1744_0_main_JMP(EOS(STATIC_1744), java.lang.Object(ARRAY(i358)), 0) | =(matching1, 0)
1744_0_main_JMP(EOS(STATIC_1744), java.lang.Object(ARRAY(i358)), matching1) → 1756_0_main_Inc(EOS(STATIC_1756), java.lang.Object(ARRAY(i358)), 0) | =(matching1, 0)
1756_0_main_Inc(EOS(STATIC_1756), java.lang.Object(ARRAY(i358)), matching1) → 1826_0_main_Inc(EOS(STATIC_1826), java.lang.Object(ARRAY(i358)), 0) | =(matching1, 0)
1809_0_sin_Return(EOS(STATIC_1809), java.lang.Object(ARRAY(i391)), i392, i391, i392, i379) → 1738_0_sin_Return(EOS(STATIC_1738), java.lang.Object(ARRAY(i391)), i392, i391, i392, i379)
1738_0_sin_Return(EOS(STATIC_1738), java.lang.Object(ARRAY(i368)), i369, i368, i369, i355) → 1751_0_main_StackPop(EOS(STATIC_1751), java.lang.Object(ARRAY(i368)), i369, i355)
1751_0_main_StackPop(EOS(STATIC_1751), java.lang.Object(ARRAY(i368)), i369, i355) → 1762_0_main_JMP(EOS(STATIC_1762), java.lang.Object(ARRAY(i368)), i369)
1762_0_main_JMP(EOS(STATIC_1762), java.lang.Object(ARRAY(i368)), i369) → 1775_0_main_Inc(EOS(STATIC_1775), java.lang.Object(ARRAY(i368)), i369)
1775_0_main_Inc(EOS(STATIC_1775), java.lang.Object(ARRAY(i368)), i369) → 1855_0_main_Inc(EOS(STATIC_1855), java.lang.Object(ARRAY(i368)), i369)
R rules:
1795_0_exp_Load(EOS(STATIC_1795), i8, i317) → 1816_0_exp_Load(EOS(STATIC_1816), i8, i317)
1816_0_exp_Load(EOS(STATIC_1816), i8, i317) → 1281_0_exp_Load(EOS(STATIC_1281), i8, i317)
1731_0_cos_Load(EOS(STATIC_1731), i8, i317) → 1743_0_cos_Load(EOS(STATIC_1743), i8, i317)
1743_0_cos_Load(EOS(STATIC_1743), i8, i317) → 1207_0_cos_Load(EOS(STATIC_1207), i8, i317)
1675_0_sin_Load(EOS(STATIC_1675), i8, i317) → 1687_0_sin_Load(EOS(STATIC_1687), i8, i317)
1687_0_sin_Load(EOS(STATIC_1687), i8, i317) → 1154_0_sin_Load(EOS(STATIC_1154), i8, i317)
1389_0_power_Load(EOS(STATIC_1389), i8, i245) → 654_0_power_Load(EOS(STATIC_654), i8, i245)
1467_0_fact_Load(EOS(STATIC_1467), i277) → 1054_0_fact_Load(EOS(STATIC_1054), i277)
1586_0_exp_Load(EOS(STATIC_1586), i276) → 1281_0_exp_Load(EOS(STATIC_1281), i276, i320)
1313_0_power_Load(EOS(STATIC_1313), i225) → 654_0_power_Load(EOS(STATIC_654), -1, i225)
1455_0_power_Load(EOS(STATIC_1455), i8) → 654_0_power_Load(EOS(STATIC_654), i8, i281)
1562_0_fact_Load(EOS(STATIC_1562)) → 1054_0_fact_Load(EOS(STATIC_1054), i315)
1659_0_cos_Load(EOS(STATIC_1659), i295) → 1207_0_cos_Load(EOS(STATIC_1207), i295, i336)
1238_0_power_Load(EOS(STATIC_1238), i217) → 654_0_power_Load(EOS(STATIC_654), -1, i217)
1416_0_power_Load(EOS(STATIC_1416), i210) → 654_0_power_Load(EOS(STATIC_654), i210, i269)
1557_0_fact_Load(EOS(STATIC_1557)) → 1054_0_fact_Load(EOS(STATIC_1054), i312)
1652_0_sin_Load(EOS(STATIC_1652), i286) → 1154_0_sin_Load(EOS(STATIC_1154), i286, i335)
763_0_power_Load(EOS(STATIC_763), i78) → 654_0_power_Load(EOS(STATIC_654), i78, i102)
1147_0_fact_Load(EOS(STATIC_1147)) → 1054_0_fact_Load(EOS(STATIC_1054), i207)
1281_0_exp_Load(EOS(STATIC_1281), i8, i236) → 1294_0_exp_GT(EOS(STATIC_1294), i8, i236, i236)
1294_0_exp_GT(EOS(STATIC_1294), i8, matching1, matching2) → 1308_0_exp_GT(EOS(STATIC_1308), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1294_0_exp_GT(EOS(STATIC_1294), i8, i245, i245) → 1309_0_exp_GT(EOS(STATIC_1309), i8, i245, i245)
1308_0_exp_GT(EOS(STATIC_1308), i8, matching1, matching2) → 1326_0_exp_ConstantStackPush(EOS(STATIC_1326), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1309_0_exp_GT(EOS(STATIC_1309), i8, i245, i245) → 1328_0_exp_Load(EOS(STATIC_1328), i8, i245) | >(i245, 0)
1326_0_exp_ConstantStackPush(EOS(STATIC_1326), i8, matching1) → 1338_0_exp_Return(EOS(STATIC_1338), i8, 0) | =(matching1, 0)
1328_0_exp_Load(EOS(STATIC_1328), i8, i245) → 1340_0_exp_Load(EOS(STATIC_1340), i8, i245, i8)
1340_0_exp_Load(EOS(STATIC_1340), i8, i245, i8) → 1361_0_exp_InvokeMethod(EOS(STATIC_1361), i8, i245, i8, i245)
1361_0_exp_InvokeMethod(EOS(STATIC_1361), i8, i245, i8, i245) → 1376_1_exp_InvokeMethod(1376_0_power_Load(EOS(STATIC_1376), i8, i245), i8, i245, i8, i245)
1376_0_power_Load(EOS(STATIC_1376), i8, i245) → 1389_0_power_Load(EOS(STATIC_1389), i8, i245)
1376_1_exp_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i167), i276, i277, i276, i277) → 1429_0_power_Return(EOS(STATIC_1429), i276, i277, i276, i277, i167)
1429_0_power_Return(EOS(STATIC_1429), i276, i277, i276, i277, i167) → 1436_0_exp_Load(EOS(STATIC_1436), i276, i277, i167)
1436_0_exp_Load(EOS(STATIC_1436), i276, i277, i167) → 1453_0_exp_InvokeMethod(EOS(STATIC_1453), i276, i277, i167, i277)
1453_0_exp_InvokeMethod(EOS(STATIC_1453), i276, i277, i167, i277) → 1461_1_exp_InvokeMethod(1461_0_fact_Load(EOS(STATIC_1461), i277), i276, i277, i167, i277)
1461_0_fact_Load(EOS(STATIC_1461), i277) → 1467_0_fact_Load(EOS(STATIC_1467), i277)
1461_1_exp_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), i257), i276, i304, i167, i304) → 1507_0_fact_Return(EOS(STATIC_1507), i276, i304, i167, i304, i257)
1507_0_fact_Return(EOS(STATIC_1507), i276, i304, i167, i304, i257) → 1516_0_exp_IntArithmetic(EOS(STATIC_1516), i276, i304, i167, i257)
1516_0_exp_IntArithmetic(EOS(STATIC_1516), i276, i304, i167, i257) → 1528_0_exp_Load(EOS(STATIC_1528), i276, i304) | >=(i257, 1)
1528_0_exp_Load(EOS(STATIC_1528), i276, i304) → 1537_0_exp_Load(EOS(STATIC_1537), i304, i276)
1537_0_exp_Load(EOS(STATIC_1537), i304, i276) → 1553_0_exp_ConstantStackPush(EOS(STATIC_1553), i276, i304)
1553_0_exp_ConstantStackPush(EOS(STATIC_1553), i276, i304) → 1560_0_exp_IntArithmetic(EOS(STATIC_1560), i276, i304)
1560_0_exp_IntArithmetic(EOS(STATIC_1560), i276, i304) → 1565_0_exp_InvokeMethod(EOS(STATIC_1565), i276) | >(i304, 0)
1565_0_exp_InvokeMethod(EOS(STATIC_1565), i276) → 1574_1_exp_InvokeMethod(1574_0_exp_Load(EOS(STATIC_1574), i276), i276)
1574_0_exp_Load(EOS(STATIC_1574), i276) → 1586_0_exp_Load(EOS(STATIC_1586), i276)
1574_1_exp_InvokeMethod(1338_0_exp_Return(EOS(STATIC_1338), i331, matching1), i331) → 1614_0_exp_Return(EOS(STATIC_1614), i331, 0, i331, 0) | =(matching1, 0)
1574_1_exp_InvokeMethod(1676_0_exp_Return(EOS(STATIC_1676)), i353) → 1711_0_exp_Return(EOS(STATIC_1711), i353)
1614_0_exp_Return(EOS(STATIC_1614), i331, matching1, i331, matching2) → 1622_0_exp_IntArithmetic(EOS(STATIC_1622)) | &&(=(matching1, 0), =(matching2, 0))
1622_0_exp_IntArithmetic(EOS(STATIC_1622)) → 1666_0_exp_IntArithmetic(EOS(STATIC_1666))
1657_0_exp_Return(EOS(STATIC_1657), i338) → 1666_0_exp_IntArithmetic(EOS(STATIC_1666))
1666_0_exp_IntArithmetic(EOS(STATIC_1666)) → 1676_0_exp_Return(EOS(STATIC_1676))
1711_0_exp_Return(EOS(STATIC_1711), i353) → 1657_0_exp_Return(EOS(STATIC_1657), i353)
1207_0_cos_Load(EOS(STATIC_1207), i8, i219) → 1218_0_cos_GT(EOS(STATIC_1218), i8, i219, i219)
1218_0_cos_GT(EOS(STATIC_1218), i8, matching1, matching2) → 1234_0_cos_GT(EOS(STATIC_1234), i8, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1218_0_cos_GT(EOS(STATIC_1218), i8, i225, i225) → 1235_0_cos_GT(EOS(STATIC_1235), i8, i225, i225)
1234_0_cos_GT(EOS(STATIC_1234), i8, matching1, matching2) → 1246_0_cos_ConstantStackPush(EOS(STATIC_1246), i8, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1235_0_cos_GT(EOS(STATIC_1235), i8, i225, i225) → 1248_0_cos_ConstantStackPush(EOS(STATIC_1248), i8, i225) | >(i225, 0)
1246_0_cos_ConstantStackPush(EOS(STATIC_1246), i8, matching1) → 1258_0_cos_Return(EOS(STATIC_1258), i8, 0) | =(matching1, 0)
1248_0_cos_ConstantStackPush(EOS(STATIC_1248), i8, i225) → 1260_0_cos_Load(EOS(STATIC_1260), i8, i225)
1260_0_cos_Load(EOS(STATIC_1260), i8, i225) → 1284_0_cos_InvokeMethod(EOS(STATIC_1284), i8, i225, i225)
1284_0_cos_InvokeMethod(EOS(STATIC_1284), i8, i225, i225) → 1298_1_cos_InvokeMethod(1298_0_power_Load(EOS(STATIC_1298), i225), i8, i225, i225)
1298_0_power_Load(EOS(STATIC_1298), i225) → 1313_0_power_Load(EOS(STATIC_1313), i225)
1298_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i167), i8, i256, i256) → 1366_0_power_Return(EOS(STATIC_1366), i8, i256, i256, i167)
1366_0_power_Return(EOS(STATIC_1366), i8, i256, i256, i167) → 1380_0_cos_Load(EOS(STATIC_1380), i8, i256, i167)
1380_0_cos_Load(EOS(STATIC_1380), i8, i256, i167) → 1394_0_cos_ConstantStackPush(EOS(STATIC_1394), i8, i256, i167, i8)
1394_0_cos_ConstantStackPush(EOS(STATIC_1394), i8, i256, i167, i8) → 1403_0_cos_Load(EOS(STATIC_1403), i8, i256, i167, i8)
1403_0_cos_Load(EOS(STATIC_1403), i8, i256, i167, i8) → 1414_0_cos_IntArithmetic(EOS(STATIC_1414), i8, i256, i167, i8, i256)
1414_0_cos_IntArithmetic(EOS(STATIC_1414), i8, i256, i167, i8, i256) → 1431_0_cos_InvokeMethod(EOS(STATIC_1431), i8, i256, i167, i8) | >=(i256, 1)
1431_0_cos_InvokeMethod(EOS(STATIC_1431), i8, i256, i167, i8) → 1438_1_cos_InvokeMethod(1438_0_power_Load(EOS(STATIC_1438), i8), i8, i256, i167, i8)
1438_0_power_Load(EOS(STATIC_1438), i8) → 1455_0_power_Load(EOS(STATIC_1455), i8)
1438_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i294), i295, i256, i167, i295) → 1488_0_power_Return(EOS(STATIC_1488), i295, i256, i167, i295, i294)
1488_0_power_Return(EOS(STATIC_1488), i295, i256, i167, i295, i294) → 1500_0_cos_IntArithmetic(EOS(STATIC_1500), i295, i256, i167, i294)
1500_0_cos_IntArithmetic(EOS(STATIC_1500), i295, i256, i167, i294) → 1509_0_cos_ConstantStackPush(EOS(STATIC_1509), i295, i256)
1509_0_cos_ConstantStackPush(EOS(STATIC_1509), i295, i256) → 1518_0_cos_Load(EOS(STATIC_1518), i295, i256)
1518_0_cos_Load(EOS(STATIC_1518), i295, i256) → 1530_0_cos_IntArithmetic(EOS(STATIC_1530), i295, i256, i256)
1530_0_cos_IntArithmetic(EOS(STATIC_1530), i295, i256, i256) → 1538_0_cos_InvokeMethod(EOS(STATIC_1538), i295, i256) | >=(i256, 1)
1538_0_cos_InvokeMethod(EOS(STATIC_1538), i295, i256) → 1555_1_cos_InvokeMethod(1555_0_fact_Load(EOS(STATIC_1555)), i295, i256)
1555_0_fact_Load(EOS(STATIC_1555)) → 1562_0_fact_Load(EOS(STATIC_1562))
1555_1_cos_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), i257), i295, i256) → 1588_0_fact_Return(EOS(STATIC_1588), i295, i256, i257)
1588_0_fact_Return(EOS(STATIC_1588), i295, i256, i257) → 1596_0_cos_IntArithmetic(EOS(STATIC_1596), i295, i256, i257)
1596_0_cos_IntArithmetic(EOS(STATIC_1596), i295, i256, i257) → 1609_0_cos_Load(EOS(STATIC_1609), i295, i256) | >=(i257, 1)
1609_0_cos_Load(EOS(STATIC_1609), i295, i256) → 1615_0_cos_Load(EOS(STATIC_1615), i256, i295)
1615_0_cos_Load(EOS(STATIC_1615), i256, i295) → 1624_0_cos_ConstantStackPush(EOS(STATIC_1624), i295, i256)
1624_0_cos_ConstantStackPush(EOS(STATIC_1624), i295, i256) → 1632_0_cos_IntArithmetic(EOS(STATIC_1632), i295, i256)
1632_0_cos_IntArithmetic(EOS(STATIC_1632), i295, i256) → 1640_0_cos_InvokeMethod(EOS(STATIC_1640), i295) | >(i256, 0)
1640_0_cos_InvokeMethod(EOS(STATIC_1640), i295) → 1651_1_cos_InvokeMethod(1651_0_cos_Load(EOS(STATIC_1651), i295), i295)
1651_0_cos_Load(EOS(STATIC_1651), i295) → 1659_0_cos_Load(EOS(STATIC_1659), i295)
1651_1_cos_InvokeMethod(1258_0_cos_Return(EOS(STATIC_1258), i351, matching1), i351) → 1690_0_cos_Return(EOS(STATIC_1690), i351, 0, i351, 0) | =(matching1, 0)
1651_1_cos_InvokeMethod(1771_0_cos_Return(EOS(STATIC_1771)), i396) → 1820_0_cos_Return(EOS(STATIC_1820), i396)
1690_0_cos_Return(EOS(STATIC_1690), i351, matching1, i351, matching2) → 1700_0_cos_IntArithmetic(EOS(STATIC_1700)) | &&(=(matching1, 0), =(matching2, 0))
1700_0_cos_IntArithmetic(EOS(STATIC_1700)) → 1758_0_cos_IntArithmetic(EOS(STATIC_1758))
1746_0_cos_Return(EOS(STATIC_1746), i372) → 1758_0_cos_IntArithmetic(EOS(STATIC_1758))
1758_0_cos_IntArithmetic(EOS(STATIC_1758)) → 1771_0_cos_Return(EOS(STATIC_1771))
1820_0_cos_Return(EOS(STATIC_1820), i396) → 1746_0_cos_Return(EOS(STATIC_1746), i396)
1154_0_sin_Load(EOS(STATIC_1154), i210, i211) → 1162_0_sin_GT(EOS(STATIC_1162), i210, i211, i211)
1162_0_sin_GT(EOS(STATIC_1162), i210, matching1, matching2) → 1175_0_sin_GT(EOS(STATIC_1175), i210, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1162_0_sin_GT(EOS(STATIC_1162), i210, i217, i217) → 1176_0_sin_GT(EOS(STATIC_1176), i210, i217, i217)
1175_0_sin_GT(EOS(STATIC_1175), i210, matching1, matching2) → 1184_0_sin_Load(EOS(STATIC_1184), i210, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1176_0_sin_GT(EOS(STATIC_1176), i210, i217, i217) → 1186_0_sin_ConstantStackPush(EOS(STATIC_1186), i210, i217) | >(i217, 0)
1184_0_sin_Load(EOS(STATIC_1184), i210, matching1) → 1195_0_sin_Return(EOS(STATIC_1195), i210, 0, i210) | =(matching1, 0)
1186_0_sin_ConstantStackPush(EOS(STATIC_1186), i210, i217) → 1197_0_sin_Load(EOS(STATIC_1197), i210, i217)
1197_0_sin_Load(EOS(STATIC_1197), i210, i217) → 1210_0_sin_InvokeMethod(EOS(STATIC_1210), i210, i217, i217)
1210_0_sin_InvokeMethod(EOS(STATIC_1210), i210, i217, i217) → 1222_1_sin_InvokeMethod(1222_0_power_Load(EOS(STATIC_1222), i217), i210, i217, i217)
1222_0_power_Load(EOS(STATIC_1222), i217) → 1238_0_power_Load(EOS(STATIC_1238), i217)
1222_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i167), i210, i229, i229) → 1288_0_power_Return(EOS(STATIC_1288), i210, i229, i229, i167)
1288_0_power_Return(EOS(STATIC_1288), i210, i229, i229, i167) → 1302_0_sin_Load(EOS(STATIC_1302), i210, i229, i167)
1302_0_sin_Load(EOS(STATIC_1302), i210, i229, i167) → 1317_0_sin_ConstantStackPush(EOS(STATIC_1317), i210, i229, i167, i210)
1317_0_sin_ConstantStackPush(EOS(STATIC_1317), i210, i229, i167, i210) → 1332_0_sin_Load(EOS(STATIC_1332), i210, i229, i167, i210)
1332_0_sin_Load(EOS(STATIC_1332), i210, i229, i167, i210) → 1348_0_sin_IntArithmetic(EOS(STATIC_1348), i210, i229, i167, i210, i229)
1348_0_sin_IntArithmetic(EOS(STATIC_1348), i210, i229, i167, i210, i229) → 1368_0_sin_ConstantStackPush(EOS(STATIC_1368), i210, i229, i167, i210) | >=(i229, 1)
1368_0_sin_ConstantStackPush(EOS(STATIC_1368), i210, i229, i167, i210) → 1381_0_sin_IntArithmetic(EOS(STATIC_1381), i210, i229, i167, i210)
1381_0_sin_IntArithmetic(EOS(STATIC_1381), i210, i229, i167, i210) → 1395_0_sin_InvokeMethod(EOS(STATIC_1395), i210, i229, i167, i210)
1395_0_sin_InvokeMethod(EOS(STATIC_1395), i210, i229, i167, i210) → 1405_1_sin_InvokeMethod(1405_0_power_Load(EOS(STATIC_1405), i210), i210, i229, i167, i210)
1405_0_power_Load(EOS(STATIC_1405), i210) → 1416_0_power_Load(EOS(STATIC_1416), i210)
1405_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i285), i286, i229, i167, i286) → 1458_0_power_Return(EOS(STATIC_1458), i286, i229, i167, i286, i285)
1458_0_power_Return(EOS(STATIC_1458), i286, i229, i167, i286, i285) → 1463_0_sin_IntArithmetic(EOS(STATIC_1463), i286, i229, i167, i285)
1463_0_sin_IntArithmetic(EOS(STATIC_1463), i286, i229, i167, i285) → 1476_0_sin_ConstantStackPush(EOS(STATIC_1476), i286, i229, *(i167, i285))
1476_0_sin_ConstantStackPush(EOS(STATIC_1476), i286, i229, i297) → 1489_0_sin_Load(EOS(STATIC_1489), i286, i229, i297)
1489_0_sin_Load(EOS(STATIC_1489), i286, i229, i297) → 1501_0_sin_IntArithmetic(EOS(STATIC_1501), i286, i229, i297, i229)
1501_0_sin_IntArithmetic(EOS(STATIC_1501), i286, i229, i297, i229) → 1511_0_sin_ConstantStackPush(EOS(STATIC_1511), i286, i229, i297) | >=(i229, 1)
1511_0_sin_ConstantStackPush(EOS(STATIC_1511), i286, i229, i297) → 1520_0_sin_IntArithmetic(EOS(STATIC_1520), i286, i229, i297)
1520_0_sin_IntArithmetic(EOS(STATIC_1520), i286, i229, i297) → 1532_0_sin_InvokeMethod(EOS(STATIC_1532), i286, i229, i297)
1532_0_sin_InvokeMethod(EOS(STATIC_1532), i286, i229, i297) → 1540_1_sin_InvokeMethod(1540_0_fact_Load(EOS(STATIC_1540)), i286, i229, i297)
1540_0_fact_Load(EOS(STATIC_1540)) → 1557_0_fact_Load(EOS(STATIC_1557))
1540_1_sin_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), i257), i286, i229, i297) → 1581_0_fact_Return(EOS(STATIC_1581), i286, i229, i297, i257)
1581_0_fact_Return(EOS(STATIC_1581), i286, i229, i297, i257) → 1590_0_sin_IntArithmetic(EOS(STATIC_1590), i286, i229, i297, i257)
1590_0_sin_IntArithmetic(EOS(STATIC_1590), i286, i229, i297, i257) → 1598_0_sin_Load(EOS(STATIC_1598), i286, i229, /(i297, i257)) | >=(i257, 1)
1598_0_sin_Load(EOS(STATIC_1598), i286, i229, i327) → 1611_0_sin_Load(EOS(STATIC_1611), i229, i327, i286)
1611_0_sin_Load(EOS(STATIC_1611), i229, i327, i286) → 1617_0_sin_ConstantStackPush(EOS(STATIC_1617), i327, i286, i229)
1617_0_sin_ConstantStackPush(EOS(STATIC_1617), i327, i286, i229) → 1625_0_sin_IntArithmetic(EOS(STATIC_1625), i327, i286, i229)
1625_0_sin_IntArithmetic(EOS(STATIC_1625), i327, i286, i229) → 1634_0_sin_InvokeMethod(EOS(STATIC_1634), i327, i286) | >(i229, 0)
1634_0_sin_InvokeMethod(EOS(STATIC_1634), i327, i286) → 1642_1_sin_InvokeMethod(1642_0_sin_Load(EOS(STATIC_1642), i286), i327, i286)
1642_0_sin_Load(EOS(STATIC_1642), i286) → 1652_0_sin_Load(EOS(STATIC_1652), i286)
1642_1_sin_InvokeMethod(1195_0_sin_Return(EOS(STATIC_1195), i346, matching1, i346), i327, i346) → 1682_0_sin_Return(EOS(STATIC_1682), i327, i346, 0, i346, 0, i346) | =(matching1, 0)
1642_1_sin_InvokeMethod(1760_0_sin_Return(EOS(STATIC_1760), i379), i327, i389) → 1806_0_sin_Return(EOS(STATIC_1806), i327, i389, i379)
1682_0_sin_Return(EOS(STATIC_1682), i327, i346, matching1, i346, matching2, i346) → 1691_0_sin_IntArithmetic(EOS(STATIC_1691), i327, i346) | &&(=(matching1, 0), =(matching2, 0))
1691_0_sin_IntArithmetic(EOS(STATIC_1691), i327, i346) → 1748_0_sin_IntArithmetic(EOS(STATIC_1748), i327, i346)
1737_0_sin_Return(EOS(STATIC_1737), i327, i366, i355) → 1748_0_sin_IntArithmetic(EOS(STATIC_1748), i327, i355)
1748_0_sin_IntArithmetic(EOS(STATIC_1748), i327, i355) → 1760_0_sin_Return(EOS(STATIC_1760), +(i327, i355))
1806_0_sin_Return(EOS(STATIC_1806), i327, i389, i379) → 1737_0_sin_Return(EOS(STATIC_1737), i327, i389, i379)
654_0_power_Load(EOS(STATIC_654), i78, i79) → 667_0_power_GT(EOS(STATIC_667), i78, i79, i79)
667_0_power_GT(EOS(STATIC_667), i78, matching1, matching2) → 676_0_power_GT(EOS(STATIC_676), i78, 0, 0) | &&(=(matching1, 0), =(matching2, 0))
667_0_power_GT(EOS(STATIC_667), i78, i87, i87) → 677_0_power_GT(EOS(STATIC_677), i78, i87, i87)
676_0_power_GT(EOS(STATIC_676), i78, matching1, matching2) → 688_0_power_ConstantStackPush(EOS(STATIC_688), i78, 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
677_0_power_GT(EOS(STATIC_677), i78, i87, i87) → 689_0_power_Load(EOS(STATIC_689), i78, i87) | >(i87, 0)
688_0_power_ConstantStackPush(EOS(STATIC_688), i78, matching1) → 697_0_power_Return(EOS(STATIC_697), i78, 0, 1) | =(matching1, 0)
689_0_power_Load(EOS(STATIC_689), i78, i87) → 699_0_power_Load(EOS(STATIC_699), i78, i87, i78)
699_0_power_Load(EOS(STATIC_699), i78, i87, i78) → 708_0_power_Load(EOS(STATIC_708), i87, i78, i78)
708_0_power_Load(EOS(STATIC_708), i87, i78, i78) → 721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87)
721_0_power_ConstantStackPush(EOS(STATIC_721), i78, i78, i87) → 731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87)
731_0_power_IntArithmetic(EOS(STATIC_731), i78, i78, i87) → 743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) | >(i87, 0)
743_0_power_InvokeMethod(EOS(STATIC_743), i78, i78) → 751_1_power_InvokeMethod(751_0_power_Load(EOS(STATIC_751), i78), i78, i78)
751_0_power_Load(EOS(STATIC_751), i78) → 763_0_power_Load(EOS(STATIC_763), i78)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), i112, matching1, matching2), i112, i112) → 804_0_power_Return(EOS(STATIC_804), i112, i112, 0, i112, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996), i167), i173, i173) → 1047_0_power_Return(EOS(STATIC_1047), i173, i173, i167)
804_0_power_Return(EOS(STATIC_804), i112, i112, matching1, i112, matching2, matching3) → 810_0_power_IntArithmetic(EOS(STATIC_810), i112, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
810_0_power_IntArithmetic(EOS(STATIC_810), i112, matching1) → 985_0_power_IntArithmetic(EOS(STATIC_985), i112, 1) | =(matching1, 1)
972_0_power_Return(EOS(STATIC_972), i160, i160, i161) → 985_0_power_IntArithmetic(EOS(STATIC_985), i160, i161)
985_0_power_IntArithmetic(EOS(STATIC_985), i160, i161) → 996_0_power_Return(EOS(STATIC_996), *(i160, i161))
1047_0_power_Return(EOS(STATIC_1047), i173, i173, i167) → 972_0_power_Return(EOS(STATIC_972), i173, i173, i167)
1054_0_fact_Load(EOS(STATIC_1054), i187) → 1061_0_fact_GT(EOS(STATIC_1061), i187, i187)
1061_0_fact_GT(EOS(STATIC_1061), matching1, matching2) → 1067_0_fact_GT(EOS(STATIC_1067), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
1061_0_fact_GT(EOS(STATIC_1061), i191, i191) → 1068_0_fact_GT(EOS(STATIC_1068), i191, i191)
1067_0_fact_GT(EOS(STATIC_1067), matching1, matching2) → 1078_0_fact_ConstantStackPush(EOS(STATIC_1078), 0) | &&(&&(<=(0, 0), =(matching1, 0)), =(matching2, 0))
1068_0_fact_GT(EOS(STATIC_1068), i191, i191) → 1080_0_fact_Load(EOS(STATIC_1080), i191) | >(i191, 0)
1078_0_fact_ConstantStackPush(EOS(STATIC_1078), matching1) → 1088_0_fact_Return(EOS(STATIC_1088), 0, 1) | =(matching1, 0)
1080_0_fact_Load(EOS(STATIC_1080), i191) → 1090_0_fact_Load(EOS(STATIC_1090), i191, i191)
1090_0_fact_Load(EOS(STATIC_1090), i191, i191) → 1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191)
1104_0_fact_ConstantStackPush(EOS(STATIC_1104), i191, i191) → 1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191)
1116_0_fact_IntArithmetic(EOS(STATIC_1116), i191, i191) → 1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) | >(i191, 0)
1127_0_fact_InvokeMethod(EOS(STATIC_1127), i191) → 1137_1_fact_InvokeMethod(1137_0_fact_Load(EOS(STATIC_1137)), i191)
1137_0_fact_Load(EOS(STATIC_1137)) → 1147_0_fact_Load(EOS(STATIC_1147))
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), matching1, matching2), i191) → 1177_0_fact_Return(EOS(STATIC_1177), i191, 0, 0, 1) | &&(=(matching1, 0), =(matching2, 1))
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), i257), i191) → 1398_0_fact_Return(EOS(STATIC_1398), i191, i257)
1177_0_fact_Return(EOS(STATIC_1177), i191, matching1, matching2, matching3) → 1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191, 1) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 1))
1190_0_fact_IntArithmetic(EOS(STATIC_1190), i191, matching1) → 1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191, 1) | =(matching1, 1)
1254_0_fact_IntArithmetic(EOS(STATIC_1254), i191, i224) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191, i224)
1323_0_fact_Return(EOS(STATIC_1323), i191, i248) → 1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191, i248)
1334_0_fact_IntArithmetic(EOS(STATIC_1334), i191, i248) → 1350_0_fact_Return(EOS(STATIC_1350), *(i191, i248)) | &&(>=(i191, 1), >=(i248, 1))
1398_0_fact_Return(EOS(STATIC_1398), i191, i257) → 1323_0_fact_Return(EOS(STATIC_1323), i191, i257)

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


P rules:
1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), x1, x1) → 1925_0_main_GE(EOS(STATIC_1925), java.lang.Object(ARRAY(x0)), x1, 0, 0, 100) | &&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), <(0, %(x1, 5))), <(0, %(x1, 3)))
1925_0_main_GE(EOS(STATIC_1925), java.lang.Object(ARRAY(x0)), x1, x2, x2, 100) → 1925_0_main_GE(EOS(STATIC_1925), java.lang.Object(ARRAY(x0)), x1, +(x2, 1), +(x2, 1), 100) | &&(>(+(x2, 1), 0), <(x2, 100))
1925_0_main_GE(EOS(STATIC_1925), java.lang.Object(ARRAY(x0)), x1, 100, 100, 100) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), +(x1, 1), +(x1, 1)) | >(+(x1, 1), 0)
1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), x1, x1) → 1795_1_main_InvokeMethod(1795_0_exp_Load(EOS(STATIC_1795), x0, x1), java.lang.Object(ARRAY(x0)), x1, x0, x1) | &&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 5))), <(0, %(x1, 3)))
1795_1_main_InvokeMethod(1338_0_exp_Return(EOS(STATIC_1338), x0, 0), java.lang.Object(ARRAY(x2)), 0, x0, 0) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), 1, 1)
1795_1_main_InvokeMethod(1676_0_exp_Return(EOS(STATIC_1676)), java.lang.Object(ARRAY(x0)), x1, x2, x1) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x2)), +(x1, 1), +(x1, 1)) | >(+(x1, 1), 0)
1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), x1, x1) → 1731_1_main_InvokeMethod(1731_0_cos_Load(EOS(STATIC_1731), x0, x1), java.lang.Object(ARRAY(x0)), x1, x0, x1) | &&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 3)))
1731_1_main_InvokeMethod(1258_0_cos_Return(EOS(STATIC_1258), x0, 0), java.lang.Object(ARRAY(x2)), 0, x0, 0) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), 1, 1)
1731_1_main_InvokeMethod(1771_0_cos_Return(EOS(STATIC_1771)), java.lang.Object(ARRAY(x0)), x1, x2, x1) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x2)), +(x1, 1), +(x1, 1)) | >(+(x1, 1), 0)
1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), x1, x1) → 1675_1_main_InvokeMethod(1675_0_sin_Load(EOS(STATIC_1675), x0, x1), java.lang.Object(ARRAY(x0)), x1, x0, x1) | &&(&&(<(x1, x0), >(+(x0, 1), 0)), =(0, %(x1, 2)))
1675_1_main_InvokeMethod(1195_0_sin_Return(EOS(STATIC_1195), x0, 0, x0), java.lang.Object(ARRAY(x2)), 0, x0, 0) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x0)), 1, 1)
1675_1_main_InvokeMethod(1760_0_sin_Return(EOS(STATIC_1760), x0), java.lang.Object(ARRAY(x1)), x2, x3, x2) → 1558_0_main_Load(EOS(STATIC_1558), java.lang.Object(ARRAY(x3)), +(x2, 1), +(x2, 1)) | >(+(x2, 1), 0)
R rules:
1795_0_exp_Load(EOS(STATIC_1795), x0, x1) → 1294_0_exp_GT(EOS(STATIC_1294), x0, x1, x1)
1731_0_cos_Load(EOS(STATIC_1731), x0, x1) → 1218_0_cos_GT(EOS(STATIC_1218), x0, x1, x1)
1675_0_sin_Load(EOS(STATIC_1675), x0, x1) → 1162_0_sin_GT(EOS(STATIC_1162), x0, x1, x1)
1294_0_exp_GT(EOS(STATIC_1294), x0, 0, 0) → 1338_0_exp_Return(EOS(STATIC_1338), x0, 0)
1294_0_exp_GT(EOS(STATIC_1294), x0, x1, x1) → 1376_1_exp_InvokeMethod(667_0_power_GT(EOS(STATIC_667), x0, x1, x1), x0, x1, x0, x1) | >(x1, 0)
1376_1_exp_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x2, x1, x2) → 1461_1_exp_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), x2, x2), x1, x2, x0, x2)
1461_1_exp_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), x0), x1, x2, x3, x2) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(EOS(STATIC_1294), x1, x4, x4), x1) | &&(>(x2, 0), >(+(x0, 1), 1))
1574_1_exp_InvokeMethod(1338_0_exp_Return(EOS(STATIC_1338), x0, 0), x0) → 1676_0_exp_Return(EOS(STATIC_1676))
1574_1_exp_InvokeMethod(1676_0_exp_Return(EOS(STATIC_1676)), x0) → 1676_0_exp_Return(EOS(STATIC_1676))
1218_0_cos_GT(EOS(STATIC_1218), x0, 0, 0) → 1258_0_cos_Return(EOS(STATIC_1258), x0, 0)
1218_0_cos_GT(EOS(STATIC_1218), x0, x1, x1) → 1298_1_cos_InvokeMethod(667_0_power_GT(EOS(STATIC_667), -1, x1, x1), x0, x1, x1) | >(x1, 0)
1298_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x2, x2) → 1438_1_cos_InvokeMethod(667_0_power_GT(EOS(STATIC_667), x1, x3, x3), x1, x2, x0, x1) | >(+(x2, 1), 1)
1438_1_cos_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x2, x3, x1) → 1555_1_cos_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), x4, x4), x1, x2) | >(+(x2, 1), 1)
1555_1_cos_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), x0), x1, x2) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(EOS(STATIC_1218), x1, x3, x3), x1) | &&(>(x2, 0), >(+(x0, 1), 1))
1651_1_cos_InvokeMethod(1258_0_cos_Return(EOS(STATIC_1258), x0, 0), x0) → 1771_0_cos_Return(EOS(STATIC_1771))
1651_1_cos_InvokeMethod(1771_0_cos_Return(EOS(STATIC_1771)), x0) → 1771_0_cos_Return(EOS(STATIC_1771))
1162_0_sin_GT(EOS(STATIC_1162), x0, 0, 0) → 1195_0_sin_Return(EOS(STATIC_1195), x0, 0, x0)
1162_0_sin_GT(EOS(STATIC_1162), x0, x1, x1) → 1222_1_sin_InvokeMethod(667_0_power_GT(EOS(STATIC_667), -1, x1, x1), x0, x1, x1) | >(x1, 0)
1222_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x2, x2) → 1405_1_sin_InvokeMethod(667_0_power_GT(EOS(STATIC_667), x1, x3, x3), x1, x2, x0, x1) | >(+(x2, 1), 1)
1405_1_sin_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x2, x3, x1) → 1540_1_sin_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), x4, x4), x1, x2, *(x3, x0)) | >(+(x2, 1), 1)
1540_1_sin_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), x0), x1, x2, x3) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(EOS(STATIC_1162), x1, x4, x4), /(x3, x0), x1) | &&(>(x2, 0), >(+(x0, 1), 1))
1642_1_sin_InvokeMethod(1195_0_sin_Return(EOS(STATIC_1195), x0, 0, x0), x2, x0) → 1760_0_sin_Return(EOS(STATIC_1760), +(x2, x0))
1642_1_sin_InvokeMethod(1760_0_sin_Return(EOS(STATIC_1760), x0), x1, x2) → 1760_0_sin_Return(EOS(STATIC_1760), +(x1, x0))
667_0_power_GT(EOS(STATIC_667), x0, 0, 0) → 697_0_power_Return(EOS(STATIC_697), x0, 0, 1)
667_0_power_GT(EOS(STATIC_667), x0, x1, x1) → 751_1_power_InvokeMethod(667_0_power_GT(EOS(STATIC_667), x0, x2, x2), x0, x0) | >(x1, 0)
751_1_power_InvokeMethod(697_0_power_Return(EOS(STATIC_697), arith[1], 0, 1), arith[1], arith[1]) → 996_0_power_Return(EOS(STATIC_996), arith[1])
751_1_power_InvokeMethod(996_0_power_Return(EOS(STATIC_996), x0), x1, x1) → 996_0_power_Return(EOS(STATIC_996), *(x1, x0))
1061_0_fact_GT(EOS(STATIC_1061), 0, 0) → 1088_0_fact_Return(EOS(STATIC_1088), 0, 1)
1061_0_fact_GT(EOS(STATIC_1061), x0, x0) → 1137_1_fact_InvokeMethod(1061_0_fact_GT(EOS(STATIC_1061), x1, x1), x0) | >(x0, 0)
1137_1_fact_InvokeMethod(1088_0_fact_Return(EOS(STATIC_1088), 0, 1), arith[1]) → 1350_0_fact_Return(EOS(STATIC_1350), arith[1]) | >(+(arith[1], 1), 1)
1137_1_fact_InvokeMethod(1350_0_fact_Return(EOS(STATIC_1350), x0), x1) → 1350_0_fact_Return(EOS(STATIC_1350), *(x1, x0)) | &&(>(+(x1, 1), 1), >(+(x0, 1), 1))

Filtered ground terms:



1558_0_main_Load(x1, x2, x3, x4) → 1558_0_main_Load(x2, x3, x4)
1760_0_sin_Return(x1, x2) → 1760_0_sin_Return(x2)
1195_0_sin_Return(x1, x2, x3, x4) → 1195_0_sin_Return(x2, x4)
1675_0_sin_Load(x1, x2, x3) → 1675_0_sin_Load(x2, x3)
Cond_1558_0_main_Load3(x1, x2, x3, x4, x5) → Cond_1558_0_main_Load3(x1, x3, x4, x5)
Cond_1731_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1731_1_main_InvokeMethod(x1, x3, x4, x5, x6)
1771_0_cos_Return(x1) → 1771_0_cos_Return
1258_0_cos_Return(x1, x2, x3) → 1258_0_cos_Return(x2)
1731_0_cos_Load(x1, x2, x3) → 1731_0_cos_Load(x2, x3)
Cond_1558_0_main_Load2(x1, x2, x3, x4, x5) → Cond_1558_0_main_Load2(x1, x3, x4, x5)
Cond_1795_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1795_1_main_InvokeMethod(x1, x3, x4, x5, x6)
1676_0_exp_Return(x1) → 1676_0_exp_Return
1338_0_exp_Return(x1, x2, x3) → 1338_0_exp_Return(x2)
1795_0_exp_Load(x1, x2, x3) → 1795_0_exp_Load(x2, x3)
Cond_1558_0_main_Load1(x1, x2, x3, x4, x5) → Cond_1558_0_main_Load1(x1, x3, x4, x5)
Cond_1925_0_main_GE1(x1, x2, x3, x4, x5, x6, x7) → Cond_1925_0_main_GE1(x1, x3, x4)
1925_0_main_GE(x1, x2, x3, x4, x5, x6) → 1925_0_main_GE(x2, x3, x4, x5)
Cond_1925_0_main_GE(x1, x2, x3, x4, x5, x6, x7) → Cond_1925_0_main_GE(x1, x3, x4, x5, x6)
Cond_1558_0_main_Load(x1, x2, x3, x4, x5) → Cond_1558_0_main_Load(x1, x3, x4, x5)
1350_0_fact_Return(x1, x2) → 1350_0_fact_Return(x2)
Cond_1137_1_fact_InvokeMethod(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod(x1, x3)
1088_0_fact_Return(x1, x2, x3) → 1088_0_fact_Return
1061_0_fact_GT(x1, x2, x3) → 1061_0_fact_GT(x2, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4, x5) → Cond_1061_0_fact_GT(x1, x3, x4, x5)
996_0_power_Return(x1, x2) → 996_0_power_Return(x2)
697_0_power_Return(x1, x2, x3, x4) → 697_0_power_Return(x2)
667_0_power_GT(x1, x2, x3, x4) → 667_0_power_GT(x2, x3, x4)
Cond_667_0_power_GT(x1, x2, x3, x4, x5, x6) → Cond_667_0_power_GT(x1, x3, x4, x5, x6)
1162_0_sin_GT(x1, x2, x3, x4) → 1162_0_sin_GT(x2, x3, x4)
Cond_1162_0_sin_GT(x1, x2, x3, x4, x5) → Cond_1162_0_sin_GT(x1, x3, x4, x5)
1218_0_cos_GT(x1, x2, x3, x4) → 1218_0_cos_GT(x2, x3, x4)
Cond_1218_0_cos_GT(x1, x2, x3, x4, x5) → Cond_1218_0_cos_GT(x1, x3, x4, x5)
1294_0_exp_GT(x1, x2, x3, x4) → 1294_0_exp_GT(x2, x3, x4)
Cond_1294_0_exp_GT(x1, x2, x3, x4, x5) → Cond_1294_0_exp_GT(x1, x3, x4, x5)

Filtered duplicate args:



1558_0_main_Load(x1, x2, x3) → 1558_0_main_Load(x1, x3)
Cond_1558_0_main_Load(x1, x2, x3, x4) → Cond_1558_0_main_Load(x1, x2, x4)
1925_0_main_GE(x1, x2, x3, x4) → 1925_0_main_GE(x1, x2, x4)
Cond_1925_0_main_GE(x1, x2, x3, x4, x5) → Cond_1925_0_main_GE(x1, x2, x3, x5)
Cond_1558_0_main_Load1(x1, x2, x3, x4) → Cond_1558_0_main_Load1(x1, x2, x4)
1795_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1795_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1795_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1795_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1558_0_main_Load2(x1, x2, x3, x4) → Cond_1558_0_main_Load2(x1, x2, x4)
1731_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1731_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1731_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1731_1_main_InvokeMethod(x1, x2, x4, x5)
Cond_1558_0_main_Load3(x1, x2, x3, x4) → Cond_1558_0_main_Load3(x1, x2, x4)
1675_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1675_1_main_InvokeMethod(x1, x2, x4, x5)
1195_0_sin_Return(x1, x2) → 1195_0_sin_Return(x2)
Cond_1675_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1675_1_main_InvokeMethod(x1, x2, x3, x5, x6)
1294_0_exp_GT(x1, x2, x3) → 1294_0_exp_GT(x1, x3)
1218_0_cos_GT(x1, x2, x3) → 1218_0_cos_GT(x1, x3)
1162_0_sin_GT(x1, x2, x3) → 1162_0_sin_GT(x1, x3)
Cond_1294_0_exp_GT(x1, x2, x3, x4) → Cond_1294_0_exp_GT(x1, x2, x4)
1376_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → 1376_1_exp_InvokeMethod(x1, x4, x5)
667_0_power_GT(x1, x2, x3) → 667_0_power_GT(x1, x3)
1461_1_exp_InvokeMethod(x1, x2, x3, x4, x5) → 1461_1_exp_InvokeMethod(x1, x2, x4, x5)
1061_0_fact_GT(x1, x2) → 1061_0_fact_GT(x2)
Cond_1461_1_exp_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1461_1_exp_InvokeMethod(x1, x2, x3, x5, x6, x7)
Cond_1218_0_cos_GT(x1, x2, x3, x4) → Cond_1218_0_cos_GT(x1, x2, x4)
1298_1_cos_InvokeMethod(x1, x2, x3, x4) → 1298_1_cos_InvokeMethod(x1, x2, x4)
Cond_1298_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1298_1_cos_InvokeMethod(x1, x2, x3, x5, x6)
1438_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → 1438_1_cos_InvokeMethod(x1, x3, x4, x5)
Cond_1438_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1438_1_cos_InvokeMethod(x1, x2, x4, x5, x6, x7)
Cond_1162_0_sin_GT(x1, x2, x3, x4) → Cond_1162_0_sin_GT(x1, x2, x4)
1222_1_sin_InvokeMethod(x1, x2, x3, x4) → 1222_1_sin_InvokeMethod(x1, x2, x4)
Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x5, x6)
1405_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → 1405_1_sin_InvokeMethod(x1, x3, x4, x5)
Cond_1405_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1405_1_sin_InvokeMethod(x1, x2, x4, x5, x6, x7)
Cond_667_0_power_GT(x1, x2, x3, x4, x5) → Cond_667_0_power_GT(x1, x2, x4, x5)
751_1_power_InvokeMethod(x1, x2, x3) → 751_1_power_InvokeMethod(x1, x3)
Cond_1061_0_fact_GT(x1, x2, x3, x4) → Cond_1061_0_fact_GT(x1, x3, x4)

Filtered unneeded arguments:



1795_1_main_InvokeMethod(x1, x2, x3, x4) → 1795_1_main_InvokeMethod(x1, x3, x4)
Cond_1795_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_1795_1_main_InvokeMethod(x1, x3, x4)
1731_1_main_InvokeMethod(x1, x2, x3, x4) → 1731_1_main_InvokeMethod(x1, x3, x4)
Cond_1731_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_1731_1_main_InvokeMethod(x1, x3, x4)
1675_1_main_InvokeMethod(x1, x2, x3, x4) → 1675_1_main_InvokeMethod(x1, x3, x4)
Cond_1675_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1675_1_main_InvokeMethod(x1, x4, x5)
1461_1_exp_InvokeMethod(x1, x2, x3, x4) → 1461_1_exp_InvokeMethod(x1, x2, x4)
Cond_1461_1_exp_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1461_1_exp_InvokeMethod(x1, x3, x6)
Cond_1298_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1298_1_cos_InvokeMethod(x1, x3, x4, x5)
1438_1_cos_InvokeMethod(x1, x2, x3, x4) → 1438_1_cos_InvokeMethod(x1, x2, x4)
Cond_1438_1_cos_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1438_1_cos_InvokeMethod(x1, x3, x5, x6)
Cond_1555_1_cos_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1555_1_cos_InvokeMethod(x1, x3, x5)
Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1222_1_sin_InvokeMethod(x1, x3, x4, x5)
1405_1_sin_InvokeMethod(x1, x2, x3, x4) → 1405_1_sin_InvokeMethod(x1, x2, x4)
Cond_1405_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1405_1_sin_InvokeMethod(x1, x3, x5, x6)
1540_1_sin_InvokeMethod(x1, x2, x3, x4) → 1540_1_sin_InvokeMethod(x1, x2, x3)
Cond_1540_1_sin_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_1540_1_sin_InvokeMethod(x1, x3, x6)
1642_1_sin_InvokeMethod(x1, x2, x3) → 1642_1_sin_InvokeMethod(x1, x3)
667_0_power_GT(x1, x2) → 667_0_power_GT(x2)
Cond_667_0_power_GT(x1, x2, x3, x4) → Cond_667_0_power_GT(x1, x4)
751_1_power_InvokeMethod(x1, x2) → 751_1_power_InvokeMethod(x1)

Filtered free variables in P:



Cond_1461_1_exp_InvokeMethod(x1, x2, x3) → Cond_1461_1_exp_InvokeMethod(x1, x2)
1294_0_exp_GT(x1, x2) → 1294_0_exp_GT(x1)
Cond_1298_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1298_1_cos_InvokeMethod(x1, x2)
667_0_power_GT(x1) → 667_0_power_GT
Cond_1438_1_cos_InvokeMethod(x1, x2, x3, x4) → Cond_1438_1_cos_InvokeMethod(x1, x3)
1061_0_fact_GT(x1) → 1061_0_fact_GT
Cond_1555_1_cos_InvokeMethod(x1, x2, x3) → Cond_1555_1_cos_InvokeMethod(x1, x2)
1218_0_cos_GT(x1, x2) → 1218_0_cos_GT(x1)
Cond_1222_1_sin_InvokeMethod(x1, x2, x3, x4) → Cond_1222_1_sin_InvokeMethod(x1, x2)
Cond_1405_1_sin_InvokeMethod(x1, x2, x3, x4) → Cond_1405_1_sin_InvokeMethod(x1, x3)
Cond_1540_1_sin_InvokeMethod(x1, x2, x3) → Cond_1540_1_sin_InvokeMethod(x1, x2)
1162_0_sin_GT(x1, x2) → 1162_0_sin_GT(x1)
697_0_power_Return(x1) → 697_0_power_Return
Cond_667_0_power_GT(x1, x2) → Cond_667_0_power_GT(x1)
996_0_power_Return(x1) → 996_0_power_Return
Cond_1061_0_fact_GT(x1, x2, x3) → Cond_1061_0_fact_GT(x1)
1137_1_fact_InvokeMethod(x1, x2) → 1137_1_fact_InvokeMethod(x1)
Cond_1137_1_fact_InvokeMethod(x1, x2) → Cond_1137_1_fact_InvokeMethod(x1)
1350_0_fact_Return(x1) → 1350_0_fact_Return
Cond_1137_1_fact_InvokeMethod1(x1, x2, x3) → Cond_1137_1_fact_InvokeMethod1(x1, x2)
Cond_1294_0_exp_GT(x1, x2, x3) → Cond_1294_0_exp_GT(x1, x2)
1376_1_exp_InvokeMethod(x1, x2, x3) → 1376_1_exp_InvokeMethod(x1, x2)
1461_1_exp_InvokeMethod(x1, x2, x3) → 1461_1_exp_InvokeMethod(x1, x2)
Cond_1218_0_cos_GT(x1, x2, x3) → Cond_1218_0_cos_GT(x1, x2)
1298_1_cos_InvokeMethod(x1, x2, x3) → 1298_1_cos_InvokeMethod(x1, x2)
1438_1_cos_InvokeMethod(x1, x2, x3) → 1438_1_cos_InvokeMethod(x1, x3)
1555_1_cos_InvokeMethod(x1, x2, x3) → 1555_1_cos_InvokeMethod(x1, x2)
Cond_1162_0_sin_GT(x1, x2, x3) → Cond_1162_0_sin_GT(x1, x2)
1222_1_sin_InvokeMethod(x1, x2, x3) → 1222_1_sin_InvokeMethod(x1, x2)
1405_1_sin_InvokeMethod(x1, x2, x3) → 1405_1_sin_InvokeMethod(x1, x3)
1540_1_sin_InvokeMethod(x1, x2, x3) → 1540_1_sin_InvokeMethod(x1, x2)

Current set of rules:


P rules:
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1558_0_main_Load(&&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), <(0, %(x1, 5))), <(0, %(x1, 3))), java.lang.Object(ARRAY(x0)), x1)
Cond_1558_0_main_Load(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 0)
1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, x2) → Cond_1925_0_main_GE(&&(>(+(x2, 1), 0), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2)
Cond_1925_0_main_GE(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1))
1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 100) → Cond_1925_0_main_GE1(>(+(x1, 1), 0), java.lang.Object(ARRAY(x0)), x1)
Cond_1925_0_main_GE1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), +(x1, 1))
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1558_0_main_Load1(&&(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 5))), <(0, %(x1, 3))), java.lang.Object(ARRAY(x0)), x1)
Cond_1558_0_main_Load1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1795_1_main_InvokeMethod(1795_0_exp_Load(x0, x1), x0, x1)
1795_1_main_InvokeMethod(1338_0_exp_Return(x0), x0, 0) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1795_1_main_InvokeMethod(1676_0_exp_Return, x2, x1) → Cond_1795_1_main_InvokeMethod(>(+(x1, 1), 0), x2, x1)
Cond_1795_1_main_InvokeMethod(TRUE, x2, x1) → 1558_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1))
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1558_0_main_Load2(&&(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(1, %(x1, 2))), =(0, %(x1, 3))), java.lang.Object(ARRAY(x0)), x1)
Cond_1558_0_main_Load2(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1731_1_main_InvokeMethod(1731_0_cos_Load(x0, x1), x0, x1)
1731_1_main_InvokeMethod(1258_0_cos_Return(x0), x0, 0) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1731_1_main_InvokeMethod(1771_0_cos_Return, x2, x1) → Cond_1731_1_main_InvokeMethod(>(+(x1, 1), 0), x2, x1)
Cond_1731_1_main_InvokeMethod(TRUE, x2, x1) → 1558_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1))
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → Cond_1558_0_main_Load3(&&(&&(<(x1, x0), >(+(x0, 1), 0)), =(0, %(x1, 2))), java.lang.Object(ARRAY(x0)), x1)
Cond_1558_0_main_Load3(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1675_1_main_InvokeMethod(1675_0_sin_Load(x0, x1), x0, x1)
1675_1_main_InvokeMethod(1195_0_sin_Return(x0), x0, 0) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1675_1_main_InvokeMethod(1760_0_sin_Return(x0), x3, x2) → Cond_1675_1_main_InvokeMethod(>(+(x2, 1), 0), x3, x2)
Cond_1675_1_main_InvokeMethod(TRUE, x3, x2) → 1558_0_main_Load(java.lang.Object(ARRAY(x3)), +(x2, 1))
R rules:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → Cond_1294_0_exp_GT(x1_[0], x0)
Cond_1294_0_exp_GT(TRUE, x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(1061_0_fact_GT, x1)
1461_1_exp_InvokeMethod(1350_0_fact_Return, x1) → Cond_1461_1_exp_InvokeMethod(x0_[0,0]_[0], x1)
Cond_1461_1_exp_InvokeMethod(TRUE, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 1676_0_exp_Return
1574_1_exp_InvokeMethod(1676_0_exp_Return, x0) → 1676_0_exp_Return
1218_0_cos_GT(x0) → 1258_0_cos_Return(x0)
1218_0_cos_GT(x0) → Cond_1218_0_cos_GT(x1_[0], x0)
Cond_1218_0_cos_GT(TRUE, x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → Cond_1298_1_cos_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1298_1_cos_InvokeMethod(TRUE, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → Cond_1438_1_cos_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1438_1_cos_InvokeMethod(TRUE, x1) → 1555_1_cos_InvokeMethod(1061_0_fact_GT, x1)
1555_1_cos_InvokeMethod(1350_0_fact_Return, x1) → Cond_1555_1_cos_InvokeMethod(x0_[0,0]_[0], x1)
Cond_1555_1_cos_InvokeMethod(TRUE, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1258_0_cos_Return(x0), x0) → 1771_0_cos_Return
1651_1_cos_InvokeMethod(1771_0_cos_Return, x0) → 1771_0_cos_Return
1162_0_sin_GT(x0) → 1195_0_sin_Return(x0)
1162_0_sin_GT(x0) → Cond_1162_0_sin_GT(x1_[0], x0)
Cond_1162_0_sin_GT(TRUE, x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → Cond_1222_1_sin_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1222_1_sin_InvokeMethod(TRUE, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → Cond_1405_1_sin_InvokeMethod(x2_[0,0]_[0], x1)
Cond_1405_1_sin_InvokeMethod(TRUE, x1) → 1540_1_sin_InvokeMethod(1061_0_fact_GT, x1)
1540_1_sin_InvokeMethod(1350_0_fact_Return, x1) → Cond_1540_1_sin_InvokeMethod(x0_[0,0]_[0], x1)
Cond_1540_1_sin_InvokeMethod(TRUE, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1195_0_sin_Return(x0), x0) → 1760_0_sin_Return(x2_[0])
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x2) → 1760_0_sin_Return(x1_[0])
667_0_power_GT697_0_power_Return
667_0_power_GTCond_667_0_power_GT(x1_[0])
Cond_667_0_power_GT(TRUE) → 751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(697_0_power_Return) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return
1061_0_fact_GT1088_0_fact_Return
1061_0_fact_GTCond_1061_0_fact_GT(x0_[0])
Cond_1061_0_fact_GT(TRUE) → 1137_1_fact_InvokeMethod(1061_0_fact_GT)
1137_1_fact_InvokeMethod(1088_0_fact_Return) → Cond_1137_1_fact_InvokeMethod(arith[1]_[0,0]_[0])
Cond_1137_1_fact_InvokeMethod(TRUE) → 1350_0_fact_Return
1137_1_fact_InvokeMethod(1350_0_fact_Return) → Cond_1137_1_fact_InvokeMethod1(x0_[0,0]_[0], 1350_0_fact_Return)
Cond_1137_1_fact_InvokeMethod1(TRUE, 1350_0_fact_Return) → 1350_0_fact_Return

Filtered ground terms:



Cond_1137_1_fact_InvokeMethod1(x1, x2) → Cond_1137_1_fact_InvokeMethod1(x1)

Filtered modulo operations.


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


P rules:
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 0) | &&(<(x1, x0), >(x0, -1))
1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, x2) → 1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1)) | &&(>(x2, -1), <(x2, 100))
1925_0_main_GE(java.lang.Object(ARRAY(x0)), x1, 100) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), +(x1, 1)) | >(x1, -1)
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 1795_1_main_InvokeMethod(1795_0_exp_Load(x0, x1), x0, x1) | &&(<(x1, x0), >(x0, -1))
1795_1_main_InvokeMethod(1338_0_exp_Return(x0), x0, 0) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1795_1_main_InvokeMethod(1676_0_exp_Return, x2, x1) → 1558_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1)) | >(x1, -1)
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 1731_1_main_InvokeMethod(1731_0_cos_Load(x0, x1), x0, x1) | &&(<(x1, x0), >(x0, -1))
1731_1_main_InvokeMethod(1258_0_cos_Return(x0), x0, 0) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1731_1_main_InvokeMethod(1771_0_cos_Return, x2, x1) → 1558_0_main_Load(java.lang.Object(ARRAY(x2)), +(x1, 1)) | >(x1, -1)
1558_0_main_Load(java.lang.Object(ARRAY(x0)), x1) → 1675_1_main_InvokeMethod(1675_0_sin_Load(x0, x1), x0, x1) | &&(<(x1, x0), >(x0, -1))
1675_1_main_InvokeMethod(1195_0_sin_Return(x0), x0, 0) → 1558_0_main_Load(java.lang.Object(ARRAY(x0)), 1)
1675_1_main_InvokeMethod(1760_0_sin_Return(x0), x3, x2) → 1558_0_main_Load(java.lang.Object(ARRAY(x3)), +(x2, 1)) | >(x2, -1)
R rules:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(1061_0_fact_GT, x1)
1461_1_exp_InvokeMethod(1350_0_fact_Return, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 1676_0_exp_Return
1574_1_exp_InvokeMethod(1676_0_exp_Return, x0) → 1676_0_exp_Return
1218_0_cos_GT(x0) → 1258_0_cos_Return(x0)
1218_0_cos_GT(x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(1061_0_fact_GT, x1)
1555_1_cos_InvokeMethod(1350_0_fact_Return, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1258_0_cos_Return(x0), x0) → 1771_0_cos_Return
1651_1_cos_InvokeMethod(1771_0_cos_Return, x0) → 1771_0_cos_Return
1162_0_sin_GT(x0) → 1195_0_sin_Return(x0)
1162_0_sin_GT(x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → 1540_1_sin_InvokeMethod(1061_0_fact_GT, x1)
1540_1_sin_InvokeMethod(1350_0_fact_Return, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1195_0_sin_Return(x0), x0) → 1760_0_sin_Return(x2_[0])
1642_1_sin_InvokeMethod(1760_0_sin_Return(x0), x2) → 1760_0_sin_Return(x1_[0])
667_0_power_GT697_0_power_Return
667_0_power_GT751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(697_0_power_Return) → 996_0_power_Return
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return
1061_0_fact_GT1088_0_fact_Return
1061_0_fact_GT1137_1_fact_InvokeMethod(1061_0_fact_GT)
1137_1_fact_InvokeMethod(1088_0_fact_Return) → 1350_0_fact_Return
1137_1_fact_InvokeMethod(1350_0_fact_Return) → 1350_0_fact_Return

Performed bisimulation on rules. Used the following equivalence classes: {[1338_0_exp_Return_1, 1258_0_cos_Return_1, 1195_0_sin_Return_1, 1760_0_sin_Return_1]=1338_0_exp_Return_1, [751_1_power_InvokeMethod_1, 1137_1_fact_InvokeMethod_1]=751_1_power_InvokeMethod_1, [667_0_power_GT, 1061_0_fact_GT]=667_0_power_GT, [996_0_power_Return, 1350_0_fact_Return, 1676_0_exp_Return, 1771_0_cos_Return, 697_0_power_Return, 1088_0_fact_Return]=996_0_power_Return, [Cond_1795_1_main_InvokeMethod_4, Cond_1731_1_main_InvokeMethod_4]=Cond_1795_1_main_InvokeMethod_4}


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


P rules:
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 0)
1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1925_0_MAIN_GE(&&(>(x2, -1), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2)
COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1))
1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 100) → COND_1925_0_MAIN_GE1(>(x1, -1), java.lang.Object(ARRAY(x0)), x1, 100)
COND_1925_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0)), x1, 100) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), +(x1, 1))
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD1(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1795_1_MAIN_INVOKEMETHOD(1795_0_exp_Load(x0, x1), x0, x1)
1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x0, 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2, x1) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1, -1), 996_0_power_Return, x2, x1)
COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2, x1) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2)), +(x1, 1))
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD2(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1731_1_MAIN_INVOKEMETHOD(1731_0_cos_Load(x0, x1), x0, x1)
1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x0, 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2, x1) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1, -1), 996_0_power_Return, x2, x1)
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD3(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1)
COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0)), x1) → 1675_1_MAIN_INVOKEMETHOD(1675_0_sin_Load(x0, x1), x0, x1)
1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x0, 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x3, x2) → COND_1675_1_MAIN_INVOKEMETHOD(>(x2, -1), 1338_0_exp_Return(x0), x3, x2)
COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0), x3, x2) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3)), +(x2, 1))
R rules:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(667_0_power_GT, x1)
1461_1_exp_InvokeMethod(996_0_power_Return, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1574_1_exp_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1218_0_cos_GT(x0) → 1338_0_exp_Return(x0)
1218_0_cos_GT(x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(667_0_power_GT, x1)
1555_1_cos_InvokeMethod(996_0_power_Return, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1162_0_sin_GT(x0) → 1338_0_exp_Return(x0)
1162_0_sin_GT(x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → 1540_1_sin_InvokeMethod(667_0_power_GT, x1)
1540_1_sin_InvokeMethod(996_0_power_Return, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x0) → 1338_0_exp_Return(x2_[0])
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x2) → 1338_0_exp_Return(x1_[0])
667_0_power_GT996_0_power_Return
667_0_power_GT751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(996_0_power_Return) → 996_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:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(667_0_power_GT, x1)
1461_1_exp_InvokeMethod(996_0_power_Return, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1574_1_exp_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1218_0_cos_GT(x0) → 1338_0_exp_Return(x0)
1218_0_cos_GT(x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(667_0_power_GT, x1)
1555_1_cos_InvokeMethod(996_0_power_Return, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1162_0_sin_GT(x0) → 1338_0_exp_Return(x0)
1162_0_sin_GT(x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → 1540_1_sin_InvokeMethod(667_0_power_GT, x1)
1540_1_sin_InvokeMethod(996_0_power_Return, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x0) → 1338_0_exp_Return(x2_[0])
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x2) → 1338_0_exp_Return(x1_[0])
667_0_power_GT996_0_power_Return
667_0_power_GT751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1558_0_MAIN_LOAD(x1[0] < x0[0] && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0])
(1): COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
(2): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(4): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_1925_0_MAIN_GE1(x1[4] > -1, java.lang.Object(ARRAY(x0[4])), x1[4], 100)
(5): COND_1925_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), x1[5] + 1)
(6): 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1558_0_MAIN_LOAD1(x1[6] < x0[6] && x0[6] > -1, java.lang.Object(ARRAY(x0[6])), x1[6])
(7): COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1795_1_MAIN_INVOKEMETHOD(1795_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
(8): 1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[8]), x0[8], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)
(9): 1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9]) → COND_1795_1_MAIN_INVOKEMETHOD(x1[9] > -1, 996_0_power_Return, x2[9], x1[9])
(10): COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), x1[10] + 1)
(11): 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1558_0_MAIN_LOAD2(x1[11] < x0[11] && x0[11] > -1, java.lang.Object(ARRAY(x0[11])), x1[11])
(12): COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1731_1_MAIN_INVOKEMETHOD(1731_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
(13): 1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[13]), x0[13], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)
(14): 1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14]) → COND_1795_1_MAIN_INVOKEMETHOD(x1[14] > -1, 996_0_power_Return, x2[14], x1[14])
(15): 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1558_0_MAIN_LOAD3(x1[15] < x0[15] && x0[15] > -1, java.lang.Object(ARRAY(x0[15])), x1[15])
(16): COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1675_1_MAIN_INVOKEMETHOD(1675_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
(17): 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[17]), x0[17], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)
(18): 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1675_1_MAIN_INVOKEMETHOD(x2[18] > -1, 1338_0_exp_Return(x0[18]), x3[18], x2[18])
(19): COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0[19]), x3[19], x2[19]) → 1558_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 (1795_0_exp_Load(x0[7], x1[7]) →* 1338_0_exp_Return(x0[8])∧x0[7]* x0[8]x1[7]* 0)


(7) -> (9), if (1795_0_exp_Load(x0[7], x1[7]) →* 996_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 (1731_0_cos_Load(x0[12], x1[12]) →* 1338_0_exp_Return(x0[13])∧x0[12]* x0[13]x1[12]* 0)


(12) -> (14), if (1731_0_cos_Load(x0[12], x1[12]) →* 996_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 (1675_0_sin_Load(x0[16], x1[16]) →* 1338_0_exp_Return(x0[17])∧x0[16]* x0[17]x1[16]* 0)


(16) -> (18), if (1675_0_sin_Load(x0[16], x1[16]) →* 1338_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] > -11338_0_exp_Return(x0[18]) →* 1338_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:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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@600a05f6 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 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0]), COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 1925_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]1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥COND_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])∧(UIncreasing(COND_1558_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)=TRUE1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0])≥COND_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])∧(UIncreasing(COND_1558_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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)Bound*bni_67 + (2)bni_67] + [bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)







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

    (9)    (COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1])≥NonInfC∧COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1])≥1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)∧(UIncreasing(1925_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(1925_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(1925_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(1925_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(1925_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 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1925_0_MAIN_GE(&&(>(x2, -1), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2) the following chains were created:
  • We consider the chain 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_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]1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1925_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)=TRUE1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1925_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_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-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_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-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_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])), ≥)∧[(-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_1925_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)Bound*bni_71] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_72] ≥ 0)







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

    (20)    (COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))∧(UIncreasing(1925_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(1925_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(1925_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(1925_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(1925_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 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, 100) → COND_1925_0_MAIN_GE1(>(x1, -1), java.lang.Object(ARRAY(x0)), x1, 100) the following chains were created:
  • We consider the chain 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100), COND_1925_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1558_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]1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥COND_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)∧(UIncreasing(COND_1925_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)=TRUE1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100)≥COND_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)∧(UIncreasing(COND_1925_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_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(-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_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(-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_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(-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_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)), ≥)∧[(2)bni_75] = 0∧[(-1)Bound*bni_75] + [(-1)bni_75]x1[4] ≥ 0∧0 = 0∧[(-1)bso_76] ≥ 0)







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

    (31)    (COND_1925_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100)≥NonInfC∧COND_1925_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100)≥1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))∧(UIncreasing(1558_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(1558_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(1558_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(1558_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(1558_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 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD1(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6]), COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1795_1_MAIN_INVOKEMETHOD(1795_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]1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥COND_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])∧(UIncreasing(COND_1558_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)=TRUE1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6])≥COND_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])∧(UIncreasing(COND_1558_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_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79] + [(-1)bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-1)bso_80] ≥ 0)


    (42)    (x0[6] + [-1] + x1[6] ≥ 0∧x0[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(COND_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79 + (2)bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-1)bso_80] ≥ 0)







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

    (44)    (COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7])≥NonInfC∧COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7])≥1795_1_MAIN_INVOKEMETHOD(1795_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])∧(UIncreasing(1795_1_MAIN_INVOKEMETHOD(1795_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(1795_1_MAIN_INVOKEMETHOD(1795_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(1795_1_MAIN_INVOKEMETHOD(1795_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(1795_1_MAIN_INVOKEMETHOD(1795_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(1795_1_MAIN_INVOKEMETHOD(1795_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])), ≥)∧[bni_81] = 0∧0 = 0∧0 = 0∧[(-1)bso_82] ≥ 0)







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

    (49)    (1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[8]), x0[8], 0)≥NonInfC∧1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[8]), x0[8], 0)≥1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)∧(UIncreasing(1558_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(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥)∧[bni_83] = 0∧[(-1)bso_84] ≥ 0)



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

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



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

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



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

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







For Pair 1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2, x1) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1, -1), 996_0_power_Return, x2, x1) the following chains were created:
  • We consider the chain 1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9]) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_0_power_Return, x2[9], x1[9]), COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10]) → 1558_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]1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9])≥NonInfC∧1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9])≥COND_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_0_power_Return, x2[9], x1[9])∧(UIncreasing(COND_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_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)=TRUE1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9])≥NonInfC∧1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9])≥COND_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_0_power_Return, x2[9], x1[9])∧(UIncreasing(COND_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2, x1) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2)), +(x1, 1)) the following chains were created:
  • We consider the chain COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1)) which results in the following constraint:

    (60)    (COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10])≥NonInfC∧COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10])≥1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))∧(UIncreasing(1558_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(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥)∧[bni_87] = 0∧[(-1)bso_88] ≥ 0)



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

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



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

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



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

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







For Pair 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD2(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11]), COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1731_1_MAIN_INVOKEMETHOD(1731_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]1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥COND_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])∧(UIncreasing(COND_1558_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)=TRUE1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11])≥COND_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])∧(UIncreasing(COND_1558_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_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89] + [(-1)bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-1)bso_90] ≥ 0)


    (71)    (x0[11] + [-1] + x1[11] ≥ 0∧x0[11] ≥ 0∧x1[11] ≥ 0 ⇒ (UIncreasing(COND_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89 + (2)bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-1)bso_90] ≥ 0)







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

    (73)    (COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12])≥NonInfC∧COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12])≥1731_1_MAIN_INVOKEMETHOD(1731_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])∧(UIncreasing(1731_1_MAIN_INVOKEMETHOD(1731_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(1731_1_MAIN_INVOKEMETHOD(1731_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(1731_1_MAIN_INVOKEMETHOD(1731_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(1731_1_MAIN_INVOKEMETHOD(1731_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(1731_1_MAIN_INVOKEMETHOD(1731_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])), ≥)∧[bni_91] = 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)







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

    (78)    (1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[13]), x0[13], 0)≥NonInfC∧1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[13]), x0[13], 0)≥1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)∧(UIncreasing(1558_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(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥)∧[bni_93] = 0∧[(-1)bso_94] ≥ 0)



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

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



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

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



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

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







For Pair 1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2, x1) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1, -1), 996_0_power_Return, x2, x1) the following chains were created:
  • We consider the chain 1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14]) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_0_power_Return, x2[14], x1[14]), COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10]) → 1558_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]1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14])≥NonInfC∧1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14])≥COND_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_0_power_Return, x2[14], x1[14])∧(UIncreasing(COND_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_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)=TRUE1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14])≥NonInfC∧1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14])≥COND_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_0_power_Return, x2[14], x1[14])∧(UIncreasing(COND_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_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 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_0_MAIN_LOAD3(&&(<(x1, x0), >(x0, -1)), java.lang.Object(ARRAY(x0)), x1) the following chains were created:
  • We consider the chain 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15]), COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1675_1_MAIN_INVOKEMETHOD(1675_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]1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥COND_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])∧(UIncreasing(COND_1558_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)=TRUE1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥NonInfC∧1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15])≥COND_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])∧(UIncreasing(COND_1558_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_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97] + [(-1)bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-1)bso_98] ≥ 0)


    (95)    (x0[15] + [-1] + x1[15] ≥ 0∧x0[15] ≥ 0∧x1[15] ≥ 0 ⇒ (UIncreasing(COND_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-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_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97 + (2)bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-1)bso_98] ≥ 0)







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

    (97)    (COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16])≥NonInfC∧COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16])≥1675_1_MAIN_INVOKEMETHOD(1675_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])∧(UIncreasing(1675_1_MAIN_INVOKEMETHOD(1675_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(1675_1_MAIN_INVOKEMETHOD(1675_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(1675_1_MAIN_INVOKEMETHOD(1675_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(1675_1_MAIN_INVOKEMETHOD(1675_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(1675_1_MAIN_INVOKEMETHOD(1675_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])), ≥)∧[bni_99] = 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)







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

    (102)    (1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[17]), x0[17], 0)≥NonInfC∧1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[17]), x0[17], 0)≥1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)∧(UIncreasing(1558_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(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥)∧[bni_101] = 0∧[(-1)bso_102] ≥ 0)



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

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



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

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



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

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







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

    (107)    (>(x2[18], -1)=TRUE1338_0_exp_Return(x0[18])=1338_0_exp_Return(x0[19])∧x3[18]=x3[19]x2[18]=x2[19]1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18])≥NonInfC∧1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18])≥COND_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_0_exp_Return(x0[18]), x3[18], x2[18])∧(UIncreasing(COND_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_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)=TRUE1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18])≥NonInfC∧1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18])≥COND_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_0_exp_Return(x0[18]), x3[18], x2[18])∧(UIncreasing(COND_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_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_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_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_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_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_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_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_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_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_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0), x3, x2) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3)), +(x2, 1)) the following chains were created:
  • We consider the chain COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0[19]), x3[19], x2[19]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1)) which results in the following constraint:

    (113)    (COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0[19]), x3[19], x2[19])≥NonInfC∧COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0[19]), x3[19], x2[19])≥1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))∧(UIncreasing(1558_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(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥)∧[bni_105] = 0∧[(-1)bso_106] ≥ 0)



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

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



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

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



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

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







To summarize, we get the following constraints P for the following pairs.
  • 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-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_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])), ≥)∧[(-1)Bound*bni_67 + (2)bni_67] + [bni_67]x1[0] + [(2)bni_67]x0[0] ≥ 0∧[(-1)bso_68] ≥ 0)

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

  • 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, x2) → COND_1925_0_MAIN_GE(&&(>(x2, -1), <(x2, 100)), java.lang.Object(ARRAY(x0)), x1, x2)
    • (x2[2] ≥ 0∧[99] + [-1]x2[2] ≥ 0 ⇒ (UIncreasing(COND_1925_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)Bound*bni_71] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_72] ≥ 0)

  • COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0)), x1, x2) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0)), x1, +(x2, 1))
    • ((UIncreasing(1925_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)

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

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

  • 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_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_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-1)bso_80] ≥ 0)
    • (x0[6] ≥ 0∧[1] + x1[6] + x0[6] ≥ 0∧x1[6] ≥ 0 ⇒ (UIncreasing(COND_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])), ≥)∧[(-1)Bound*bni_79 + (2)bni_79] + [bni_79]x1[6] + [(2)bni_79]x0[6] ≥ 0∧[1 + (-1)bso_80] ≥ 0)

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

  • 1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x0, 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
    • ((UIncreasing(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)), ≥)∧[bni_83] = 0∧0 = 0∧[(-1)bso_84] ≥ 0)

  • 1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2, x1) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1, -1), 996_0_power_Return, x2, x1)
    • (x1[9] ≥ 0 ⇒ (UIncreasing(COND_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_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_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2, x1) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2)), +(x1, 1))
    • ((UIncreasing(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))), ≥)∧[bni_87] = 0∧0 = 0∧0 = 0∧[(-1)bso_88] ≥ 0)

  • 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_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_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-1)bso_90] ≥ 0)
    • (x0[11] ≥ 0∧[1] + x1[11] + x0[11] ≥ 0∧x1[11] ≥ 0 ⇒ (UIncreasing(COND_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])), ≥)∧[(-1)Bound*bni_89 + (2)bni_89] + [bni_89]x1[11] + [(2)bni_89]x0[11] ≥ 0∧[1 + (-1)bso_90] ≥ 0)

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

  • 1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x0, 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
    • ((UIncreasing(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)), ≥)∧[bni_93] = 0∧0 = 0∧[(-1)bso_94] ≥ 0)

  • 1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2, x1) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1, -1), 996_0_power_Return, x2, x1)
    • (x1[14] ≥ 0 ⇒ (UIncreasing(COND_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_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)

  • 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), x1) → COND_1558_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_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-1)bso_98] ≥ 0)
    • (x0[15] ≥ 0∧[1] + x1[15] + x0[15] ≥ 0∧x1[15] ≥ 0 ⇒ (UIncreasing(COND_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])), ≥)∧[(-1)Bound*bni_97 + (2)bni_97] + [bni_97]x1[15] + [(2)bni_97]x0[15] ≥ 0∧[1 + (-1)bso_98] ≥ 0)

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

  • 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x0, 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0)), 1)
    • ((UIncreasing(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)), ≥)∧[bni_101] = 0∧0 = 0∧[(-1)bso_102] ≥ 0)

  • 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0), x3, x2) → COND_1675_1_MAIN_INVOKEMETHOD(>(x2, -1), 1338_0_exp_Return(x0), x3, x2)
    • (x2[18] ≥ 0 ⇒ (UIncreasing(COND_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_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_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0), x3, x2) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3)), +(x2, 1))
    • ((UIncreasing(1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))), ≥)∧[bni_105] = 0∧0 = 0∧0 = 0∧0 = 0∧[(-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(1795_0_exp_Load(x1, x2)) = [-1] + [-1]x2 + x1   
POL(1294_0_exp_GT(x1)) = [2] + [-1]x1   
POL(1731_0_cos_Load(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(1218_0_cos_GT(x1)) = [1] + [-1]x1   
POL(1675_0_sin_Load(x1, x2)) = [-1] + [-1]x2 + [2]x1   
POL(1162_0_sin_GT(x1)) = [-1] + [-1]x1   
POL(1338_0_exp_Return(x1)) = x1   
POL(1376_1_exp_InvokeMethod(x1, x2)) = [2] + [2]x2   
POL(667_0_power_GT) = [-1]   
POL(996_0_power_Return) = [-1]   
POL(1461_1_exp_InvokeMethod(x1, x2)) = [1] + [-1]x2   
POL(1574_1_exp_InvokeMethod(x1, x2)) = [-1] + x1 + x2   
POL(1298_1_cos_InvokeMethod(x1, x2)) = 0   
POL(1438_1_cos_InvokeMethod(x1, x2)) = [1] + [2]x2   
POL(1555_1_cos_InvokeMethod(x1, x2)) = [-1] + x2   
POL(1651_1_cos_InvokeMethod(x1, x2)) = [-1] + x1 + [-1]x2   
POL(1222_1_sin_InvokeMethod(x1, x2)) = [2] + x2   
POL(1405_1_sin_InvokeMethod(x1, x2)) = [-1]x2   
POL(1540_1_sin_InvokeMethod(x1, x2)) = [-1]   
POL(1642_1_sin_InvokeMethod(x1, x2)) = [1] + [-1]x1 + [2]x2   
POL(751_1_power_InvokeMethod(x1)) = [-1]   
POL(1558_0_MAIN_LOAD(x1, x2)) = [-1]x2 + [2]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1)) = x1   
POL(COND_1558_0_MAIN_LOAD(x1, x2, x3)) = [-1]x3 + [2]x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(1925_0_MAIN_GE(x1, x2, x3)) = [-1]x2 + [2]x1   
POL(0) = 0   
POL(COND_1925_0_MAIN_GE(x1, x2, x3, x4)) = [-1]x3 + [2]x2   
POL(100) = [100]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(COND_1925_0_MAIN_GE1(x1, x2, x3, x4)) = [-1]x3 + [2]x2   
POL(COND_1558_0_MAIN_LOAD1(x1, x2, x3)) = [-1] + [-1]x3 + [2]x2   
POL(1795_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x2 + [-1]x3   
POL(COND_1795_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4 + [2]x3   
POL(COND_1558_0_MAIN_LOAD2(x1, x2, x3)) = [-1] + [-1]x3 + [2]x2   
POL(1731_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x2 + [-1]x3   
POL(COND_1558_0_MAIN_LOAD3(x1, x2, x3)) = [-1] + [-1]x3 + [2]x2   
POL(1675_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x2 + [-1]x3   
POL(COND_1675_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4 + [2]x3   

The following pairs are in P>:

COND_1925_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), +(x1[5], 1))
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])

The following pairs are in Pbound:

1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[6])), x1[6]) → COND_1558_0_MAIN_LOAD1(&&(<(x1[6], x0[6]), >(x0[6], -1)), java.lang.Object(ARRAY(x0[6])), x1[6])
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[11])), x1[11]) → COND_1558_0_MAIN_LOAD2(&&(<(x1[11], x0[11]), >(x0[11], -1)), java.lang.Object(ARRAY(x0[11])), x1[11])
1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[15])), x1[15]) → COND_1558_0_MAIN_LOAD3(&&(<(x1[15], x0[15]), >(x0[15], -1)), java.lang.Object(ARRAY(x0[15])), x1[15])

The following pairs are in P:

1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1558_0_MAIN_LOAD(&&(<(x1[0], x0[0]), >(x0[0], -1)), java.lang.Object(ARRAY(x0[0])), x1[0])
COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))
1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_1925_0_MAIN_GE1(>(x1[4], -1), java.lang.Object(ARRAY(x0[4])), x1[4], 100)
COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1795_1_MAIN_INVOKEMETHOD(1795_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[8]), x0[8], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)
1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9]) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1[9], -1), 996_0_power_Return, x2[9], x1[9])
COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), +(x1[10], 1))
COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1731_1_MAIN_INVOKEMETHOD(1731_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[13]), x0[13], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)
1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14]) → COND_1795_1_MAIN_INVOKEMETHOD(>(x1[14], -1), 996_0_power_Return, x2[14], x1[14])
COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1675_1_MAIN_INVOKEMETHOD(1675_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[17]), x0[17], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)
1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1675_1_MAIN_INVOKEMETHOD(>(x2[18], -1), 1338_0_exp_Return(x0[18]), x3[18], x2[18])
COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0[19]), x3[19], x2[19]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), +(x2[19], 1))

There are no usable rules.

(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:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(667_0_power_GT, x1)
1461_1_exp_InvokeMethod(996_0_power_Return, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1574_1_exp_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1218_0_cos_GT(x0) → 1338_0_exp_Return(x0)
1218_0_cos_GT(x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(667_0_power_GT, x1)
1555_1_cos_InvokeMethod(996_0_power_Return, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1162_0_sin_GT(x0) → 1338_0_exp_Return(x0)
1162_0_sin_GT(x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → 1540_1_sin_InvokeMethod(667_0_power_GT, x1)
1540_1_sin_InvokeMethod(996_0_power_Return, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x0) → 1338_0_exp_Return(x2_[0])
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x2) → 1338_0_exp_Return(x1_[0])
667_0_power_GT996_0_power_Return
667_0_power_GT751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0])), x1[0]) → COND_1558_0_MAIN_LOAD(x1[0] < x0[0] && x0[0] > -1, java.lang.Object(ARRAY(x0[0])), x1[0])
(1): COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
(2): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(4): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_1925_0_MAIN_GE1(x1[4] > -1, java.lang.Object(ARRAY(x0[4])), x1[4], 100)
(7): COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1795_1_MAIN_INVOKEMETHOD(1795_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
(8): 1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[8]), x0[8], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)
(9): 1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9]) → COND_1795_1_MAIN_INVOKEMETHOD(x1[9] > -1, 996_0_power_Return, x2[9], x1[9])
(10): COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), x1[10] + 1)
(12): COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1731_1_MAIN_INVOKEMETHOD(1731_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
(13): 1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[13]), x0[13], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)
(14): 1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14]) → COND_1795_1_MAIN_INVOKEMETHOD(x1[14] > -1, 996_0_power_Return, x2[14], x1[14])
(16): COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1675_1_MAIN_INVOKEMETHOD(1675_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
(17): 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[17]), x0[17], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)
(18): 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1675_1_MAIN_INVOKEMETHOD(x2[18] > -1, 1338_0_exp_Return(x0[18]), x3[18], x2[18])
(19): COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0[19]), x3[19], x2[19]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x3[19])), x2[19] + 1)

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


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


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


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


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


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


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


(7) -> (9), if (1795_0_exp_Load(x0[7], x1[7]) →* 996_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 (1731_0_cos_Load(x0[12], x1[12]) →* 1338_0_exp_Return(x0[13])∧x0[12]* x0[13]x1[12]* 0)


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


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


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


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



The set Q consists of the following terms:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_0_power_Return)

(62) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 14 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:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(667_0_power_GT, x1)
1461_1_exp_InvokeMethod(996_0_power_Return, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1574_1_exp_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1218_0_cos_GT(x0) → 1338_0_exp_Return(x0)
1218_0_cos_GT(x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(667_0_power_GT, x1)
1555_1_cos_InvokeMethod(996_0_power_Return, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1162_0_sin_GT(x0) → 1338_0_exp_Return(x0)
1162_0_sin_GT(x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → 1540_1_sin_InvokeMethod(667_0_power_GT, x1)
1540_1_sin_InvokeMethod(996_0_power_Return, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x0) → 1338_0_exp_Return(x2_[0])
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x2) → 1338_0_exp_Return(x1_[0])
667_0_power_GT996_0_power_Return
667_0_power_GT751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(3): COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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@600a05f6 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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) the following chains were created:
  • We consider the chain COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (1)    (COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))∧(UIncreasing(1925_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(1925_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(1925_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(1925_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(1925_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 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_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]1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1925_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)=TRUE1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1925_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_1925_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_1925_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_1925_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))
    • ((UIncreasing(1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_11] = 0∧0 = 0∧[1 + (-1)bso_12] ≥ 0)

  • 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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_1925_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_1925_0_MAIN_GE(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(java.lang.Object(x1)) = [-1]   
POL(ARRAY(x1)) = [-1]   
POL(1925_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))

The following pairs are in Pbound:

1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:

1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)


The set Q consists of the following terms:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(667_0_power_GT, x1)
1461_1_exp_InvokeMethod(996_0_power_Return, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1574_1_exp_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1218_0_cos_GT(x0) → 1338_0_exp_Return(x0)
1218_0_cos_GT(x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(667_0_power_GT, x1)
1555_1_cos_InvokeMethod(996_0_power_Return, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1162_0_sin_GT(x0) → 1338_0_exp_Return(x0)
1162_0_sin_GT(x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → 1540_1_sin_InvokeMethod(667_0_power_GT, x1)
1540_1_sin_InvokeMethod(996_0_power_Return, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x0) → 1338_0_exp_Return(x2_[0])
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x2) → 1338_0_exp_Return(x1_[0])
667_0_power_GT996_0_power_Return
667_0_power_GT751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(1): COND_1558_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1])), x1[1]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[1])), x1[1], 0)
(2): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_0_MAIN_GE(x2[2] > -1 && x2[2] < 100, java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])
(3): COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(4): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[4])), x1[4], 100) → COND_1925_0_MAIN_GE1(x1[4] > -1, java.lang.Object(ARRAY(x0[4])), x1[4], 100)
(5): COND_1925_0_MAIN_GE1(TRUE, java.lang.Object(ARRAY(x0[5])), x1[5], 100) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[5])), x1[5] + 1)
(7): COND_1558_0_MAIN_LOAD1(TRUE, java.lang.Object(ARRAY(x0[7])), x1[7]) → 1795_1_MAIN_INVOKEMETHOD(1795_0_exp_Load(x0[7], x1[7]), x0[7], x1[7])
(8): 1795_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[8]), x0[8], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[8])), 1)
(9): 1795_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[9], x1[9]) → COND_1795_1_MAIN_INVOKEMETHOD(x1[9] > -1, 996_0_power_Return, x2[9], x1[9])
(10): COND_1795_1_MAIN_INVOKEMETHOD(TRUE, 996_0_power_Return, x2[10], x1[10]) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x2[10])), x1[10] + 1)
(12): COND_1558_0_MAIN_LOAD2(TRUE, java.lang.Object(ARRAY(x0[12])), x1[12]) → 1731_1_MAIN_INVOKEMETHOD(1731_0_cos_Load(x0[12], x1[12]), x0[12], x1[12])
(13): 1731_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[13]), x0[13], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[13])), 1)
(14): 1731_1_MAIN_INVOKEMETHOD(996_0_power_Return, x2[14], x1[14]) → COND_1795_1_MAIN_INVOKEMETHOD(x1[14] > -1, 996_0_power_Return, x2[14], x1[14])
(16): COND_1558_0_MAIN_LOAD3(TRUE, java.lang.Object(ARRAY(x0[16])), x1[16]) → 1675_1_MAIN_INVOKEMETHOD(1675_0_sin_Load(x0[16], x1[16]), x0[16], x1[16])
(17): 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[17]), x0[17], 0) → 1558_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[17])), 1)
(18): 1675_1_MAIN_INVOKEMETHOD(1338_0_exp_Return(x0[18]), x3[18], x2[18]) → COND_1675_1_MAIN_INVOKEMETHOD(x2[18] > -1, 1338_0_exp_Return(x0[18]), x3[18], x2[18])
(19): COND_1675_1_MAIN_INVOKEMETHOD(TRUE, 1338_0_exp_Return(x0[19]), x3[19], x2[19]) → 1558_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 (1795_0_exp_Load(x0[7], x1[7]) →* 1338_0_exp_Return(x0[8])∧x0[7]* x0[8]x1[7]* 0)


(7) -> (9), if (1795_0_exp_Load(x0[7], x1[7]) →* 996_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 (1731_0_cos_Load(x0[12], x1[12]) →* 1338_0_exp_Return(x0[13])∧x0[12]* x0[13]x1[12]* 0)


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


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


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


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



The set Q consists of the following terms:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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:
1795_0_exp_Load(x0, x1) → 1294_0_exp_GT(x0)
1731_0_cos_Load(x0, x1) → 1218_0_cos_GT(x0)
1675_0_sin_Load(x0, x1) → 1162_0_sin_GT(x0)
1294_0_exp_GT(x0) → 1338_0_exp_Return(x0)
1294_0_exp_GT(x0) → 1376_1_exp_InvokeMethod(667_0_power_GT, x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x1) → 1461_1_exp_InvokeMethod(667_0_power_GT, x1)
1461_1_exp_InvokeMethod(996_0_power_Return, x1) → 1574_1_exp_InvokeMethod(1294_0_exp_GT(x1), x1)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1574_1_exp_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1218_0_cos_GT(x0) → 1338_0_exp_Return(x0)
1218_0_cos_GT(x0) → 1298_1_cos_InvokeMethod(667_0_power_GT, x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x1) → 1438_1_cos_InvokeMethod(667_0_power_GT, x1)
1438_1_cos_InvokeMethod(996_0_power_Return, x1) → 1555_1_cos_InvokeMethod(667_0_power_GT, x1)
1555_1_cos_InvokeMethod(996_0_power_Return, x1) → 1651_1_cos_InvokeMethod(1218_0_cos_GT(x1), x1)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0) → 996_0_power_Return
1651_1_cos_InvokeMethod(996_0_power_Return, x0) → 996_0_power_Return
1162_0_sin_GT(x0) → 1338_0_exp_Return(x0)
1162_0_sin_GT(x0) → 1222_1_sin_InvokeMethod(667_0_power_GT, x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x1) → 1405_1_sin_InvokeMethod(667_0_power_GT, x1)
1405_1_sin_InvokeMethod(996_0_power_Return, x1) → 1540_1_sin_InvokeMethod(667_0_power_GT, x1)
1540_1_sin_InvokeMethod(996_0_power_Return, x1) → 1642_1_sin_InvokeMethod(1162_0_sin_GT(x1), x1)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x0) → 1338_0_exp_Return(x2_[0])
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x2) → 1338_0_exp_Return(x1_[0])
667_0_power_GT996_0_power_Return
667_0_power_GT751_1_power_InvokeMethod(667_0_power_GT)
751_1_power_InvokeMethod(996_0_power_Return) → 996_0_power_Return

The integer pair graph contains the following rules and edges:
(3): COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)
(2): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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@600a05f6 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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) the following chains were created:
  • We consider the chain COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1)) which results in the following constraint:

    (1)    (COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥NonInfC∧COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3])≥1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))∧(UIncreasing(1925_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(1925_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(1925_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(1925_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(1925_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 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]), COND_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_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]1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1925_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)=TRUE1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥NonInfC∧1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])≥COND_1925_0_MAIN_GE(&&(>(x2[2], -1), <(x2[2], 100)), java.lang.Object(ARRAY(x0[2])), x1[2], x2[2])∧(UIncreasing(COND_1925_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_1925_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_1925_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_1925_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))
    • ((UIncreasing(1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))), ≥)∧[bni_10] = 0∧0 = 0∧[1 + (-1)bso_11] ≥ 0)

  • 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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_1925_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_1925_0_MAIN_GE(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(java.lang.Object(x1)) = [-1]   
POL(ARRAY(x1)) = [-1]   
POL(1925_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], +(x2[3], 1))

The following pairs are in Pbound:

1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:

1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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): 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[2])), x1[2], x2[2]) → COND_1925_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:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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_1925_0_MAIN_GE(TRUE, java.lang.Object(ARRAY(x0[3])), x1[3], x2[3]) → 1925_0_MAIN_GE(java.lang.Object(ARRAY(x0[3])), x1[3], x2[3] + 1)


The set Q consists of the following terms:
1795_0_exp_Load(x0, x1)
1731_0_cos_Load(x0, x1)
1675_0_sin_Load(x0, x1)
1294_0_exp_GT(x0)
1376_1_exp_InvokeMethod(996_0_power_Return, x0)
1461_1_exp_InvokeMethod(996_0_power_Return, x0)
1574_1_exp_InvokeMethod(1338_0_exp_Return(x0), x0)
1574_1_exp_InvokeMethod(996_0_power_Return, x0)
1218_0_cos_GT(x0)
1298_1_cos_InvokeMethod(996_0_power_Return, x0)
1438_1_cos_InvokeMethod(996_0_power_Return, x0)
1555_1_cos_InvokeMethod(996_0_power_Return, x0)
1651_1_cos_InvokeMethod(1338_0_exp_Return(x0), x0)
1651_1_cos_InvokeMethod(996_0_power_Return, x0)
1162_0_sin_GT(x0)
1222_1_sin_InvokeMethod(996_0_power_Return, x0)
1405_1_sin_InvokeMethod(996_0_power_Return, x0)
1540_1_sin_InvokeMethod(996_0_power_Return, x0)
1642_1_sin_InvokeMethod(1338_0_exp_Return(x0), x1)
667_0_power_GT
751_1_power_InvokeMethod(996_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