Initial Problem

Start: l0
Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3
Temp_Vars:
Locations: l0, l1, l2
Transitions:
0:l0(Arg_0,Arg_1,Arg_2,Arg_3) -> l1(0,Arg_1,Arg_2,Arg_3)
1:l1(Arg_0,Arg_1,Arg_2,Arg_3) -> l2(Arg_0,Arg_1,0,0):|:1<=Arg_1
3:l2(Arg_0,Arg_1,Arg_2,Arg_3) -> l1(Arg_0+Arg_3,Arg_1-1,Arg_2,Arg_3):|:Arg_1<=Arg_2
2:l2(Arg_0,Arg_1,Arg_2,Arg_3) -> l2(Arg_0,Arg_1,Arg_2+1,Arg_3+Arg_2):|:Arg_2+1<=Arg_1

Preprocessing

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

Found invariant Arg_2<=Arg_1 && 0<=Arg_2 && 1<=Arg_1+Arg_2 && 1<=Arg_1 for location l2

Problem after Preprocessing

Start: l0
Program_Vars: Arg_1, Arg_2
Temp_Vars:
Locations: l0, l1, l2
Transitions:
9:l0(Arg_1,Arg_2) -> l1(Arg_1,Arg_2)
10:l1(Arg_1,Arg_2) -> l2(Arg_1,0):|:1<=Arg_1
12:l2(Arg_1,Arg_2) -> l1(Arg_1-1,Arg_2):|:Arg_2<=Arg_1 && 0<=Arg_2 && 1<=Arg_1+Arg_2 && 1<=Arg_1 && Arg_1<=Arg_2
11:l2(Arg_1,Arg_2) -> l2(Arg_1,Arg_2+1):|:Arg_2<=Arg_1 && 0<=Arg_2 && 1<=Arg_1+Arg_2 && 1<=Arg_1 && Arg_2+1<=Arg_1

MPRF for transition 10:l1(Arg_1,Arg_2) -> l2(Arg_1,0):|:1<=Arg_1 of depth 1:

new bound:

Arg_1 {O(n)}

MPRF:

l2 [Arg_1-1 ]
l1 [Arg_1 ]

MPRF for transition 12:l2(Arg_1,Arg_2) -> l1(Arg_1-1,Arg_2):|:Arg_2<=Arg_1 && 0<=Arg_2 && 1<=Arg_1+Arg_2 && 1<=Arg_1 && Arg_1<=Arg_2 of depth 1:

new bound:

Arg_1 {O(n)}

MPRF:

l2 [Arg_1 ]
l1 [Arg_1 ]

MPRF for transition 11:l2(Arg_1,Arg_2) -> l2(Arg_1,Arg_2+1):|:Arg_2<=Arg_1 && 0<=Arg_2 && 1<=Arg_1+Arg_2 && 1<=Arg_1 && Arg_2+1<=Arg_1 of depth 1:

new bound:

Arg_1*Arg_1+2*Arg_1+1 {O(n^2)}

MPRF:

l1 [Arg_1+1 ]
l2 [Arg_1+1-Arg_2 ]

All Bounds

Timebounds

Overall timebound:Arg_1*Arg_1+4*Arg_1+2 {O(n^2)}
9: l0->l1: 1 {O(1)}
10: l1->l2: Arg_1 {O(n)}
11: l2->l2: Arg_1*Arg_1+2*Arg_1+1 {O(n^2)}
12: l2->l1: Arg_1 {O(n)}

Costbounds

Overall costbound: Arg_1*Arg_1+4*Arg_1+2 {O(n^2)}
9: l0->l1: 1 {O(1)}
10: l1->l2: Arg_1 {O(n)}
11: l2->l2: Arg_1*Arg_1+2*Arg_1+1 {O(n^2)}
12: l2->l1: Arg_1 {O(n)}

Sizebounds

9: l0->l1, Arg_1: Arg_1 {O(n)}
9: l0->l1, Arg_2: Arg_2 {O(n)}
10: l1->l2, Arg_1: Arg_1 {O(n)}
10: l1->l2, Arg_2: 0 {O(1)}
11: l2->l2, Arg_1: Arg_1 {O(n)}
11: l2->l2, Arg_2: Arg_1*Arg_1+2*Arg_1+1 {O(n^2)}
12: l2->l1, Arg_1: Arg_1 {O(n)}
12: l2->l1, Arg_2: Arg_1*Arg_1+2*Arg_1+1 {O(n^2)}