* draft attempt at optimizing cube tree with resolvents. have not tested/ran yet
* adding comments
* fix bug about needing to bubble resolvent upwards to highest ancestor
* fix bug where we need to cover the whole resolvent in the path when bubbling up
* clean up comments
* Bump actions/checkout from 4 to 5 (#7954)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
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>
* close entire tree when sibling resolvent is empty
* integrate asms directly into cube tree, remove separate tracking
* try to fix bug about redundant resolutions, merging close and try_resolve_upwards into once function
* separate the logic again to avoid mutual recursion
* [WIP] Add a mutex to warning.cpp to ensure that warning messages from different threads don't interfere (#7963)
* Initial plan
* Add mutex to warning.cpp for thread safety
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>
* Remove unused variable 'first' in mpz.cpp
Removed unused variable 'first' from the function.
* fixing the order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* fixing the order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* fix the order of parameter evaluation
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* remove AI slop
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* param order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* param order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* param order evaluation
* parameter eval order
* parameter evaluation order
* param eval
* param eval order
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* Bump github/codeql-action from 3 to 4 (#7971)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: '4'
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>
* Update Z3_mk_datatype_sort API to accept array of sort parameters and add Z3_mk_polymorphic_datatype (#7966)
* Initial plan
* Update Z3_mk_datatype_sort API to accept array of parameters
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update language bindings for parametric datatype sort API
- Python: Updated DatatypeSort() to accept optional params list
- OCaml: Added mk_sort_ref_p/mk_sort_ref_ps for parametric datatypes
- .NET: Added MkDatatypeSortRef() methods with optional params
- Java: Added mkDatatypeSortRef() methods with optional params
- All changes maintain backward compatibility
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Fix .NET build error - rename params to parameters
The 'params' keyword is reserved in C#, causing compilation errors.
Renamed parameter from 'params' to 'parameters' in MkDatatypeSortRef methods.
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Add unit test for parametric datatypes
Added test_parametric_datatype.cpp to demonstrate polymorphic datatypes.
The test creates two concrete instantiations of a generic pair concept:
- pair_int_real with fields (first:Int, second:Real)
- pair_real_int with fields (first:Real, second:Int)
Then verifies that accessors work correctly and type checking is enforced.
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Implement polymorphic type variables support for parametric datatypes
- Modified datatype_decl_plugin to allow type variables as parameters
- Updated mk_datatype_decl to extract type variables from field sorts
- Type variables are collected in order of first appearance
- Revised unit test to use Z3_mk_type_variable for polymorphic datatypes
- Test creates pair datatype with type variables alpha and beta
- Successfully instantiates with concrete types (pair Int Real) and (pair Real Int)
- Verifies accessor types match and equality terms are well-typed
- All tests pass
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Add Z3_mk_polymorphic_datatype API and refactor datatype creation
- Added new API Z3_mk_polymorphic_datatype to z3_api.h
- Renamed static mk_datatype_decl to api_datatype_decl in api_datatype.cpp
- Modified api_datatype_decl to accept explicit type parameters
- Updated all callers to use renamed function
- Added test_polymorphic_datatype_api demonstrating new API usage
- Both tests pass successfully
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Remove type variable collection logic from constructors
Removed the logic for collecting type variables from field sorts based on constructors.
* Update comments on parameter handling in api_datatype.cpp
Clarify usage of parameters in API documentation.
* Fix OCaml build error - use list instead of array for mk_datatype_sort
Changed mk_sort_ref to pass empty list [] instead of empty array [||].
Changed mk_sort_ref_p to pass params list directly instead of converting to array.
Z3native.mk_datatype_sort expects a list, not an array.
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Add polymorphic datatype example to C++ examples
Added polymorphic_datatype_example() demonstrating:
- Creating type variables alpha and beta with Z3_mk_type_variable
- Defining parametric Pair datatype with fields of type alpha and beta
- Instantiating with concrete types (Pair Int Real) and (Pair Real Int)
- Getting constructors and accessors from instantiated datatypes
- Creating constants and expressions using the polymorphic types
- Verifying type correctness with equality (= (first p1) (second p2))
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>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* trim parametric datatype test
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* restore single cell
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* restore the method behavior
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* setting up python tuning experiment, not done
* Add finite_set_value_factory for creating finite set values in model generation (#7981)
* Initial plan
* Add finite_set_value_factory implementation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Remove unused dl_decl_plugin variable and include
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update copyright and add TODOs in finite_set_value_factory
Updated copyright information and added TODO comments for handling in finite_set_value_factory methods.
* Update copyright information in finite_set_value_factory.h
Updated copyright year from 2006 to 2025.
* Implement finite_set_value_factory using array_util to create singleton sets
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Simplify empty set creation in finite_set_value_factory
Refactor finite_set_value_factory to simplify empty set handling and remove array-specific logic.
* Change family ID for finite_set_value_factory
* Fix build error by restoring array_decl_plugin include and implementation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update finite_set_value_factory.h
* Add SASSERT for finite set check in factory
Added assertion to check if the sort is a finite set.
* Rename member variable from m_util to u
* Refactor finite_set_value_factory for value handling
* Use register_value instead of direct set insertion
Replaced direct insertion into set with register_value calls.
* Update finite_set_value_factory.cpp
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* Revert "Add finite_set_value_factory for creating finite set values in model …" (#7985)
This reverts commit 05ffc0a77b.
* Update arith_rewriter.cpp
fix memory leak introduced by update to ensure determinism
* update pythonnn prototyping experiment, need to add a couple more things
* add explicit constructors for nightly mac build failure
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* build fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fixes
* fix some more things but now it hangs
* change multithread to multiprocess seems to have resolved current deadlock
* fix some bugs, it seems to run now
* fix logic about checking clauses individually, and add proof prefix clause selection (naively) via the OnClause hook
* disable manylinux until segfault is resolved
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add the "noexcept" keyword to value_score=(value_score&&) declaration
* expose a status flag for clauses but every single one is being coded as an assumption...
* Add a fast-path to _coerce_exprs. (#7995)
When the inputs are already the same sort, we can skip most of the
coercion logic and just return.
Currently, `_coerce_exprs` is by far the most expensive part of
building up many common Z3 ASTs, so this fast-path is a substantial
speedup for many use-cases.
* Bump actions/setup-node from 5 to 6 (#7994)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: '6'
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>
* Enabling Control Flow Guard (CFG) by default for MSVC on Windows, with options to disable CFG. (#7988)
* Enabling Control Flow Guard by default for MSVC on Windows, with options to disable it.
* Fix configuration error for non-MSVC compilers.
* Reviewed and updated configuration for Python build and added comment for CFG.
* try exponential delay in grobner
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* throttle grobner method more actively
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* enable always add all coeffs in nlsat
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* initial parameter probe thread setup in C++
* more param tuning setup
* setting up the param probe solvers and mutation generator
* adding the learned clauses from the internalizer
* fix some things for clause replay
* score the param probes, but i can't figure out how to access the relevant solver statistics fields from the statistics obj
* set up pattern to notify batch manager so worker threads can update their params according
ly
* add a getter for solver stats. it compiles but still everything is untested
* bugfix
* updates to param tuning
* remove the getter for solver statistics since we're getting the vals directly from the context
---------
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Nelson Elhage <nelhage@nelhage.com>
Co-authored-by: hwisungi <hwisungi@users.noreply.github.com>
* draft attempt at optimizing cube tree with resolvents. have not tested/ran yet
* adding comments
* fix bug about needing to bubble resolvent upwards to highest ancestor
* fix bug where we need to cover the whole resolvent in the path when bubbling up
* clean up comments
* Bump actions/checkout from 4 to 5 (#7954)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
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>
* close entire tree when sibling resolvent is empty
* integrate asms directly into cube tree, remove separate tracking
* try to fix bug about redundant resolutions, merging close and try_resolve_upwards into once function
* separate the logic again to avoid mutual recursion
* [WIP] Add a mutex to warning.cpp to ensure that warning messages from different threads don't interfere (#7963)
* Initial plan
* Add mutex to warning.cpp for thread safety
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>
* Remove unused variable 'first' in mpz.cpp
Removed unused variable 'first' from the function.
* fixing the order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* fixing the order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* fix the order of parameter evaluation
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* remove AI slop
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* param order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* param order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* param order evaluation
* parameter eval order
* parameter evaluation order
* param eval
* param eval order
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* parameter eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* Bump github/codeql-action from 3 to 4 (#7971)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: '4'
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>
* Update Z3_mk_datatype_sort API to accept array of sort parameters and add Z3_mk_polymorphic_datatype (#7966)
* Initial plan
* Update Z3_mk_datatype_sort API to accept array of parameters
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update language bindings for parametric datatype sort API
- Python: Updated DatatypeSort() to accept optional params list
- OCaml: Added mk_sort_ref_p/mk_sort_ref_ps for parametric datatypes
- .NET: Added MkDatatypeSortRef() methods with optional params
- Java: Added mkDatatypeSortRef() methods with optional params
- All changes maintain backward compatibility
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Fix .NET build error - rename params to parameters
The 'params' keyword is reserved in C#, causing compilation errors.
Renamed parameter from 'params' to 'parameters' in MkDatatypeSortRef methods.
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Add unit test for parametric datatypes
Added test_parametric_datatype.cpp to demonstrate polymorphic datatypes.
The test creates two concrete instantiations of a generic pair concept:
- pair_int_real with fields (first:Int, second:Real)
- pair_real_int with fields (first:Real, second:Int)
Then verifies that accessors work correctly and type checking is enforced.
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Implement polymorphic type variables support for parametric datatypes
- Modified datatype_decl_plugin to allow type variables as parameters
- Updated mk_datatype_decl to extract type variables from field sorts
- Type variables are collected in order of first appearance
- Revised unit test to use Z3_mk_type_variable for polymorphic datatypes
- Test creates pair datatype with type variables alpha and beta
- Successfully instantiates with concrete types (pair Int Real) and (pair Real Int)
- Verifies accessor types match and equality terms are well-typed
- All tests pass
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Add Z3_mk_polymorphic_datatype API and refactor datatype creation
- Added new API Z3_mk_polymorphic_datatype to z3_api.h
- Renamed static mk_datatype_decl to api_datatype_decl in api_datatype.cpp
- Modified api_datatype_decl to accept explicit type parameters
- Updated all callers to use renamed function
- Added test_polymorphic_datatype_api demonstrating new API usage
- Both tests pass successfully
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Remove type variable collection logic from constructors
Removed the logic for collecting type variables from field sorts based on constructors.
* Update comments on parameter handling in api_datatype.cpp
Clarify usage of parameters in API documentation.
* Fix OCaml build error - use list instead of array for mk_datatype_sort
Changed mk_sort_ref to pass empty list [] instead of empty array [||].
Changed mk_sort_ref_p to pass params list directly instead of converting to array.
Z3native.mk_datatype_sort expects a list, not an array.
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Add polymorphic datatype example to C++ examples
Added polymorphic_datatype_example() demonstrating:
- Creating type variables alpha and beta with Z3_mk_type_variable
- Defining parametric Pair datatype with fields of type alpha and beta
- Instantiating with concrete types (Pair Int Real) and (Pair Real Int)
- Getting constructors and accessors from instantiated datatypes
- Creating constants and expressions using the polymorphic types
- Verifying type correctness with equality (= (first p1) (second p2))
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>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* trim parametric datatype test
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* restore single cell
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* restore the method behavior
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* setting up python tuning experiment, not done
* Add finite_set_value_factory for creating finite set values in model generation (#7981)
* Initial plan
* Add finite_set_value_factory implementation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Remove unused dl_decl_plugin variable and include
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update copyright and add TODOs in finite_set_value_factory
Updated copyright information and added TODO comments for handling in finite_set_value_factory methods.
* Update copyright information in finite_set_value_factory.h
Updated copyright year from 2006 to 2025.
* Implement finite_set_value_factory using array_util to create singleton sets
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Simplify empty set creation in finite_set_value_factory
Refactor finite_set_value_factory to simplify empty set handling and remove array-specific logic.
* Change family ID for finite_set_value_factory
* Fix build error by restoring array_decl_plugin include and implementation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update finite_set_value_factory.h
* Add SASSERT for finite set check in factory
Added assertion to check if the sort is a finite set.
* Rename member variable from m_util to u
* Refactor finite_set_value_factory for value handling
* Use register_value instead of direct set insertion
Replaced direct insertion into set with register_value calls.
* Update finite_set_value_factory.cpp
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* Revert "Add finite_set_value_factory for creating finite set values in model …" (#7985)
This reverts commit 05ffc0a77b.
* Update arith_rewriter.cpp
fix memory leak introduced by update to ensure determinism
* update pythonnn prototyping experiment, need to add a couple more things
* add explicit constructors for nightly mac build failure
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* build fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fixes
* fix some more things but now it hangs
* change multithread to multiprocess seems to have resolved current deadlock
* fix some bugs, it seems to run now
* fix logic about checking clauses individually, and add proof prefix clause selection (naively) via the OnClause hook
* disable manylinux until segfault is resolved
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add the "noexcept" keyword to value_score=(value_score&&) declaration
* expose a status flag for clauses but every single one is being coded as an assumption...
* Add a fast-path to _coerce_exprs. (#7995)
When the inputs are already the same sort, we can skip most of the
coercion logic and just return.
Currently, `_coerce_exprs` is by far the most expensive part of
building up many common Z3 ASTs, so this fast-path is a substantial
speedup for many use-cases.
* Bump actions/setup-node from 5 to 6 (#7994)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: '6'
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>
* Enabling Control Flow Guard (CFG) by default for MSVC on Windows, with options to disable CFG. (#7988)
* Enabling Control Flow Guard by default for MSVC on Windows, with options to disable it.
* Fix configuration error for non-MSVC compilers.
* Reviewed and updated configuration for Python build and added comment for CFG.
* try exponential delay in grobner
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* throttle grobner method more actively
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* enable always add all coeffs in nlsat
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* initial parameter probe thread setup in C++
* more param tuning setup
* setting up the param probe solvers and mutation generator
* adding the learned clauses from the internalizer
* fix some things for clause replay
* score the param probes, but i can't figure out how to access the relevant solver statistics fields from the statistics obj
* set up pattern to notify batch manager so worker threads can update their params according
ly
---------
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Nelson Elhage <nelhage@nelhage.com>
Co-authored-by: hwisungi <hwisungi@users.noreply.github.com>
* very basic setup
* very basic setup (#7741)
* add score access and reset
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* added notes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* add bash files for test runs
* fix compilation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* more notes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* Update PARALLEL_PROJECT_NOTES.md
* add top-k fixed-sized min-heap priority queue for top scoring literals
* fixed-size min-heap for tracking top-k literals (#7752)
* very basic setup
* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* respect smt configuration parameter in elim_unconstrained simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* indentation
* add bash files for test runs
* add option to selectively disable variable solving for only ground expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove verbose output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix#7745
axioms for len(substr(...)) escaped due to nested rewriting
* ensure atomic constraints are processed by arithmetic solver
* #7739 optimization
add simplification rule for at(x, offset) = ""
Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.
* fix unsound len(substr) axiom
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* FreshConst is_sort (#7748)
* #7750
add pre-processing simplification
* Add parameter validation for selected API functions
* updates to ac-plugin
fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.
* enable passive, add check for bloom up-to-date
* add top-k fixed-sized min-heap priority queue for top scoring literals
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still
* fix bug in parallel solving batch setup
* fix bug
* debugging
* process cubes as lists of individual lits
* Parallel solving (#7756)
* very basic setup
* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* respect smt configuration parameter in elim_unconstrained simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* indentation
* add bash files for test runs
* add option to selectively disable variable solving for only ground expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove verbose output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix#7745
axioms for len(substr(...)) escaped due to nested rewriting
* ensure atomic constraints are processed by arithmetic solver
* #7739 optimization
add simplification rule for at(x, offset) = ""
Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.
* fix unsound len(substr) axiom
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* FreshConst is_sort (#7748)
* #7750
add pre-processing simplification
* Add parameter validation for selected API functions
* updates to ac-plugin
fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.
* enable passive, add check for bloom up-to-date
* add top-k fixed-sized min-heap priority queue for top scoring literals
* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still
* fix bug in parallel solving batch setup
* fix bug
* allow for internalize implies
* disable pre-processing during cubing
* debugging
* process cubes as lists of individual lits
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
* snapshot
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* pair programming
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* pair programming
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* merge
* chipping away at the new code structure
* Parallel solving (#7758)
* very basic setup
* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* respect smt configuration parameter in elim_unconstrained simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* indentation
* add bash files for test runs
* add option to selectively disable variable solving for only ground expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove verbose output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix#7745
axioms for len(substr(...)) escaped due to nested rewriting
* ensure atomic constraints are processed by arithmetic solver
* #7739 optimization
add simplification rule for at(x, offset) = ""
Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.
* fix unsound len(substr) axiom
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* FreshConst is_sort (#7748)
* #7750
add pre-processing simplification
* Add parameter validation for selected API functions
* updates to ac-plugin
fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.
* enable passive, add check for bloom up-to-date
* add top-k fixed-sized min-heap priority queue for top scoring literals
* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still
* fix bug in parallel solving batch setup
* fix bug
* allow for internalize implies
* disable pre-processing during cubing
* debugging
* remove default constructor
* remove a bunch of string copies
* Update euf_ac_plugin.cpp
include reduction rules in forward simplification
* Update euf_completion.cpp
try out restricting scope of equalities added by instantation
* Update smt_parallel.cpp
Drop non-relevant units from shared structures.
* process cubes as lists of individual lits
* merge
* Add support for Algebraic Datatypes in JavaScript/TypeScript bindings (#7734)
* Initial plan
* Add datatype type definitions to types.ts (work in progress)
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype type definitions with working TypeScript compilation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Implement core datatype functionality with TypeScript compilation success
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype implementation with full Context integration and tests
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>
* chipping away at the new code structure
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
Co-authored-by: Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* updates
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* comments
* debug infinite recursion and split cubes on existing split atoms that aren't in the cube
* share lemmas, learn from unsat core, try to debug a couple of things, there was a subtle bug that i have a hard time repro'ing
* Parallel solving (#7759)
* very basic setup
* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* respect smt configuration parameter in elim_unconstrained simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* indentation
* add bash files for test runs
* add option to selectively disable variable solving for only ground expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove verbose output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix#7745
axioms for len(substr(...)) escaped due to nested rewriting
* ensure atomic constraints are processed by arithmetic solver
* #7739 optimization
add simplification rule for at(x, offset) = ""
Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.
* fix unsound len(substr) axiom
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* FreshConst is_sort (#7748)
* #7750
add pre-processing simplification
* Add parameter validation for selected API functions
* updates to ac-plugin
fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.
* enable passive, add check for bloom up-to-date
* add top-k fixed-sized min-heap priority queue for top scoring literals
* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still
* fix bug in parallel solving batch setup
* fix bug
* allow for internalize implies
* disable pre-processing during cubing
* debugging
* remove default constructor
* remove a bunch of string copies
* Update euf_ac_plugin.cpp
include reduction rules in forward simplification
* Update euf_completion.cpp
try out restricting scope of equalities added by instantation
* Update smt_parallel.cpp
Drop non-relevant units from shared structures.
* process cubes as lists of individual lits
* merge
* Add support for Algebraic Datatypes in JavaScript/TypeScript bindings (#7734)
* Initial plan
* Add datatype type definitions to types.ts (work in progress)
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype type definitions with working TypeScript compilation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Implement core datatype functionality with TypeScript compilation success
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype implementation with full Context integration and tests
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>
* chipping away at the new code structure
* comments
* debug infinite recursion and split cubes on existing split atoms that aren't in the cube
* share lemmas, learn from unsat core, try to debug a couple of things, there was a subtle bug that i have a hard time repro'ing
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
Co-authored-by: Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* updates
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* simplify output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* merge
* resolve bad bug about l2g and g2l translators using wrong global context. add some debug prints
* initial attempt at dynamically switching from greedy to frugal splitting strategy in return_cubes. need to test. also there is some bug where the threads take forever to cancel?
* Parallel solving (#7769)
* very basic setup
* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* respect smt configuration parameter in elim_unconstrained simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* indentation
* add bash files for test runs
* add option to selectively disable variable solving for only ground expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove verbose output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix#7745
axioms for len(substr(...)) escaped due to nested rewriting
* ensure atomic constraints are processed by arithmetic solver
* #7739 optimization
add simplification rule for at(x, offset) = ""
Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.
* fix unsound len(substr) axiom
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* FreshConst is_sort (#7748)
* #7750
add pre-processing simplification
* Add parameter validation for selected API functions
* updates to ac-plugin
fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.
* enable passive, add check for bloom up-to-date
* add top-k fixed-sized min-heap priority queue for top scoring literals
* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still
* fix bug in parallel solving batch setup
* fix bug
* allow for internalize implies
* disable pre-processing during cubing
* debugging
* remove default constructor
* remove a bunch of string copies
* Update euf_ac_plugin.cpp
include reduction rules in forward simplification
* Update euf_completion.cpp
try out restricting scope of equalities added by instantation
* Update smt_parallel.cpp
Drop non-relevant units from shared structures.
* process cubes as lists of individual lits
* merge
* Add support for Algebraic Datatypes in JavaScript/TypeScript bindings (#7734)
* Initial plan
* Add datatype type definitions to types.ts (work in progress)
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype type definitions with working TypeScript compilation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Implement core datatype functionality with TypeScript compilation success
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype implementation with full Context integration and tests
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>
* chipping away at the new code structure
* comments
* debug infinite recursion and split cubes on existing split atoms that aren't in the cube
* share lemmas, learn from unsat core, try to debug a couple of things, there was a subtle bug that i have a hard time repro'ing
* merge
* resolve bad bug about l2g and g2l translators using wrong global context. add some debug prints
* initial attempt at dynamically switching from greedy to frugal splitting strategy in return_cubes. need to test. also there is some bug where the threads take forever to cancel?
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
Co-authored-by: Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* resolve bug about not translating managers correctly for the second phase of the greedy cubing, and the frugal fallback
* Parallel solving (#7771)
* very basic setup
* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* respect smt configuration parameter in elim_unconstrained simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* indentation
* add bash files for test runs
* add option to selectively disable variable solving for only ground expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove verbose output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix#7745
axioms for len(substr(...)) escaped due to nested rewriting
* ensure atomic constraints are processed by arithmetic solver
* #7739 optimization
add simplification rule for at(x, offset) = ""
Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.
* fix unsound len(substr) axiom
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* FreshConst is_sort (#7748)
* #7750
add pre-processing simplification
* Add parameter validation for selected API functions
* updates to ac-plugin
fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.
* enable passive, add check for bloom up-to-date
* add top-k fixed-sized min-heap priority queue for top scoring literals
* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still
* fix bug in parallel solving batch setup
* fix bug
* allow for internalize implies
* disable pre-processing during cubing
* debugging
* remove default constructor
* remove a bunch of string copies
* Update euf_ac_plugin.cpp
include reduction rules in forward simplification
* Update euf_completion.cpp
try out restricting scope of equalities added by instantation
* Update smt_parallel.cpp
Drop non-relevant units from shared structures.
* process cubes as lists of individual lits
* merge
* Add support for Algebraic Datatypes in JavaScript/TypeScript bindings (#7734)
* Initial plan
* Add datatype type definitions to types.ts (work in progress)
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype type definitions with working TypeScript compilation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Implement core datatype functionality with TypeScript compilation success
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype implementation with full Context integration and tests
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>
* chipping away at the new code structure
* comments
* debug infinite recursion and split cubes on existing split atoms that aren't in the cube
* share lemmas, learn from unsat core, try to debug a couple of things, there was a subtle bug that i have a hard time repro'ing
* merge
* fix#7603: race condition in Ctrl-C handling (#7755)
* fix#7603: race condition in Ctrl-C handling
* fix race in cancel_eh
* fix build
* add arithemtic saturation
* add an option to register callback on quantifier instantiation
Suppose a user propagator encodes axioms using quantifiers and uses E-matching for instantiation. If it wants to implement a custom priority scheme or drop some instances based on internal checks it can register a callback with quantifier instantiation
* missing new closure
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add Z3_solver_propagate_on_binding to ml callback declarations
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add python file
Signed-off-by: Lev Nachmanson <levnach@Levs-MacBook-Pro.local>
* debug under defined calls
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* more untangle params
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* precalc parameters to define the eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* remove a printout
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rename a Python file
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* add on_binding callbacks across APIs
update release notes,
add to Java, .Net, C++
* use jboolean in Native interface
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* register on_binding attribute
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix java build for java bindings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* avoid interferring side-effects in function calls
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove theory_str and classes that are only used by it
* remove automata from python build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove ref to theory_str
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* get the finest factorizations before project
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rename add_lcs to add_lc
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* resolve bad bug about l2g and g2l translators using wrong global context. add some debug prints
* initial attempt at dynamically switching from greedy to frugal splitting strategy in return_cubes. need to test. also there is some bug where the threads take forever to cancel?
* Update RELEASE_NOTES.md
* resolve bug about not translating managers correctly for the second phase of the greedy cubing, and the frugal fallback
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Signed-off-by: Lev Nachmanson <levnach@Levs-MacBook-Pro.local>
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
Co-authored-by: Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
* code and notes
* add some debug prints and impelement internal polynomial fix
* add some comments and debug m_assumptions_used
* redo greedy->frugal strategy so we don't split on existing cubes in frugal at all (eliminate the incorrect/wasteful step by processing current batch first)
* set up initial scaffolding for sharing clauses between threads and batch manager. needs some reworking/debug still
* Parallel solving (#7774)
* very basic setup
* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* respect smt configuration parameter in elim_unconstrained simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* indentation
* add bash files for test runs
* add option to selectively disable variable solving for only ground expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove verbose output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix#7745
axioms for len(substr(...)) escaped due to nested rewriting
* ensure atomic constraints are processed by arithmetic solver
* #7739 optimization
add simplification rule for at(x, offset) = ""
Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.
* fix unsound len(substr) axiom
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* FreshConst is_sort (#7748)
* #7750
add pre-processing simplification
* Add parameter validation for selected API functions
* updates to ac-plugin
fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.
* enable passive, add check for bloom up-to-date
* add top-k fixed-sized min-heap priority queue for top scoring literals
* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still
* fix bug in parallel solving batch setup
* fix bug
* allow for internalize implies
* disable pre-processing during cubing
* debugging
* remove default constructor
* remove a bunch of string copies
* Update euf_ac_plugin.cpp
include reduction rules in forward simplification
* Update euf_completion.cpp
try out restricting scope of equalities added by instantation
* Update smt_parallel.cpp
Drop non-relevant units from shared structures.
* process cubes as lists of individual lits
* merge
* Add support for Algebraic Datatypes in JavaScript/TypeScript bindings (#7734)
* Initial plan
* Add datatype type definitions to types.ts (work in progress)
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype type definitions with working TypeScript compilation
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Implement core datatype functionality with TypeScript compilation success
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Complete datatype implementation with full Context integration and tests
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>
* chipping away at the new code structure
* comments
* debug infinite recursion and split cubes on existing split atoms that aren't in the cube
* share lemmas, learn from unsat core, try to debug a couple of things, there was a subtle bug that i have a hard time repro'ing
* merge
* fix#7603: race condition in Ctrl-C handling (#7755)
* fix#7603: race condition in Ctrl-C handling
* fix race in cancel_eh
* fix build
* add arithemtic saturation
* add an option to register callback on quantifier instantiation
Suppose a user propagator encodes axioms using quantifiers and uses E-matching for instantiation. If it wants to implement a custom priority scheme or drop some instances based on internal checks it can register a callback with quantifier instantiation
* missing new closure
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add Z3_solver_propagate_on_binding to ml callback declarations
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add python file
Signed-off-by: Lev Nachmanson <levnach@Levs-MacBook-Pro.local>
* debug under defined calls
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* more untangle params
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* precalc parameters to define the eval order
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* remove a printout
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rename a Python file
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* add on_binding callbacks across APIs
update release notes,
add to Java, .Net, C++
* use jboolean in Native interface
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* register on_binding attribute
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* fix java build for java bindings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* avoid interferring side-effects in function calls
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove theory_str and classes that are only used by it
* remove automata from python build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove ref to theory_str
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* get the finest factorizations before project
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rename add_lcs to add_lc
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* resolve bad bug about l2g and g2l translators using wrong global context. add some debug prints
* initial attempt at dynamically switching from greedy to frugal splitting strategy in return_cubes. need to test. also there is some bug where the threads take forever to cancel?
* Update RELEASE_NOTES.md
* resolve bug about not translating managers correctly for the second phase of the greedy cubing, and the frugal fallback
* remove unused square-free check
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* add some debug prints and impelement internal polynomial fix
* add some comments and debug m_assumptions_used
* redo greedy->frugal strategy so we don't split on existing cubes in frugal at all (eliminate the incorrect/wasteful step by processing current batch first)
* set up initial scaffolding for sharing clauses between threads and batch manager. needs some reworking/debug still
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Signed-off-by: Lev Nachmanson <levnach@Levs-MacBook-Pro.local>
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
Co-authored-by: Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
* sign of life
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add notes on parameter tuning
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add notes on parameter tuning
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add notes on parameter tuning
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add notes on parameter tuning
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* turn off logging at level 0 for testing
* add max thread conflicts backoff
---------
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Signed-off-by: Lev Nachmanson <levnach@Levs-MacBook-Pro.local>
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
Co-authored-by: Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
Suppose a user propagator encodes axioms using quantifiers and uses E-matching for instantiation. If it wants to implement a custom priority scheme or drop some instances based on internal checks it can register a callback with quantifier instantiation
* Introduce X-macro-based trace tag definition
- Created trace_tags.def to centralize TRACE tag definitions
- Each tag includes a symbolic name and description
- Set up enum class TraceTag for type-safe usage in TRACE macros
* Add script to generate Markdown documentation from trace_tags.def
- Python script parses trace_tags.def and outputs trace_tags.md
* Refactor TRACE_NEW to prepend TraceTag and pass enum to is_trace_enabled
* trace: improve trace tag handling system with hierarchical tagging
- Introduce hierarchical tag-class structure: enabling a tag class activates all child tags
- Unify TRACE, STRACE, SCTRACE, and CTRACE under enum TraceTag
- Implement initial version of trace_tag.def using X(tag, tag_class, description)
(class names and descriptions to be refined in a future update)
* trace: replace all string-based TRACE tags with enum TraceTag
- Migrated all TRACE, STRACE, SCTRACE, and CTRACE macros to use enum TraceTag values instead of raw string literals
* trace : add cstring header
* trace : Add Markdown documentation generation from trace_tags.def via mk_api_doc.py
* trace : rename macro parameter 'class' to 'tag_class' and remove Unicode comment in trace_tags.h.
* trace : Add TODO comment for future implementation of tag_class activation
* trace : Disable code related to tag_class until implementation is ready (#7663).
Add API solve_for(vars).
It takes a list of variables and returns a triangular solved form for the variables.
Currently for arithmetic. The solved form is a list with elements of the form (var, term, guard).
Variables solved in the tail of the list do not occur before in the list.
For example it can return a solution [(x, z, True), (y, x + z, True)] because first x was solved to be z,
then y was solved to be x + z which is the same as 2z.
Add congruent_explain that retuns an explanation for congruent terms.
Terms congruent in the final state after calling SimpleSolver().check() can be queried for
an explanation, i.e., a list of literals that collectively entail the equality under congruence closure.
The literals are asserted in the final state of search.
Adjust smt_context cancellation for the smt.qi.max_instantiations parameter.
It gets checked when qi-queue elements are consumed.
Prior it was checked on insertion time, which didn't allow for processing as many
instantations as there were in the queue. Moreover, it would not cancel the solver.
So it would keep adding instantations to the queue when it was full / depleted the
configuration limit.
log theory propagations with annotation "smt".
It allows tracking theory propagations (when used in conflicts) in the clause logs similar to the new core.
- add solver.axioms2files
- prints negated theory axioms to files. Each file should be unsat
- add solver.lemmas2console
- prints lemmas to the console.
- remove option smt.arith.dump_lemmas. It is replaced by solver.axioms2files