Initial Problem

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

Preprocessing

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

Found invariant 2+Arg_2<=Arg_1 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1 for location f2

Found invariant Arg_0<=Arg_2 for location f1

Found invariant 2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 for location f4

Problem after Preprocessing

Start: f5
Program_Vars: Arg_0, Arg_1, Arg_2
Temp_Vars: F
Locations: f1, f2, f300, f4, f5
Transitions:
29:f2(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1 && 1+Arg_0<=Arg_1
27:f2(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1 && 1<=F && 1+Arg_0<=Arg_1
28:f2(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1 && F+1<=0 && 1+Arg_0<=Arg_1
30:f300(Arg_0,Arg_1,Arg_2) -> f1(Arg_0,Arg_1,Arg_2):|:Arg_0<=Arg_2
34:f300(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,Arg_1,Arg_2):|:1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1
31:f300(Arg_0,Arg_1,Arg_2) -> f300(Arg_0,Arg_1,1+Arg_2):|:1+Arg_2<=Arg_0 && Arg_1<=Arg_0
32:f300(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:1<=F && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1
33:f300(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:F+1<=0 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1
38:f4(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 && 1+Arg_0<=Arg_1
35:f4(Arg_0,Arg_1,Arg_2) -> f300(Arg_0,Arg_1,1+Arg_2):|:2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 && Arg_1<=Arg_0
36:f4(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 && 1<=F && 1+Arg_0<=Arg_1
37:f4(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 && F+1<=0 && 1+Arg_0<=Arg_1
39:f5(Arg_0,Arg_1,Arg_2) -> f300(Arg_0,Arg_1,Arg_2)

knowledge_propagation leads to new time bound 1 {O(1)} for transition 32:f300(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:1<=F && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1

knowledge_propagation leads to new time bound 1 {O(1)} for transition 33:f300(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:F+1<=0 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1

knowledge_propagation leads to new time bound 1 {O(1)} for transition 34:f300(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,Arg_1,Arg_2):|:1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1

MPRF for transition 27:f2(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1 && 1<=F && 1+Arg_0<=Arg_1 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f300 [Arg_1-Arg_0 ]
f4 [Arg_1-Arg_0 ]
f2 [Arg_1-Arg_0 ]

MPRF for transition 28:f2(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 1+Arg_2<=Arg_0 && 1+Arg_0<=Arg_1 && F+1<=0 && 1+Arg_0<=Arg_1 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f300 [Arg_1-Arg_0 ]
f4 [Arg_1-Arg_0 ]
f2 [Arg_1-Arg_0 ]

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

new bound:

3*Arg_1+4*Arg_2+Arg_0 {O(n)}

MPRF:

f300 [Arg_0-Arg_2 ]
f4 [Arg_1-Arg_2 ]
f2 [Arg_1-Arg_2 ]

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

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f300 [Arg_1-Arg_0 ]
f4 [1 ]
f2 [1 ]

MPRF for transition 36:f4(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 && 1<=F && 1+Arg_0<=Arg_1 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f300 [Arg_1-Arg_0 ]
f4 [Arg_1+1-Arg_0 ]
f2 [Arg_1-Arg_0 ]

MPRF for transition 37:f4(Arg_0,Arg_1,Arg_2) -> f4(1+Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 && F+1<=0 && 1+Arg_0<=Arg_1 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f300 [Arg_1-Arg_0 ]
f4 [Arg_1+1-Arg_0 ]
f2 [Arg_1-Arg_0 ]

MPRF for transition 38:f4(Arg_0,Arg_1,Arg_2) -> f2(Arg_0,Arg_1,Arg_2):|:2+Arg_2<=Arg_1 && 2+Arg_2<=Arg_0 && Arg_0<=Arg_1 && 1+Arg_0<=Arg_1 of depth 1:

new bound:

Arg_0+Arg_1 {O(n)}

MPRF:

f300 [Arg_1-Arg_0 ]
f4 [Arg_1+1-Arg_0 ]
f2 [Arg_1-Arg_0 ]

All Bounds

Timebounds

Overall timebound:inf {Infinity}
27: f2->f4: Arg_0+Arg_1 {O(n)}
28: f2->f4: Arg_0+Arg_1 {O(n)}
29: f2->f2: inf {Infinity}
30: f300->f1: 1 {O(1)}
31: f300->f300: 3*Arg_1+4*Arg_2+Arg_0 {O(n)}
32: f300->f4: 1 {O(1)}
33: f300->f4: 1 {O(1)}
34: f300->f2: 1 {O(1)}
35: f4->f300: Arg_0+Arg_1 {O(n)}
36: f4->f4: Arg_0+Arg_1 {O(n)}
37: f4->f4: Arg_0+Arg_1 {O(n)}
38: f4->f2: Arg_0+Arg_1 {O(n)}
39: f5->f300: 1 {O(1)}

Costbounds

Overall costbound: inf {Infinity}
27: f2->f4: Arg_0+Arg_1 {O(n)}
28: f2->f4: Arg_0+Arg_1 {O(n)}
29: f2->f2: inf {Infinity}
30: f300->f1: 1 {O(1)}
31: f300->f300: 3*Arg_1+4*Arg_2+Arg_0 {O(n)}
32: f300->f4: 1 {O(1)}
33: f300->f4: 1 {O(1)}
34: f300->f2: 1 {O(1)}
35: f4->f300: Arg_0+Arg_1 {O(n)}
36: f4->f4: Arg_0+Arg_1 {O(n)}
37: f4->f4: Arg_0+Arg_1 {O(n)}
38: f4->f2: Arg_0+Arg_1 {O(n)}
39: f5->f300: 1 {O(1)}

Sizebounds

27: f2->f4, Arg_0: 13*Arg_0+4*Arg_1+6 {O(n)}
27: f2->f4, Arg_1: 9*Arg_1 {O(n)}
27: f2->f4, Arg_2: 9*Arg_2 {O(n)}
28: f2->f4, Arg_0: 13*Arg_0+4*Arg_1+6 {O(n)}
28: f2->f4, Arg_1: 9*Arg_1 {O(n)}
28: f2->f4, Arg_2: 9*Arg_2 {O(n)}
29: f2->f2, Arg_0: 13*Arg_0+4*Arg_1+6 {O(n)}
29: f2->f2, Arg_1: 9*Arg_1 {O(n)}
29: f2->f2, Arg_2: 9*Arg_2 {O(n)}
30: f300->f1, Arg_0: 16*Arg_1+56*Arg_0+26 {O(n)}
30: f300->f1, Arg_1: 40*Arg_1 {O(n)}
30: f300->f1, Arg_2: 3*Arg_1+44*Arg_2+Arg_0+6 {O(n)}
31: f300->f300, Arg_0: 16*Arg_1+55*Arg_0+26 {O(n)}
31: f300->f300, Arg_1: 39*Arg_1 {O(n)}
31: f300->f300, Arg_2: 3*Arg_1+43*Arg_2+Arg_0+6 {O(n)}
32: f300->f4, Arg_0: Arg_0+1 {O(n)}
32: f300->f4, Arg_1: Arg_1 {O(n)}
32: f300->f4, Arg_2: Arg_2 {O(n)}
33: f300->f4, Arg_0: Arg_0+1 {O(n)}
33: f300->f4, Arg_1: Arg_1 {O(n)}
33: f300->f4, Arg_2: Arg_2 {O(n)}
34: f300->f2, Arg_0: Arg_0 {O(n)}
34: f300->f2, Arg_1: Arg_1 {O(n)}
34: f300->f2, Arg_2: Arg_2 {O(n)}
35: f4->f300, Arg_0: 16*Arg_1+54*Arg_0+26 {O(n)}
35: f4->f300, Arg_1: 38*Arg_1 {O(n)}
35: f4->f300, Arg_2: 38*Arg_2+6 {O(n)}
36: f4->f4, Arg_0: 13*Arg_0+4*Arg_1+6 {O(n)}
36: f4->f4, Arg_1: 9*Arg_1 {O(n)}
36: f4->f4, Arg_2: 9*Arg_2 {O(n)}
37: f4->f4, Arg_0: 13*Arg_0+4*Arg_1+6 {O(n)}
37: f4->f4, Arg_1: 9*Arg_1 {O(n)}
37: f4->f4, Arg_2: 9*Arg_2 {O(n)}
38: f4->f2, Arg_0: 13*Arg_0+4*Arg_1+6 {O(n)}
38: f4->f2, Arg_1: 9*Arg_1 {O(n)}
38: f4->f2, Arg_2: 9*Arg_2 {O(n)}
39: f5->f300, Arg_0: Arg_0 {O(n)}
39: f5->f300, Arg_1: Arg_1 {O(n)}
39: f5->f300, Arg_2: Arg_2 {O(n)}