Initial Problem

Start: f15
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3, Arg_4, Arg_5, Arg_6, Arg_7, Arg_8, Arg_9, Arg_10, Arg_11, Arg_12
Temp_Vars: N, O, P
Locations: f1, f10, f12, f13, f15, f300, f32, f8
Transitions:
8:f1(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f1(Arg_0,Arg_1,N,Arg_3,Arg_4,O,P,0,Arg_8,0,0,Arg_11,Arg_12):|:1+Arg_1<=Arg_4 && Arg_12<=4
11:f1(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f300(Arg_0,1+Arg_1,N,Arg_3,Arg_4,O,Arg_6,1,Arg_8,1,1,Arg_11,Arg_12):|:1+Arg_1<=Arg_4 && 5<=Arg_12
6:f10(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f1(Arg_0,Arg_1,N,Arg_3,Arg_4,O,P,0,Arg_8,0,0,Arg_11,-2)
5:f12(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f1(Arg_0,Arg_1,N,Arg_3,Arg_4,O,P,0,Arg_8,0,0,Arg_8-1,Arg_12):|:Arg_8<=4
10:f12(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f300(Arg_0,1+Arg_1,N,Arg_3,Arg_4,O,Arg_6,1,Arg_8,1,1,Arg_11,Arg_12):|:5<=Arg_8
4:f13(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f1(Arg_0,Arg_1,N,Arg_3,Arg_4,O,P,0,-2,0,0,Arg_11,Arg_12)
1:f15(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f8(Arg_0,Arg_1,Arg_2,N,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12)
9:f300(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f1(Arg_0,Arg_1,N,Arg_3,Arg_4,O,P,0,Arg_8,0,0,Arg_11,Arg_12):|:1+Arg_1<=Arg_4
2:f300(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f8(1+Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12):|:Arg_4<=Arg_1
7:f8(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f1(Arg_0,Arg_1,N,Arg_3,Arg_4,O,P,0,Arg_8,0,0,Arg_11,Arg_12):|:1+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4
0:f8(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f32(Arg_0,Arg_1,N,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12):|:Arg_1<=Arg_0
3:f8(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12) -> f8(1+Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11,Arg_12):|:1+Arg_0<=Arg_1 && Arg_4<=Arg_1

Preprocessing

Cut unreachable locations [f10; f12; f13] from the program graph

Eliminate variables {N,O,P,Arg_2,Arg_3,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9,Arg_10,Arg_11} that do not contribute to the problem

Found invariant Arg_1<=Arg_0 for location f32

Found invariant Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 5<=Arg_12 && 2+Arg_0<=Arg_1 for location f300

Found invariant 1+Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 1+Arg_0<=Arg_1 for location f1

Problem after Preprocessing

Start: f15
Program_Vars: Arg_0, Arg_1, Arg_4, Arg_12
Temp_Vars:
Locations: f1, f15, f300, f32, f8
Transitions:
23:f1(Arg_0,Arg_1,Arg_4,Arg_12) -> f1(Arg_0,Arg_1,Arg_4,Arg_12):|:1+Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 1+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4 && Arg_12<=4
24:f1(Arg_0,Arg_1,Arg_4,Arg_12) -> f300(Arg_0,1+Arg_1,Arg_4,Arg_12):|:1+Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 1+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4 && 5<=Arg_12
25:f15(Arg_0,Arg_1,Arg_4,Arg_12) -> f8(Arg_0,Arg_1,Arg_4,Arg_12)
27:f300(Arg_0,Arg_1,Arg_4,Arg_12) -> f1(Arg_0,Arg_1,Arg_4,Arg_12):|:Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 5<=Arg_12 && 2+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4
26:f300(Arg_0,Arg_1,Arg_4,Arg_12) -> f8(1+Arg_0,Arg_1,Arg_4,Arg_12):|:Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 5<=Arg_12 && 2+Arg_0<=Arg_1 && Arg_4<=Arg_1
30:f8(Arg_0,Arg_1,Arg_4,Arg_12) -> f1(Arg_0,Arg_1,Arg_4,Arg_12):|:1+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4
28:f8(Arg_0,Arg_1,Arg_4,Arg_12) -> f32(Arg_0,Arg_1,Arg_4,Arg_12):|:Arg_1<=Arg_0
29:f8(Arg_0,Arg_1,Arg_4,Arg_12) -> f8(1+Arg_0,Arg_1,Arg_4,Arg_12):|:1+Arg_0<=Arg_1 && Arg_4<=Arg_1

knowledge_propagation leads to new time bound 1 {O(1)} for transition 30:f8(Arg_0,Arg_1,Arg_4,Arg_12) -> f1(Arg_0,Arg_1,Arg_4,Arg_12):|:1+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4

MPRF for transition 24:f1(Arg_0,Arg_1,Arg_4,Arg_12) -> f300(Arg_0,1+Arg_1,Arg_4,Arg_12):|:1+Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 1+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4 && 5<=Arg_12 of depth 1:

new bound:

Arg_1+Arg_4 {O(n)}

MPRF:

f300 [Arg_4-Arg_1 ]
f8 [Arg_4-Arg_1 ]
f1 [Arg_4-Arg_1 ]

MPRF for transition 26:f300(Arg_0,Arg_1,Arg_4,Arg_12) -> f8(1+Arg_0,Arg_1,Arg_4,Arg_12):|:Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 5<=Arg_12 && 2+Arg_0<=Arg_1 && Arg_4<=Arg_1 of depth 1:

new bound:

Arg_1+Arg_4 {O(n)}

MPRF:

f300 [1 ]
f8 [Arg_4-Arg_1 ]
f1 [1 ]

MPRF for transition 27:f300(Arg_0,Arg_1,Arg_4,Arg_12) -> f1(Arg_0,Arg_1,Arg_4,Arg_12):|:Arg_1<=Arg_4 && 2+Arg_0<=Arg_4 && 5<=Arg_12 && 2+Arg_0<=Arg_1 && 1+Arg_1<=Arg_4 of depth 1:

new bound:

Arg_1+Arg_4 {O(n)}

MPRF:

f300 [Arg_4-Arg_1 ]
f8 [Arg_4-Arg_1 ]
f1 [Arg_4-Arg_1-1 ]

MPRF for transition 29:f8(Arg_0,Arg_1,Arg_4,Arg_12) -> f8(1+Arg_0,Arg_1,Arg_4,Arg_12):|:1+Arg_0<=Arg_1 && Arg_4<=Arg_1 of depth 1:

new bound:

2*Arg_0+Arg_1+Arg_4 {O(n)}

MPRF:

f300 [Arg_4-Arg_0 ]
f1 [Arg_4-Arg_0 ]
f8 [Arg_1-Arg_0 ]

All Bounds

Timebounds

Overall timebound:inf {Infinity}
23: f1->f1: inf {Infinity}
24: f1->f300: Arg_1+Arg_4 {O(n)}
25: f15->f8: 1 {O(1)}
26: f300->f8: Arg_1+Arg_4 {O(n)}
27: f300->f1: Arg_1+Arg_4 {O(n)}
28: f8->f32: 1 {O(1)}
29: f8->f8: 2*Arg_0+Arg_1+Arg_4 {O(n)}
30: f8->f1: 1 {O(1)}

Costbounds

Overall costbound: inf {Infinity}
23: f1->f1: inf {Infinity}
24: f1->f300: Arg_1+Arg_4 {O(n)}
25: f15->f8: 1 {O(1)}
26: f300->f8: Arg_1+Arg_4 {O(n)}
27: f300->f1: Arg_1+Arg_4 {O(n)}
28: f8->f32: 1 {O(1)}
29: f8->f8: 2*Arg_0+Arg_1+Arg_4 {O(n)}
30: f8->f1: 1 {O(1)}

Sizebounds

23: f1->f1, Arg_0: Arg_0 {O(n)}
23: f1->f1, Arg_1: Arg_1 {O(n)}
23: f1->f1, Arg_4: Arg_4 {O(n)}
23: f1->f1, Arg_12: Arg_12 {O(n)}
24: f1->f300, Arg_0: Arg_0 {O(n)}
24: f1->f300, Arg_1: 2*Arg_1+Arg_4 {O(n)}
24: f1->f300, Arg_4: Arg_4 {O(n)}
24: f1->f300, Arg_12: Arg_12 {O(n)}
25: f15->f8, Arg_0: Arg_0 {O(n)}
25: f15->f8, Arg_1: Arg_1 {O(n)}
25: f15->f8, Arg_4: Arg_4 {O(n)}
25: f15->f8, Arg_12: Arg_12 {O(n)}
26: f300->f8, Arg_0: Arg_0+1 {O(n)}
26: f300->f8, Arg_1: 2*Arg_1+Arg_4 {O(n)}
26: f300->f8, Arg_4: Arg_4 {O(n)}
26: f300->f8, Arg_12: Arg_12 {O(n)}
27: f300->f1, Arg_0: Arg_0 {O(n)}
27: f300->f1, Arg_1: 2*Arg_1+Arg_4 {O(n)}
27: f300->f1, Arg_4: Arg_4 {O(n)}
27: f300->f1, Arg_12: Arg_12 {O(n)}
28: f8->f32, Arg_0: 5*Arg_0+Arg_1+Arg_4+1 {O(n)}
28: f8->f32, Arg_1: 4*Arg_1+Arg_4 {O(n)}
28: f8->f32, Arg_4: 3*Arg_4 {O(n)}
28: f8->f32, Arg_12: 3*Arg_12 {O(n)}
29: f8->f8, Arg_0: 4*Arg_0+Arg_1+Arg_4+1 {O(n)}
29: f8->f8, Arg_1: 3*Arg_1+Arg_4 {O(n)}
29: f8->f8, Arg_4: 2*Arg_4 {O(n)}
29: f8->f8, Arg_12: 2*Arg_12 {O(n)}
30: f8->f1, Arg_0: Arg_0 {O(n)}
30: f8->f1, Arg_1: Arg_1 {O(n)}
30: f8->f1, Arg_4: Arg_4 {O(n)}
30: f8->f1, Arg_12: Arg_12 {O(n)}