Initial Problem
Start: evalspeedpldi2start
Program_Vars: Arg_0, Arg_1, Arg_2
Temp_Vars:
Locations: evalspeedpldi2bb2in, evalspeedpldi2bb3in, evalspeedpldi2bb5in, evalspeedpldi2entryin, evalspeedpldi2returnin, evalspeedpldi2start, evalspeedpldi2stop
Transitions:
6:evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb3in(Arg_0,Arg_1,Arg_2):|:Arg_1+1<=Arg_0
7:evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_0,0,Arg_2):|:Arg_0<=Arg_1
8:evalspeedpldi2bb3in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_0,Arg_1+1,Arg_2-1)
4:evalspeedpldi2bb5in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2):|:1<=Arg_2
5:evalspeedpldi2bb5in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2):|:Arg_2<=0
1:evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_1,0,Arg_0):|:0<=Arg_0 && 1<=Arg_1
2:evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2):|:Arg_0+1<=0
3:evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2):|:Arg_1<=0
9:evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2stop(Arg_0,Arg_1,Arg_2)
0:evalspeedpldi2start(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2)
Preprocessing
Found invariant 0<=Arg_2 && 0<=Arg_1+Arg_2 && 1<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 for location evalspeedpldi2bb5in
Found invariant 1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 for location evalspeedpldi2bb2in
Found invariant 1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && 1+Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 for location evalspeedpldi2bb3in
Problem after Preprocessing
Start: evalspeedpldi2start
Program_Vars: Arg_0, Arg_1, Arg_2
Temp_Vars:
Locations: evalspeedpldi2bb2in, evalspeedpldi2bb3in, evalspeedpldi2bb5in, evalspeedpldi2entryin, evalspeedpldi2returnin, evalspeedpldi2start, evalspeedpldi2stop
Transitions:
6:evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb3in(Arg_0,Arg_1,Arg_2):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 && Arg_1+1<=Arg_0
7:evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_0,0,Arg_2):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 && Arg_0<=Arg_1
8:evalspeedpldi2bb3in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_0,Arg_1+1,Arg_2-1):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && 1+Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0
4:evalspeedpldi2bb5in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2):|:0<=Arg_2 && 0<=Arg_1+Arg_2 && 1<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 && 1<=Arg_2
5:evalspeedpldi2bb5in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2):|:0<=Arg_2 && 0<=Arg_1+Arg_2 && 1<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 && Arg_2<=0
1:evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_1,0,Arg_0):|:0<=Arg_0 && 1<=Arg_1
2:evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2):|:Arg_0+1<=0
3:evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2):|:Arg_1<=0
9:evalspeedpldi2returnin(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2stop(Arg_0,Arg_1,Arg_2)
0:evalspeedpldi2start(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2entryin(Arg_0,Arg_1,Arg_2)
MPRF for transition 6:evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb3in(Arg_0,Arg_1,Arg_2):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 && Arg_1+1<=Arg_0 of depth 1:
new bound:
Arg_0 {O(n)}
MPRF:
evalspeedpldi2bb3in [Arg_2-1 ]
evalspeedpldi2bb5in [Arg_2 ]
evalspeedpldi2bb2in [Arg_2 ]
MPRF for transition 7:evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_0,0,Arg_2):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 && Arg_0<=Arg_1 of depth 1:
new bound:
Arg_0 {O(n)}
MPRF:
evalspeedpldi2bb3in [Arg_1+Arg_2 ]
evalspeedpldi2bb5in [Arg_1+Arg_2 ]
evalspeedpldi2bb2in [Arg_1+Arg_2 ]
MPRF for transition 8:evalspeedpldi2bb3in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb5in(Arg_0,Arg_1+1,Arg_2-1):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 2<=Arg_0+Arg_2 && 1+Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 of depth 1:
new bound:
Arg_0+Arg_1+1 {O(n)}
MPRF:
evalspeedpldi2bb3in [Arg_0+Arg_2-1 ]
evalspeedpldi2bb5in [Arg_0+Arg_2-1 ]
evalspeedpldi2bb2in [Arg_0+Arg_2-1 ]
MPRF for transition 4:evalspeedpldi2bb5in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi2bb2in(Arg_0,Arg_1,Arg_2):|:0<=Arg_2 && 0<=Arg_1+Arg_2 && 1<=Arg_0+Arg_2 && Arg_1<=Arg_0 && 0<=Arg_1 && 1<=Arg_0+Arg_1 && 1<=Arg_0 && 1<=Arg_2 of depth 1:
new bound:
2*Arg_0+1 {O(n)}
MPRF:
evalspeedpldi2bb3in [Arg_1+2*Arg_2 ]
evalspeedpldi2bb5in [Arg_1+2*Arg_2+1 ]
evalspeedpldi2bb2in [Arg_1+2*Arg_2 ]
All Bounds
Timebounds
Overall timebound:5*Arg_0+Arg_1+8 {O(n)}
6: evalspeedpldi2bb2in->evalspeedpldi2bb3in: Arg_0 {O(n)}
7: evalspeedpldi2bb2in->evalspeedpldi2bb5in: Arg_0 {O(n)}
8: evalspeedpldi2bb3in->evalspeedpldi2bb5in: Arg_0+Arg_1+1 {O(n)}
4: evalspeedpldi2bb5in->evalspeedpldi2bb2in: 2*Arg_0+1 {O(n)}
5: evalspeedpldi2bb5in->evalspeedpldi2returnin: 1 {O(1)}
1: evalspeedpldi2entryin->evalspeedpldi2bb5in: 1 {O(1)}
2: evalspeedpldi2entryin->evalspeedpldi2returnin: 1 {O(1)}
3: evalspeedpldi2entryin->evalspeedpldi2returnin: 1 {O(1)}
9: evalspeedpldi2returnin->evalspeedpldi2stop: 1 {O(1)}
0: evalspeedpldi2start->evalspeedpldi2entryin: 1 {O(1)}
Costbounds
Overall costbound: 5*Arg_0+Arg_1+8 {O(n)}
6: evalspeedpldi2bb2in->evalspeedpldi2bb3in: Arg_0 {O(n)}
7: evalspeedpldi2bb2in->evalspeedpldi2bb5in: Arg_0 {O(n)}
8: evalspeedpldi2bb3in->evalspeedpldi2bb5in: Arg_0+Arg_1+1 {O(n)}
4: evalspeedpldi2bb5in->evalspeedpldi2bb2in: 2*Arg_0+1 {O(n)}
5: evalspeedpldi2bb5in->evalspeedpldi2returnin: 1 {O(1)}
1: evalspeedpldi2entryin->evalspeedpldi2bb5in: 1 {O(1)}
2: evalspeedpldi2entryin->evalspeedpldi2returnin: 1 {O(1)}
3: evalspeedpldi2entryin->evalspeedpldi2returnin: 1 {O(1)}
9: evalspeedpldi2returnin->evalspeedpldi2stop: 1 {O(1)}
0: evalspeedpldi2start->evalspeedpldi2entryin: 1 {O(1)}
Sizebounds
6: evalspeedpldi2bb2in->evalspeedpldi2bb3in, Arg_0: Arg_1 {O(n)}
6: evalspeedpldi2bb2in->evalspeedpldi2bb3in, Arg_1: Arg_0+Arg_1+1 {O(n)}
6: evalspeedpldi2bb2in->evalspeedpldi2bb3in, Arg_2: Arg_0 {O(n)}
7: evalspeedpldi2bb2in->evalspeedpldi2bb5in, Arg_0: Arg_1 {O(n)}
7: evalspeedpldi2bb2in->evalspeedpldi2bb5in, Arg_1: 0 {O(1)}
7: evalspeedpldi2bb2in->evalspeedpldi2bb5in, Arg_2: Arg_0 {O(n)}
8: evalspeedpldi2bb3in->evalspeedpldi2bb5in, Arg_0: Arg_1 {O(n)}
8: evalspeedpldi2bb3in->evalspeedpldi2bb5in, Arg_1: Arg_0+Arg_1+1 {O(n)}
8: evalspeedpldi2bb3in->evalspeedpldi2bb5in, Arg_2: Arg_0 {O(n)}
4: evalspeedpldi2bb5in->evalspeedpldi2bb2in, Arg_0: Arg_1 {O(n)}
4: evalspeedpldi2bb5in->evalspeedpldi2bb2in, Arg_1: Arg_0+Arg_1+1 {O(n)}
4: evalspeedpldi2bb5in->evalspeedpldi2bb2in, Arg_2: Arg_0 {O(n)}
5: evalspeedpldi2bb5in->evalspeedpldi2returnin, Arg_0: 2*Arg_1 {O(n)}
5: evalspeedpldi2bb5in->evalspeedpldi2returnin, Arg_1: Arg_0+Arg_1+1 {O(n)}
5: evalspeedpldi2bb5in->evalspeedpldi2returnin, Arg_2: 0 {O(1)}
1: evalspeedpldi2entryin->evalspeedpldi2bb5in, Arg_0: Arg_1 {O(n)}
1: evalspeedpldi2entryin->evalspeedpldi2bb5in, Arg_1: 0 {O(1)}
1: evalspeedpldi2entryin->evalspeedpldi2bb5in, Arg_2: Arg_0 {O(n)}
2: evalspeedpldi2entryin->evalspeedpldi2returnin, Arg_0: Arg_0 {O(n)}
2: evalspeedpldi2entryin->evalspeedpldi2returnin, Arg_1: Arg_1 {O(n)}
2: evalspeedpldi2entryin->evalspeedpldi2returnin, Arg_2: Arg_2 {O(n)}
3: evalspeedpldi2entryin->evalspeedpldi2returnin, Arg_0: Arg_0 {O(n)}
3: evalspeedpldi2entryin->evalspeedpldi2returnin, Arg_1: Arg_1 {O(n)}
3: evalspeedpldi2entryin->evalspeedpldi2returnin, Arg_2: Arg_2 {O(n)}
9: evalspeedpldi2returnin->evalspeedpldi2stop, Arg_0: 2*Arg_0+2*Arg_1 {O(n)}
9: evalspeedpldi2returnin->evalspeedpldi2stop, Arg_1: 3*Arg_1+Arg_0+1 {O(n)}
9: evalspeedpldi2returnin->evalspeedpldi2stop, Arg_2: 2*Arg_2 {O(n)}
0: evalspeedpldi2start->evalspeedpldi2entryin, Arg_0: Arg_0 {O(n)}
0: evalspeedpldi2start->evalspeedpldi2entryin, Arg_1: Arg_1 {O(n)}
0: evalspeedpldi2start->evalspeedpldi2entryin, Arg_2: Arg_2 {O(n)}