Description
The automatic theorem prover cvc5
for SMT problems is the successor of CVC4. Currently, tlapm
can call CVC4:
Lines 43 to 54 in 3543f7f
-
consider adding a proof directive named
CVC
(without a specific version number) to the moduleTLAPS
- if a proof directive
CVC
is introduced, consider using this in the TLA+ modules in the directorieslibrary/
,examples/
, andexamples-draft/
- if a proof directive
-
consider adding a proof directive named
CVC5
-
update TLA+ modules in the directories
library/
,examples/
, andexamples-draft/
to use the proof directiveCVC5
(or possiblyCVC
) -
perhaps consider removing the CVC3 proof directives, and show messages in the TLA+ Toolbox and stdout that inform the users to update to the CVC5 proof directive. The motivation is that solvers evolve, and explicitly mentioning the solver where relevant records requirements.
-
consider renaming the (internal) method names from cvc3 to either cvc5, or cvc, for example at:
Line 25 in 3543f7f
and other places -
consider whether to interface to both
cvc5
and CVC4, with distinct proof directives associated with each (and perhaps with the proof directiveCVC
being defined as the latest version of the cvc solver -
update the command invocation at:
Lines 172 to 176 in 3543f7f
tocvc5
, or add an additional function for callingcvc5
(depending on whether it is decided to interface to bothcvc5
and CVC4 and call whichever solver the user requests) -
in case only
cvc5
will be interfaced to, consider whether to callcvc5
also for occurrences of the proof directiveCVC4
, motivated by backwards compatibility (for some period of time), or to instead inform the user with messages to replace occurrences of the proof directiveCVC4
withCVC5
(or possiblyCVC
) -
remember to update the help text of
tlapm
according to whether bothcvc5
and CVC4 will be callable fromtlapm
, and howtlapm
will behave for the proof directivesCVC4
andCVC3
:
Line 293 in 3543f7f
-
update the website files under the directory
doc/web/content/
to mentioncvc5
, and possibly also CVC4 (in case it will be callable fromtlapm
) -
consider updating the fingerprinting:
Line 781 in 3543f7f
In more detail:- existing fingerprints files appear to label information as related to CVC3. However, this information is related to CVC4. If switching to
cvc5
, then this information could be understood as relating tocvc5
. However, doing this implies assuming that every input provable by CVC4 is provable, with the same command-line options, bycvc5
.
So to be explicit, it may be worth renaming the labeling within the fingerprints to cvc5. This would create a new version of the fingerprints file, so it seems that bumping the magic number would be needed.
Moreover, it may be a good idea to choose this naming scheme, and update it, even for later cvc versions (e.g., cvc6), even if a
CVC
proof directive is introduced. A consequence would be that such aCVC
proof directive would then save its results labeled ascvc5
first, and later labeled as cvc6, but that seems a reasonable (internal) evolution. This approach explicitly records the solver used in a proof.Any updates to the module
src/backend/fpfile.ml
and related code need to happen only after Fingerprinting variables and bound identifiers #23 has been merged, because code for loading older versions of the fingerprints has been removed in that pull request. - existing fingerprints files appear to label information as related to CVC3. However, this information is related to CVC4. If switching to
-
it may be relevant to update the naming of identifiers in the SMT backend to either "cvc" or "cvc5":
Line 459 in 3543f7f
-
update a test and its module name:
-
may be relevant to update the commented code in the packager:
tlapm/tools/installer/tlaps-release.sh.in
Lines 188 to 218 in 3543f7f