Start: f2
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3, Arg_4
Temp_Vars: F
Locations: f1, f2, f300
Transitions:
0:f2(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4) -> f1(Arg_0,F,Arg_2,Arg_3,Arg_4):|:Arg_0<=1
1:f2(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4) -> f300(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4):|:2<=Arg_0 && 2<=Arg_2
2:f300(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4) -> f1(Arg_0,F,Arg_2,Arg_3,Arg_4):|:0<=1+Arg_3
3:f300(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4) -> f300(Arg_0,Arg_1,Arg_2,1+Arg_3,1+Arg_4):|:0<=Arg_4 && 2+Arg_3<=0
4:f300(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4) -> f300(Arg_0,Arg_1,Arg_2,1+Arg_3,1+Arg_4):|:2+Arg_4<=0 && 2+Arg_3<=0
Eliminate variables {F,Arg_1} that do not contribute to the problem
Found invariant 2<=Arg_2 && 4<=Arg_0+Arg_2 && 2<=Arg_0 for location f300
Start: f2
Program_Vars: Arg_0, Arg_2, Arg_3, Arg_4
Temp_Vars:
Locations: f1, f2, f300
Transitions:
13:f2(Arg_0,Arg_2,Arg_3,Arg_4) -> f1(Arg_0,Arg_2,Arg_3,Arg_4):|:Arg_0<=1
14:f2(Arg_0,Arg_2,Arg_3,Arg_4) -> f300(Arg_0,Arg_2,Arg_3,Arg_4):|:2<=Arg_0 && 2<=Arg_2
15:f300(Arg_0,Arg_2,Arg_3,Arg_4) -> f1(Arg_0,Arg_2,Arg_3,Arg_4):|:2<=Arg_2 && 4<=Arg_0+Arg_2 && 2<=Arg_0 && 0<=1+Arg_3
16:f300(Arg_0,Arg_2,Arg_3,Arg_4) -> f300(Arg_0,Arg_2,1+Arg_3,1+Arg_4):|:2<=Arg_2 && 4<=Arg_0+Arg_2 && 2<=Arg_0 && 0<=Arg_4 && 2+Arg_3<=0
17:f300(Arg_0,Arg_2,Arg_3,Arg_4) -> f300(Arg_0,Arg_2,1+Arg_3,1+Arg_4):|:2<=Arg_2 && 4<=Arg_0+Arg_2 && 2<=Arg_0 && 2+Arg_4<=0 && 2+Arg_3<=0
new bound:
Arg_3 {O(n)}
MPRF:
f300 [-Arg_3 ]
new bound:
Arg_3 {O(n)}
MPRF:
f300 [-Arg_3 ]
Overall timebound:2*Arg_3+3 {O(n)}
13: f2->f1: 1 {O(1)}
14: f2->f300: 1 {O(1)}
15: f300->f1: 1 {O(1)}
16: f300->f300: Arg_3 {O(n)}
17: f300->f300: Arg_3 {O(n)}
Overall costbound: 2*Arg_3+3 {O(n)}
13: f2->f1: 1 {O(1)}
14: f2->f300: 1 {O(1)}
15: f300->f1: 1 {O(1)}
16: f300->f300: Arg_3 {O(n)}
17: f300->f300: Arg_3 {O(n)}
13: f2->f1, Arg_0: Arg_0 {O(n)}
13: f2->f1, Arg_2: Arg_2 {O(n)}
13: f2->f1, Arg_3: Arg_3 {O(n)}
13: f2->f1, Arg_4: Arg_4 {O(n)}
14: f2->f300, Arg_0: Arg_0 {O(n)}
14: f2->f300, Arg_2: Arg_2 {O(n)}
14: f2->f300, Arg_3: Arg_3 {O(n)}
14: f2->f300, Arg_4: Arg_4 {O(n)}
15: f300->f1, Arg_0: 3*Arg_0 {O(n)}
15: f300->f1, Arg_2: 3*Arg_2 {O(n)}
15: f300->f1, Arg_3: 3*Arg_3 {O(n)}
15: f300->f1, Arg_4: 3*Arg_4+Arg_3 {O(n)}
16: f300->f300, Arg_0: Arg_0 {O(n)}
16: f300->f300, Arg_2: Arg_2 {O(n)}
16: f300->f300, Arg_3: Arg_3 {O(n)}
16: f300->f300, Arg_4: Arg_3+Arg_4 {O(n)}
17: f300->f300, Arg_0: Arg_0 {O(n)}
17: f300->f300, Arg_2: Arg_2 {O(n)}
17: f300->f300, Arg_3: Arg_3 {O(n)}
17: f300->f300, Arg_4: Arg_4 {O(n)}