-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Solver submission: cvc5 #64
Conversation
Summary of modified submissionscvc5
|
Can you take a look at the incremental prover, it seems to answer unknown for trivial benchmarks? (The trivial benchmarks for incremental track are perhaps too trivial). You can download the tested artifact at the bottom of https://github.com/SMT-COMP/smt-comp.github.io/actions/runs/9318591743 . |
The script for the incremental track does not expect the benchmark to given by filename, but to be written to |
Thanks to this issue, however, I noticed that I gave the wrong command for the incremental track. I updated that now. |
Oh yes thank you I forgot that part, the TestSolver need improvement for incremental track. |
I removed the cloud track from this pull request, since there is now a dedicated pull request for the cloud track: #84 |
#84: Create cvc5-cloud #74: Draft STP submission #70: draft yicesQS submission #68: Create STP-CNFLS #66: Yices2 SMTCOMP 2024 Submission #65: Z3-alpha draft PR #64: Solver submission: cvc5 #63: submission iProver #61: OSTRICH 1.4 #60: SMT-RAT submission #57: Amaya's submission for SMT-COMP 2024 #55: plat-smt submission #54: Add 2024 Bitwuzla submission. #53: 2024 solver participant submission: OpenSMT #52: Z3-Noodler submission #51: Submission Colibri #45: Submission for smtinterpol #42: Adding Algaroba to SMTCOMP 2024
@hansjoergschurr We have executed the latest version of cvc5 on a randomly chosen subset of 20 single-query benchmarks from each logic where it participates. The benchmarks are also scrambled by the competition scrambler (with seed 1). You can find the results here: https://www.fi.muni.cz/~xjonas/smtcomp/cvc5.table.html#/table Quick explanation:
Please check whether there are some discrepancies, such as missing/extra logics, unexpected aborts or |
@hansjoergschurr Here are also results of the test run on a small subset of incremental benchmarks: https://www.fi.muni.cz/~xjonas/smtcomp/cvc5_inc.table.html#/table The status column has the following meaning:
Again, if there are discrepancies (missing/extra logics, unexpected results), please let me know. |
@hansjoergschurr We have finished test runs of model-validation and unsat-core generation tracks. You can find the results here:
As before, you can click on the status of the benchmark to see the output of your solver. If you find any discrepancies or extra/missing logics, please let me know. Note that we selected only SAT benchmarks for model validation and only UNSAT for unsat-core generation. As a result of that, some logics do not contain any benchmarks. So do not be surprised if you have subscribed to one of these logics and you do not have any result for it. In particular, the logics are: For model-generation: QF_UFFP, QF_UFBVDT, QF_UFDTNIA, QF_NIRA. For unsat-core: UFBVDT, FPLRA, QF_AUFBVFP, QF_ABVFPLRA, QF_UFBVDT, QF_UFDTNIA, QF_UFDT, QF_NIA, QF_SNIA. |
Thank you for running the tests. The interface is really convenient to use. The json file now contains links to the Zenodo record. |
In the test run the checking of some model using dolmen failed It is mainly non-standardized part:
For scrambled158502.rsmt2, the problem is that a symbol is defined using a symbol defined later. I think it is not compliant with the standard but I'm not sure (@Gbury?). |
After a bit of reading, it's not clear whether this is compliant with the standard (but it's not clear that it is not compliant either), mainly because the standard for models is quite imprecise. The most relevant quote I could find was:
In such cases, i.e. the definition of a non-function value in a model, I'd argue that it's better for solvers to produce models in topological order, because 1) it makes it far easier to check, but also 2) I think it makes more sense: indeed, in the rest of the standard, typechecking of terms follows the regular scoping rules, and in particular terms cannot refer to constants declared later (that's why we have dedicated [1]: Note that this is the case for non-function values; in the case of functions, the body is only evaluated at each call site, so this gives a bit more freedom. |
For the part about defining the undefined values of a selector, here is the syntax currently accepted by
As can be seen it is possible to use different definitions for different instances of a polymorphic selector if needed (even if the example only defines one for the EDIT: the syntax is the same as the one presented in the link in @bobot 's answer above |
Thank you for running the competition.