13753 Commits

Author SHA1 Message Date
Johannes Kanig
f2f9a40c37 Merge branch 'topic/kanig-1152-cvc5-132' into 'master'
Update cvc5 to 1.3.2

See merge request eng/spark/cvc5!12
2026-01-07 09:27:23 +00:00
Johannes Kanig
fdf148cc47 fix location of cadical files 2026-01-05 18:26:56 +09:00
Johannes Kanig
7be139c659 Remove cadical which has now its own repo 2026-01-05 11:08:55 +09:00
Johannes Kanig
d0cf79c932 Merge cvc5 1.3.2 into AdaCore master 2026-01-05 10:43:25 +09:00
Mathias Preiner
86cecd83b6 Bump version to 1.3.2 2025-12-12 10:58:38 -08:00
Mathias Preiner
0ca1f0b9e1 Update version in NEWS file. 2025-12-12 10:58:14 -08:00
Daniel Larraz
1f5c50e323 ci: Remove ubuntu:production-clang CI job (#12300)
This job seems redundant now, since we already have three jobs compiling
with Clang ("ubuntu:production-libc++",
"ubuntu:production-arm64-libc++", and "ubuntu:production-dbg-clang") and
one job that implicitly compiles without libpoly ("ubuntu:safe-mode").
2025-12-11 19:08:27 +00:00
Andrew Reynolds
b886b61030 Disable regression (#12302)
Gives "unknown" on one build on nightlies.
2025-12-10 20:11:53 +00:00
Daniel Larraz
417810e66e ci: Pin MSYS2 installation to use Clang 19.1.4 (#12301)
This ensures compatibility for statically linking cvc5 with Lean
binaries on Windows for Lean versions 4.20 and above, as required by the
lean-cvc5 project.
2025-12-10 12:17:51 +00:00
Andrew Reynolds
a137ead681 Preparation for 1.3.2 release (#12297)
Updates news and ethos version
2025-12-09 21:27:33 +00:00
Andrew Reynolds
6dd08fb064 Move shadow elimination to post-rewrite, guard variable elimination (#12288)
This fixes a proof hole on SMT-LIB.

The PR https://github.com/cvc5/cvc5/pull/12258 recently applied shadow
elimination at prewrite. The motivation was to preemptively avoid
illegal variable eliminations. However, this is less efficient (includes
spurious alpha equivalence reasoning) and makes proof reconstruction
very difficult in rare cases, since we now must reason about more cases
in shadow elimination, including shadowing with duplicate variables.

We now move shadow elimination to post-rewrite, which avoids several
complications that are resolved bottom-up.

This furthermore properly guards variable eliminations to ensure that
substitutions are safe.

In the end this has the benefit that variable elimination is now safe
when taken as a standalone utility.

3 variants of the delta debugged regression are added.
2025-12-09 20:31:32 +00:00
Andrew Reynolds
05a9433b25 Fix issue with substitution context in strings extended function inference (#12292)
Fixes https://github.com/cvc5/cvc5-projects/issues/776.

This updates the explanation mechanism for context dependent
simplification, to ensure substitutions whose LHS are concatention terms
are avoided.

Would otherwise lead to cyclic proofs, which cause the conversion proof
generator to fail.

The regression added required 2 RARE rewrites which were missing.
2025-12-09 20:15:32 +00:00
Andrew Reynolds
e622d77107 Ensure integer constants are converted to rationals in numerator of division terms (#12294)
Fixes https://github.com/cvc5/cvc5-projects/issues/778.

The issue was caused by two rewritten literals (one with `(/ 2 a)` and
one with `(/ 2.0 a)`) being mapped to the same literal after subtype
elimination, which leads to a chain resolution step that failed due to
proving a stronger result than what was specified.

In general this indicates we need to ensure that subtype elimination is
a bijection over rewritten literals. This PR adds a rewrite to ensure
this is the case.
2025-12-09 19:29:22 +00:00
Daniel Larraz
ec1104194a ci: Move cross-compilation jobs to a new workflow (#12299)
This PR moves the cross-compilation CI jobs out of the main workflow and
into a nightly scheduled one. Since native builds now cover all
supported platforms, cross-compilation testing is less critical. This
change streamlines CI and reduces cache contention.
2025-12-09 17:29:51 +00:00
Daniel Larraz
a83019d9fb ci: Build and release Linux artifacts compiled with libc++ (#12293)
The new artifacts simplify integrating the cvc5 library into
[lean-cvc5](https://github.com/abdoo8080/lean-cvc5), which requires cvc5
to be compiled with libc++.
2025-12-09 01:47:51 +00:00
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
BergerZvika
b7542cfa74 Piand pr4 (#12295)
This PR is the sequel of https://github.com/cvc5/cvc5/pull/12245
It adds more implementations in the Piand solver.
The next PR will provide additional implementations of lemmas in the
Piand solver.

---------

Co-authored-by: Zvika Berger <zvbe@example.com>
2025-12-08 16:14:02 +00:00
Mathias Preiner
22ecb335c5 smt: ModelBlocker: Fix refcount issues of TNode vs Node handling. (#12287)
This is the reason why #12285 was failing. `visit` is a vector of
`TNode`, however, `impl` are nodes created while traversing and pushed
on the `visit` stack, which can go out of scope while `visit` not
holding a reference due to `TNode`.
2025-12-04 18:17:02 +00:00
Daniel Larraz
f6a97feed8 ci: Bump GitHub Actions versions (#12290)
The new version of the `cibuildwheel` action uses the final CPython
3.14.0 release to build wheels for that version, rather than a release
candidate, although using the candidate release should still produce
ABI-compatible wheels.
2025-12-04 16:03:36 +00:00
Andrew Reynolds
74554ef170 Fix subtype elimination for ARITH_MULT_SIGN (#12275)
Fixes https://github.com/cvc5/cvc5-projects/issues/774.
Fixes https://github.com/cvc5/cvc5-projects/issues/775.

The conversion wasn't correct for monomials with duplicated variables.
2025-12-03 20:26:36 +00:00
Andrew Reynolds
5ddd4f098e Fix double negation handling in NNF proofs (#12276)
Fixes https://github.com/cvc5/cvc5-projects/issues/773.

Double negation was handled lazily in NNF by deferring further rewriting
to another call to NNF.

This policy could lead to inconsistent proofs if there were further NNF
steps that were processed in the current rewrite and within the formula
that was deferred.

This ensures we process NNF on the doubly negated formula in the same
rewrite step, thus correcting the inconsistency in proof reconstruction.
2025-12-03 19:18:21 +00:00
Andrew Reynolds
f825b36f13 Fix issue with subtypes in NL comparison proofs (#12277)
Fixes https://github.com/cvc5/cvc5-projects/issues/772.

Note the benchmark times out so we set a tlimit on the regression.

---------

Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2025-12-03 18:03:32 +00:00
Andrew Reynolds
b19989f56a Fix issue with duplicate proof steps in theory rewrite reconstruction (#12278)
Fixes https://github.com/cvc5/cvc5-projects/issues/771.
2025-12-03 16:50:54 +00:00
Andrew Reynolds
c74436736e Assign function values lazily in theory model (#12267)
This modifies the TheoryModel class so that models for functions are
computed on demand.

It also modifies the FMF module to compute function values when it is
invoked.

The motivation for this change is efficiency, as it function values are
not essentially in most cases during solving (apart from HO logics, and
when using mbqi or fmf), and moreover take significantly long time to
generate for large benchmarks. The performance overhead is particularly
in combination with lazy distinct handling (which requires models).
Using lazy function models reduces the overhead on a verification set of
interest from ~20% to ~4% with this PR.

This PR removes now obsolete methods that have been moved/updated in
TheoryModel.

---------

Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2025-12-03 15:57:13 +00:00
Andrew Reynolds
2547e66f7e Fix two RARE proof rules for strings (#12259)
Reported by Jibiana Jakpor.

The rule `str-indexof-contains-concat-pre` was introduced recently in
https://github.com/cvc5/cvc5/pull/12174, which had a typo.

The other rule `str-indexof-contains-pre` is only sound if the string to
find is non-empty.
2025-12-03 15:16:41 +00:00