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
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
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
new bound:
Arg_0 {O(n)}
MPRF:
f300 [Arg_0 ]
f2 [Arg_0 ]
new bound:
Arg_1+20 {O(n)}
MPRF:
f300 [Arg_1-20 ]
f2 [Arg_1-20 ]
new bound:
Arg_1+20 {O(n)}
MPRF:
f300 [Arg_1-20 ]
f2 [Arg_1-21 ]
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)}
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)}
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)}