ftsrg / theta

Generic, modular and configurable formal verification framework supporting various formalisms and algorithms
http://theta.inf.mit.bme.hu/
Apache License 2.0
49 stars 43 forks source link

General/instance vars in precision #247

Open s0mark opened 1 year ago

s0mark commented 1 year ago

Putting the general versions of variables into the precision instead of the instance versions makes Theta not be able to verify some tasks, while allowing some previously unverified tasks to be verified.

https://github.com/ftsrg/theta/blob/22257ee2f1c091346760c800f9ded00f4681f473/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/XcfaPrecRefiner.kt#L45-L57

General versions of variables are put into the precision if both reverseLookup and additionalLookup are used in changeVars, while instances are used if reverseLookup is omitted.

For recursive tasks:

For multithreaded tasks, general vars are preferred, as there were over 200 tasks that Theta can only solve with general vars and not with instances (see https://github.com/ftsrg/theta/pull/244#issuecomment-1822224299).

This behavior does not seem to be by-design and should be investigated.