TermCOMP/starexec-master

Conflict in ITS

Closed this issue · 3 comments

ffrohn commented

I think the example is non-terminating. To see that, it suffices to consider the following three transitions:

(a): (cfg_trans2 pc __init pc1 f1_0_main_New true)
(b): (cfg_trans2 pc f1_0_main_New pc1 f1096_0_append_NONNULL (and (and (> arg1P 3) (> arg3P (- 1))) (> arg2P 4)))
(c): (cfg_trans2 pc f1096_0_append_NONNULL pc1 f1096_0_append_NONNULL (and (and (and (and (and (and (<= arg2P arg2) (> arg1 2)) (> arg2 0)) (> arg3 0)) (> arg1P 0)) (> arg2P 0)) (> arg3P (- 1))))

Here, the pre-variables are arg1, arg2, arg3 and the post-variables are arg1P, arg2P, arg3P. In a more readable notation:

__init -> f1_0_main_New :|: true
f1_0_main_New -> f1096_0_append_NONNULL :|: arg1P > 3 && arg3P > -1 && arg2P > 4
f1096_0_append_NONNULL -> f1096_0_append_NONNULL :|: arg2P <= arg2 && arg1 > 2 && arg2 > 0 && arg3 > 0 && arg1P > 0 && arg2P > 0 && arg3P > -1

Then the non-terminating run looks as follows:

__init(4,5,1) -(a)> f1_0_main_New(4,5,1)
              -(b)> f1096_0_append_NONNULL(4,5,1)
              -(c)> f1096_0_append_NONNULL(4,5,1)
              -(c)> ...

Thank you. Yes, I believe this example is non-terminating. In my previous experiments, MuVal consistently returned "no" for this instance. It seems that the configuration being used here occasionally exhibits the issue found in #73.

Penalty is applied.