Empirical Evaluation

We have implemented our approach for the automated termination analysis of CERSs and CS-CERSs in the termination prover AProVE, resulting in the system AProVE-CERS. For the results recorded below, AProVE-CERS was run on an AMD Athlon™ processor running at 2.2 Ghz. For each example, a time limit of 60 seconds was imposed. All times are in seconds.

Context-sensitive examples

The collection of examples consists of examples from context-sensitive category of the Termination Problems Data Base 5.0.2, suitably adapted to make use of built-in integers and collection data structures.
FileTimeResult
add_x.patrs0.27YES
after.patrs0.23YES
all-op.patrs0.32YES
diff1.patrs0.24YES
diff2.patrs0.23YES
even-odd.patrs0.14YES
fib.patrs0.28YES
first.patrs0.33YES
from-nth.patrs0.26YES
from.patrs0.12YES
head.patrs0.29YES
indx.patrs0.48YES
length.patrs0.23YES
misc.patrs0.15YES
pi.patrs0.18YES
prefix.patrs0.44YES
primes.patrs0.19YES
quot.patrs0.41YES
second.patrs0.12YES
sel.patrs0.25YES
FileTimeResult
silly01.patrs0.47MAYBE
silly02.patrs0.13YES
silly03.patrs0.12YES
silly04.patrs0.13YES
silly05.patrs0.12YES
silly06.patrs0.15YES
silly07.patrs0.16YES
silly08.patrs0.12YES
silly09.patrs0.12YES
silly10.patrs0.13YES
silly11.patrs0.18YES
silly12.patrs0.14YES
silly13.patrs0.35YES
silly14.patrs0.22YES
silly15.patrs0.12YES
silly16.patrs0.40MAYBE
silly17.patrs0.16YES
tail.patrs0.12YES
take.patrs0.18YES
terms.patrs0.19YES

Non-context-sensitive examples

The collection of examples includes examples from the literature that were again suitably adapted to make use of built-in integers and collection data structures. Additionally, several examples were obtained from imperative programs encoded into rewrite rules.

Additionally, AProVE-Integer (which is based on the methods of the paper Proving Termination of Integer Term Rewriting) has been run on the subset of examples where it is applicable. An "N/A" in the AProVE-Integer column means that AProVE-Integer is not applicable to that rewrite system.

FileAProVE-CERSAProVE-Integer
Total timeResultTotal timeResult
01.patrs0.19YES0.54YES
02.patrs0.04YES0.25YES
03.patrs0.04YES0.31YES
04.patrs0.01YES0.17YES
08.patrs0.04YES0.17YES
09.patrs0.04YES0.30YES
13.patrs0.07YES1.69YES
15.patrs0.12YES2.20YES
16.patrs0.11YES3.05YES
17.patrs0.17YES2.40YES
18.patrs0.19YES4.61YES
19.patrs0.19YES42.02YES
20.patrs0.08YES1.11YES
21.patrs0.11YES2.57YES
22.patrs0.11YES2.20YES
23.patrs0.11YES2.12YES
24.patrs0.17YES6.52YES
5.3.patrs0.11YESN/A
5.4.patrs0.18YESN/A
5.5.patrs0.31YESN/A
A01.patrs0.04YES0.31YES
A02.patrs0.03YES0.28YES
A03.patrs0.05YES2.69YES
A06.patrs0.06YES5.64YES
A07.patrs0.11YES1.19YES
A08.patrs0.08YES4.44YES
A11.patrs0.03YES0.38YES
A12.patrs0.03YES0.36YES
A13.patrs0.07YES0.67YES
A14.patrs0.16YES22.69YES
a.01.patrs0.11YES1.36YES
a.03.patrs0.94YES60.02TIMEOUT
a.04.patrs0.04YES0.39YES
a.05.patrs0.04YES0.32YES
a.06.patrs0.04YES0.52YES
a.07.patrs0.03YES0.40YES
a.08.patrs0.03YES0.32YES
a.09.patrs0.03YES0.39YES
a.10.patrs0.10YES52.72YES
a.11.patrs0.16YES6.75YES
c.01.patrs0.10YES1.83YES
c.02.patrs0.11YES1.46YES
c.03.patrs0.10YES2.60YES
c.04.patrs0.07YES2.51YES
c.05.patrs0.09YES7.38YES
choice.patrs60.00TIMEOUT60.04TIMEOUT
complete2.patrs60.00TIMEOUT10.22YES
complete3.patrs0.47YES1.99YES
countdown.patrs0.16YES0.26YES
csharp1.patrs0.09YES0.46YES
csharp2.patrs0.07YES0.49YES
csharp3.patrs0.06YES0.39YES
divMinus.patrs0.04YES0.34YES
div.patrs0.04YES0.35YES
eratosthenes.patrs0.44YES10.32YES
eratosthenes_small.patrs0.20YES26.45YES
gcd_minmax.patrs0.05YES1.45YES
gcd.patrs0.07YESN/A
horner.patrs0.07YESN/A
increase1.patrs0.02YES0.39YES
increase2.patrs0.05YES2.85YES
increase3.patrs0.08YES2.70YES
increase4.patrs0.03YES0.40YES
indirect.patrs0.04YES0.68YES
mergesort_multiset.patrs0.14YESN/A
mergesort_set.patrs0.14YESN/A
minsort_multiset.patrs0.08YESN/A
minsort_set.patrs0.08YESN/A
multiset_set.patrs0.17YESN/A
mult.patrs0.06YES2.63YES
nat-list-max.patrs0.11YESN/A
nat-mset-min.patrs0.09YESN/A
operations_multiset.patrs0.48YESN/A
operations_set.patrs0.41YESN/A
pathological.patrs0.10YESN/A
poly2.patrs60.00TIMEOUT60.00TIMEOUT
poly4.patrs0.32YES60.03TIMEOUT
practical1.patrs0.13YES2.47YES
practical2.patrs60.00TIMEOUT60.03TIMEOUT
practical3.patrs60.11TIMEOUT60.08TIMEOUT
quicksort_ins_multiset.patrs0.20YESN/A
quicksort_ins_set.patrs0.20YESN/A
quicksort_ugly_multiset.patrs0.25YESN/A
quicksort_ugly_set.patrs0.24YESN/A
quicksort_union_multiset.patrs0.25YESN/A
quicksort_union_set.patrs0.25YESN/A
random_full_no_wrap.patrs0.23YES42.93YES
random_full.patrs0.09YES43.40YES
randomFullUpDown.patrs0.37YES60.01TIMEOUT
random_no_wrap.patrs0.11YES0.36YES
random.patrs0.04YES0.70YES
removal.patrs0.05YESN/A
round.patrs0.18MAYBE0.50YES
sequents.patrs0.73MAYBEN/A
size_multiset.patrs0.07YESN/A
size_set.patrs0.06YESN/A
sqrt.patrs0.05YES0.56YES
sumLog.patrs0.30MAYBE60.02TIMEOUT
sum_multiset.patrs0.10YESN/A
sumto_no_if.patrs0.03YES0.49YES
sumto.patrs0.04YES0.50YES
sumUp.patrs0.03YES0.50YES
terminate.patrs0.22YES0.87YES
test1.patrs0.08YES2.20YES
test2.patrs0.09YESN/A
test3.patrs0.01YESN/A
test4.patrs0.39YES0.56YES
test5.patrs0.00YESN/A
test6.patrs0.00YESN/A
unsatCond1.patrs0.00YES0.26YES