Initial Problem

Start: f3
Program_Vars: Arg_0, Arg_1, Arg_2
Temp_Vars: D
Locations: f2, f3, f300
Transitions:
1:f2(Arg_0,Arg_1,Arg_2) -> f2(Arg_0-1,D,Arg_2):|:1<=D && 0<=Arg_0
2:f2(Arg_0,Arg_1,Arg_2) -> f2(Arg_0-1,D,Arg_2):|:D+1<=0 && 0<=Arg_0
3:f2(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,0,Arg_2):|:0<=Arg_0
4:f2(Arg_0,Arg_1,Arg_2) -> f300(Arg_0,Arg_1,D):|:Arg_0+1<=0
0:f3(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,Arg_1,Arg_2)

Preprocessing

Eliminate variables {Arg_1,Arg_2} that do not contribute to the problem

Found invariant 1+Arg_0<=0 for location f300

Problem after Preprocessing

Start: f3
Program_Vars: Arg_0
Temp_Vars: D
Locations: f2, f3, f300
Transitions:
10:f2(Arg_0) -> f2(Arg_0-1):|:1<=D && 0<=Arg_0
11:f2(Arg_0) -> f2(Arg_0-1):|:D+1<=0 && 0<=Arg_0
12:f2(Arg_0) -> f2(Arg_0):|:0<=Arg_0
13:f2(Arg_0) -> f300(Arg_0):|:Arg_0+1<=0
14:f3(Arg_0) -> f2(Arg_0)

MPRF for transition 10:f2(Arg_0) -> f2(Arg_0-1):|:1<=D && 0<=Arg_0 of depth 1:

new bound:

Arg_0+1 {O(n)}

MPRF:

f2 [Arg_0+1 ]

MPRF for transition 11:f2(Arg_0) -> f2(Arg_0-1):|:D+1<=0 && 0<=Arg_0 of depth 1:

new bound:

Arg_0+1 {O(n)}

MPRF:

f2 [Arg_0+1 ]

Analysing control-flow refined program

Cut unsatisfiable transition 84: n_f2___1->f300

Found invariant 0<=Arg_0 for location n_f2___1

Found invariant 1+Arg_0<=0 for location f300

Found invariant 0<=1+Arg_0 for location n_f2___2

MPRF for transition 63:n_f2___1(Arg_0) -> n_f2___2(Arg0_P):|:0<=Arg_0 && 0<=Arg_0 && 0<=Arg_0 && 0<=1+Arg_0 && 0<=Arg_0 && 0<=1+Arg_0 && 0<=Arg_0 && 0<=Arg_0 && 0<=1+Arg0_P && Arg_0<=Arg0_P+1 && 1+Arg0_P<=Arg_0 of depth 1:

new bound:

3*Arg_0+5 {O(n)}

MPRF:

n_f2___1 [Arg_0+1 ]
n_f2___2 [Arg_0+1 ]

MPRF for transition 64:n_f2___1(Arg_0) -> n_f2___2(Arg0_P):|:0<=Arg_0 && 0<=Arg_0 && 0<=Arg_0 && 0<=1+Arg_0 && 0<=Arg_0 && 0<=1+Arg_0 && 0<=Arg_0 && 0<=Arg_0 && 0<=1+Arg0_P && Arg_0<=Arg0_P+1 && 1+Arg0_P<=Arg_0 of depth 1:

new bound:

3*Arg_0+5 {O(n)}

MPRF:

n_f2___1 [Arg_0+1 ]
n_f2___2 [Arg_0+1 ]

MPRF for transition 65:n_f2___2(Arg_0) -> n_f2___1(Arg_0):|:0<=1+Arg_0 && 0<=1+Arg_0 && 0<=1+Arg_0 && 0<=Arg_0 of depth 1:

new bound:

3*Arg_0+7 {O(n)}

MPRF:

n_f2___1 [Arg_0+1 ]
n_f2___2 [Arg_0+2 ]

MPRF for transition 66:n_f2___2(Arg_0) -> n_f2___2(Arg0_P):|:0<=1+Arg_0 && 0<=1+Arg_0 && 0<=1+Arg_0 && 0<=1+Arg0_P && Arg_0<=Arg0_P+1 && 1+Arg0_P<=Arg_0 of depth 1:

new bound:

3*Arg_0+7 {O(n)}

MPRF:

n_f2___1 [Arg_0+1 ]
n_f2___2 [Arg_0+2 ]

MPRF for transition 67:n_f2___2(Arg_0) -> n_f2___2(Arg0_P):|:0<=1+Arg_0 && 0<=1+Arg_0 && 0<=1+Arg_0 && 0<=1+Arg0_P && Arg_0<=Arg0_P+1 && 1+Arg0_P<=Arg_0 of depth 1:

new bound:

3*Arg_0+7 {O(n)}

MPRF:

n_f2___1 [Arg_0+1 ]
n_f2___2 [Arg_0+2 ]

CFR did not improve the program. Rolling back

All Bounds

Timebounds

Overall timebound:inf {Infinity}
10: f2->f2: Arg_0+1 {O(n)}
11: f2->f2: Arg_0+1 {O(n)}
12: f2->f2: inf {Infinity}
13: f2->f300: 1 {O(1)}
14: f3->f2: 1 {O(1)}

Costbounds

Overall costbound: inf {Infinity}
10: f2->f2: Arg_0+1 {O(n)}
11: f2->f2: Arg_0+1 {O(n)}
12: f2->f2: inf {Infinity}
13: f2->f300: 1 {O(1)}
14: f3->f2: 1 {O(1)}

Sizebounds

10: f2->f2, Arg_0: 3*Arg_0+1 {O(n)}
11: f2->f2, Arg_0: 3*Arg_0+1 {O(n)}
12: f2->f2, Arg_0: 3*Arg_0+1 {O(n)}
13: f2->f300, Arg_0: 7*Arg_0+2 {O(n)}
14: f3->f2, Arg_0: Arg_0 {O(n)}