72 Commits

Author SHA1 Message Date
Daniel Larraz
4e7922ee32 Use MSYS2 CLANG64 to compile on Windows x86_64 (#12291)
This PR replaces the MSYS2 MINGW64 environment with the CLANG64
environment for compiling cvc5 natively on Windows x86_64. The main
difference between the two is that MINGW64 uses GCC and links against
libstdc++ and the MSVCRT runtime, whereas CLANG64 uses Clang and links
against libc++ and the UCRT runtime (see the MSYS2 [environment
documentation](https://www.msys2.org/docs/environments/) for details).

This ensures compatibility for statically linking cvc5 with Lean
binaries that use libc++ on Windows x86_64, thus facilitating the
integration of cvc5 into
[lean-cvc5](https://github.com/abdoo8080/lean-cvc5).

---------

Co-authored-by: Abdalrhman Mohamed <abdoo8080@outlook.com>
2025-12-09 00:18:23 +00:00
Daniel Larraz
e0ec61e050 Add support for compilation on Windows ARM64 (#12111)
This PR applies several changes required to compile cvc5 on Windows
ARM64 using MSYS2 CLANGARM64. In particular, `thread_local` class fields
and local function variables in classes and functions exported in the
API are not allowed, so they have been converted into global variables
within the compilation unit. Moreover, some functions in the cvc5 parser
library were using non-exported functions from the cvc5 base library.
This PR exports these functions and converts the ones that were inlined
into non-inlined functions to make them exportable.

Here is a summary of the results of running the cvc5 version in main and
in this branch:
```
config   status   total  solved     sat   unsat    best  timeout  memout  error  uniq  dis    time_cpu      memory 
main     ee      450474  385375  173928  211447  256627    57617     719      5    36    0  18909500.3  42742499.9 
pr       ee      450474  385370  173923  211447  192564    57621     720      5    31    0  18914388.1  42779989.7 
``` 
It seems that the Windows ARM64 changes do not significantly affect
solver performance compared to the main branch.
2025-09-10 15:44:59 +00:00
Daniel Larraz
2d240c467a Fix duplicate C++ declarations in Sphinx documentation (#12069) 2025-09-08 15:08:58 +00:00
Daniel Larraz
f30f3a00e3 doc: Avoid duplicate indexing of cvc5.pythonic.Length (#12097)
The `Length` function in the Pythonic API applies to both strings and
sequences, so its documentation appears in `strings.rst` and
`sequences.rst`. To avoid duplicate entries in the index, one occurrence
is marked with `:noindex:`.
2025-09-08 15:07:48 +00:00
José Neto
867cdf6271 Category option info for Python and Java APIs (#12100) 2025-09-08 13:47:59 +00:00
Daniel Larraz
ec9cbcb6ce doc: Fix toctree consistency issues (#12090)
This PR addresses two issues reported by Sphinx. First, the
`docs/api/python/base/modes.rst` document was not included in any
toctree. Second, the `proofrule.rst` and `cvc5proofrule.rst` documents
were included in multiple toctrees. The latter is resolved by including
each document in only one toctree and referencing it elsewhere in the
documentation using cross-references.
2025-08-23 22:10:09 +00:00
Daniel Larraz
5b85cad4ee doc: Add missing references to c examples (#12089)
This PR also adds a `:skip:` directive to suppress missing-example
warnings for languages without an equivalent version.
2025-08-23 22:09:10 +00:00
Aina Niemetz
91201c459e Fix docs in preparation for upcoming release. (#11983) 2025-06-17 13:22:02 +00:00
Aina Niemetz
0647c4c107 Update copyright headers. (#11561)
Co-authored-by: Daniel Larraz <daniel-larraz@users.noreply.github.com>
2025-01-23 17:54:20 +00:00
Daniel Larraz
a210be5660 Update copyright headers and year in copyright message (#11142) 2024-08-12 15:28:36 +00:00
Aina Niemetz
930012648d docs: python base: Add missing docs pages. (#11058) 2024-08-05 18:49:50 +00:00
Aina Niemetz
dab8236589 docs: python: Add missing docs text for pages. (#11057) 2024-08-05 18:47:34 +00:00
Aina Niemetz
5ebc7e2bbc python api: Reintroduce deprecated constructor for SymbolManager. (#11062)
Co-authored-by: Daniel Larraz <daniel-larraz@users.noreply.github.com>
2024-07-18 20:29:15 +00:00
Daniel Larraz
0cf3c1b1ac cmake: Specify installation component names (#11055)
This allows users to install the Python or Java bindings independently
from the rest of the components.
2024-07-17 06:55:07 +00:00
Aina Niemetz
1b9eab5c0e docs: Restructure and extend proofs docs. (#11045) 2024-07-16 23:07:30 +00:00
Aina Niemetz
cb103e26c3 docs: python base: Add docs for TermManager and SortKind. (#11056) 2024-07-16 22:39:37 +00:00
Aina Niemetz
55b0458eac docs: cpp: Add missing entries and some fixes. (#11035) 2024-07-12 16:17:06 +00:00
Aina Niemetz
441ef12d70 docs: Fixes in API documentation. (#11034) 2024-07-12 16:16:47 +00:00
Daniel Larraz
7746a9117d Update Python API documentation (#10995)
Resolves #10288. Requires #10994.
2024-07-08 17:29:10 +00:00
Daniel Larraz
49296865b9 Install Python dependencies automatically in venv (#10700)
This creates a Python virtual environment and installs the Python dependencies in it if they are not already present.
2024-05-06 14:32:58 +00:00
Alex Ozdemir
13adc386d0 pythonic docs: is_tautology (#10687) 2024-04-25 18:49:41 +00:00
yoni206
91572c54c6 Add strings and sequences to the pythonic API documentation (#10654)
This PR adds the documentation for strings and sequences in the pythonic API.
2024-04-19 07:34:00 -05:00
Aina Niemetz
b9b4e1b9da c++ API: Refactor statistics handling. (#10530)
This moves term statistics collection from Solver to TermManager.
TermManager and Solver now both provide `getStatistics()`, the former
captures API level term statistics, the latter internal solver
statistics.

This also adds iterator capabilities to the Python Statistics class.
2024-04-01 21:12:16 +00:00
Aina Niemetz
1a3a935fb5 Python API: Refactor to expose TermManager. (#10488)
This refactors the base Python API to expose TermManager (related to
previous refactor of the C++ API to expose TermManager in #10426).
2024-03-14 14:34:58 -07:00
Andrew V. Teylu
da91f0d166 Setup Python 'requirement.txt' files for building and Python development (#10315)
I always forget what packages I need to install inside of a venv to build cvc5. This PR adds two requirements.txt files:

    requirements_build.txt for the Python packages you need to install to build cvc5
    requirements_python_dev.txt for the Python packages you need to build cvc5's Python bindings

Signed-off-by: Andrew V. Teylu andrew@tey.lu
2024-02-06 22:23:01 +00:00