150 Commits

Author SHA1 Message Date
Andrew Reynolds
bb82ecf511 Change the default proof format to ALF (#10231) 2023-12-19 23:01:25 +00:00
Andrew Reynolds
0964573eaa Do not print newlines in Command::toString (#10225) 2023-12-15 22:46:41 +00:00
Daniel Larraz
6a33a2f89d Fix python api coverage failure (#10233) 2023-12-15 16:14:26 -06:00
Andrew Reynolds
68fc815e03 Add setStringInput to the parser APIs (#10230)
This PR:

Updates the functionality of setIncrementalStringInput / appendIncrementalStringInput to a more intuitive behavior where append does not replace the current contents of the input.
Adds setStringInput to the API and updates the interactive shell to use this interface.
Updates the examples
Adds new unit tests
2023-12-15 19:50:57 +00:00
Daniel Larraz
3e07a656e7 Add parser to the python api (#10222) 2023-12-14 09:08:05 -06:00
Sarkoxed
3185d5c293 cpp api: Extend the FiniteField related initialization functions (#9926)
This adds a general way to initialize the finite field and the element
of the final field in the C++ API from a string of an arbitrary base.

---------

Signed-off-by: Sarkoxed <sarkoxed2013@yandex.ru>
Co-authored-by: Aina Niemetz <aina.niemetz@gmail.com>
2023-12-13 22:21:14 +00:00
Andrew Reynolds
e579c9094e Add conflict, unsoundness and negation tracking to assertion pipeline (#10141)
This allows us to terminate quickly during preprocessing if a false assertion is encountered.

The other flags allow more generic handling of how to post-process results of check-sat.
2023-11-07 14:56:21 -06:00
Hans-Jörg
14fc6f88bb Fix behaviour and API tests for proofs (#10137)
Add a test for '<<' for the proof format mode
Add this test to the uncovered functions for Python and Java
Return placeholder value if Proof object is empty
Add tests for this (and add them to uncovered functions)
2023-11-07 17:29:44 +00:00
Andrew Reynolds
228b963e4f Add support for get-timeout-core-assuming (#10076)
This is a variant of get-timeout-core that asks to find a timeout core over a given set of assumptions, while all current assertions are implicitly included in the core.

Also adds news + an entry missed from #9585.
2023-11-02 10:53:34 -05:00
Hans-Jörg
ce64f348d3 Add API for Proofs (#9895)
This pull requests adds support to get Proofs as proper objects from the API.

To do so it adds an object Proof that encapsulates a ProofNode. Furthermore, it adds a function proofsToString to the Solver object that prints (a vector of) proofs. Finally, it modifies the getProof function of the Solver object to return proofs.

Proof rules are returned as strings.

One thing I don't quite like is that the proof component configuration must be given to both the getProof and proofsToString method and must be the same.
2023-10-12 12:05:01 -05:00
Andrew Reynolds
3621c2c5e5 Fixes for uncovered parser API methods (#10082)
Fixes nightly builds.
2023-10-04 00:24:08 +00:00
Haniel Barbosa
1a83703006 [unsat cores] Adds command to retrieve lemmas used to derive unsat (#9585)
Feature is based on the SAT proof. The lemmas that are accumulated by the ProofCnfStream during a check-sat call are filtered according to being used or not in the SAT proof and then printed as a list.
2023-09-27 20:24:17 +00:00
Hans-Jörg
0a35879fc1 Make Proof Rule enum a part of the API (#9925)
This pull requests makes the enum that lists all proof rules a part of the API.

It also renames the enum from PfRule to ProofRule. It also renames some unrelated types and function names that share the PfRule name (such as DslPfRule).
This rename unfortunately touches many files since PfRule is not an uncommon type. (second to last commit)
2023-09-27 00:58:03 +00:00
Andrew Reynolds
692df390a3 Change policy for setLogic in API (#9986)
The motivation of this PR is to make the InputParser more foolproof in regards to initializing the logic.

The main change is that if the user provides a solver or symbol manager with a logic that has been set, then that logic is used. This means we throw an error if the 2 are using different logics.

It also removes the InputParser::setLogic method.

This requires adding isLogicSet and getLogic to the Solver and SymbolManager API.
2023-09-18 18:16:17 +00:00
Mathias Preiner
167b88a61b python: Allow Python integers for mkBitVector(). (#10021)
Fixes #10020.
2023-09-12 20:43:27 +00:00
Andrew Reynolds
d43f1b624a Add fresh argument to declareSort (#9984)
This change is analogous to the one for declareFun and is required for making it easier to communicate formulas with uninterpreted sorts in a distributed setting.

Also fixes two minor parser issues:

We should revert to "assert" mode if a declaration is received, e.g. in between a check-sat and get-model.
We should catch errors for overloaded symbols even when fresh declarations are disabled.
2023-08-30 01:43:20 +00:00
Andrew Reynolds
707a16448e Add optional fresh argument to declareFun (#9956)
This allows the user to have a consistent way of constructing constants (when fresh=false), without manually tracking a symbol table.

It also adds an option fresh-declarations to control whether the parser uses fresh constants. This is true by default to preserve backwards compatibility.

It also fixes an issue with using global-declarations from CLI.
2023-08-24 17:48:26 +00:00
Aina Niemetz
7a4a17b193 c api: Introduce C/C++ specific handling of public enums. (#9915)
This introduces a general way to use public enums both in the C++ and
the (upcoming) C API. For the C++ case, we now use enum classes rather
than enums for public enums. This also includes definitions for
C API to_string conversions for public enums. C API definitions in
cvc5_types.h are only included from the C API, guarded via a macro
(thus, for now, not included yet when the header is included).
2023-08-22 18:17:16 +00:00
Andrew Reynolds
d6decd38a5 Fix find synth test in python API (#9933)
Should fix coverage issue in nightlies.
2023-08-14 16:42:26 +00:00
Andrew Reynolds
f2a8d9fcb7 Add missing guard to RAN API (#9945) 2023-08-10 09:14:41 -07:00
Andrew Reynolds
d0e7714cf6 Add find-synth to the API. (#9910)
This reenables the regressions for find-synth algorithms using the new smt2 commands.

Note that I simplified the FindSynthSolver (as you had suggested earlier).
2023-08-07 15:58:39 +00:00
Andrew Reynolds
dec06c04ea Add API methods for real algebraic numbers (#9897)
Fixes #9870.
2023-07-21 16:20:27 +00:00
Andrew Reynolds
79ae0eeaec Remove support for synth-inv and fix command execution (#9882)
This removes synth-inv and corrects several issues in the parser concerning when commands should be executed.
2023-07-14 12:43:25 -05:00
Andrew Reynolds
5fb14d6e46 Change timeout cores to apply to preprocessed assertions (#9827)
This changes (get-timeout-core) to operate on preprocessed assertions, and to do dependency tracking to input assertions analogous to unsat cores.

This is to address scalability issues for timeout cores on problems with many definitions, as requested by Certora.

As a result, (get-timeout-core) now requires unsat cores to be enabled.

This further required improving our tracking of preprocessed assertions to take incremental mode into account, which was previously wrong.
2023-06-20 10:09:57 -05:00
Andrew Reynolds
21da2fba14 Add synth finder utility (#9814)
Work towards supporting (find-synth :X).

This adds a unified utility SynthFinder for implementing the functionality removed in #9796.

It introduces "find synth targets" as different things that can be found using find-synth.

Further PRs will connect this utility to the API.
2023-06-19 16:47:31 +00:00