LTS Termination Proof

by T2Cert

Input

Integer Transition System
• Initial Location: 6
• Transitions: (pre-variables and post-variables)  0 0 1: 3 − a_0 ≤ 0 ∧ − tmp_post + tmp_post ≤ 0 ∧ tmp_post − tmp_post ≤ 0 ∧ − tmp_0 + tmp_0 ≤ 0 ∧ tmp_0 − tmp_0 ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 0 1 1: −1 + a_0 ≤ 0 ∧ − tmp_post + tmp_post ≤ 0 ∧ tmp_post − tmp_post ≤ 0 ∧ − tmp_0 + tmp_0 ≤ 0 ∧ tmp_0 − tmp_0 ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 0 2 2: 0 ≤ 0 ∧ 0 ≤ 0 ∧ −2 + a_0 ≤ 0 ∧ 2 − a_0 ≤ 0 ∧ −1 + tmp_post ≤ 0 ∧ 1 − tmp_post ≤ 0 ∧ tmp_0 − tmp_post ≤ 0 ∧ − tmp_0 + tmp_post ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 2 3 3: − tmp_post + tmp_post ≤ 0 ∧ tmp_post − tmp_post ≤ 0 ∧ − tmp_0 + tmp_0 ≤ 0 ∧ tmp_0 − tmp_0 ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 4 4 0: 2 − a_0 ≤ 0 ∧ − tmp_post + tmp_post ≤ 0 ∧ tmp_post − tmp_post ≤ 0 ∧ − tmp_0 + tmp_0 ≤ 0 ∧ tmp_0 − tmp_0 ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 4 5 0: a_0 ≤ 0 ∧ − tmp_post + tmp_post ≤ 0 ∧ tmp_post − tmp_post ≤ 0 ∧ − tmp_0 + tmp_0 ≤ 0 ∧ tmp_0 − tmp_0 ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 4 6 2: 0 ≤ 0 ∧ 0 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ 1 − a_0 ≤ 0 ∧ −1 + tmp_post ≤ 0 ∧ 1 − tmp_post ≤ 0 ∧ tmp_0 − tmp_post ≤ 0 ∧ − tmp_0 + tmp_post ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 1 7 2: 0 ≤ 0 ∧ 0 ≤ 0 ∧ tmp_post ≤ 0 ∧ − tmp_post ≤ 0 ∧ tmp_0 − tmp_post ≤ 0 ∧ − tmp_0 + tmp_post ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0 5 8 4: 0 ≤ 0 ∧ 0 ≤ 0 ∧ 0 ≤ 0 ∧ 0 ≤ 0 ∧ 0 ≤ 0 ∧ 0 ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ a_post − ret_returnOne3_post ≤ 0 ∧ − a_post + ret_returnOne3_post ≤ 0 ∧ a_0 − a_post ≤ 0 ∧ − a_0 + a_post ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_post ≤ 0 ∧ − tmp_post + tmp_post ≤ 0 ∧ tmp_post − tmp_post ≤ 0 ∧ − tmp_0 + tmp_0 ≤ 0 ∧ tmp_0 − tmp_0 ≤ 0 6 9 5: − tmp_post + tmp_post ≤ 0 ∧ tmp_post − tmp_post ≤ 0 ∧ − tmp_0 + tmp_0 ≤ 0 ∧ tmp_0 − tmp_0 ≤ 0 ∧ − ret_returnOne3_post + ret_returnOne3_post ≤ 0 ∧ ret_returnOne3_post − ret_returnOne3_post ≤ 0 ∧ − ret_returnOne3_0 + ret_returnOne3_0 ≤ 0 ∧ ret_returnOne3_0 − ret_returnOne3_0 ≤ 0 ∧ − a_post + a_post ≤ 0 ∧ a_post − a_post ≤ 0 ∧ − a_1 + a_1 ≤ 0 ∧ a_1 − a_1 ≤ 0 ∧ − a_0 + a_0 ≤ 0 ∧ a_0 − a_0 ≤ 0

Proof

The following invariants are asserted.

 0: −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 1: −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 2: −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 ∧ −1 + tmp_post ≤ 0 ∧ −1 + tmp_0 ≤ 0 3: −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 ∧ −1 + tmp_post ≤ 0 ∧ −1 + tmp_0 ≤ 0 4: −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 5: TRUE 6: TRUE

The invariants are proved as follows.

IMPACT Invariant Proof

• nodes (location) invariant:  0 (0) −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 1 (1) −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 2 (2) −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 ∧ −1 + tmp_post ≤ 0 ∧ −1 + tmp_0 ≤ 0 3 (3) −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 ∧ −1 + tmp_post ≤ 0 ∧ −1 + tmp_0 ≤ 0 4 (4) −1 + a_post ≤ 0 ∧ −1 + ret_returnOne3_post ≤ 0 ∧ 1 − ret_returnOne3_post ≤ 0 ∧ 1 + a_1 ≤ 0 ∧ −1 − a_1 ≤ 0 ∧ −1 + a_0 ≤ 0 ∧ −1 + ret_returnOne3_0 ≤ 0 ∧ 1 − ret_returnOne3_0 ≤ 0 5 (5) TRUE 6 (6) TRUE
• initial node: 6
• cover edges:
• transition edges:  0 0 1 0 1 1 0 2 2 1 7 2 2 3 3 4 4 0 4 5 0 4 6 2 5 8 4 6 9 5

2 Switch to Cooperation Termination Proof

We consider the following cutpoint-transitions:
and for every transition t, a duplicate t is considered.

3 Transition Removal

We remove transitions 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 using the following ranking functions, which are bounded by −16.

 6: 0 5: 0 4: 0 0: 0 1: 0 2: 0 3: 0 6: −8 5: −9 4: −10 0: −11 1: −12 2: −13 3: −14

4 SCC Decomposition

There exist no SCC in the program graph.

T2Cert

• version: 1.0