Initial Problem

Start: f2
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3
Temp_Vars: E, F
Locations: f1, f2, f300
Transitions:
1:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f1(1+Arg_0,Arg_1,E,Arg_3):|:1<=E && 1+Arg_0<=Arg_1
2:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f1(1+Arg_0,Arg_1,E,Arg_3):|:E+1<=0 && 1+Arg_0<=Arg_1
3:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f1(Arg_0,Arg_1,0,Arg_3):|:1+Arg_0<=Arg_1
4:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f1(1+Arg_0,Arg_0,E,Arg_3):|:1<=E && F<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0
5:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f1(1+Arg_0,Arg_0,E,Arg_3):|:E+1<=0 && F<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0
6:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f1(Arg_0,Arg_0,0,Arg_3):|:E<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0
7:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f300(Arg_0,Arg_1,Arg_2,E):|:Arg_1<=Arg_0 && Arg_1+1<=Arg_0
8:f1(Arg_0,Arg_1,Arg_2,Arg_3) -> f300(Arg_0,Arg_1,Arg_2,E):|:Arg_1<=Arg_0 && Arg_0+1<=Arg_1
0:f2(Arg_0,Arg_1,Arg_2,Arg_3) -> f1(Arg_0,Arg_1,Arg_2,Arg_3)

Preprocessing

Cut unsatisfiable transition 8: f1->f300

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

Found invariant 1+Arg_1<=Arg_0 for location f300

Problem after Preprocessing

Start: f2
Program_Vars: Arg_0, Arg_1
Temp_Vars: E, F
Locations: f1, f2, f300
Transitions:
24:f1(Arg_0,Arg_1) -> f1(1+Arg_0,Arg_1):|:1<=E && 1+Arg_0<=Arg_1
25:f1(Arg_0,Arg_1) -> f1(1+Arg_0,Arg_1):|:E+1<=0 && 1+Arg_0<=Arg_1
26:f1(Arg_0,Arg_1) -> f1(Arg_0,Arg_1):|:1+Arg_0<=Arg_1
27:f1(Arg_0,Arg_1) -> f1(1+Arg_0,Arg_0):|:1<=E && F<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0
28:f1(Arg_0,Arg_1) -> f1(1+Arg_0,Arg_0):|:E+1<=0 && F<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0
29:f1(Arg_0,Arg_1) -> f1(Arg_0,Arg_0):|:E<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0
30:f1(Arg_0,Arg_1) -> f300(Arg_0,Arg_1):|:Arg_1<=Arg_0 && Arg_1+1<=Arg_0
31:f2(Arg_0,Arg_1) -> f1(Arg_0,Arg_1)

MPRF for transition 24:f1(Arg_0,Arg_1) -> f1(1+Arg_0,Arg_1):|:1<=E && 1+Arg_0<=Arg_1 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f1 [Arg_1-Arg_0 ]

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

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f1 [Arg_1-Arg_0 ]

MPRF for transition 27:f1(Arg_0,Arg_1) -> f1(1+Arg_0,Arg_0):|:1<=E && F<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0 of depth 1:

new bound:

Arg_0+Arg_1+1 {O(n)}

MPRF:

f1 [Arg_1+1-Arg_0 ]

MPRF for transition 28:f1(Arg_0,Arg_1) -> f1(1+Arg_0,Arg_0):|:E+1<=0 && F<=Arg_1 && Arg_0<=Arg_1 && Arg_1<=Arg_0 of depth 1:

new bound:

Arg_0+Arg_1+1 {O(n)}

MPRF:

f1 [Arg_1+1-Arg_0 ]

All Bounds

Timebounds

Overall timebound:inf {Infinity}
24: f1->f1: Arg_0+Arg_1 {O(n)}
25: f1->f1: Arg_0+Arg_1 {O(n)}
26: f1->f1: inf {Infinity}
27: f1->f1: Arg_0+Arg_1+1 {O(n)}
28: f1->f1: Arg_0+Arg_1+1 {O(n)}
29: f1->f1: inf {Infinity}
30: f1->f300: 1 {O(1)}
31: f2->f1: 1 {O(1)}

Costbounds

Overall costbound: inf {Infinity}
24: f1->f1: Arg_0+Arg_1 {O(n)}
25: f1->f1: Arg_0+Arg_1 {O(n)}
26: f1->f1: inf {Infinity}
27: f1->f1: Arg_0+Arg_1+1 {O(n)}
28: f1->f1: Arg_0+Arg_1+1 {O(n)}
29: f1->f1: inf {Infinity}
30: f1->f300: 1 {O(1)}
31: f2->f1: 1 {O(1)}

Sizebounds

24: f1->f1, Arg_0: 2*Arg_1+5*Arg_0 {O(n)}
24: f1->f1, Arg_1: 3*Arg_1 {O(n)}
25: f1->f1, Arg_0: 2*Arg_1+5*Arg_0 {O(n)}
25: f1->f1, Arg_1: 3*Arg_1 {O(n)}
26: f1->f1, Arg_0: 2*Arg_1+5*Arg_0 {O(n)}
26: f1->f1, Arg_1: 3*Arg_1 {O(n)}
27: f1->f1, Arg_0: 22*Arg_0+8*Arg_1+4 {O(n)}
27: f1->f1, Arg_1: 22*Arg_0+8*Arg_1 {O(n)}
28: f1->f1, Arg_0: 22*Arg_0+8*Arg_1+4 {O(n)}
28: f1->f1, Arg_1: 22*Arg_0+8*Arg_1 {O(n)}
29: f1->f1, Arg_0: 11*Arg_0+4*Arg_1 {O(n)}
29: f1->f1, Arg_1: 22*Arg_0+8*Arg_1 {O(n)}
30: f1->f300, Arg_0: 16*Arg_1+45*Arg_0+8 {O(n)}
30: f1->f300, Arg_1: 17*Arg_1+44*Arg_0 {O(n)}
31: f2->f1, Arg_0: Arg_0 {O(n)}
31: f2->f1, Arg_1: Arg_1 {O(n)}