Initial Problem

Start: evalSimpleMultipleDepstart
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3
Temp_Vars:
Locations: evalSimpleMultipleDepbb1in, evalSimpleMultipleDepbb2in, evalSimpleMultipleDepbb3in, evalSimpleMultipleDepbbin, evalSimpleMultipleDepentryin, evalSimpleMultipleDepreturnin, evalSimpleMultipleDepstart, evalSimpleMultipleDepstop
Transitions:
6:evalSimpleMultipleDepbb1in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(Arg_0+1,Arg_1,Arg_2,Arg_3)
7:evalSimpleMultipleDepbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(0,Arg_1+1,Arg_2,Arg_3)
2:evalSimpleMultipleDepbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_1+1<=Arg_2
3:evalSimpleMultipleDepbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepreturnin(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_2<=Arg_1
4:evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb1in(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_0+1<=Arg_3
5:evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb2in(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_3<=Arg_0
1:evalSimpleMultipleDepentryin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(0,0,Arg_2,Arg_3)
8:evalSimpleMultipleDepreturnin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepstop(Arg_0,Arg_1,Arg_2,Arg_3)
0:evalSimpleMultipleDepstart(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepentryin(Arg_0,Arg_1,Arg_2,Arg_3)

Preprocessing

Found invariant 1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 for location evalSimpleMultipleDepbbin

Found invariant Arg_3<=Arg_0 && 1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 for location evalSimpleMultipleDepbb2in

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

Found invariant Arg_2<=Arg_1 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 for location evalSimpleMultipleDepreturnin

Found invariant 1<=Arg_3 && 2<=Arg_2+Arg_3 && 1<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 1+Arg_0<=Arg_3 && 1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 for location evalSimpleMultipleDepbb1in

Found invariant Arg_2<=Arg_1 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 for location evalSimpleMultipleDepstop

Problem after Preprocessing

Start: evalSimpleMultipleDepstart
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3
Temp_Vars:
Locations: evalSimpleMultipleDepbb1in, evalSimpleMultipleDepbb2in, evalSimpleMultipleDepbb3in, evalSimpleMultipleDepbbin, evalSimpleMultipleDepentryin, evalSimpleMultipleDepreturnin, evalSimpleMultipleDepstart, evalSimpleMultipleDepstop
Transitions:
6:evalSimpleMultipleDepbb1in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(Arg_0+1,Arg_1,Arg_2,Arg_3):|:1<=Arg_3 && 2<=Arg_2+Arg_3 && 1<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 1+Arg_0<=Arg_3 && 1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0
7:evalSimpleMultipleDepbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(0,Arg_1+1,Arg_2,Arg_3):|:Arg_3<=Arg_0 && 1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0
2:evalSimpleMultipleDepbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_1+1<=Arg_2
3:evalSimpleMultipleDepbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepreturnin(Arg_0,Arg_1,Arg_2,Arg_3):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_2<=Arg_1
4:evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb1in(Arg_0,Arg_1,Arg_2,Arg_3):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_0+1<=Arg_3
5:evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb2in(Arg_0,Arg_1,Arg_2,Arg_3):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_3<=Arg_0
1:evalSimpleMultipleDepentryin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(0,0,Arg_2,Arg_3)
8:evalSimpleMultipleDepreturnin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepstop(Arg_0,Arg_1,Arg_2,Arg_3):|:Arg_2<=Arg_1 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0
0:evalSimpleMultipleDepstart(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepentryin(Arg_0,Arg_1,Arg_2,Arg_3)

MPRF for transition 7:evalSimpleMultipleDepbb2in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(0,Arg_1+1,Arg_2,Arg_3):|:Arg_3<=Arg_0 && 1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 of depth 1:

new bound:

Arg_2 {O(n)}

MPRF:

evalSimpleMultipleDepbb3in [Arg_2-Arg_1 ]
evalSimpleMultipleDepbb1in [Arg_2-Arg_1 ]
evalSimpleMultipleDepbbin [Arg_2-Arg_1 ]
evalSimpleMultipleDepbb2in [Arg_2-Arg_1 ]

MPRF for transition 5:evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb2in(Arg_0,Arg_1,Arg_2,Arg_3):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_3<=Arg_0 of depth 1:

new bound:

Arg_2 {O(n)}

MPRF:

evalSimpleMultipleDepbb3in [Arg_2-Arg_1 ]
evalSimpleMultipleDepbb1in [Arg_2-Arg_1 ]
evalSimpleMultipleDepbbin [Arg_2-Arg_1 ]
evalSimpleMultipleDepbb2in [Arg_2-Arg_1-1 ]

MPRF for transition 6:evalSimpleMultipleDepbb1in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb3in(Arg_0+1,Arg_1,Arg_2,Arg_3):|:1<=Arg_3 && 2<=Arg_2+Arg_3 && 1<=Arg_1+Arg_3 && 1<=Arg_0+Arg_3 && 1+Arg_0<=Arg_3 && 1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 of depth 1:

new bound:

Arg_2*Arg_3+Arg_3 {O(n^2)}

MPRF:

evalSimpleMultipleDepbb2in [Arg_3 ]
evalSimpleMultipleDepbb3in [Arg_3-Arg_0 ]
evalSimpleMultipleDepbbin [Arg_3-Arg_0 ]
evalSimpleMultipleDepbb1in [Arg_3-Arg_0 ]

MPRF for transition 4:evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbb1in(Arg_0,Arg_1,Arg_2,Arg_3):|:1<=Arg_2 && 1<=Arg_1+Arg_2 && 1+Arg_1<=Arg_2 && 1<=Arg_0+Arg_2 && 0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_0+1<=Arg_3 of depth 1:

new bound:

Arg_2*Arg_3+Arg_3 {O(n^2)}

MPRF:

evalSimpleMultipleDepbb2in [Arg_3 ]
evalSimpleMultipleDepbb3in [Arg_3-Arg_0 ]
evalSimpleMultipleDepbbin [Arg_3-Arg_0 ]
evalSimpleMultipleDepbb1in [Arg_3-Arg_0-1 ]

knowledge_propagation leads to new time bound Arg_2*Arg_3+Arg_2+Arg_3+1 {O(n^2)} for transition 2:evalSimpleMultipleDepbb3in(Arg_0,Arg_1,Arg_2,Arg_3) -> evalSimpleMultipleDepbbin(Arg_0,Arg_1,Arg_2,Arg_3):|:0<=Arg_1 && 0<=Arg_0+Arg_1 && 0<=Arg_0 && Arg_1+1<=Arg_2

All Bounds

Timebounds

Overall timebound:3*Arg_2*Arg_3+3*Arg_2+3*Arg_3+5 {O(n^2)}
6: evalSimpleMultipleDepbb1in->evalSimpleMultipleDepbb3in: Arg_2*Arg_3+Arg_3 {O(n^2)}
7: evalSimpleMultipleDepbb2in->evalSimpleMultipleDepbb3in: Arg_2 {O(n)}
2: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepbbin: Arg_2*Arg_3+Arg_2+Arg_3+1 {O(n^2)}
3: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepreturnin: 1 {O(1)}
4: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb1in: Arg_2*Arg_3+Arg_3 {O(n^2)}
5: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb2in: Arg_2 {O(n)}
1: evalSimpleMultipleDepentryin->evalSimpleMultipleDepbb3in: 1 {O(1)}
8: evalSimpleMultipleDepreturnin->evalSimpleMultipleDepstop: 1 {O(1)}
0: evalSimpleMultipleDepstart->evalSimpleMultipleDepentryin: 1 {O(1)}

Costbounds

Overall costbound: 3*Arg_2*Arg_3+3*Arg_2+3*Arg_3+5 {O(n^2)}
6: evalSimpleMultipleDepbb1in->evalSimpleMultipleDepbb3in: Arg_2*Arg_3+Arg_3 {O(n^2)}
7: evalSimpleMultipleDepbb2in->evalSimpleMultipleDepbb3in: Arg_2 {O(n)}
2: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepbbin: Arg_2*Arg_3+Arg_2+Arg_3+1 {O(n^2)}
3: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepreturnin: 1 {O(1)}
4: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb1in: Arg_2*Arg_3+Arg_3 {O(n^2)}
5: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb2in: Arg_2 {O(n)}
1: evalSimpleMultipleDepentryin->evalSimpleMultipleDepbb3in: 1 {O(1)}
8: evalSimpleMultipleDepreturnin->evalSimpleMultipleDepstop: 1 {O(1)}
0: evalSimpleMultipleDepstart->evalSimpleMultipleDepentryin: 1 {O(1)}

Sizebounds

6: evalSimpleMultipleDepbb1in->evalSimpleMultipleDepbb3in, Arg_0: Arg_2*Arg_3+Arg_3 {O(n^2)}
6: evalSimpleMultipleDepbb1in->evalSimpleMultipleDepbb3in, Arg_1: Arg_2 {O(n)}
6: evalSimpleMultipleDepbb1in->evalSimpleMultipleDepbb3in, Arg_2: Arg_2 {O(n)}
6: evalSimpleMultipleDepbb1in->evalSimpleMultipleDepbb3in, Arg_3: Arg_3 {O(n)}
7: evalSimpleMultipleDepbb2in->evalSimpleMultipleDepbb3in, Arg_0: 0 {O(1)}
7: evalSimpleMultipleDepbb2in->evalSimpleMultipleDepbb3in, Arg_1: Arg_2 {O(n)}
7: evalSimpleMultipleDepbb2in->evalSimpleMultipleDepbb3in, Arg_2: Arg_2 {O(n)}
7: evalSimpleMultipleDepbb2in->evalSimpleMultipleDepbb3in, Arg_3: Arg_3 {O(n)}
2: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepbbin, Arg_0: Arg_2*Arg_3+Arg_3 {O(n^2)}
2: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepbbin, Arg_1: Arg_2 {O(n)}
2: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepbbin, Arg_2: Arg_2 {O(n)}
2: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepbbin, Arg_3: Arg_3 {O(n)}
3: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepreturnin, Arg_0: 0 {O(1)}
3: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepreturnin, Arg_1: Arg_2 {O(n)}
3: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepreturnin, Arg_2: 2*Arg_2 {O(n)}
3: evalSimpleMultipleDepbb3in->evalSimpleMultipleDepreturnin, Arg_3: 2*Arg_3 {O(n)}
4: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb1in, Arg_0: Arg_2*Arg_3+Arg_3 {O(n^2)}
4: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb1in, Arg_1: Arg_2 {O(n)}
4: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb1in, Arg_2: Arg_2 {O(n)}
4: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb1in, Arg_3: Arg_3 {O(n)}
5: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb2in, Arg_0: Arg_2*Arg_3+Arg_3 {O(n^2)}
5: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb2in, Arg_1: Arg_2 {O(n)}
5: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb2in, Arg_2: Arg_2 {O(n)}
5: evalSimpleMultipleDepbbin->evalSimpleMultipleDepbb2in, Arg_3: Arg_3 {O(n)}
1: evalSimpleMultipleDepentryin->evalSimpleMultipleDepbb3in, Arg_0: 0 {O(1)}
1: evalSimpleMultipleDepentryin->evalSimpleMultipleDepbb3in, Arg_1: 0 {O(1)}
1: evalSimpleMultipleDepentryin->evalSimpleMultipleDepbb3in, Arg_2: Arg_2 {O(n)}
1: evalSimpleMultipleDepentryin->evalSimpleMultipleDepbb3in, Arg_3: Arg_3 {O(n)}
8: evalSimpleMultipleDepreturnin->evalSimpleMultipleDepstop, Arg_0: 0 {O(1)}
8: evalSimpleMultipleDepreturnin->evalSimpleMultipleDepstop, Arg_1: Arg_2 {O(n)}
8: evalSimpleMultipleDepreturnin->evalSimpleMultipleDepstop, Arg_2: 2*Arg_2 {O(n)}
8: evalSimpleMultipleDepreturnin->evalSimpleMultipleDepstop, Arg_3: 2*Arg_3 {O(n)}
0: evalSimpleMultipleDepstart->evalSimpleMultipleDepentryin, Arg_0: Arg_0 {O(n)}
0: evalSimpleMultipleDepstart->evalSimpleMultipleDepentryin, Arg_1: Arg_1 {O(n)}
0: evalSimpleMultipleDepstart->evalSimpleMultipleDepentryin, Arg_2: Arg_2 {O(n)}
0: evalSimpleMultipleDepstart->evalSimpleMultipleDepentryin, Arg_3: Arg_3 {O(n)}