Initial Problem

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

Preprocessing

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

Found invariant 0<=Arg_0 for location f1

Problem after Preprocessing

Start: f2
Program_Vars: Arg_0, Arg_1
Temp_Vars:
Locations: f1, f2, f300
Transitions:
15:f2(Arg_0,Arg_1) -> f300(Arg_0,Arg_1)
19:f300(Arg_0,Arg_1) -> f1(Arg_0,Arg_1):|:0<=Arg_0
16:f300(Arg_0,Arg_1) -> f300(Arg_0-99,0):|:Arg_0+1<=0 && Arg_1+1<=0 && 0<=1+Arg_1
17:f300(Arg_0,Arg_1) -> f300(1+Arg_0,1+Arg_1):|:Arg_0+1<=0 && 0<=Arg_1
18:f300(Arg_0,Arg_1) -> f300(1+Arg_0,1+Arg_1):|:Arg_0+1<=0 && 2+Arg_1<=0

MPRF for transition 16:f300(Arg_0,Arg_1) -> f300(Arg_0-99,0):|:Arg_0+1<=0 && Arg_1+1<=0 && 0<=1+Arg_1 of depth 1:

new bound:

Arg_1 {O(n)}

MPRF:

f300 [-Arg_1 ]

MPRF for transition 18:f300(Arg_0,Arg_1) -> f300(1+Arg_0,1+Arg_1):|:Arg_0+1<=0 && 2+Arg_1<=0 of depth 1:

new bound:

Arg_1 {O(n)}

MPRF:

f300 [-Arg_1 ]

MPRF for transition 17:f300(Arg_0,Arg_1) -> f300(1+Arg_0,1+Arg_1):|:Arg_0+1<=0 && 0<=Arg_1 of depth 1:

new bound:

2*Arg_0*Arg_1+198*Arg_1+Arg_0 {O(n^2)}

MPRF:

f300 [-Arg_0 ]

Analysing control-flow refined program

Cut unsatisfiable transition 94: n_f300___1->f1

Cut unsatisfiable transition 97: n_f300___4->f1

Found invariant Arg_1<=1 && 98+Arg_0+Arg_1<=0 && 1<=Arg_1 && 100+Arg_0<=Arg_1 && 99+Arg_0<=0 for location n_f300___1

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

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

Found invariant 0<=Arg_0 for location f1

Found invariant Arg_1<=0 && 100+Arg_0+Arg_1<=0 && 0<=Arg_1 && 100+Arg_0<=Arg_1 && 100+Arg_0<=0 for location n_f300___4

MPRF for transition 75:n_f300___2(Arg_0,Arg_1) -> n_f300___2(Arg_0+1,Arg_1+1):|:1+Arg_1<=0 && 1+Arg_0+Arg_1<=0 && Arg_0<=0 && 1+Arg_1<=0 && Arg_0<=0 && 2+Arg_1<=0 && 1+Arg_0<=0 of depth 1:

new bound:

Arg_0+1 {O(n)}

MPRF:

n_f300___2 [1-Arg_0 ]

MPRF for transition 77:n_f300___3(Arg_0,Arg_1) -> n_f300___3(Arg_0+1,Arg_1+1):|:1<=Arg_1 && 1+Arg_0<=Arg_1 && Arg_0<=0 && 0<=Arg_1 && 1<=Arg_1 && Arg_0<=0 && 0<=Arg_1 && 1+Arg_0<=0 of depth 1:

new bound:

4*Arg_0+299 {O(n)}

MPRF:

n_f300___3 [1-Arg_0 ]

CFR: Improvement to new bound with the following program:

new bound:

5*Arg_0+300 {O(n)}

cfr-program:

Start: f2
Program_Vars: Arg_0, Arg_1
Temp_Vars:
Locations: f1, f2, f300, n_f300___1, n_f300___2, n_f300___3, n_f300___4
Transitions:
15:f2(Arg_0,Arg_1) -> f300(Arg_0,Arg_1)
19:f300(Arg_0,Arg_1) -> f1(Arg_0,Arg_1):|:0<=Arg_0
79:f300(Arg_0,Arg_1) -> n_f300___2(Arg_0+1,Arg_1+1):|:2+Arg_1<=0 && 1+Arg_0<=0
80:f300(Arg_0,Arg_1) -> n_f300___3(Arg_0+1,Arg_1+1):|:0<=Arg_1 && 1+Arg_0<=0
81:f300(Arg_0,Arg_1) -> n_f300___4(Arg_0-99,0):|:1+Arg_0<=0 && Arg_1+1<=0 && 0<=1+Arg_1
74:n_f300___1(Arg_0,Arg_1) -> n_f300___3(Arg_0+1,Arg_1+1):|:Arg_1<=1 && 98+Arg_0+Arg_1<=0 && 1<=Arg_1 && 100+Arg_0<=Arg_1 && 99+Arg_0<=0 && 1+Arg_0<=0 && 0<=Arg_1 && 0<=Arg_1 && 1+Arg_0<=0 && 1<=Arg_1 && Arg_0<=0 && 0<=Arg_1 && 1+Arg_0<=0
95:n_f300___2(Arg_0,Arg_1) -> f1(Arg_0,Arg_1):|:1+Arg_1<=0 && 1+Arg_0+Arg_1<=0 && Arg_0<=0 && 0<=Arg_0
75:n_f300___2(Arg_0,Arg_1) -> n_f300___2(Arg_0+1,Arg_1+1):|:1+Arg_1<=0 && 1+Arg_0+Arg_1<=0 && Arg_0<=0 && 1+Arg_1<=0 && Arg_0<=0 && 2+Arg_1<=0 && 1+Arg_0<=0
76:n_f300___2(Arg_0,Arg_1) -> n_f300___4(Arg_0-99,0):|:1+Arg_1<=0 && 1+Arg_0+Arg_1<=0 && Arg_0<=0 && 1+Arg_1<=0 && Arg_0<=0 && 1+Arg_0<=0 && Arg_1+1<=0 && 0<=1+Arg_1
96:n_f300___3(Arg_0,Arg_1) -> f1(Arg_0,Arg_1):|:1<=Arg_1 && 1+Arg_0<=Arg_1 && Arg_0<=0 && 0<=Arg_0
77:n_f300___3(Arg_0,Arg_1) -> n_f300___3(Arg_0+1,Arg_1+1):|:1<=Arg_1 && 1+Arg_0<=Arg_1 && Arg_0<=0 && 0<=Arg_1 && 1<=Arg_1 && Arg_0<=0 && 0<=Arg_1 && 1+Arg_0<=0
78:n_f300___4(Arg_0,Arg_1) -> n_f300___1(Arg_0+1,Arg_1+1):|:Arg_1<=0 && 100+Arg_0+Arg_1<=0 && 0<=Arg_1 && 100+Arg_0<=Arg_1 && 100+Arg_0<=0 && 1+Arg_0<=0 && 0<=Arg_1 && Arg_1<=0 && 0<=Arg_1 && 100+Arg_0<=0 && 0<=Arg_1 && 1+Arg_0<=0 && 0<=Arg_1 && 1+Arg_0<=0

All Bounds

Timebounds

Overall timebound:5*Arg_0+310 {O(n)}
15: f2->f300: 1 {O(1)}
19: f300->f1: 1 {O(1)}
79: f300->n_f300___2: 1 {O(1)}
80: f300->n_f300___3: 1 {O(1)}
81: f300->n_f300___4: 1 {O(1)}
74: n_f300___1->n_f300___3: 1 {O(1)}
75: n_f300___2->n_f300___2: Arg_0+1 {O(n)}
76: n_f300___2->n_f300___4: 1 {O(1)}
95: n_f300___2->f1: 1 {O(1)}
77: n_f300___3->n_f300___3: 4*Arg_0+299 {O(n)}
96: n_f300___3->f1: 1 {O(1)}
78: n_f300___4->n_f300___1: 1 {O(1)}

Costbounds

Overall costbound: 5*Arg_0+310 {O(n)}
15: f2->f300: 1 {O(1)}
19: f300->f1: 1 {O(1)}
79: f300->n_f300___2: 1 {O(1)}
80: f300->n_f300___3: 1 {O(1)}
81: f300->n_f300___4: 1 {O(1)}
74: n_f300___1->n_f300___3: 1 {O(1)}
75: n_f300___2->n_f300___2: Arg_0+1 {O(n)}
76: n_f300___2->n_f300___4: 1 {O(1)}
95: n_f300___2->f1: 1 {O(1)}
77: n_f300___3->n_f300___3: 4*Arg_0+299 {O(n)}
96: n_f300___3->f1: 1 {O(1)}
78: n_f300___4->n_f300___1: 1 {O(1)}

Sizebounds

15: f2->f300, Arg_0: Arg_0 {O(n)}
15: f2->f300, Arg_1: Arg_1 {O(n)}
19: f300->f1, Arg_0: Arg_0 {O(n)}
19: f300->f1, Arg_1: Arg_1 {O(n)}
79: f300->n_f300___2, Arg_0: Arg_0 {O(n)}
79: f300->n_f300___2, Arg_1: Arg_1 {O(n)}
80: f300->n_f300___3, Arg_0: Arg_0 {O(n)}
80: f300->n_f300___3, Arg_1: Arg_1+1 {O(n)}
81: f300->n_f300___4, Arg_0: Arg_0+99 {O(n)}
81: f300->n_f300___4, Arg_1: 0 {O(1)}
74: n_f300___1->n_f300___3, Arg_0: 3*Arg_0+297 {O(n)}
74: n_f300___1->n_f300___3, Arg_1: 2 {O(1)}
75: n_f300___2->n_f300___2, Arg_0: Arg_0 {O(n)}
75: n_f300___2->n_f300___2, Arg_1: Arg_1 {O(n)}
76: n_f300___2->n_f300___4, Arg_0: 2*Arg_0+198 {O(n)}
76: n_f300___2->n_f300___4, Arg_1: 0 {O(1)}
95: n_f300___2->f1, Arg_0: 0 {O(1)}
95: n_f300___2->f1, Arg_1: 2*Arg_1 {O(n)}
77: n_f300___3->n_f300___3, Arg_0: 4*Arg_0+297 {O(n)}
77: n_f300___3->n_f300___3, Arg_1: 4*Arg_0+Arg_1+302 {O(n)}
96: n_f300___3->f1, Arg_0: 0 {O(1)}
96: n_f300___3->f1, Arg_1: 2*Arg_1+4*Arg_0+303 {O(n)}
78: n_f300___4->n_f300___1, Arg_0: 3*Arg_0+297 {O(n)}
78: n_f300___4->n_f300___1, Arg_1: 1 {O(1)}