3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 05:18:44 +00:00
Commit graph

15580 commits

Author SHA1 Message Date
Nikolaj Bjorner 615aad7779 get rid of int*, use lambda scoping
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-20 15:18:37 -07:00
Nikolaj Bjorner 7a74b099ba remove experimental code
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-20 15:04:24 -07:00
Lev Nachmanson 24512d5ec2 typo 2023-09-20 14:12:36 -07:00
Lev Nachmanson 9648793206 add features to std_allocator 2023-09-20 14:11:38 -07:00
Lev Nachmanson f2a0ddb385 Merge branch 'unit_prop_on_monomials' of https://github.com/z3prover/z3 into unit_prop_on_monomials 2023-09-19 15:47:01 -07:00
Lev Nachmanson d77c91b1aa trying to get else on a new line
with clang-formatter
2023-09-19 15:46:59 -07:00
Nikolaj Bjorner f07553ed3a formatting updates
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-19 15:18:38 -07:00
Nikolaj Bjorner db84d21e3b
Merge branch 'master' into unit_prop_on_monomials 2023-09-19 14:44:01 -07:00
Nikolaj Bjorner fba5de3a25 remove unused code
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-19 14:43:02 -07:00
Nikolaj Bjorner 4d742001ab formatting of else
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-19 14:36:21 -07:00
Nikolaj Bjorner 85db8163fa move allocator to memory_manager and std_vector to vector
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-19 13:57:28 -07:00
Lev Nachmanson c5cfd62e0a remove dead code related to nla unit propagation
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-19 10:56:09 -07:00
Lev Nachmanson cf63e75898 using structures from util in lp_bound_propagator
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-18 13:25:24 -07:00
Nikolaj Bjorner 643512613a simplify last_index function 2023-09-18 12:52:59 -07:00
Nikolaj Bjorner 31c91e1674 #6902
add parse check for identifiers used for datatype declarations.
2023-09-18 12:52:59 -07:00
Nuno Lopes b1c52c0b16 don't crash when a function doesn't have a model when converting a solver to string 2023-09-18 10:16:19 +01:00
Nuno Lopes ff33fa355a fix debug single-thread build 2023-09-18 09:44:37 +01:00
Lev Nachmanson af8d192392 add an include 2023-09-17 13:14:36 -07:00
Lev Nachmanson 10095a30b7 add an include file 2023-09-17 12:25:11 -07:00
Lev Nachmanson 66f6a0327f change type of m_ibounds to std::vector 2023-09-17 11:00:48 -07:00
Lev Nachmanson 30b743d7b3 refactor propagat_monic 2023-09-17 10:45:54 -07:00
Lev Nachmanson 7353d7fb4d fix dep calculations in lp_bound_propagator 2023-09-17 06:48:12 -07:00
Lev Nachmanson 77e56b0a69 debug 2023-09-16 13:54:14 -07:00
Lev Nachmanson c240f62ca8 is_linear does not check for is_big 2023-09-15 17:44:10 -07:00
Lev Nachmanson b621c9fa1c remove an extrac check in bound_is_interesting 2023-09-15 17:42:18 -07:00
Lev Nachmanson 4cfba9787b debug lp_bound_propagator 2023-09-15 17:41:10 -07:00
Lev Nachmanson 762ade2a79 check m_unassigned_bounds in bound_is_interesting 2023-09-15 06:15:22 -07:00
Lev Nachmanson a55aa1a648 add a comment 2023-09-14 19:29:48 -07:00
Lev Nachmanson b3673d491e fix the build for gcc 2023-09-14 19:20:47 -07:00
Nikolaj Bjorner b87a91379c fix #6894
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-14 17:14:14 -07:00
Nikolaj Bjorner 50d76a2fe3 fix #6894
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-14 17:14:14 -07:00
Lev Nachmanson cbad61ba2e propagate monics with lp_bound_propagator 2023-09-13 14:27:34 -07:00
Lev Nachmanson c309d52283 runs a simple test 2023-09-13 08:12:00 -07:00
Lev Nachmanson c050af922f fixing the bugs 2023-09-07 15:59:20 -07:00
Lev Nachmanson c43b99daae renaming
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-07 11:57:20 -07:00
Lev Nachmanson 47b64e689c restore the lemma scheme
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-07 11:33:14 -07:00
Lev Nachmanson 288e66de59 restore m_crossed* and create lemmas
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-06 09:27:30 -07:00
Lev Nachmanson 41f59cb1ed propagate monomial is nla 2023-09-05 18:49:59 -07:00
Nikolaj Bjorner 4d9af7848d add parameter to disable pattern inference #6884
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-03 15:27:37 -07:00
Nikolaj Bjorner 99239068ba some template instantiations #6869
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-03 15:21:49 -07:00
Nikolaj Bjorner c2e73a6aae logging pre-processing
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-03 15:19:31 -07:00
Lev Nachmanson 318d7d7564 fixes a bug 2023-09-01 11:32:26 -07:00
Lev Nachmanson d3258e7084 propagate lineal monomial 2023-09-01 11:18:03 -07:00
Lev Nachmanson 5509b468e9 handle monomial_bounds::unit_propagate() 2023-08-31 17:35:41 -07:00
Nikolaj Bjorner ff3268e636 move unit propagation into monomial_bounds
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-31 14:32:05 -07:00
Nikolaj Bjorner c2cbe72b64 sketch linear monomial propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-31 11:49:05 -07:00
Nikolaj Bjorner 38b131386d add stubs for monomial unit propagation 2023-08-30 17:21:48 -07:00
Nuno Lopes 00593609c5 minor code simplification 2023-08-30 12:50:29 +01:00
Nikolaj Bjorner 09f911d8a8 include rewriter for recursive functions in model-evaluator
fixes bug reported by Tahina and Nick, @tahina-pro
2023-08-28 11:31:40 -07:00
Hari Govind V K 5ba06f4e28
print deq in lits2pure. fix #6877 (#6878) 2023-08-26 20:53:15 -07:00
Nikolaj Bjorner 63467f9dfa fix #6876
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-25 17:14:35 -07:00
Nikolaj Bjorner e8929041b8 fixing calls, signs 2023-08-22 09:29:12 -07:00
Nikolaj Bjorner 818b1129a5 fix regression in sign of literals from new solver 2023-08-22 09:04:08 -07:00
Lev Nachmanson 61a7c6b28d init m_literal_vec
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-08-21 17:11:55 -07:00
Lev Nachmanson 9aeaed8f53
Merge branch 'master' into nl_branches 2023-08-21 16:15:20 -07:00
Nikolaj Bjorner 1d9e0feb84 Merge branch 'master' of https://github.com/z3prover/z3 2023-08-21 09:19:16 -07:00
Nikolaj Bjorner 79aa317af4 remove if-def inside cpp file that should not be there #6869
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-21 09:19:06 -07:00
Hari Govind V K b8d8553c41
support or, and, implies, distinct in mbp_basic (#6867) 2023-08-20 15:36:22 -07:00
Nikolaj Bjorner 37ddaaef69 make destructors virtual
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-20 15:30:57 -07:00
Nuno Lopes dda0c8ff42 array theory: use expr_ref for mk_default() so it doesnt leak if internalize throws
like on timeout/memout
2023-08-20 22:28:57 +01:00
Lev Nachmanson 9b672bc5cc remove tracking of bounds 2023-08-20 10:10:48 -07:00
Nuno Lopes 57c667e355 remove unused code 2023-08-20 15:16:47 +01:00
Nuno Lopes a694d27557 revert removal of virtual destructor of relevancy_eh since clang doesnt play along 2023-08-20 14:20:20 +01:00
Nuno Lopes 8210aafb69 ast compare_nodes: fail faster when comparing quantifier expressions 2023-08-20 14:09:04 +01:00
Nuno Lopes c469c6e1d5 attempt to fix clang buildbots 2023-08-20 13:39:15 +01:00
Nuno Lopes 28884b398c remove unneeded virtual destructor (optimization) 2023-08-20 12:57:47 +01:00
Nuno Lopes 3b546b2348 smt_context: we can't assert that the resource limits were exceeded on cancel_exception
It happens sometimes that e.g. the internalizer goes above the soft memory limit
But since it's only by a small amount, when the exception propagates back to the context, some stuff
has been freed already and we are not longer above the memory threshold
Just delete these asserts
2023-08-20 10:34:28 +01:00
Nuno Lopes 5d33805c8b optimize ~relevancy_propagator_imp() so it just dec refs the exprs in the trail
It avoid doing all the funky watch stuff
One extreme Alive2 test case goes from 40s to 28s :)
2023-08-20 10:07:56 +01:00
Nikolaj Bjorner 5e3df9ee77
Arith min max (#6864)
* prepare for dependencies

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* snapshot

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* more refactoring

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* more refactoring

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* build

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* pass in u_dependency_manager

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* address NYIs

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* more refactoring names

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* eq_explanation update

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* add outline of bounds improvement functionality

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix unit tests

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove unused structs

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* more bounds

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* more bounds

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* convert more internals to use u_dependency instead of constraint_index

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* convert more internals to use u_dependency instead of constraint_index

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remember to push/pop scopes

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* use the main function for updating bounds

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* na

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* na

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove reset of shared dep manager

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* disable improve-bounds, add statistics

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

---------

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-19 17:44:09 -07:00
Nikolaj Bjorner c3b344ec47 fix #6865
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-18 16:51:58 -07:00
Lev Nachmanson 610313946d split free vars in nla 2023-08-18 12:36:14 -07:00
Nikolaj Bjorner 59b56f2ce7 update unit test to be compatible with C++ vs C exception semantics #6537
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-17 19:13:50 -07:00
Nikolaj Bjorner 73724f9cab lines that go away
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-17 18:45:49 -07:00
Lev Nachmanson 252a30e727
use param_ref in nla_solver (#6862)
* use param_ref in nla_solver

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* add parameters

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* add parameters

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* replace nla_setting by command line parameters

* delete nla_setting.h

---------

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-17 18:44:27 -07:00
Nikolaj Bjorner 63ea8efcfb remove output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-17 15:20:12 -07:00
Nikolaj Bjorner 2dbf9bcab2 Merge branch 'master' of https://github.com/z3prover/z3 2023-08-17 15:18:36 -07:00
Nikolaj Bjorner 51df7b75ce fix 6800
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-17 15:18:22 -07:00
Hari Govind V K 1be692002d
split on all ite terms. fix #6852 (#6859) 2023-08-16 10:07:30 -07:00
Nikolaj Bjorner b04e48f374 fix #6850
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-13 15:06:39 -07:00
Nikolaj Bjorner 33c35b0c31 fix #6851
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-13 14:49:25 -07:00
Nikolaj Bjorner 6366f8f6b2 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-13 14:05:07 -07:00
Nikolaj Bjorner 9804ba9fd2 Merge branch 'master' of https://github.com/z3prover/z3 2023-08-12 20:34:21 -07:00
Nikolaj Bjorner 41cac5f69e remove output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-12 20:34:15 -07:00
Lev Nachmanson eb817f779d small change in factor to support TRACE 2023-08-11 12:04:08 -10:00
Lev Nachmanson a932e596eb add a constructor from a variable to factor 2023-08-10 08:34:53 -10:00
Nikolaj Bjorner a6ab0a7d49 formatting hygiene
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-08 13:50:49 -07:00
Lev Nachmanson a7966dc436 remove an assert 2023-08-07 14:55:13 -10:00
Lev Nachmanson 858eebca82 more efficient column_is_fixed 2023-08-07 14:55:13 -10:00
Lev Nachmanson 0fbf8f92f5 delete remove_fixed_vars_from_base() from
int_solver
2023-08-07 14:55:13 -10:00
Nikolaj Bjorner c3a373e225 format
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-07 14:55:13 -10:00
Lev Nachmanson 0c98c755ba new equality propagation scheme, etc 2023-08-07 14:55:13 -10:00
Nikolaj Bjorner 125787c458 remove dead code 2023-08-07 11:22:34 -07:00
Hari Govind V K dd0b0b47b8
fix #5925 (#6846) 2023-08-04 15:18:16 -07:00
Nikolaj Bjorner 84520d53ea remove out
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-04 11:33:39 -07:00
Nikolaj Bjorner b0055df4ab revert arithmetic final check to original order
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-04 10:48:44 -07:00
Lev Nachmanson f58b703ac5
u_set replaced by indexed_uint_set (#6841)
* replace u_set by indexed_uint_set

* replace u_set by indexed_uint_set

* create insert-fresh and insert for indexed_uint_set to make use cases with non-fresh inserts easier

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* update nightly to pull arm

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* update nightly to pull arm

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fixing the build of lp_tst

* update nightly to pull arm

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* replace u_set by indexed_uint_set

* replace u_set by indexed_uint_set

* fixing the build of lp_tst

* remove unnecessery call to contains() before
insert to indexed_uint_set

* formatting, no check for contains()
 in indexed_uint_set, always init m_touched_rows to nullptr

---------

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-03 16:01:27 -07:00
Nikolaj Bjorner 4637339091 update model validate to include arithmetic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-03 15:51:29 -07:00
Nikolaj Bjorner 7b36563196 create insert-fresh and insert for indexed_uint_set to make use cases with non-fresh inserts easier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-03 09:48:07 -07:00
Nikolaj Bjorner 5b287bff09 nits
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-02 16:59:59 -07:00
Nikolaj Bjorner 09dd7688ce fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-02 11:19:41 -07:00
Nikolaj Bjorner 9b5727adde enable arm for non-osx
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-02 10:51:52 -07:00
Nikolaj Bjorner 606940e60c nits
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-08-02 10:29:48 -07:00
Arie Gurfinkel 51d3c279d0
QEL: Fast Approximated Quantifier Elimination (#6820)
* qe_lite: cleanup and comment

no change to code

* mbp_arrays: refactor out partial equality (peq)

Partial array equality, PEQ, is used as an intermediate
expression during MBP for arrays. We need to factor it out
so that it can be shared between MBP-QEL and existing MBP.

Partial array equality (peq) is used in MBP for arrays.
Factoring this out to be used by multiple MBP implementations.

* rewriter: new rewrite rules

These rules are specializes for terms that are created in QEL.
QEL commit is comming later

* datatype_rw: new rewrite rule for ADTs

The rule handles this special case:

    (cons (head x) (tail x)) --> x

* array_rewriter rules for rewriting PEQs

Special rules to simplify PEQs

* th_rewriter: wire PEQ simplifications

* spacer_iuc: avoid terms with default in IUC

Spacer prfers to not have a term representing default value of an array.
This guides IUC from picking such terms in interpolation

* mbp_term_graph: replace root with repr

* mbp_term_graph: formatting

* mbp_term_graph: class_props, getters, setters

Class properties allow to keep information for an equivalence class.

Getters and setters for terms allow accessing information

* mbp_term_graph: auxiliary methods for qel

QEL commit is comming later in the history

* mbp_term_graph: bug fix

* mbp_term_graph: pick, refine repr, compute cgrnd

* mbp_term_graph: internalize deq

* mbp_term_graph: constructor

* mbp_term_graph: optionally internalize equalities

Reperesent equalities explicitly by nodes in the term_graph

* qel

* formatting

* comments on term_lt

* get terms and other api for mbp_qel

* plugins for mbp_qel

* mbp_qel_util: utilities for mbp_qel

* qe_mbp: QEL-based mbp

* qel: expose QEL API

* spacer: replace qe_lite in qe_project_spacer by qel

This changes the default projection engine that spacer uses.

* cmd_context: debug commands for qel and mbp_qel

New commands are

  mbp-qel -- MBP with term graphs
  qel     -- QEL with term graphs
  qe-lite -- older qelite

* qe_mbp: model-based rewriters for arrays

* qe_mbp: QEL-based projection functions

* qsat: wire in QEL-based mbp

* qsat: debug code

* qsat: maybe a bug fix

Changed the code to follow the paper by adding all predicates above a given
level, not just predicates of immediately preceding level.

* chore: use new api to create solver in qsat

* mbp_term_graph use all_of idiom

* feat: solver for integer multiplication

* array_peq: formatting, no change to code

* mbp_qel_util: block comment + format

* mbt_term_graph: clang-format

* bug fix. Move dt rewrite to qe_mbp

* array_peq: add header

* run clang format on mbp plugins

* clang format on mul solver

* format do-while

* format

* format do-while

* update release notes

---------

Co-authored-by: hgvk94 <hgvk94@gmail.com>
Co-authored-by: Isabel Garcia <igarciac@uwaterloo.ca>
2023-08-02 09:34:06 -07:00
Nikolaj Bjorner 5b2519d7a3 #6523
attach original variable to pb expression.
2023-08-01 08:41:26 -07:00
Nikolaj Bjorner adad468cd7 allow copy within a user scope #6827
this will allow copying the solver state within a scope.
The new solver state has its state at level 0. It is not possible to pop scopes from the new solver (you can still pop scopes from the original solver). The reason for this semantics is the relative difficulty of implementing (getting it right) of a state copy that preserves scopes.
2023-07-31 19:46:08 -07:00
Nikolaj Bjorner 403340498c format 2023-07-31 19:41:11 -07:00
Nikolaj Bjorner 0606ca15d9 track lia conflicts as cuts
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-28 17:40:56 -07:00
Nikolaj Bjorner de1cf30ea8 strengthen Tseitin checker to take true/false constants into account
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-28 16:54:33 -07:00
Nikolaj Bjorner 7135283135 update format and checker for implied-eq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-27 13:23:17 -07:00
Nikolaj Bjorner f0184c3fde update format and checker for implied-eq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-27 13:21:45 -07:00
Nikolaj Bjorner 249f0de80b fix order for inequalities in arithmetic justifications such that implied bound literal is last. The self-checker uses this property to identify the implied bound
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-26 10:06:41 -07:00
Nikolaj Bjorner c6aab89662 add rewrite for partially interpreted arithmetic functions 2023-07-25 14:57:27 -07:00
Nikolaj Bjorner 0f2fe6031a patching up trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-25 11:32:20 -07:00
Nikolaj Bjorner 6da4f6815e Merge branch 'master' of https://github.com/z3prover/z3 2023-07-25 09:47:09 -07:00
Nikolaj Bjorner 423a7b6888 also add separate cut rule
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-25 09:46:59 -07:00
Nikolaj Bjorner 68a437e615 revert to logging conflict to get EUF trim to work
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-25 09:45:35 -07:00
Bruce Mitchener 8cc6969510
Remove Z3_literals remnants. (#6829)
The bulk of the functionality using these was removed between
Z3 4.4.1 and 4.5.0, back in 2015.

Co-authored-by: Bruce Mitchener <bruce.mitchener@configura.com>
2023-07-23 19:38:57 -07:00
Nikolaj Bjorner 6c8b8609ee tweak control flow for empty clauses
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-23 18:16:00 -07:00
Nikolaj Bjorner 48deb4d3e0 fix proof generation for euf-solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-23 14:31:44 -07:00
Nikolaj Bjorner e64bab4bb8 simplify code
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-22 13:19:03 -07:00
Nikolaj Bjorner d0f2b00f96 fix build warnings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-22 12:24:30 -07:00
Nikolaj Bjorner a0892c6669 rename antecedent utilities for clarity
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-22 11:30:34 -07:00
Nikolaj Bjorner 4d31ff7a38 remove unused variable
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-21 08:35:09 -07:00
Nikolaj Bjorner 3479cdc10b separate hint literals 2023-07-20 10:52:58 -07:00
Nikolaj Bjorner e8a38c5482 build fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-18 19:14:45 -07:00
Nikolaj Bjorner 3d8f75b3d8 enable on-clause with dependencies
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-18 16:59:02 -07:00
Nikolaj Bjorner 9db636c38b Merge branch 'master' of https://github.com/z3prover/z3 2023-07-17 11:00:11 -07:00
Nikolaj Bjorner 3e74989a9d fixup dependencies for trim'
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-17 11:00:02 -07:00
Lev Nachmanson bfc37bd266 add to m_touched_rows only when bound
propagation is required
2023-07-17 08:00:01 -10:00
Lev Nachmanson 0a91465e13 comment out debug output 2023-07-16 18:40:53 -10:00
Nikolaj Bjorner 75a9038aa2 add missing dependencies in rup
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-16 16:54:26 -07:00
Lev Nachmanson fd5902f76e relax an assertion in int_solver::patcher 2023-07-16 11:55:42 -10:00
Nikolaj Bjorner 305c1c1dc2 fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-15 17:52:33 -07:00
Nikolaj Bjorner 715081cbd1 Merge branch 'master' of https://github.com/z3prover/z3 2023-07-15 17:04:54 -07:00
Nikolaj Bjorner 30e8330907 fix #6813
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-15 17:03:44 -07:00
Nikolaj Bjorner 8a913981f6 fix #6813 - proofs terms are fragile with respect to simplificiation of not(not(e)). It would be better if proof terms didn't have to track this level of detail, but the legacy proof format assumes strictly checkable proofs. A patch is to fixup terms within the mk_transitivity constructor
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-15 17:03:04 -07:00
Lev Nachmanson 144c9a7b82 restore the change_rows population in lar_solver 2023-07-15 10:09:48 -07:00
Lev Nachmanson 401ec04ec3
code cleaning around m_touched_rows of lar_solver (#6814) 2023-07-14 20:19:13 -07:00
Nikolaj Bjorner 3849f665d6 #6523 2023-07-14 10:17:19 -07:00
Nikolaj Bjorner a8da0a6851 #6696
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-13 21:48:46 -07:00
Nikolaj Bjorner dda9242616 revert lt change
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-13 21:39:04 -07:00
Nikolaj Bjorner 3727f70363 fix #6742
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-13 19:22:31 -07:00
Nikolaj Bjorner 4a9c4ca2ce initialize poly solver in incremental mode
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-13 14:12:29 -07:00
Nikolaj Bjorner d1482287d4 fix #6793, disable unbound_compressor when used in context of a moel converter
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-13 14:03:40 -07:00
Nikolaj Bjorner 08599177d0 fix #6808
remove bv_eq_axioms as an external option to toggle.
Diseqalities have to be enforced for extensionality.
There are no internal code paths where the option is set to false.
2023-07-13 10:47:55 -07:00
Nikolaj Bjorner d0d434e4f1 fix #6807 2023-07-13 10:23:28 -07:00
Nikolaj Bjorner 3e58f0cff1 build fixes 2023-07-13 09:25:20 -07:00
Nikolaj Bjorner b909b87acc build fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-13 09:13:41 -07:00
Nikolaj Bjorner 939bf1c725 wip - alpha support for polymorphism
An initial update to support polymorphism from SMTLIB3 and the API (so far C, Python).

The WIP SMTLIB3 format is assumed to be supporting the following declaration

```
(declare-type-var A)
```
Whenever A is used in a type signature of a function/constant or bound quantified variable, it is taken to mean that all instantiations of A are included in the signature and assertions.
For example, if the function f is declared with signature A -> A, then there is a version of f for all instances of A.
The semantics of polymorphism appears to follow previous proposals: the instances are effectively different functions.
This may clash with some other notions, such as the type signature forall 'a . 'a -> 'a would be inhabited by a unique function (the identity), while this is not enforced in this version (and hopefully never because it is more busy work).

The C API has the function 'Z3_mk_type_variable' to create a type variable and applying functions modulo polymorphic type signatures is possible.
The kind Z3_TYPE_VAR is added to sort discriminators.

This version is considered as early alpha. It passes a first rudimentary unit test involving quantified axioms, declare-fun, define-fun, and define-fun-rec.
2023-07-12 18:09:02 -07:00
Nikolaj Bjorner d6f2c23627 #6805 2023-07-11 09:41:29 -07:00
Lev Nachmanson 9ae6c88e3f fix the build 2023-07-10 12:19:32 -07:00
Lev Nachmanson 1840fd17da Merge branch 'master' of https://github.com/z3prover/z3 2023-07-10 12:06:06 -07:00
Lev Nachmanson e091a2e775 remove the line with clang-format off 2023-07-10 12:05:59 -07:00
Nikolaj Bjorner 241e845da8 fix #6802
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-09 12:07:43 -07:00
THE Spellchecker dc0887db5a
Typo Fixes (#6803) 2023-07-09 11:56:10 -07:00
Nikolaj Bjorner 28a0c2d18f Merge branch 'master' of https://github.com/z3prover/z3 2023-07-07 17:23:08 -07:00
Nikolaj Bjorner 5806869ae4 fix #6792, add scaffolding for type variables
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-07 17:22:56 -07:00
Lev Nachmanson 56b5492752 remove dead code 2023-07-07 15:05:17 -07:00
Lev Nachmanson 0fceb80e0f edit tracing, add lar_solver::column_is_feasible() 2023-07-07 11:48:21 -07:00
Clemens Eisenhofer 4cb158a79b
User Propagator: Return if propagated lemma is redundant (#6791)
* Give users ability to see if propagation failed

* Skip propagations in the new core if they are already satisfied
2023-07-07 09:58:41 -07:00
Nikolaj Bjorner f645bcf605 add direct detection for integer expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-07 09:54:18 -07:00
Nikolaj Bjorner f450bc4ae0 Merge branch 'master' of https://github.com/z3prover/z3 2023-07-07 09:29:49 -07:00
Nikolaj Bjorner 8c7525c97f revert log addition
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-07 09:29:38 -07:00
Nikolaj Bjorner 0ab102cbec fix coefficient extraction and passing in Farkas lemmas, thanks to H. F. Bryant
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-07 09:28:47 -07:00
Lev Nachmanson ff875c936f add TRACE stmts, more efficient remove from inf_heap
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-07-06 16:45:22 -07:00
Lev Nachmanson 167e0dc66d Merge branch 'master' of https://github.com/z3prover/z3 2023-07-06 15:07:32 -07:00
Lev Nachmanson 4e327babda remove dead code 2023-07-06 15:07:26 -07:00
Nikolaj Bjorner 68663fd97a fix indentation for python file
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-06 09:02:58 -07:00
Nikolaj Bjorner 3782eb1be4 fix #6785
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-05 19:50:07 -07:00
Nikolaj Bjorner f4b87b3763 fix memory smash in euf completion
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-05 13:04:49 -07:00
Nikolaj Bjorner 14f69c6c01 Merge branch 'master' of https://github.com/z3prover/z3 2023-07-05 12:58:23 -07:00
Nikolaj Bjorner 4ad3324d2e fixes to trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-05 12:58:17 -07:00
Lev Nachmanson 1c907e8d09 add a comment 2023-07-05 09:14:57 -07:00
Lev Nachmanson e360de6d71 improve tracing and a small fix in
lp_core_solver_base::make_column_feasible
2023-07-04 13:23:56 -07:00
Lev Nachmanson 8a49cf62f4 Merge branch 'master' of https://github.com/z3prover/z3 2023-07-04 11:38:20 -07:00
Lev Nachmanson 75897b7a2e a small change in trace feas 2023-07-04 11:38:10 -07:00
Nikolaj Bjorner f0d3cbe39d add dependency tracking to proof from trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-04 16:24:09 +02:00
Nikolaj Bjorner abf5aff0b3 Merge branch 'master' of https://github.com/z3prover/z3 2023-07-04 09:13:12 +02:00
Nikolaj Bjorner ae29a54876 categorize theory axioms as inferences in output to capture justifications
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-04 09:12:58 +02:00
Lev Nachmanson 5ed2a82893
set clang format off for lp files (#6795)
* adding // clang-format off

* set clang-format off at the beginning of  lp files

* set clang-format off

* remove dead code
2023-07-03 17:35:16 -07:00
Nikolaj Bjorner 47fc0cf75c Merge branch 'master' of https://github.com/z3prover/z3 2023-07-03 19:30:24 +02:00
Nikolaj Bjorner d9e7b8c21f fixes to trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-03 19:26:19 +02:00
Lev Nachmanson 61948fa1ff find minimal deltas in patching
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-07-01 07:48:07 -07:00
Lev Nachmanson f5d9ffaca1 clean up and add clang-format off
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-06-30 11:57:42 -07:00
Lev Nachmanson 30a2ced9aa
patching merge (#6780)
* patching merge

* fix the format and some warnings

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* a fix in the delta calculation

* test patching

* try a new version of get_patching_deltas

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* remove dead code from lp_tst and try optimizing patching

* add comments, replace VERIFY with lp_assert

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* cleanup

---------

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-06-27 17:53:27 -07:00
Nikolaj Bjorner b2c035ea3f missing negation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-26 18:46:03 -07:00
Clemens Eisenhofer d42693d5b5
Equalities in C# UP-Propagation (#6786)
* Query Boolean Assignment in the UP

* UP's decide ref arguments => next_split

* Fixed wrapper

* More fixes

* Equalities in C# UP-Propagation

---------

Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-26 10:59:57 -07:00
Nikolaj Bjorner 7221c84156 fix #6783
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-25 21:21:06 -07:00
Nikolaj Bjorner b451735aa0 fix #6778
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-25 21:08:13 -07:00
Guido Martínez 7c380fd6a0
bool_rewriter: fix possible segfault when disabling rewriter.sort_disjunctions (#6779)
After introducing the rewriter.sort_disjunctions option (#6774), I
noticed a segfault in a Z3 run that was working fine for me before the
PR.

I traced the difference to a slight discrepancy between the first patch
I submitted and the one we ended up merging: my first version would skip
sorting the disjuncts in mk_nflat_core, but still return BR_DONE, while
the patch in master returns BR_FAILED instead.

This patch fixes that problem, and it makes slightly more sense to me to
return a BR_DONE since, if `s` is true, some disjunct (e.g. a `false`
or a repeat) might have been simplified away. However I don't fully
understand this code.

... and I can't say I understand why the segfault happens. Perhaps that
is a separate issue?

This is the file to reproduce:
 https://gist.github.com/mtzguido/b7360c74d3d2e42d89f1bd9149ad26f6

Here's a stack trace of the failure, mk_nflat_or_core is not involved.
```
 (gdb) where
 #0  0x0000555555b98497 in smt::context::get_lit_assignment(unsigned int) const ()
 #1  0x0000555555b984cb in smt::context::get_assignment(sat::literal) const ()
 #2  0x0000555555b98504 in smt::context::get_assignment(unsigned int) const ()
 #3  0x0000555555ca83b8 in smt::context::get_assignment_core(expr*) const ()
 #4  0x0000555555c9af5a in smt::context::get_assignment(expr*) const ()
 #5  0x0000555555d7bd1d in (anonymous namespace)::has_child_assigned_to(smt::context&, app*, lbool, expr*&, unsigned int) ()
 #6  0x0000555555d7c413 in (anonymous namespace)::rel_case_split_queue::next_case_split_core(ptr_vector<expr>&, unsigned int&, unsigned int&, lbool&) ()
 #7  0x0000555555d7c589 in (anonymous namespace)::rel_case_split_queue::next_case_split(unsigned int&, lbool&) ()
 #8  0x0000555555c9c1b7 in smt::context::decide() ()
 #9  0x0000555555ca39fd in smt::context::bounded_search() ()
 #10 0x0000555555ca30c2 in smt::context::search() ()
 #11 0x0000555555ca273d in smt::context::check(unsigned int, expr* const*, bool) ()
 #12 0x0000555555cb166a in smt::kernel::check(unsigned int, expr* const*) ()
 #13 0x0000555555cb9695 in (anonymous namespace)::smt_solver::check_sat_core2(unsigned int, expr* const*) ()
 #14 0x00005555560dc0c6 in solver_na2as::check_sat_core(unsigned int, expr* const*) ()
 #15 0x00005555560d73f3 in combined_solver::check_sat_core(unsigned int, expr* const*) ()
 #16 0x00005555560d34e3 in solver::check_sat(unsigned int, expr* const*) ()
 #17 0x0000555556097b26 in cmd_context::check_sat(unsigned int, expr* const*) ()
 #18 0x0000555556082ff0 in smt2::parser::parse_check_sat() ()
 #19 0x0000555556084dc0 in smt2::parser::parse_cmd() ()
 #20 0x00005555560861b6 in smt2::parser::operator()() ()
 #21 0x00005555560757e6 in parse_smt2_commands(cmd_context&, std::basic_istream<char, std::char_traits<char> >&, bool, params_ref const&, char const*) ()
 #22 0x00005555555e8f68 in read_smtlib2_commands(char const*) ()
 #23 0x00005555555ee6f6 in main ()
 (gdb)
```
2023-06-23 11:45:29 -07:00
Nikolaj Bjorner 1b263f85e4 compile numeral constants into separate variables in the new core
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-21 09:36:20 -07:00
Guido Martínez 3517361a73
Adding some options in support of F* (#6774)
* patterns: add option for pattern decomposition (pi.decompose_patterns)

True by default, retaining current behavior.

* rewriter: add option for sorting of disjunctions (rewriter.sort_disjunctions)

True by default, retaining current behavior.
2023-06-20 16:10:37 -07:00
Nikolaj Bjorner eb1caee18a compile constants into different variables instead of reusing a single variable 1 and coefficients. It delays introducing large coefficients and allows more efficient bounds propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-20 16:09:34 -07:00
Lev Nachmanson 32ec02778e
use heap to track infeasible columns. (#6771)
* use heap to track infeasible columns

* fix the formatting

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

---------

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-06-19 13:50:14 -07:00
Nikolaj Bjorner 4d44e60c33 fix #6757 2023-06-18 16:36:26 -07:00
Nikolaj Bjorner df77541aae #6758
check-assumptions with compound formulas create fresh proxy variables both during compilation to internal format and for the assumptions. These fresh variables may occur in lemmas that are created during search. The lemmas are garbage for future check-sats, but the solver needs to be allowed to invoke GC. Adding a GC call before a check-sat with assumptions allows removing some lemmas every time a new assumptions are used. Eager GC when using assumptions is used elsewhere, for example in cube&conquer scenarios where lemmas learned from one set of assumptions are less likely to be useful for other assumptions.

With the GC invocation memory grows at a lesser pace. However, it is not entirely free of memory increases. To avoid memory bloat, have the solver pre-compile the assumptions by defining them as propositional variables, add assertions that the propositional variables are equivalent to the compound formulas and use the propositional variables as assumptions. The same propositional variables come with no extra overhead when invoking check-assumptions. The lemmas are then over the same fixed vocabulary. It is generally a good idea to recycle useful lemmas during the enumeration pass.
2023-06-18 16:21:41 -07:00
Nikolaj Bjorner 5f22e98396 fix #6766
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-18 10:05:34 -07:00
tcely b93171de78
pattern_inference.h: include rewriter_def.h (#6765)
Needed to use the `rewriter_tpl` constructor.
2023-06-16 08:46:40 -07:00
Nikolaj Bjorner cc4ac0e65a add guard for eq adapter 2023-06-13 16:39:53 -07:00
Nikolaj Bjorner ac00306355 fix context simplification
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-09 11:30:56 -07:00
Nikolaj Bjorner d0085b41c1 disable breaking change
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-09 11:15:54 -07:00
Nikolaj Bjorner 555ccc8aab simplify bounds by subsumption checks
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-09 10:21:45 -07:00
Lev Nachmanson 1006955215
get cached tv value (#6756) 2023-06-08 19:46:38 -07:00
Lev Nachmanson f7ec5c5c64
fix sort_non_basis (#6755)
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-06-08 13:08:09 -07:00
Nikolaj Bjorner 1d62964c58 avoid name clash for multiple special relations #6743 2023-06-07 17:55:11 -07:00
Nikolaj Bjorner ab4b7c50ed fix #6749 2023-06-07 16:09:50 -07:00
Nikolaj Bjorner 06a8987314 fix #6748
destructive equality resolution uses an occurs check function that is only safe for quantifier-free formulas. In the special case where a bound variable is Boolean and occurs on a side of an equality the other side cannot have a quantifier.
2023-06-07 15:59:39 -07:00
Jakob Rath 57e92b2a59
Fix bvnego (#6750) 2023-06-07 11:24:40 -07:00
Nikolaj Bjorner 73c3f34d66 remove debug output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-06 16:37:24 -07:00
Nikolaj Bjorner 2bff0a6b8a regression on quantifier weight computation when weights are 0 vs non-0. It modifies a change made for the fix of #2667. That fix caused a regression in F*. Reported @mtzguido
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-06 16:35:37 -07:00
Nikolaj Bjorner 68f43ac7a4 make der selective to configuration. For F*, quantifiers are hand or machine generated in specific formats and the tool depends on e-matching to use precisely the format of the quantifiers that have been entered. For other cases of quantifiers, destructive equality resolution (der) can be expected to offer simplifications
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-06-06 16:15:04 -07:00
Nikolaj Bjorner 81068981aa fix #6746, fix type errors in java bindings 2023-06-03 09:41:29 +02:00
Clemens Eisenhofer 82667bd86b
Fix UP's decide callback (#6707)
* Query Boolean Assignment in the UP

* UP's decide ref arguments => next_split

* Fixed wrapper

* More fixes
2023-06-02 09:52:54 +02:00
Nikolaj Bjorner d59bf55539 fix formatting bug reported by Alex Nutz
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-30 22:19:42 +02:00
Nikolaj Bjorner 621f1f8a85 sanity check parameters #6737
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-30 09:44:06 +02:00
Manuel Carrasco 230306ddfc
Add solver::interrupt to Python's API. (#6739) 2023-05-28 21:04:36 +02:00
Nikolaj Bjorner 5e1869d8eb fix #6734
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-26 09:48:58 +01:00
ditto 11264c38d8
Java user propagator interface (#6733)
* Java API: user propagator interface

* Java API: improved user propagator interface

* Java API: Add UserPropagatorBase.java

* Remove redundant header file

* Initialize `JavaInfo` object and error handling

* Native.UserPropagatorBase implements AutoCloseable

* Add Override annotation
2023-05-24 18:27:28 +01:00
Nikolaj Bjorner 2c21072c99 remove stub class, it may as well go into NativeStatic.txt as C++
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-22 18:23:10 +01:00
Nikolaj Bjorner b93529997e more stubs #6097
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-22 16:25:54 +01:00
Nikolaj Bjorner 7963ecaf63 stubs for #6097
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-22 16:21:34 +01:00
Nikolaj Bjorner a68f91f0a6 fix #6729
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-22 14:07:12 +01:00
Nikolaj Bjorner 06ea765b82 fix #6721
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-13 09:46:49 -07:00
Michał Górny c9d8e646ed
fix missing <cstdint> include (#6720)
Fix missing <cstdint> include in src/util/tptr.h that causes build
failure with GCC 13:

```
In file included from /tmp/z3/src/util/region.cpp:53:
/tmp/z3/src/util/region.cpp: In member function ‘void* region::allocate(size_t)’:
/tmp/z3/src/util/tptr.h:29:62: error: ‘uintptr_t’ does not name a type
   29 | #define ALIGN(T, PTR) reinterpret_cast<T>(((reinterpret_cast<uintptr_t>(PTR) >> PTR_ALIGNMENT) + \
      |                                                              ^~~~~~~~~
/tmp/z3/src/util/region.cpp:82:22: note: in expansion of macro ‘ALIGN’
   82 |         m_curr_ptr = ALIGN(char *, new_curr_ptr);
      |                      ^~~~~
/tmp/z3/src/util/region.cpp:57:1: note: ‘uintptr_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
   56 | #include "util/page.h"
  +++ |+#include <cstdint>
   57 |
```
2023-05-13 09:37:57 -07:00
Tomasz Kłoczko 520e692a43
Fix building with gcc 13 (#6723)
Trivial fix to build with gcc 13 reported in #6722.

Signed-off-by: Tomasz Kłoczko <kloczek@github.com>
2023-05-13 09:37:35 -07:00
Nikolaj Bjorner 046b80f6a4 remove output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-11 12:31:05 -07:00
Nikolaj Bjorner f6ab5a61ac reformat code to remove brackets 2023-05-11 12:31:05 -07:00
Antti Hyvärinen 12e45c9d17
Implement proposed smtlib2 bitvector overflow predicates (#6715)
* Logical names for function declarations in c++

Currently, for example, the function declaration symbol member for
checking whether multiplication *does not* overflow is called
`m_bv_smul_ovfl`.  Since we are introducing the upcoming smtlib2 symbols
that check that multpliciation *does* overflow, the not overflow check
symbols are renamed to `m_bv_smul_no_ovfl` etc.

* Implement smtlib overflow preds for multiplication

Smtlib2 is being extended to include overflow predicates for bit
vectors (see https://groups.google.com/u/1/g/smt-lib/c/J4D99wT0aKI).
This commit introduces the predicates `bvumulo` and `bvsmulo` that
return `true` if the unsigned multiplication overflows or the signed
multiplication underflows or overflows, respectively.

* Move mul overflow predicates to BV logic

* Add a todo on illogical argument order

* Implement mk_unary_pred for bv

* Implement bvnego

* Implement bvuaddo

* Implement bvsaddo

* Implement bvusubo

* Implement bvssubo

* Implement bvsdivo
2023-05-09 10:37:46 -07:00
Nikolaj Bjorner 62e1ec0698 Merge branch 'master' of https://github.com/z3prover/z3 2023-05-08 12:24:30 -07:00
Nikolaj Bjorner 2e441e38c9 fix #6713 fix #6714
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-08 12:24:20 -07:00
Guillaume Bagan 0c9a5f69fd
JS/TS: add Optimize class (#6712)
* implement  Optimize class for the high level Typescript API

* javascript and wasm: add _malloc to exported functions

fix the bug https://github.com/Z3Prover/z3/issues/6709

* javascript: add tests for the Optimize class

* javascript: no reason that minimize and optimize must be constants
2023-05-06 11:53:43 -07:00
Nikolaj Bjorner 6c24a70c44 remove debug output
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-05-02 13:05:08 -07:00
Nikolaj Bjorner f17691715b make default argument to ensure_def and mk_def explicit
- insert also macro definitions into models
2023-05-02 12:18:31 -07:00
Nikolaj Bjorner c64d61bd0a formatting updates 2023-05-02 12:17:32 -07:00
Nikolaj Bjorner 392266c278 fix processing of else expression for model table 2023-05-02 12:16:58 -07:00
Nikolaj Bjorner d5231f8b33 fix regressions #6703
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-27 08:43:59 -07:00
Nikolaj Bjorner c48dc69050 adding stubs to find fixed variables
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-26 19:39:42 -07:00
Nikolaj Bjorner ef943347ee ensure assume-eqs is invoked after check-lia statically
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-26 11:16:15 -07:00
Nikolaj Bjorner d2e3e4895e add instrumentation to theory_lra for shuffling final check 2023-04-26 10:05:00 -07:00
Nikolaj Bjorner 3029fb24a1 remove references to validating 2023-04-26 10:05:00 -07:00
Nikolaj Bjorner 50c855e2eb count gcd conflicts, log row id in rows 2023-04-26 10:05:00 -07:00
Nikolaj Bjorner 59bc070268 count gcd conflicts 2023-04-26 10:05:00 -07:00
Nikolaj Bjorner ace6e8eea1 add gcd-conflicts stats, formatting updates 2023-04-26 10:04:59 -07:00
Nikolaj Bjorner 8fb4515872 remove redundant function, add checker function to test missed propagations 2023-04-26 10:04:59 -07:00
Nikolaj Bjorner e689dea99c basic formatting updates 2023-04-26 10:04:59 -07:00
Nikolaj Bjorner d4fa990b6e return diagnostics 2023-04-26 10:04:59 -07:00
Nikolaj Bjorner d8156aeff3 weird latent bug in wmax: init() succeeds and it returns undef 2023-04-24 21:14:42 -07:00
Nikolaj Bjorner fdd5c923ed use only maxres if there is a lexicographic objective, fix #6697
- maxlex.enable heuristic does not work if it is chained among multiple objectives. Only maxres is set up to commit the proper constraints.
2023-04-24 20:20:26 -07:00
Nikolaj Bjorner 7a689c3298 disable destructive equality resolution simplification if there are patterns
- regression from F\star
- reported by @mtzguido (stlc_min.smt2)
2023-04-24 17:59:41 -07:00
Nikolaj Bjorner a2bac119d3 differentiate fixed from offset-eq in statistics 2023-04-18 08:40:51 -07:00
Nikolaj Bjorner ec1480b12a fix #6693 2023-04-18 08:40:29 -07:00
Nikolaj Bjorner cb041c1b6d fix #6689 2023-04-17 12:05:08 -07:00
Nikolaj Bjorner 1319b64bb0 fix #6692 2023-04-17 09:11:16 -07:00
Nikolaj Bjorner 97b66d13c0 fix soundness bug in disabled code 2023-04-15 17:09:05 -07:00
Nikolaj Bjorner b75d81f3c2 fix #6690 2023-04-14 16:38:33 -07:00
Nikolaj Bjorner 624907823d add tests for distribution utility and fix loose ends 2023-04-13 11:19:06 -07:00
Nikolaj Bjorner 1a70ac75df fix #6687 2023-04-13 09:01:17 -07:00
Nikolaj Bjorner b783879752 #6687 2023-04-13 08:45:17 -07:00
Nikolaj Bjorner 7cd8edce1f perf and memory smash fixes to internal node count routine 2023-04-12 21:01:05 -07:00
Nikolaj Bjorner f0afbcbb87 fix #6686 2023-04-12 20:13:24 -07:00
Nikolaj Bjorner eba0732629 fix #6675
disable remove_unused_defs from pb-solver until it is integrated with model reconstruction.
2023-04-12 19:50:13 -07:00
Nikolaj Bjorner e8222433c3 count internal nodes, use to block expanding use of hoist, #6683 2023-04-12 19:40:31 -07:00
Nikolaj Bjorner 444238bc53 formatting updates 2023-04-12 19:40:31 -07:00
Nikolaj Bjorner f61168cd53 module for maintaining probability distributions 2023-04-12 19:40:31 -07:00
Nikolaj Bjorner 0b5c38dea5 fix #6676 get rid of rem0 declare it to be mod0 semantics to simplify code paths 2023-04-11 16:46:43 -07:00
Nikolaj Bjorner 58a2a9c79c fix #6680 2023-04-11 14:42:47 -07:00
Nikolaj Bjorner ccc4f2d382 fix #6682 2023-04-11 05:10:03 -07:00
Nikolaj Bjorner 368d60f553 add branch / cut selection heuristic from solver=2
disabled for testing.
2023-04-10 22:14:16 -07:00
Nikolaj Bjorner bb44b91e45 fix #6677 2023-04-10 15:11:10 -07:00
Clemens Eisenhofer 98d3fabc24
Bugfix relevancy propagation + UP (old core) (#6678)
* Some UP bugfixes in the new core

* Bugfix relevancy propagation + UP (old core)

* Revert smt_context.cpp
2023-04-10 12:57:59 -07:00
Nikolaj Bjorner 4a142b0f81 fix #6623 2023-04-09 21:10:24 -07:00
Nikolaj Bjorner e6ea81546e fix #6662 2023-04-08 17:14:39 -07:00
Nikolaj Bjorner af9c760a68 fix #6670 2023-04-08 16:55:23 -07:00
Nikolaj Bjorner ccb250c32b fix #6671 2023-04-08 16:39:40 -07:00
Clemens Eisenhofer 7b513b4a40
Some UP bugfixes in the new core (#6673) 2023-04-08 12:50:46 -07:00
Nikolaj Bjorner 84b9204616 inherit and reset rlimit counter on children limits
addresses rlimit leak reported by @mtzguido
2023-04-05 16:39:21 -07:00
Nikolaj Bjorner f8242c58dd fix regression from Grobner port
- scan_for_linear returns true if it finds a new linear equation. It then should break GB.
- if scan_for_linear returns false, it should still allow try_modify_eqs.
This behavior was masked by requiring scan_for_linear to always be true before
allowing try_to_modify_eqs.

based on repro from Guido Martinez @mtzguido
2023-04-04 22:29:22 -07:00
Nikolaj Bjorner 479f844200 fix #6661
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-02 11:14:20 -07:00
Nikolaj Bjorner def83ed26e fix #6661
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-02 11:13:37 -07:00
Nikolaj Bjorner 5b385bd2fe fix #6665
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-02 10:58:21 -07:00
Hari Govind V K 6324db207b
Only print func-decl names for indexed parameters (#6663) 2023-04-02 10:39:13 -07:00
Nikolaj Bjorner e0a066efa3 #6654
fix reflexivity for tree-order
2023-03-31 15:38:29 -07:00
Nikolaj Bjorner 7664429fda remove cast expression
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-03-31 12:51:23 -07:00
Nikolaj Bjorner a62e4b2893 extract multi-patterns when pattern can be decomposed
deals with fluke regression for F* reported by Guido Martinez

Background:
The automatic pattern inference facility looks for terms that contains all bound variables of a quantifier. It may end up with a term that contains all bound variables but the extracted term can be simplified.

Example. The pattern

(ApplyTT (ApplyTT @x3!1 (ApplyTT @x4!0 (:var 1))) (ApplyTT @x4!0 (:var 0)))
can be decomposed into a multi-pattern
(ApplyTT @x4!0 (:var 1))) (ApplyTT @x4!0 (:var 0))
The multi-pattern may enable a quantifier instantiation while the original pattern does not. The multi-pattern should be preferred.

The regression showed up based on a change that should not be considered harmful but turned out to be noticeable.
The change was a simplification of and-or expressions based on sorting. This played with the case split queue used by F* (smt.case_split = 3) that uses a top-level case split of clauses to avoid redundant branches. The net effect was that without sorting, the benchmarks would always choose the opportune branch that enabled matching against the larger term. With sorting it would mostly choose inopportune branches.
2023-03-31 12:45:51 -07:00
Nikolaj Bjorner a849a29b4f fix #6659 2023-03-31 10:31:18 -07:00
Nikolaj Bjorner 996e5b1755 fix #6655 2023-03-31 03:25:20 -07:00
Nikolaj Bjorner b386b84f34 #6658 2023-03-31 02:56:44 -07:00
권승완 6670807103
update ocaml binding to support more string apis (#6656) 2023-03-29 05:49:33 -07:00
Lev Nachmanson 130400d76e
Remove non feasible costs (#6653)
* before rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm get_column_in_lu_mode

* rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm_lp

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm_lu

* rm lu

* rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm lu

* rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm lu

* cleanup

* rm breakpoints

* rm dealing with doubles

* Revert "rm dealing with doubles"

This reverts commit 547254abe7.

* rm lu

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm lu

* rm lu

* rm scaler

* rm square_sparse_matrix

* more cleanup

* rm dead code

* rp precise

* remove many methods dealing with double

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rm lu related fields from lp_core_solver_base.h

* remove dead code

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* more dead code removal

* remove more dead code

* more dead code

* rm dead code

* more dead code

* fix lp_tst

* more dead code

* replace lp_assert(false) with UNREACHABLE

* rm non feas costs

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* fix the build

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

---------

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-28 08:55:52 -07:00
Nikolaj Bjorner fe348b84c9 fix #6652 2023-03-27 16:20:33 -07:00
Nikolaj Bjorner adec937296 fix #6650 2023-03-27 14:02:23 -07:00
Nikolaj Bjorner f366772f0c use field 'm' for streamlined representation 2023-03-27 14:02:22 -07:00
Patrick LaFontaine 0a59617bac
Fix Ocaml bindings FuncEntry to_string (#6639)
Hello, I was looking at the different api string conversions for FuncEntry and I believe that the ml version is incorrect? Clearly we want the argument(`c`) to be comma separated from the accumulated string `p`. The current implementation just so happens to have most of the arguments separated, but the order is flipped and one of the commas is misplaced.
2023-03-27 13:04:32 -07:00
Nikolaj Bjorner b4ad747e0b fix #6644 2023-03-27 09:00:38 -07:00
Nikolaj Bjorner 8a3a3dc91b fix #6648 2023-03-26 15:31:37 -07:00
Nikolaj Bjorner ce501e0b6e #6646
- always enable special-relations theory to deal with default setting and push
- fix bugs related to equality and transitivity.
2023-03-25 17:37:59 -07:00
Nikolaj Bjorner cd2ea6b703 add parameter access to C++ API 2023-03-25 18:14:08 +01:00
Nikolaj Bjorner 9ca0faa091 enable interactive example 2023-03-25 18:13:44 +01:00
Nikolaj Bjorner 50bd6efea4 fix #6624 2023-03-22 14:00:09 +01:00
Nikolaj Bjorner 03a44803b6 fix #6635 2023-03-22 13:38:02 +01:00
Nikolaj Bjorner 2683a2d6ed fix #6637 2023-03-22 08:49:33 +01:00
Nikolaj Bjorner 53ca65a62e fix unsound rewrite 2023-03-20 18:55:40 +01:00
Nikolaj Bjorner f075dc2882 remove experimental files 2023-03-20 17:07:48 +01:00
Nikolaj Bjorner 48de7c2da8 missing updates 2023-03-20 17:07:04 +01:00
Nikolaj Bjorner c6e3fb446a print lemmas2console faster
- add option pp.no_lets (default = false) to print formulas without let (used by the low-level SMT2 printer).
- print lemmas2console faster by using the low level printer
2023-03-20 17:07:04 +01:00
Nikolaj Bjorner a9e6e567b0 make generation of "some" Boolean value fair 2023-03-20 17:07:04 +01:00
Nikolaj Bjorner d1c7ff1a36 add unconstrained elimination for sequences 2023-03-20 17:07:04 +01:00
Nuno Lopes a0f3727e90 BV: add missing neg internalizer
usually bvneg is eliminated during rewriting, but it can be left behind during e.g. a badly-timed timeout
2023-03-12 19:26:47 +00:00
Declan Hwang cf4df08fd0
fix typo (#6628) 2023-03-09 09:29:30 -08:00
Bram V 1612b57e1a
Make all methods show in java API (#6626)
* Make all methods show in java API

* Add final modifier to all generic methods
2023-03-08 13:43:51 -08:00
igcontreras 4b3408696d
use uintptr_t instead of size_t (tptr) for portability (#6627) 2023-03-08 21:13:38 +00:00
Lev Nachmanson 8b0aa22631 replace lp_assert(false) with UNREACHABLE 2023-03-08 10:27:05 -08:00
Lev Nachmanson 3efe91c3e3 more dead code 2023-03-08 10:27:05 -08:00
Lev Nachmanson 1fb24ebc35 fix lp_tst 2023-03-08 10:27:05 -08:00
Lev Nachmanson 11eab94321 more dead code 2023-03-08 10:27:05 -08:00
Lev Nachmanson 13549aff66 rm dead code 2023-03-08 10:27:05 -08:00
Lev Nachmanson c6be67bf3b more dead code 2023-03-08 10:27:05 -08:00
Lev Nachmanson c8c0a00190 remove more dead code 2023-03-08 10:27:05 -08:00
Lev Nachmanson 748c75275f more dead code removal 2023-03-08 10:27:05 -08:00
Lev Nachmanson e430f28813 remove dead code
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson f6445891f3 rm lu related fields from lp_core_solver_base.h 2023-03-08 10:27:05 -08:00
Lev Nachmanson f351eb3ab2 remove many methods dealing with double
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson 9ec82632a3 rp precise 2023-03-08 10:27:05 -08:00
Lev Nachmanson 569f5be91f rm dead code 2023-03-08 10:27:05 -08:00
Lev Nachmanson f33f8c265e more cleanup 2023-03-08 10:27:05 -08:00
Lev Nachmanson 0fb65dea3f rm square_sparse_matrix 2023-03-08 10:27:05 -08:00
Lev Nachmanson 178135486c rm scaler 2023-03-08 10:27:05 -08:00
Lev Nachmanson 6eedbd4f35 rm lu 2023-03-08 10:27:05 -08:00
Lev Nachmanson e04e726f45 rm lu 2023-03-08 10:27:05 -08:00
Lev Nachmanson 2e9dc3d090 rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson d00fcc87c9 Revert "rm dealing with doubles"
This reverts commit 547254abe7.
2023-03-08 10:27:05 -08:00
Lev Nachmanson a4189186cc rm dealing with doubles 2023-03-08 10:27:05 -08:00
Lev Nachmanson 6201eda055 rm breakpoints 2023-03-08 10:27:05 -08:00
Lev Nachmanson 73224adc48 cleanup 2023-03-08 10:27:05 -08:00
Lev Nachmanson 377ceba6d5 rm lu 2023-03-08 10:27:05 -08:00
Lev Nachmanson 6132bf93f7 rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson bfe73c01a6 rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson 1da4c018e4 rm lu 2023-03-08 10:27:05 -08:00
Lev Nachmanson 62bd3bd1e6 rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson 5f03c93270 rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson 9a7c99da33 rm lu 2023-03-08 10:27:05 -08:00
Lev Nachmanson c251151d66 rm_lu 2023-03-08 10:27:05 -08:00
Lev Nachmanson 25f103db1a rm_lp
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson 527f0d1242 rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson a38be43264 rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson 97c1ba4641 rm get_column_in_lu_mode 2023-03-08 10:27:05 -08:00
Lev Nachmanson ea16f6608c before rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Hari Govind V K f7c9c9ef72
fix unsound slice criteria (#6625)
* rename for readability

* bug fix #6617. Don't slice op args that are values
2023-03-06 19:28:22 -08:00
Nikolaj Bjorner 42076a3c13 bug fixes to new core, elim_predicates and elim_unconstrained 2023-03-05 22:26:37 -08:00
Nuno Lopes b9a87e493b minor code simplifications 2023-03-05 19:08:41 +00:00