3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-27 19:08:49 +00:00
Commit graph

22829 commits

Author SHA1 Message Date
CEisenhofer
e25e93503b First try to do better dependency tracking 2026-04-01 15:23:38 +02:00
CEisenhofer
60913f0068 Output both Nielsen graph size and conflict size 2026-04-01 10:23:55 +02:00
CEisenhofer
5d95f44a03 Conflict logging 2026-04-01 10:08:03 +02:00
Nikolaj Bjorner
1f8773ea7d nits
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-31 20:12:59 -07:00
Nikolaj Bjorner
2cec2dadf9 cleanup
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-31 18:30:59 -07:00
Nikolaj Bjorner
013d6b3063 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-31 18:21:38 -07:00
Nikolaj Bjorner
860bd43559 remove reference to arith_solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-31 16:16:53 -07:00
Copilot
56a8259717
Add Z3_mk_polymorphic_datatype to Python, .NET, Go, and TypeScript bindings (#9181)
* Add Z3_mk_polymorphic_datatype to Python, .NET, Go, and TypeScript bindings

Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/13ef481d-61f5-47e1-8659-59cd91692fdd

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Improve Python error message for polymorphic datatype self-reference check

Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/13ef481d-61f5-47e1-8659-59cd91692fdd

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-31 14:15:34 -07:00
Copilot
56eeb5b52c
Add pseudo-Boolean/cardinality constraints to Go and OCaml APIs (#9182)
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/64ff2e48-47b1-4195-b154-ac38095dbbfb

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-31 13:44:52 -07:00
Copilot
31425b07ca
Add SetGlobalParam, GetGlobalParam, ResetAllGlobalParams to Go bindings (#9179)
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/f06c74eb-4cac-45f6-92b9-b2698150074c

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-31 09:48:37 -07:00
Yanjun Yang(Pluto)
ba77141b51
add tag for linux/loongarch64 (#9184) 2026-03-31 08:57:20 -07:00
Nikolaj Bjorner
7ec3f7f107 add split function for unit_regex
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-31 08:56:36 -07:00
CEisenhofer
14f71ea852 Reuse power variables and symbolic characters 2026-03-31 16:36:10 +02:00
Lev Nachmanson
1ec07ac5e9 restore an optimization in scoped_numeral_vector.h
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2026-03-30 19:53:23 -10:00
Nikolaj Bjorner
54d52d882f remove indirect references to ast_manager
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-30 20:00:02 -07:00
dependabot[bot]
4ece18c284
Bump github/gh-aw from 0.57.2 to 0.65.0 (#9173)
Bumps [github/gh-aw](https://github.com/github/gh-aw) from 0.57.2 to 0.65.0.
- [Release notes](https://github.com/github/gh-aw/releases)
- [Commits](https://github.com/github/gh-aw/compare/v0.57.2...v0.65.0)

---
updated-dependencies:
- dependency-name: github/gh-aw
  dependency-version: 0.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 19:17:19 -07:00
dependabot[bot]
a988457b0a
Bump actions/download-artifact from 8.0.0 to 8.0.1 (#9174)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v8...v8.0.1)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 19:17:06 -07:00
dependabot[bot]
826b15e320
Bump nuget/setup-nuget from 2 to 3 (#9175)
Bumps [nuget/setup-nuget](https://github.com/nuget/setup-nuget) from 2 to 3.
- [Release notes](https://github.com/nuget/setup-nuget/releases)
- [Commits](https://github.com/nuget/setup-nuget/compare/v2...v3)

---
updated-dependencies:
- dependency-name: nuget/setup-nuget
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 19:16:54 -07:00
dependabot[bot]
f8720c9ce3
Bump actions/cache from 5.0.3 to 5.0.4 (#9176)
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.3 to 5.0.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Commits](https://github.com/actions/cache/compare/v5.0.3...v5.0.4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 19:16:39 -07:00
Nikolaj Bjorner
6d2321e6fe edits to seq_nielsen
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-30 17:36:27 -07:00
Lev Nachmanson
b3f977d06c
Fix nlsat clear crash (#9150)
* fix nlsat clear() and scoped_numeral_vector copy ctor crashes

Reset polynomial cache and assignments in nlsat::solver:👿:clear()
to prevent use-after-free when the solver is destroyed. The missing
resets caused heap corruption when check_assignment's
compute_linear_explanation created cached polynomials and root atoms
that outlived the solver's other data structures during destruction.

Also fix _scoped_numeral_vector copy constructor to read from other
instead of uninitialized self.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* simplify scoped_numeral_vector copy constructor loop

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* revert clear() additions that cause heap corruption

The m_cache.reset(), m_assignment.reset(), m_lo.reset(), m_hi.reset()
calls added to clear() in commit 481eb0327 cause heap corruption when
clear() is called from the destructor. The cache reset frees polynomials
while the polynomial manager still holds references to them, corrupting
the heap. This manifests as 'corrupted double-linked list' crashes
during nlsat solver destruction in the nra check path.

The reset() method already has these calls for solver reuse. The
destructor path via clear() should not duplicate them, as implicit
member destruction handles cleanup in the correct order.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix heap corruption from root_function move/sort operations

root_function's move constructor and move assignment were doing deep
copies of algebraic numbers via anum_manager::set() instead of proper
moves. During std::vector reallocation (emplace) and std::sort, this
caused massive allocation churn that corrupted the heap.

Fixes:
1. Move constructor: use std::move(other.val) for proper swap semantics.
2. Move assignment: use val.swap(other.val) instead of deep copy.
3. Add friend swap() for ADL so std::sort uses efficient swaps.
4. Sort root_function partitions via index permutation + swap cycles
   instead of std::sort directly on root_function objects.
5. Reserve rfunc vector before emplace in add_linear_approximations().
6. Reserve lhalf/uhalf vectors before collecting root functions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix apply_permutation to take perm by const reference

Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/f81ba8ad-2875-4fcc-ba91-d502905756be

Co-authored-by: levnach <5377127+levnach@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-03-30 04:58:45 -10:00
copilot-swe-agent[bot]
1f506ee242 Fix apply_permutation to take perm by const reference
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/f81ba8ad-2875-4fcc-ba91-d502905756be

Co-authored-by: levnach <5377127+levnach@users.noreply.github.com>
2026-03-30 04:57:08 -10:00
Lev Nachmanson
20548c08ec fix heap corruption from root_function move/sort operations
root_function's move constructor and move assignment were doing deep
copies of algebraic numbers via anum_manager::set() instead of proper
moves. During std::vector reallocation (emplace) and std::sort, this
caused massive allocation churn that corrupted the heap.

Fixes:
1. Move constructor: use std::move(other.val) for proper swap semantics.
2. Move assignment: use val.swap(other.val) instead of deep copy.
3. Add friend swap() for ADL so std::sort uses efficient swaps.
4. Sort root_function partitions via index permutation + swap cycles
   instead of std::sort directly on root_function objects.
5. Reserve rfunc vector before emplace in add_linear_approximations().
6. Reserve lhalf/uhalf vectors before collecting root functions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-30 04:57:08 -10:00
Lev Nachmanson
e760eabd2b revert clear() additions that cause heap corruption
The m_cache.reset(), m_assignment.reset(), m_lo.reset(), m_hi.reset()
calls added to clear() in commit 481eb0327 cause heap corruption when
clear() is called from the destructor. The cache reset frees polynomials
while the polynomial manager still holds references to them, corrupting
the heap. This manifests as 'corrupted double-linked list' crashes
during nlsat solver destruction in the nra check path.

The reset() method already has these calls for solver reuse. The
destructor path via clear() should not duplicate them, as implicit
member destruction handles cleanup in the correct order.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-30 04:57:08 -10:00
Lev Nachmanson
78d70fea37 simplify scoped_numeral_vector copy constructor loop
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-30 04:57:08 -10:00
Lev Nachmanson
75baedb314 fix nlsat clear() and scoped_numeral_vector copy ctor crashes
Reset polynomial cache and assignments in nlsat::solver:👿:clear()
to prevent use-after-free when the solver is destroyed. The missing
resets caused heap corruption when check_assignment's
compute_linear_explanation created cached polynomials and root atoms
that outlived the solver's other data structures during destruction.

Also fix _scoped_numeral_vector copy constructor to read from other
instead of uninitialized self.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-30 04:57:08 -10:00
Nikolaj Bjorner
9aceaf3cac reviewing seq_nielsen, detect repeated final-check to avoid rebuilding nielsen graph
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-30 00:01:24 -07:00
Nikolaj Bjorner
a79a48ed2a add comment about fresh variable
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-29 20:16:07 -07:00
Nikolaj Bjorner
684cb23b40 turn on constraint integrity checking
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-29 19:30:13 -07:00
Nikolaj Bjorner
d7ee475bc3 ensure equalities are propagated
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-29 16:47:05 -07:00
Nikolaj Bjorner
6d31bdcc21 use sk.mk_seq_eq to avoid disequality propagations
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-29 15:45:54 -07:00
Copilot
09cde1f80c
Port propagate_eq from theory_seq for sk().is_eq in theory_nseq (#9165)
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/7c0a330f-3f9f-4c5d-99f2-47fad013538f

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-29 15:44:18 -07:00
Nikolaj Bjorner
3db734d249 add note about propagate-eq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-29 15:19:36 -07:00
Copilot
00418e7368
fix riscv64 nightly: install MPFR 4.x before using Ubuntu 20.04 RISC-V toolchain (#9157)
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/41c35acf-fab8-4cd1-8bff-7cceb9ba43f5

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-28 15:36:44 -07:00
Copilot
8969921cab
Add riscv64 wheel builds to nightly and release PyPI publishing (#9153)
* Initial plan

* Add riscv64 PyPI wheel builds to nightly, release, and validation workflows

Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/c22657c9-a5a9-4dad-b5d7-002209b7afe1

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-28 15:26:59 -07:00
dependabot[bot]
d7f8fb5a1c
Bump picomatch from 2.3.1 to 2.3.2 in /src/api/js (#9130)
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-28 15:03:44 -07:00
CEisenhofer
ebd35bc5a3 Avoid doing extensions steps twice, as the bounds are recognized too late 2026-03-26 17:32:41 +01:00
CEisenhofer
dcc85cf9ef Bug in power elimination 2026-03-26 17:18:38 +01:00
Nikolaj Bjorner
2a72faf15e make sure conflict literal is negated
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-26 08:01:00 -07:00
CEisenhofer
3b5b53126e Bug fixing with unit replacement 2026-03-26 15:56:58 +01:00
CEisenhofer
17ca44b351 Readded depth limit 2026-03-26 11:30:54 +01:00
Nikolaj Bjorner
fa4cd37c07 add the false literal callback
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-25 13:35:25 -07:00
Nikolaj Bjorner
77d86343d0 add the false literal callback
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-25 13:35:18 -07:00
CEisenhofer
ed403efefd Readded subsolver bound computation (something went wrong with git) 2026-03-25 20:26:30 +01:00
CEisenhofer
910c68cd42 Missing internalization 2026-03-25 20:21:54 +01:00
CEisenhofer
495921ca17 Fixed splitting on symbolic character 2026-03-25 20:21:54 +01:00
CEisenhofer
813a06fa38 Use subsolvers bounds rather than computing them inside nseq 2026-03-25 20:21:49 +01:00
Nikolaj Bjorner
af4677950b add code for adding assumptions after sat
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-25 11:45:43 -07:00
Nikolaj Bjorner
a0ba950987 fix type errors
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-25 11:19:53 -07:00
Nikolaj Bjorner
9d2244798d fix insertions into subst.
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-25 09:00:37 -07:00