0 JBC
↳1 JBC2FIG (⇐)
↳2 FIGraph
↳3 FIGtoITRSProof (⇐)
↳4 AND
↳5 ITRS
↳6 GroundTermsRemoverProof (⇔)
↳7 ITRS
↳8 ITRStoIDPProof (⇔)
↳9 IDP
↳10 UsableRulesProof (⇔)
↳11 IDP
↳12 IDPNonInfProof (⇐)
↳13 AND
↳14 IDP
↳15 IDependencyGraphProof (⇔)
↳16 TRUE
↳17 IDP
↳18 IDependencyGraphProof (⇔)
↳19 TRUE
↳20 ITRS
↳21 GroundTermsRemoverProof (⇔)
↳22 ITRS
↳23 ITRStoIDPProof (⇔)
↳24 IDP
↳25 UsableRulesProof (⇔)
↳26 IDP
↳27 IDPNonInfProof (⇐)
↳28 AND
↳29 IDP
↳30 IDependencyGraphProof (⇔)
↳31 TRUE
↳32 IDP
↳33 IDependencyGraphProof (⇔)
↳34 TRUE
↳35 ITRS
↳36 GroundTermsRemoverProof (⇔)
↳37 ITRS
↳38 ITRStoIDPProof (⇔)
↳39 IDP
↳40 UsableRulesProof (⇔)
↳41 IDP
↳42 IDPNonInfProof (⇐)
↳43 AND
↳44 IDP
↳45 IDependencyGraphProof (⇔)
↳46 TRUE
↳47 IDP
↳48 IDependencyGraphProof (⇔)
↳49 TRUE
package example_1;
public class A {
int incr(int i) {
return i=i+1;
}
}
package example_1;
public class B extends A {
int incr(int i) {
return i = i+2;
}
}
package example_1;
public class C extends B {
int incr(int i) {
return i=i+3;
}
}
package example_1;
public class Test {
public int add(int n,A o){
int res=0;
int i=0;
while (i<=n){
res=res+i;
i=o.incr(i);
}
return res;
}
public static void main(String[] args) {
int test = 1000;
Test testClass = new Test();
A a = new A();
int result1 = testClass.add(test,a);
a = new B();
int result2 = testClass.add(test,a);
a = new C();
int result3 = testClass.add(test,a);
// System.out.println("Result: "+result1 + result2 + result3);
}
}
!= | ~ | 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 |
Load1041(x1, x2, x3, x4) → Load1041(x3, x4)
Cond_Load1041(x1, x2, x3, x4, x5) → Cond_Load1041(x1, x4, x5)
!= | ~ | 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 |
!= | ~ | 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 |
Boolean, Integer
(0) -> (1), if ((i47[0] →* i47[1])∧(i46[0] →* i46[1])∧(i47[0] >= 0 && i47[0] <= 1000 && i47[0] + 3 > 0 →* TRUE))
(1) -> (0), if ((i47[1] + 3 →* i47[0])∧(i46[1] + i47[1] →* i46[0]))
!= | ~ | 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 |
Boolean, Integer
(0) -> (1), if ((i47[0] →* i47[1])∧(i46[0] →* i46[1])∧(i47[0] >= 0 && i47[0] <= 1000 && i47[0] + 3 > 0 →* TRUE))
(1) -> (0), if ((i47[1] + 3 →* i47[0])∧(i46[1] + i47[1] →* i46[0]))
(1) (i47[0]=i47[1]∧i46[0]=i46[1]∧&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0))=TRUE ⇒ LOAD1041(i46[0], i47[0])≥NonInfC∧LOAD1041(i46[0], i47[0])≥COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])∧(UIncreasing(COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])), ≥))
(2) (>(+(i47[0], 3), 0)=TRUE∧>=(i47[0], 0)=TRUE∧<=(i47[0], 1000)=TRUE ⇒ LOAD1041(i46[0], i47[0])≥NonInfC∧LOAD1041(i46[0], i47[0])≥COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])∧(UIncreasing(COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])), ≥))
(3) (i47[0] + [2] ≥ 0∧i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])), ≥)∧[(-1)Bound*bni_14] + [(-1)bni_14]i47[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(4) (i47[0] + [2] ≥ 0∧i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])), ≥)∧[(-1)Bound*bni_14] + [(-1)bni_14]i47[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(5) (i47[0] + [2] ≥ 0∧i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])), ≥)∧[(-1)Bound*bni_14] + [(-1)bni_14]i47[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(6) (i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0∧[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])), ≥)∧0 = 0∧[(-1)Bound*bni_14] + [(-1)bni_14]i47[0] ≥ 0∧0 = 0∧[(-1)bso_15] ≥ 0)
(7) (i47[0]=i47[1]∧i46[0]=i46[1]∧&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0))=TRUE∧+(i47[1], 3)=i47[0]1∧+(i46[1], i47[1])=i46[0]1 ⇒ COND_LOAD1041(TRUE, i46[1], i47[1])≥NonInfC∧COND_LOAD1041(TRUE, i46[1], i47[1])≥LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))∧(UIncreasing(LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))), ≥))
(8) (>(+(i47[0], 3), 0)=TRUE∧>=(i47[0], 0)=TRUE∧<=(i47[0], 1000)=TRUE ⇒ COND_LOAD1041(TRUE, i46[0], i47[0])≥NonInfC∧COND_LOAD1041(TRUE, i46[0], i47[0])≥LOAD1041(+(i46[0], i47[0]), +(i47[0], 3))∧(UIncreasing(LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))), ≥))
(9) (i47[0] + [2] ≥ 0∧i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0 ⇒ (UIncreasing(LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))), ≥)∧[(-1)Bound*bni_16] + [(-1)bni_16]i47[0] ≥ 0∧[3 + (-1)bso_17] ≥ 0)
(10) (i47[0] + [2] ≥ 0∧i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0 ⇒ (UIncreasing(LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))), ≥)∧[(-1)Bound*bni_16] + [(-1)bni_16]i47[0] ≥ 0∧[3 + (-1)bso_17] ≥ 0)
(11) (i47[0] + [2] ≥ 0∧i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0 ⇒ (UIncreasing(LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))), ≥)∧[(-1)Bound*bni_16] + [(-1)bni_16]i47[0] ≥ 0∧[3 + (-1)bso_17] ≥ 0)
(12) (i47[0] ≥ 0∧[1000] + [-1]i47[0] ≥ 0∧[1] ≥ 0 ⇒ (UIncreasing(LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))), ≥)∧0 = 0∧[(-1)Bound*bni_16] + [(-1)bni_16]i47[0] ≥ 0∧0 = 0∧[3 + (-1)bso_17] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = [1]
POL(LOAD1041(x1, x2)) = [-1]x2
POL(COND_LOAD1041(x1, x2, x3)) = [-1]x3
POL(&&(x1, x2)) = [-1]
POL(>=(x1, x2)) = [-1]
POL(0) = 0
POL(<=(x1, x2)) = [-1]
POL(1000) = [1000]
POL(>(x1, x2)) = [-1]
POL(+(x1, x2)) = x1 + x2
POL(3) = [3]
COND_LOAD1041(TRUE, i46[1], i47[1]) → LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))
LOAD1041(i46[0], i47[0]) → COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])
COND_LOAD1041(TRUE, i46[1], i47[1]) → LOAD1041(+(i46[1], i47[1]), +(i47[1], 3))
LOAD1041(i46[0], i47[0]) → COND_LOAD1041(&&(&&(>=(i47[0], 0), <=(i47[0], 1000)), >(+(i47[0], 3), 0)), i46[0], i47[0])
FALSE1 → &&(FALSE, FALSE)1
!= | ~ | 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 |
Boolean, Integer
!= | ~ | 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 |
!= | ~ | 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 |
Load731(x1, x2, x3, x4, x5) → Load731(x4, x5)
Cond_Load731(x1, x2, x3, x4, x5, x6) → Cond_Load731(x1, x5, x6)
!= | ~ | 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 |
!= | ~ | 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 |
Boolean, Integer
(0) -> (1), if ((i19[0] →* i19[1])∧(i20[0] →* i20[1])∧(i20[0] >= 0 && i20[0] <= 1000 && i20[0] + 2 > 0 →* TRUE))
(1) -> (0), if ((i19[1] + i20[1] →* i19[0])∧(i20[1] + 2 →* i20[0]))
!= | ~ | 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 |
Boolean, Integer
(0) -> (1), if ((i19[0] →* i19[1])∧(i20[0] →* i20[1])∧(i20[0] >= 0 && i20[0] <= 1000 && i20[0] + 2 > 0 →* TRUE))
(1) -> (0), if ((i19[1] + i20[1] →* i19[0])∧(i20[1] + 2 →* i20[0]))
(1) (i19[0]=i19[1]∧i20[0]=i20[1]∧&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0))=TRUE ⇒ LOAD731(i19[0], i20[0])≥NonInfC∧LOAD731(i19[0], i20[0])≥COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])∧(UIncreasing(COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])), ≥))
(2) (>(+(i20[0], 2), 0)=TRUE∧>=(i20[0], 0)=TRUE∧<=(i20[0], 1000)=TRUE ⇒ LOAD731(i19[0], i20[0])≥NonInfC∧LOAD731(i19[0], i20[0])≥COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])∧(UIncreasing(COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])), ≥))
(3) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])), ≥)∧[(-1)bni_14 + (-1)Bound*bni_14] + [(-1)bni_14]i20[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(4) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])), ≥)∧[(-1)bni_14 + (-1)Bound*bni_14] + [(-1)bni_14]i20[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(5) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])), ≥)∧[(-1)bni_14 + (-1)Bound*bni_14] + [(-1)bni_14]i20[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(6) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])), ≥)∧0 = 0∧[(-1)bni_14 + (-1)Bound*bni_14] + [(-1)bni_14]i20[0] ≥ 0∧0 = 0∧[(-1)bso_15] ≥ 0)
(7) (i19[0]=i19[1]∧i20[0]=i20[1]∧&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0))=TRUE∧+(i19[1], i20[1])=i19[0]1∧+(i20[1], 2)=i20[0]1 ⇒ COND_LOAD731(TRUE, i19[1], i20[1])≥NonInfC∧COND_LOAD731(TRUE, i19[1], i20[1])≥LOAD731(+(i19[1], i20[1]), +(i20[1], 2))∧(UIncreasing(LOAD731(+(i19[1], i20[1]), +(i20[1], 2))), ≥))
(8) (>(+(i20[0], 2), 0)=TRUE∧>=(i20[0], 0)=TRUE∧<=(i20[0], 1000)=TRUE ⇒ COND_LOAD731(TRUE, i19[0], i20[0])≥NonInfC∧COND_LOAD731(TRUE, i19[0], i20[0])≥LOAD731(+(i19[0], i20[0]), +(i20[0], 2))∧(UIncreasing(LOAD731(+(i19[1], i20[1]), +(i20[1], 2))), ≥))
(9) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(LOAD731(+(i19[1], i20[1]), +(i20[1], 2))), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i20[0] ≥ 0∧[2 + (-1)bso_17] ≥ 0)
(10) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(LOAD731(+(i19[1], i20[1]), +(i20[1], 2))), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i20[0] ≥ 0∧[2 + (-1)bso_17] ≥ 0)
(11) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(LOAD731(+(i19[1], i20[1]), +(i20[1], 2))), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i20[0] ≥ 0∧[2 + (-1)bso_17] ≥ 0)
(12) (i20[0] + [1] ≥ 0∧i20[0] ≥ 0∧[1000] + [-1]i20[0] ≥ 0 ⇒ (UIncreasing(LOAD731(+(i19[1], i20[1]), +(i20[1], 2))), ≥)∧0 = 0∧[(-1)bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i20[0] ≥ 0∧0 = 0∧[2 + (-1)bso_17] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = [2]
POL(LOAD731(x1, x2)) = [-1] + [-1]x2
POL(COND_LOAD731(x1, x2, x3)) = [-1] + [-1]x3
POL(&&(x1, x2)) = [-1]
POL(>=(x1, x2)) = [-1]
POL(0) = 0
POL(<=(x1, x2)) = [-1]
POL(1000) = [1000]
POL(>(x1, x2)) = [-1]
POL(+(x1, x2)) = x1 + x2
POL(2) = [2]
COND_LOAD731(TRUE, i19[1], i20[1]) → LOAD731(+(i19[1], i20[1]), +(i20[1], 2))
LOAD731(i19[0], i20[0]) → COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])
COND_LOAD731(TRUE, i19[1], i20[1]) → LOAD731(+(i19[1], i20[1]), +(i20[1], 2))
LOAD731(i19[0], i20[0]) → COND_LOAD731(&&(&&(>=(i20[0], 0), <=(i20[0], 1000)), >(+(i20[0], 2), 0)), i19[0], i20[0])
TRUE1 → &&(TRUE, TRUE)1
FALSE1 → &&(TRUE, FALSE)1
FALSE1 → &&(FALSE, TRUE)1
FALSE1 → &&(FALSE, FALSE)1
!= | ~ | 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 |
Boolean, Integer
!= | ~ | 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 |
!= | ~ | 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 |
Load404(x1, x2, x3, x4, x5) → Load404(x4, x5)
Cond_Load404(x1, x2, x3, x4, x5, x6) → Cond_Load404(x1, x5, x6)
!= | ~ | 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 |
!= | ~ | 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 |
Boolean, Integer
(0) -> (1), if ((i5[0] >= 0 && i5[0] <= 1000 && i5[0] + 1 > 0 →* TRUE)∧(i4[0] →* i4[1])∧(i5[0] →* i5[1]))
(1) -> (0), if ((i5[1] + 1 →* i5[0])∧(i4[1] + i5[1] →* i4[0]))
!= | ~ | 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 |
Boolean, Integer
(0) -> (1), if ((i5[0] >= 0 && i5[0] <= 1000 && i5[0] + 1 > 0 →* TRUE)∧(i4[0] →* i4[1])∧(i5[0] →* i5[1]))
(1) -> (0), if ((i5[1] + 1 →* i5[0])∧(i4[1] + i5[1] →* i4[0]))
(1) (&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0))=TRUE∧i4[0]=i4[1]∧i5[0]=i5[1] ⇒ LOAD404(i4[0], i5[0])≥NonInfC∧LOAD404(i4[0], i5[0])≥COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])∧(UIncreasing(COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])), ≥))
(2) (>(+(i5[0], 1), 0)=TRUE∧>=(i5[0], 0)=TRUE∧<=(i5[0], 1000)=TRUE ⇒ LOAD404(i4[0], i5[0])≥NonInfC∧LOAD404(i4[0], i5[0])≥COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])∧(UIncreasing(COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])), ≥))
(3) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])), ≥)∧[(-1)Bound*bni_14] + [(-1)bni_14]i5[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(4) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])), ≥)∧[(-1)Bound*bni_14] + [(-1)bni_14]i5[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(5) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])), ≥)∧[(-1)Bound*bni_14] + [(-1)bni_14]i5[0] ≥ 0∧[(-1)bso_15] ≥ 0)
(6) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])), ≥)∧0 = 0∧[(-1)Bound*bni_14] + [(-1)bni_14]i5[0] ≥ 0∧0 = 0∧[(-1)bso_15] ≥ 0)
(7) (&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0))=TRUE∧i4[0]=i4[1]∧i5[0]=i5[1]∧+(i5[1], 1)=i5[0]1∧+(i4[1], i5[1])=i4[0]1 ⇒ COND_LOAD404(TRUE, i4[1], i5[1])≥NonInfC∧COND_LOAD404(TRUE, i4[1], i5[1])≥LOAD404(+(i4[1], i5[1]), +(i5[1], 1))∧(UIncreasing(LOAD404(+(i4[1], i5[1]), +(i5[1], 1))), ≥))
(8) (>(+(i5[0], 1), 0)=TRUE∧>=(i5[0], 0)=TRUE∧<=(i5[0], 1000)=TRUE ⇒ COND_LOAD404(TRUE, i4[0], i5[0])≥NonInfC∧COND_LOAD404(TRUE, i4[0], i5[0])≥LOAD404(+(i4[0], i5[0]), +(i5[0], 1))∧(UIncreasing(LOAD404(+(i4[1], i5[1]), +(i5[1], 1))), ≥))
(9) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(LOAD404(+(i4[1], i5[1]), +(i5[1], 1))), ≥)∧[(-1)Bound*bni_16] + [(-1)bni_16]i5[0] ≥ 0∧[1 + (-1)bso_17] ≥ 0)
(10) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(LOAD404(+(i4[1], i5[1]), +(i5[1], 1))), ≥)∧[(-1)Bound*bni_16] + [(-1)bni_16]i5[0] ≥ 0∧[1 + (-1)bso_17] ≥ 0)
(11) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(LOAD404(+(i4[1], i5[1]), +(i5[1], 1))), ≥)∧[(-1)Bound*bni_16] + [(-1)bni_16]i5[0] ≥ 0∧[1 + (-1)bso_17] ≥ 0)
(12) (i5[0] ≥ 0∧i5[0] ≥ 0∧[1000] + [-1]i5[0] ≥ 0 ⇒ (UIncreasing(LOAD404(+(i4[1], i5[1]), +(i5[1], 1))), ≥)∧0 = 0∧[(-1)Bound*bni_16] + [(-1)bni_16]i5[0] ≥ 0∧0 = 0∧[1 + (-1)bso_17] ≥ 0)
POL(TRUE) = [2]
POL(FALSE) = [2]
POL(LOAD404(x1, x2)) = [-1]x2
POL(COND_LOAD404(x1, x2, x3)) = [2] + [-1]x3 + [-1]x1
POL(&&(x1, x2)) = [2]
POL(>=(x1, x2)) = [-1]
POL(0) = 0
POL(<=(x1, x2)) = [-1]
POL(1000) = [1000]
POL(>(x1, x2)) = [-1]
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]
COND_LOAD404(TRUE, i4[1], i5[1]) → LOAD404(+(i4[1], i5[1]), +(i5[1], 1))
LOAD404(i4[0], i5[0]) → COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])
COND_LOAD404(TRUE, i4[1], i5[1]) → LOAD404(+(i4[1], i5[1]), +(i5[1], 1))
LOAD404(i4[0], i5[0]) → COND_LOAD404(&&(&&(>=(i5[0], 0), <=(i5[0], 1000)), >(+(i5[0], 1), 0)), i4[0], i5[0])
&&(TRUE, TRUE)1 ↔ TRUE1
&&(TRUE, FALSE)1 ↔ FALSE1
&&(FALSE, TRUE)1 ↔ FALSE1
&&(FALSE, FALSE)1 ↔ FALSE1
!= | ~ | 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 |
Boolean, Integer
!= | ~ | 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 |