LTS Termination Proof

by T2Cert

Input

Integer Transition System

Proof

1 Invariant Updates

The following invariants are asserted.

0: y_0 ≤ 0
1: y_0 ≤ 0
2: TRUE
3: TRUE
4: TRUE
5: TRUE
6: x_post ≤ 0x_post ≤ 0x_0 ≤ 0x_0 ≤ 0
7: x_post ≤ 0x_post ≤ 0x_0 ≤ 0x_0 ≤ 0
8: TRUE
9: TRUE

The invariants are proved as follows.

IMPACT Invariant Proof

2 Switch to Cooperation Termination Proof

We consider the following cutpoint-transitions:
0 13 0: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0
2 20 2: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0
4 27 4: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0
6 34 6: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0
and for every transition t, a duplicate t is considered.

3 Transition Removal

We remove transitions 2, 5, 8, 11, 12 using the following ranking functions, which are bounded by −23.

9: 0
8: 0
6: 0
7: 0
4: 0
5: 0
2: 0
3: 0
0: 0
1: 0
9: −7
8: −8
6: −9
7: −9
6_var_snapshot: −9
6*: −9
4: −12
5: −12
4_var_snapshot: −12
4*: −12
2: −15
3: −15
2_var_snapshot: −15
2*: −15
0: −18
1: −18
0_var_snapshot: −18
0*: −18
Hints:
14 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
21 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
28 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
35 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
0 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
1 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
3 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
4 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
6 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
7 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
9 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
10 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
2 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
5 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
8 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
11 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
12 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]

4 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

0* 16 0: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

5 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

0 14 0_var_snapshot: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

6 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

2* 23 2: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

7 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

2 21 2_var_snapshot: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

8 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

4* 30 4: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

9 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

4 28 4_var_snapshot: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

10 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

6* 37 6: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

11 Location Addition

The following skip-transition is inserted and corresponding redirections w.r.t. the old location are performed.

6 35 6_var_snapshot: z_0 + z_0 ≤ 0z_0z_0 ≤ 0y_post + y_post ≤ 0y_posty_post ≤ 0y_0 + y_0 ≤ 0y_0y_0 ≤ 0x_post + x_post ≤ 0x_postx_post ≤ 0x_0 + x_0 ≤ 0x_0x_0 ≤ 0

12 SCC Decomposition

We consider subproblems for each of the 4 SCC(s) of the program graph.

12.1 SCC Subproblem 1/4

Here we consider the SCC { 0, 1, 0_var_snapshot, 0* }.

12.1.1 Transition Removal

We remove transition 0 using the following ranking functions, which are bounded by 0.

0: −2 + 4⋅x_0
1: 4⋅x_0
0_var_snapshot: −3 + 4⋅x_0
0*: −1 + 4⋅x_0
Hints:
14 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0] ]
16 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0] ]
0 lexStrict[ [0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
1 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0] ]

12.1.2 Transition Removal

We remove transitions 14, 1 using the following ranking functions, which are bounded by −3.

0: −2
1: 0
0_var_snapshot: −3
0*: −1
Hints:
14 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
16 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
1 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]

12.1.3 Transition Removal

We remove transition 16 using the following ranking functions, which are bounded by −1.

0: −1
1: 0
0_var_snapshot: 0
0*: 0
Hints:
16 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]

12.1.4 Splitting Cut-Point Transitions

We consider 1 subproblems corresponding to sets of cut-point transitions as follows.

12.1.4.1 Cut-Point Subproblem 1/1

Here we consider cut-point transition 13.

12.1.4.1.1 Splitting Cut-Point Transitions

There remain no cut-point transition to consider. Hence the cooperation termination is trivial.

12.2 SCC Subproblem 2/4

Here we consider the SCC { 2, 3, 2_var_snapshot, 2* }.

12.2.1 Transition Removal

We remove transition 3 using the following ranking functions, which are bounded by 1.

2: −1 + 4⋅y_0
3: 1 + 4⋅y_0
2_var_snapshot: −2 + 4⋅y_0
2*: 4⋅y_0
Hints:
21 lexWeak[ [0, 0, 0, 0, 4, 0, 0, 0, 0, 0] ]
23 lexWeak[ [0, 0, 0, 0, 4, 0, 0, 0, 0, 0] ]
3 lexStrict[ [0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
4 lexWeak[ [0, 0, 0, 0, 4, 0, 0, 0, 0, 0] ]

12.2.2 Transition Removal

We remove transitions 21, 23, 4 using the following ranking functions, which are bounded by −1.

2: 0
3: 2
2_var_snapshot: −1
2*: 1
Hints:
21 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
23 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
4 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]

12.2.3 Splitting Cut-Point Transitions

We consider 1 subproblems corresponding to sets of cut-point transitions as follows.

12.2.3.1 Cut-Point Subproblem 1/1

Here we consider cut-point transition 20.

12.2.3.1.1 Splitting Cut-Point Transitions

There remain no cut-point transition to consider. Hence the cooperation termination is trivial.

12.3 SCC Subproblem 3/4

Here we consider the SCC { 4, 5, 4_var_snapshot, 4* }.

12.3.1 Transition Removal

We remove transition 6 using the following ranking functions, which are bounded by 1.

4: −1 − 4⋅x_0 + 4⋅z_0
5: 1 − 4⋅x_0 + 4⋅z_0
4_var_snapshot: −2 − 4⋅x_0 + 4⋅z_0
4*: −4⋅x_0 + 4⋅z_0
Hints:
28 lexWeak[ [4, 0, 0, 0, 0, 0, 0, 0, 0, 4] ]
30 lexWeak[ [4, 0, 0, 0, 0, 0, 0, 0, 0, 4] ]
6 lexStrict[ [0, 0, 0, 0, 4, 0, 4, 4, 0, 0, 0, 0, 0] , [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
7 lexWeak[ [4, 0, 0, 0, 0, 0, 0, 0, 0, 4] ]

12.3.2 Transition Removal

We remove transitions 28, 30, 7 using the following ranking functions, which are bounded by −3.

4: −2
5: 0
4_var_snapshot: −3
4*: −1
Hints:
28 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
30 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
7 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]

12.3.3 Splitting Cut-Point Transitions

We consider 1 subproblems corresponding to sets of cut-point transitions as follows.

12.3.3.1 Cut-Point Subproblem 1/1

Here we consider cut-point transition 27.

12.3.3.1.1 Splitting Cut-Point Transitions

There remain no cut-point transition to consider. Hence the cooperation termination is trivial.

12.4 SCC Subproblem 4/4

Here we consider the SCC { 6, 7, 6_var_snapshot, 6* }.

12.4.1 Transition Removal

We remove transition 9 using the following ranking functions, which are bounded by 1.

6: −1 + 4⋅y_0 − 4⋅z_0
7: 1 + 4⋅y_0 − 4⋅z_0
6_var_snapshot: −2 + 4⋅y_0 − 4⋅z_0
6*: 4⋅y_0 − 4⋅z_0
Hints:
35 lexWeak[ [0, 0, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0] ]
37 lexWeak[ [0, 0, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0] ]
9 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
10 lexWeak[ [0, 0, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 0] ]

12.4.2 Transition Removal

We remove transitions 35, 37 using the following ranking functions, which are bounded by −2.

6: −1
7: 1
6_var_snapshot: −2
6*: 0
Hints:
35 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
37 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]
10 lexWeak[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]

12.4.3 Transition Removal

We remove transition 10 using the following ranking functions, which are bounded by −1.

6: 0
7: 0
6_var_snapshot: 0
6*: −1
Hints:
10 lexStrict[ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] , [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]

12.4.4 Splitting Cut-Point Transitions

We consider 1 subproblems corresponding to sets of cut-point transitions as follows.

12.4.4.1 Cut-Point Subproblem 1/1

Here we consider cut-point transition 34.

12.4.4.1.1 Splitting Cut-Point Transitions

There remain no cut-point transition to consider. Hence the cooperation termination is trivial.

Tool configuration

T2Cert