Initial Problem

Start: evalwisestart
Program_Vars: Arg_0, Arg_1
Temp_Vars:
Locations: evalwisebb3in, evalwisebb4in, evalwisebb5in, evalwisebb6in, evalwiseentryin, evalwisereturnin, evalwisestart, evalwisestop
Transitions:
7:evalwisebb3in(Arg_0,Arg_1) -> evalwisebb4in(Arg_0,Arg_1):|:Arg_1+1<=Arg_0
8:evalwisebb3in(Arg_0,Arg_1) -> evalwisebb5in(Arg_0,Arg_1):|:Arg_0<=Arg_1
9:evalwisebb4in(Arg_0,Arg_1) -> evalwisebb6in(Arg_0,Arg_1+1)
10:evalwisebb5in(Arg_0,Arg_1) -> evalwisebb6in(Arg_0+1,Arg_1)
4:evalwisebb6in(Arg_0,Arg_1) -> evalwisebb3in(Arg_0,Arg_1):|:Arg_0+3<=Arg_1
5:evalwisebb6in(Arg_0,Arg_1) -> evalwisebb3in(Arg_0,Arg_1):|:Arg_1+3<=Arg_0
6:evalwisebb6in(Arg_0,Arg_1) -> evalwisereturnin(Arg_0,Arg_1):|:Arg_1<=2+Arg_0 && Arg_0<=2+Arg_1
3:evalwiseentryin(Arg_0,Arg_1) -> evalwisebb6in(Arg_1,Arg_0):|:0<=Arg_0 && 0<=Arg_1
1:evalwiseentryin(Arg_0,Arg_1) -> evalwisereturnin(Arg_0,Arg_1):|:Arg_0+1<=0
2:evalwiseentryin(Arg_0,Arg_1) -> evalwisereturnin(Arg_0,Arg_1):|:Arg_1+1<=0
11:evalwisereturnin(Arg_0,Arg_1) -> evalwisestop(Arg_0,Arg_1)
0:evalwisestart(Arg_0,Arg_1) -> evalwiseentryin(Arg_0,Arg_1)

Preprocessing

Found invariant 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 for location evalwisebb6in

Found invariant 0<=Arg_1 && 3<=Arg_0+Arg_1 && 0<=Arg_0 for location evalwisebb3in

Found invariant 1+Arg_1<=Arg_0 && 0<=Arg_1 && 3<=Arg_0+Arg_1 && 2<=Arg_0 for location evalwisebb4in

Found invariant 2<=Arg_1 && 3<=Arg_0+Arg_1 && Arg_0<=Arg_1 && 0<=Arg_0 for location evalwisebb5in

Problem after Preprocessing

Start: evalwisestart
Program_Vars: Arg_0, Arg_1
Temp_Vars:
Locations: evalwisebb3in, evalwisebb4in, evalwisebb5in, evalwisebb6in, evalwiseentryin, evalwisereturnin, evalwisestart, evalwisestop
Transitions:
7:evalwisebb3in(Arg_0,Arg_1) -> evalwisebb4in(Arg_0,Arg_1):|:0<=Arg_1 && 3<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_1+1<=Arg_0
8:evalwisebb3in(Arg_0,Arg_1) -> evalwisebb5in(Arg_0,Arg_1):|:0<=Arg_1 && 3<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_0<=Arg_1
9:evalwisebb4in(Arg_0,Arg_1) -> evalwisebb6in(Arg_0,Arg_1+1):|:1+Arg_1<=Arg_0 && 0<=Arg_1 && 3<=Arg_0+Arg_1 && 2<=Arg_0
10:evalwisebb5in(Arg_0,Arg_1) -> evalwisebb6in(Arg_0+1,Arg_1):|:2<=Arg_1 && 3<=Arg_0+Arg_1 && Arg_0<=Arg_1 && 0<=Arg_0
4:evalwisebb6in(Arg_0,Arg_1) -> evalwisebb3in(Arg_0,Arg_1):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_0+3<=Arg_1
5:evalwisebb6in(Arg_0,Arg_1) -> evalwisebb3in(Arg_0,Arg_1):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_1+3<=Arg_0
6:evalwisebb6in(Arg_0,Arg_1) -> evalwisereturnin(Arg_0,Arg_1):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_1<=2+Arg_0 && Arg_0<=2+Arg_1
3:evalwiseentryin(Arg_0,Arg_1) -> evalwisebb6in(Arg_1,Arg_0):|:0<=Arg_0 && 0<=Arg_1
1:evalwiseentryin(Arg_0,Arg_1) -> evalwisereturnin(Arg_0,Arg_1):|:Arg_0+1<=0
2:evalwiseentryin(Arg_0,Arg_1) -> evalwisereturnin(Arg_0,Arg_1):|:Arg_1+1<=0
11:evalwisereturnin(Arg_0,Arg_1) -> evalwisestop(Arg_0,Arg_1)
0:evalwisestart(Arg_0,Arg_1) -> evalwiseentryin(Arg_0,Arg_1)

MPRF for transition 7:evalwisebb3in(Arg_0,Arg_1) -> evalwisebb4in(Arg_0,Arg_1):|:0<=Arg_1 && 3<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_1+1<=Arg_0 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

evalwisebb4in [Arg_0-Arg_1-1 ]
evalwisebb6in [Arg_0-Arg_1 ]
evalwisebb3in [Arg_0-Arg_1 ]

MPRF for transition 8:evalwisebb3in(Arg_0,Arg_1) -> evalwisebb5in(Arg_0,Arg_1):|:0<=Arg_1 && 3<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_0<=Arg_1 of depth 1:

new bound:

3*Arg_0+3*Arg_1+3 {O(n)}

MPRF:

evalwisebb5in [3*Arg_1-3*Arg_0 ]
evalwisebb6in [3*Arg_1+3-3*Arg_0 ]
evalwisebb3in [3*Arg_1+3-3*Arg_0 ]

MPRF for transition 9:evalwisebb4in(Arg_0,Arg_1) -> evalwisebb6in(Arg_0,Arg_1+1):|:1+Arg_1<=Arg_0 && 0<=Arg_1 && 3<=Arg_0+Arg_1 && 2<=Arg_0 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

evalwisebb4in [Arg_0-Arg_1 ]
evalwisebb6in [Arg_0-Arg_1 ]
evalwisebb3in [Arg_0-Arg_1 ]

MPRF for transition 10:evalwisebb5in(Arg_0,Arg_1) -> evalwisebb6in(Arg_0+1,Arg_1):|:2<=Arg_1 && 3<=Arg_0+Arg_1 && Arg_0<=Arg_1 && 0<=Arg_0 of depth 1:

new bound:

Arg_0+Arg_1+1 {O(n)}

MPRF:

evalwisebb5in [Arg_1+1-Arg_0 ]
evalwisebb6in [Arg_1+1-Arg_0 ]
evalwisebb3in [Arg_1+1-Arg_0 ]

MPRF for transition 4:evalwisebb6in(Arg_0,Arg_1) -> evalwisebb3in(Arg_0,Arg_1):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_0+3<=Arg_1 of depth 1:

new bound:

Arg_0+Arg_1+1 {O(n)}

MPRF:

evalwisebb5in [Arg_1-Arg_0-2 ]
evalwisebb6in [Arg_1-Arg_0-1 ]
evalwisebb3in [Arg_1-Arg_0-2 ]

MPRF for transition 5:evalwisebb6in(Arg_0,Arg_1) -> evalwisebb3in(Arg_0,Arg_1):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_1+3<=Arg_0 of depth 1:

new bound:

Arg_0+Arg_1+2 {O(n)}

MPRF:

evalwisebb4in [Arg_0-Arg_1-3 ]
evalwisebb6in [Arg_0-Arg_1-2 ]
evalwisebb3in [Arg_0-Arg_1-3 ]

All Bounds

Timebounds

Overall timebound:8*Arg_0+8*Arg_1+13 {O(n)}
7: evalwisebb3in->evalwisebb4in: Arg_0+Arg_1 {O(n)}
8: evalwisebb3in->evalwisebb5in: 3*Arg_0+3*Arg_1+3 {O(n)}
9: evalwisebb4in->evalwisebb6in: Arg_0+Arg_1 {O(n)}
10: evalwisebb5in->evalwisebb6in: Arg_0+Arg_1+1 {O(n)}
4: evalwisebb6in->evalwisebb3in: Arg_0+Arg_1+1 {O(n)}
5: evalwisebb6in->evalwisebb3in: Arg_0+Arg_1+2 {O(n)}
6: evalwisebb6in->evalwisereturnin: 1 {O(1)}
1: evalwiseentryin->evalwisereturnin: 1 {O(1)}
2: evalwiseentryin->evalwisereturnin: 1 {O(1)}
3: evalwiseentryin->evalwisebb6in: 1 {O(1)}
11: evalwisereturnin->evalwisestop: 1 {O(1)}
0: evalwisestart->evalwiseentryin: 1 {O(1)}

Costbounds

Overall costbound: 8*Arg_0+8*Arg_1+13 {O(n)}
7: evalwisebb3in->evalwisebb4in: Arg_0+Arg_1 {O(n)}
8: evalwisebb3in->evalwisebb5in: 3*Arg_0+3*Arg_1+3 {O(n)}
9: evalwisebb4in->evalwisebb6in: Arg_0+Arg_1 {O(n)}
10: evalwisebb5in->evalwisebb6in: Arg_0+Arg_1+1 {O(n)}
4: evalwisebb6in->evalwisebb3in: Arg_0+Arg_1+1 {O(n)}
5: evalwisebb6in->evalwisebb3in: Arg_0+Arg_1+2 {O(n)}
6: evalwisebb6in->evalwisereturnin: 1 {O(1)}
1: evalwiseentryin->evalwisereturnin: 1 {O(1)}
2: evalwiseentryin->evalwisereturnin: 1 {O(1)}
3: evalwiseentryin->evalwisebb6in: 1 {O(1)}
11: evalwisereturnin->evalwisestop: 1 {O(1)}
0: evalwisestart->evalwiseentryin: 1 {O(1)}

Sizebounds

7: evalwisebb3in->evalwisebb4in, Arg_0: Arg_1 {O(n)}
7: evalwisebb3in->evalwisebb4in, Arg_1: 2*Arg_0+Arg_1 {O(n)}
8: evalwisebb3in->evalwisebb5in, Arg_0: 2*Arg_1+Arg_0+1 {O(n)}
8: evalwisebb3in->evalwisebb5in, Arg_1: Arg_0 {O(n)}
9: evalwisebb4in->evalwisebb6in, Arg_0: Arg_1 {O(n)}
9: evalwisebb4in->evalwisebb6in, Arg_1: 2*Arg_0+Arg_1 {O(n)}
10: evalwisebb5in->evalwisebb6in, Arg_0: 2*Arg_1+Arg_0+1 {O(n)}
10: evalwisebb5in->evalwisebb6in, Arg_1: Arg_0 {O(n)}
4: evalwisebb6in->evalwisebb3in, Arg_0: 2*Arg_1+Arg_0+1 {O(n)}
4: evalwisebb6in->evalwisebb3in, Arg_1: Arg_0 {O(n)}
5: evalwisebb6in->evalwisebb3in, Arg_0: Arg_1 {O(n)}
5: evalwisebb6in->evalwisebb3in, Arg_1: 2*Arg_0+Arg_1 {O(n)}
6: evalwisebb6in->evalwisereturnin, Arg_0: 4*Arg_1+Arg_0+1 {O(n)}
6: evalwisebb6in->evalwisereturnin, Arg_1: 4*Arg_0+Arg_1 {O(n)}
1: evalwiseentryin->evalwisereturnin, Arg_0: Arg_0 {O(n)}
1: evalwiseentryin->evalwisereturnin, Arg_1: Arg_1 {O(n)}
2: evalwiseentryin->evalwisereturnin, Arg_0: Arg_0 {O(n)}
2: evalwiseentryin->evalwisereturnin, Arg_1: Arg_1 {O(n)}
3: evalwiseentryin->evalwisebb6in, Arg_0: Arg_1 {O(n)}
3: evalwiseentryin->evalwisebb6in, Arg_1: Arg_0 {O(n)}
11: evalwisereturnin->evalwisestop, Arg_0: 3*Arg_0+4*Arg_1+1 {O(n)}
11: evalwisereturnin->evalwisestop, Arg_1: 3*Arg_1+4*Arg_0 {O(n)}
0: evalwisestart->evalwiseentryin, Arg_0: Arg_0 {O(n)}
0: evalwisestart->evalwiseentryin, Arg_1: Arg_1 {O(n)}