Initial Problem

Start: f3
Program_Vars: Arg_0, Arg_1, Arg_2
Temp_Vars: D
Locations: f1, f2, f3, f300
Transitions:
0:f2(Arg_0,Arg_1,Arg_2) -> f2(Arg_0-1,Arg_1,Arg_2):|:31<=Arg_0
1:f2(Arg_0,Arg_1,Arg_2) -> f300(Arg_0,Arg_1-1,Arg_2):|:Arg_0<=30
4:f3(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):|:Arg_1<=20
2:f300(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,Arg_1,Arg_2):|:21<=Arg_1

Preprocessing

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

Found invariant 21<=Arg_1 for location f2

Found invariant Arg_1<=20 for location f1

Problem after Preprocessing

Start: f3
Program_Vars: Arg_0, Arg_1
Temp_Vars:
Locations: f1, f2, f3, f300
Transitions:
10:f2(Arg_0,Arg_1) -> f2(Arg_0-1,Arg_1):|:21<=Arg_1 && 31<=Arg_0
11:f2(Arg_0,Arg_1) -> f300(Arg_0,Arg_1-1):|:21<=Arg_1 && Arg_0<=30
12:f3(Arg_0,Arg_1) -> f300(Arg_0,Arg_1)
14:f300(Arg_0,Arg_1) -> f1(Arg_0,Arg_1):|:Arg_1<=20
13:f300(Arg_0,Arg_1) -> f2(Arg_0,Arg_1):|:21<=Arg_1

MPRF for transition 10:f2(Arg_0,Arg_1) -> f2(Arg_0-1,Arg_1):|:21<=Arg_1 && 31<=Arg_0 of depth 1:

new bound:

Arg_0 {O(n)}

MPRF:

f300 [Arg_0 ]
f2 [Arg_0 ]

MPRF for transition 11:f2(Arg_0,Arg_1) -> f300(Arg_0,Arg_1-1):|:21<=Arg_1 && Arg_0<=30 of depth 1:

new bound:

Arg_1+20 {O(n)}

MPRF:

f300 [Arg_1-20 ]
f2 [Arg_1-20 ]

MPRF for transition 13:f300(Arg_0,Arg_1) -> f2(Arg_0,Arg_1):|:21<=Arg_1 of depth 1:

new bound:

Arg_1+20 {O(n)}

MPRF:

f300 [Arg_1-20 ]
f2 [Arg_1-21 ]

All Bounds

Timebounds

Overall timebound:2*Arg_1+Arg_0+42 {O(n)}
10: f2->f2: Arg_0 {O(n)}
11: f2->f300: Arg_1+20 {O(n)}
12: f3->f300: 1 {O(1)}
13: f300->f2: Arg_1+20 {O(n)}
14: f300->f1: 1 {O(1)}

Costbounds

Overall costbound: 2*Arg_1+Arg_0+42 {O(n)}
10: f2->f2: Arg_0 {O(n)}
11: f2->f300: Arg_1+20 {O(n)}
12: f3->f300: 1 {O(1)}
13: f300->f2: Arg_1+20 {O(n)}
14: f300->f1: 1 {O(1)}

Sizebounds

10: f2->f2, Arg_0: Arg_0 {O(n)}
10: f2->f2, Arg_1: Arg_1 {O(n)}
11: f2->f300, Arg_0: Arg_0 {O(n)}
11: f2->f300, Arg_1: Arg_1 {O(n)}
12: f3->f300, Arg_0: Arg_0 {O(n)}
12: f3->f300, Arg_1: Arg_1 {O(n)}
13: f300->f2, Arg_0: Arg_0 {O(n)}
13: f300->f2, Arg_1: Arg_1 {O(n)}
14: f300->f1, Arg_0: 2*Arg_0 {O(n)}
14: f300->f1, Arg_1: 2*Arg_1 {O(n)}