Initial Problem
Start: evalinsertsortstart
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3
Temp_Vars: E
Locations: evalinsertsortbb1in, evalinsertsortbb2in, evalinsertsortbb3in, evalinsertsortbb4in, evalinsertsortbb5in, evalinsertsortbbin, evalinsertsortentryin, evalinsertsortreturnin, evalinsertsortstart, evalinsertsortstop
Transitions:
9:evalinsertsortbb1in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3-1)
6:evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3):|:0<=Arg_3
5:evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_3+1<=0
7:evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb1in(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_2+1<=E
8:evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3):|:E<=Arg_2
10:evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb5in(Arg_0+1,Arg_1,Arg_2,Arg_3)
2:evalinsertsortbb5in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbbin(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_0+1<=Arg_1
3:evalinsertsortbb5in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortreturnin(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_1<=Arg_0
4:evalinsertsortbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb2in(Arg_0,Arg_1,E,Arg_0-1)
1:evalinsertsortentryin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb5in(1,Arg_1,Arg_2,Arg_3)
11:evalinsertsortreturnin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortstop(Arg_0,Arg_1,Arg_2,Arg_3)
0:evalinsertsortstart(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortentryin(Arg_0,Arg_1,Arg_2,Arg_3)
Preprocessing
Found invariant 2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 for location evalinsertsortbb1in
Found invariant 2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 for location evalinsertsortbb2in
Found invariant 2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 for location evalinsertsortbb3in
Found invariant 2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 for location evalinsertsortbb4in
Found invariant Arg_1<=Arg_0 && 1<=Arg_0 for location evalinsertsortstop
Found invariant 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 for location evalinsertsortbbin
Found invariant Arg_1<=Arg_0 && 1<=Arg_0 for location evalinsertsortreturnin
Found invariant 1<=Arg_0 for location evalinsertsortbb5in
Problem after Preprocessing
Start: evalinsertsortstart
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3
Temp_Vars: E
Locations: evalinsertsortbb1in, evalinsertsortbb2in, evalinsertsortbb3in, evalinsertsortbb4in, evalinsertsortbb5in, evalinsertsortbbin, evalinsertsortentryin, evalinsertsortreturnin, evalinsertsortstart, evalinsertsortstop
Transitions:
9:evalinsertsortbb1in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3-1):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0
6:evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && 0<=Arg_3
5:evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && Arg_3+1<=0
7:evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb1in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && Arg_2+1<=E
8:evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && E<=Arg_2
10:evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb5in(Arg_0+1,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0
2:evalinsertsortbb5in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbbin(Arg_0,Arg_1,Arg_2,Arg_3):|:1<=Arg_0 && Arg_0+1<=Arg_1
3:evalinsertsortbb5in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortreturnin(Arg_0,Arg_1,Arg_2,Arg_3):|:1<=Arg_0 && Arg_1<=Arg_0
4:evalinsertsortbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb2in(Arg_0,Arg_1,E,Arg_0-1):|:2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0
1:evalinsertsortentryin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb5in(1,Arg_1,Arg_2,Arg_3)
11:evalinsertsortreturnin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortstop(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_1<=Arg_0 && 1<=Arg_0
0:evalinsertsortstart(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortentryin(Arg_0,Arg_1,Arg_2,Arg_3)
MPRF for transition 5:evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && Arg_3+1<=0 of depth 1:
new bound:
Arg_1+1 {O(n)}
MPRF:
evalinsertsortbb1in [Arg_1-Arg_0 ]
evalinsertsortbb3in [Arg_1-Arg_0 ]
evalinsertsortbb4in [Arg_1-Arg_0-1 ]
evalinsertsortbb5in [Arg_1-Arg_0 ]
evalinsertsortbbin [Arg_1-Arg_0 ]
evalinsertsortbb2in [Arg_1-Arg_0 ]
MPRF for transition 8:evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && E<=Arg_2 of depth 1:
new bound:
2*Arg_1+1 {O(n)}
MPRF:
evalinsertsortbb1in [2*Arg_1-Arg_0 ]
evalinsertsortbb3in [2*Arg_1-Arg_0 ]
evalinsertsortbb4in [2*Arg_1-Arg_0-1 ]
evalinsertsortbb5in [2*Arg_1-Arg_0 ]
evalinsertsortbbin [2*Arg_1-Arg_0 ]
evalinsertsortbb2in [2*Arg_1-Arg_0 ]
MPRF for transition 10:evalinsertsortbb4in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb5in(Arg_0+1,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 of depth 1:
new bound:
Arg_1+2 {O(n)}
MPRF:
evalinsertsortbb1in [Arg_1+1-Arg_0 ]
evalinsertsortbb3in [Arg_1+1-Arg_0 ]
evalinsertsortbb4in [Arg_1+1-Arg_0 ]
evalinsertsortbb5in [Arg_1+1-Arg_0 ]
evalinsertsortbbin [Arg_1+1-Arg_0 ]
evalinsertsortbb2in [Arg_1+1-Arg_0 ]
MPRF for transition 2:evalinsertsortbb5in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbbin(Arg_0,Arg_1,Arg_2,Arg_3):|:1<=Arg_0 && Arg_0+1<=Arg_1 of depth 1:
new bound:
Arg_1+2 {O(n)}
MPRF:
evalinsertsortbb1in [Arg_1-Arg_0 ]
evalinsertsortbb3in [Arg_1-Arg_0 ]
evalinsertsortbb4in [Arg_1-Arg_0 ]
evalinsertsortbb5in [Arg_1+1-Arg_0 ]
evalinsertsortbbin [Arg_1-Arg_0 ]
evalinsertsortbb2in [Arg_1-Arg_0 ]
MPRF for transition 4:evalinsertsortbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb2in(Arg_0,Arg_1,E,Arg_0-1):|:2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 of depth 1:
new bound:
Arg_1+1 {O(n)}
MPRF:
evalinsertsortbb1in [Arg_1-Arg_0-1 ]
evalinsertsortbb3in [Arg_1-Arg_0-1 ]
evalinsertsortbb4in [Arg_1-Arg_0-1 ]
evalinsertsortbb5in [Arg_1-Arg_0 ]
evalinsertsortbbin [Arg_1-Arg_0 ]
evalinsertsortbb2in [Arg_1-Arg_0-1 ]
MPRF for transition 9:evalinsertsortbb1in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3-1):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 of depth 1:
new bound:
Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
MPRF:
evalinsertsortbb2in [Arg_3+1 ]
evalinsertsortbb1in [Arg_3+1 ]
evalinsertsortbb3in [Arg_3+1 ]
evalinsertsortbb4in [Arg_3 ]
evalinsertsortbb5in [-1 ]
evalinsertsortbbin [-1 ]
MPRF for transition 6:evalinsertsortbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=1+Arg_3 && 1<=Arg_1+Arg_3 && 0<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && 0<=Arg_3 of depth 1:
new bound:
Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
MPRF:
evalinsertsortbb2in [Arg_3+1 ]
evalinsertsortbb1in [Arg_3 ]
evalinsertsortbb3in [Arg_3 ]
evalinsertsortbb4in [Arg_3 ]
evalinsertsortbb5in [-1 ]
evalinsertsortbbin [-1 ]
MPRF for transition 7:evalinsertsortbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalinsertsortbb1in(Arg_0,Arg_1,Arg_2,Arg_3):|:2+Arg_3<=Arg_1 && 1+Arg_3<=Arg_0 && 0<=Arg_3 && 2<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 2<=Arg_1 && 3<=Arg_0+Arg_1 && 1+Arg_0<=Arg_1 && 1<=Arg_0 && Arg_2+1<=E of depth 1:
new bound:
Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
MPRF:
evalinsertsortbb2in [Arg_3+1 ]
evalinsertsortbb1in [Arg_3 ]
evalinsertsortbb3in [Arg_3+1 ]
evalinsertsortbb4in [Arg_3 ]
evalinsertsortbb5in [-1 ]
evalinsertsortbbin [-1 ]
All Bounds
Timebounds
Overall timebound:3*Arg_1*Arg_1+21*Arg_1+26 {O(n^2)}
9: evalinsertsortbb1in->evalinsertsortbb2in: Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
5: evalinsertsortbb2in->evalinsertsortbb4in: Arg_1+1 {O(n)}
6: evalinsertsortbb2in->evalinsertsortbb3in: Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
7: evalinsertsortbb3in->evalinsertsortbb1in: Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
8: evalinsertsortbb3in->evalinsertsortbb4in: 2*Arg_1+1 {O(n)}
10: evalinsertsortbb4in->evalinsertsortbb5in: Arg_1+2 {O(n)}
2: evalinsertsortbb5in->evalinsertsortbbin: Arg_1+2 {O(n)}
3: evalinsertsortbb5in->evalinsertsortreturnin: 1 {O(1)}
4: evalinsertsortbbin->evalinsertsortbb2in: Arg_1+1 {O(n)}
1: evalinsertsortentryin->evalinsertsortbb5in: 1 {O(1)}
11: evalinsertsortreturnin->evalinsertsortstop: 1 {O(1)}
0: evalinsertsortstart->evalinsertsortentryin: 1 {O(1)}
Costbounds
Overall costbound: 3*Arg_1*Arg_1+21*Arg_1+26 {O(n^2)}
9: evalinsertsortbb1in->evalinsertsortbb2in: Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
5: evalinsertsortbb2in->evalinsertsortbb4in: Arg_1+1 {O(n)}
6: evalinsertsortbb2in->evalinsertsortbb3in: Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
7: evalinsertsortbb3in->evalinsertsortbb1in: Arg_1*Arg_1+5*Arg_1+5 {O(n^2)}
8: evalinsertsortbb3in->evalinsertsortbb4in: 2*Arg_1+1 {O(n)}
10: evalinsertsortbb4in->evalinsertsortbb5in: Arg_1+2 {O(n)}
2: evalinsertsortbb5in->evalinsertsortbbin: Arg_1+2 {O(n)}
3: evalinsertsortbb5in->evalinsertsortreturnin: 1 {O(1)}
4: evalinsertsortbbin->evalinsertsortbb2in: Arg_1+1 {O(n)}
1: evalinsertsortentryin->evalinsertsortbb5in: 1 {O(1)}
11: evalinsertsortreturnin->evalinsertsortstop: 1 {O(1)}
0: evalinsertsortstart->evalinsertsortentryin: 1 {O(1)}
Sizebounds
9: evalinsertsortbb1in->evalinsertsortbb2in, Arg_0: Arg_1+3 {O(n)}
9: evalinsertsortbb1in->evalinsertsortbb2in, Arg_1: Arg_1 {O(n)}
9: evalinsertsortbb1in->evalinsertsortbb2in, Arg_3: Arg_1+4 {O(n)}
5: evalinsertsortbb2in->evalinsertsortbb4in, Arg_0: Arg_1+3 {O(n)}
5: evalinsertsortbb2in->evalinsertsortbb4in, Arg_1: Arg_1 {O(n)}
5: evalinsertsortbb2in->evalinsertsortbb4in, Arg_3: 1 {O(1)}
6: evalinsertsortbb2in->evalinsertsortbb3in, Arg_0: Arg_1+3 {O(n)}
6: evalinsertsortbb2in->evalinsertsortbb3in, Arg_1: Arg_1 {O(n)}
6: evalinsertsortbb2in->evalinsertsortbb3in, Arg_3: Arg_1+4 {O(n)}
7: evalinsertsortbb3in->evalinsertsortbb1in, Arg_0: Arg_1+3 {O(n)}
7: evalinsertsortbb3in->evalinsertsortbb1in, Arg_1: Arg_1 {O(n)}
7: evalinsertsortbb3in->evalinsertsortbb1in, Arg_3: Arg_1+4 {O(n)}
8: evalinsertsortbb3in->evalinsertsortbb4in, Arg_0: Arg_1+3 {O(n)}
8: evalinsertsortbb3in->evalinsertsortbb4in, Arg_1: Arg_1 {O(n)}
8: evalinsertsortbb3in->evalinsertsortbb4in, Arg_3: Arg_1+4 {O(n)}
10: evalinsertsortbb4in->evalinsertsortbb5in, Arg_0: Arg_1+3 {O(n)}
10: evalinsertsortbb4in->evalinsertsortbb5in, Arg_1: Arg_1 {O(n)}
10: evalinsertsortbb4in->evalinsertsortbb5in, Arg_3: Arg_1+5 {O(n)}
2: evalinsertsortbb5in->evalinsertsortbbin, Arg_0: Arg_1+3 {O(n)}
2: evalinsertsortbb5in->evalinsertsortbbin, Arg_1: Arg_1 {O(n)}
2: evalinsertsortbb5in->evalinsertsortbbin, Arg_3: Arg_1+Arg_3+5 {O(n)}
3: evalinsertsortbb5in->evalinsertsortreturnin, Arg_0: Arg_1+4 {O(n)}
3: evalinsertsortbb5in->evalinsertsortreturnin, Arg_1: 2*Arg_1 {O(n)}
3: evalinsertsortbb5in->evalinsertsortreturnin, Arg_3: Arg_1+Arg_3+5 {O(n)}
4: evalinsertsortbbin->evalinsertsortbb2in, Arg_0: Arg_1+3 {O(n)}
4: evalinsertsortbbin->evalinsertsortbb2in, Arg_1: Arg_1 {O(n)}
4: evalinsertsortbbin->evalinsertsortbb2in, Arg_3: Arg_1+3 {O(n)}
1: evalinsertsortentryin->evalinsertsortbb5in, Arg_0: 1 {O(1)}
1: evalinsertsortentryin->evalinsertsortbb5in, Arg_1: Arg_1 {O(n)}
1: evalinsertsortentryin->evalinsertsortbb5in, Arg_2: Arg_2 {O(n)}
1: evalinsertsortentryin->evalinsertsortbb5in, Arg_3: Arg_3 {O(n)}
11: evalinsertsortreturnin->evalinsertsortstop, Arg_0: Arg_1+4 {O(n)}
11: evalinsertsortreturnin->evalinsertsortstop, Arg_1: 2*Arg_1 {O(n)}
11: evalinsertsortreturnin->evalinsertsortstop, Arg_3: Arg_1+Arg_3+5 {O(n)}
0: evalinsertsortstart->evalinsertsortentryin, Arg_0: Arg_0 {O(n)}
0: evalinsertsortstart->evalinsertsortentryin, Arg_1: Arg_1 {O(n)}
0: evalinsertsortstart->evalinsertsortentryin, Arg_2: Arg_2 {O(n)}
0: evalinsertsortstart->evalinsertsortentryin, Arg_3: Arg_3 {O(n)}