3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-08 02:15:19 +00:00
Commit graph

15575 commits

Author SHA1 Message Date
Nikolaj Bjorner cafe3acff1 delay detach
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-15 12:41:34 -07:00
Nikolaj Bjorner 891ab8bac5 #6523
fixup looping
2023-10-15 12:37:14 -07:00
Nikolaj Bjorner 6553382ec8 remove extra assume-eqs 2023-10-15 12:30:24 -07:00
Nikolaj Bjorner b2efa592ce #6523
deal with memory leak on exceptions
2023-10-15 12:17:08 -07:00
Nikolaj Bjorner 41b1f47d77 #6523
deal with memory leak when there is an exception
2023-10-15 12:15:28 -07:00
Nikolaj Bjorner 5942dc24bd #6523 2023-10-15 11:41:25 -07:00
Nikolaj Bjorner 5619ed0586 resurrect old bounds propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-14 13:55:56 -07:00
Nikolaj Bjorner a39d4adf5b build fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-14 13:45:42 -07:00
Nikolaj Bjorner 47f1c86f93 fix regression
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-14 02:38:49 -07:00
Nikolaj Bjorner d44d78f9d1 remove temporary configuration parameter used for testing
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-14 01:33:05 -07:00
Nikolaj Bjorner 08af965b56 updates to monomial bounds 2023-10-14 01:33:05 -07:00
Hari Govind V K ba6c23bbc5
bug fix #6934 (#6940) 2023-10-14 01:06:15 -07:00
Nuno Lopes fcb03aa56c minor code simplification 2023-10-11 01:38:03 +01:00
Nikolaj Bjorner 01188462d5 build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-10 16:24:05 -07:00
Nikolaj Bjorner 960a024d3d fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-10 13:54:00 -07:00
Nikolaj Bjorner 6445d01557 normalize newlines for if 2023-10-10 13:43:49 -07:00
Nikolaj Bjorner d04807e8c3 merge
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-10 13:43:38 -07:00
Nikolaj Bjorner 338d7b3283 remove unused variables 2023-10-10 13:42:21 -07:00
Nikolaj Bjorner f3e9712beb formatting 2023-10-10 13:42:21 -07:00
Nikolaj Bjorner e8e636c3ec fix #6936 2023-10-10 13:42:21 -07:00
Lev Nachmanson 180ab727e7 fix a bug in unit nl prop
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-10 07:32:07 -07:00
Nikolaj Bjorner adbee0cd3f fix #6937 2023-10-10 16:02:59 +09:00
Nikolaj Bjorner 267e9e827d #6935 2023-10-10 15:52:54 +09:00
Nikolaj Bjorner 4a870966ad add code to enable unit propagation of bounds
set UNIT_PROPAGATE_BOUNDS 1 to use the unit propagation version. It applies unit propagation eagerly (does not depend on checking LIA consistency before final check) and avoid creating new literals in most cases
2023-10-09 16:04:39 +09:00
Nikolaj Bjorner 1bdf66b918 move initialization to header file 2023-10-09 10:55:43 +09:00
Lev Nachmanson 1ba0f5aba9 cosmetic changes 2023-10-08 10:16:40 -07:00
Lev Nachmanson 3aac528aef add a comment
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-08 07:34:03 -07:00
Nikolaj Bjorner 54f7aac0bc column value is not necessarily at bounds 2023-10-08 17:18:26 +09:00
Lev Nachmanson 4c228fb02c
Merge branch 'master' into unit_prop_on_monomials 2023-10-06 07:24:05 -07:00
Lev Nachmanson a94a75459e fixin nla_solver_test.cpp 2023-10-06 06:51:00 -07:00
Lev Nachmanson f847d039bc use the simple version of move_non_basic_column_to_bounds 2023-10-05 20:57:54 -07:00
LufyCZ 19e921290e
increase wasm stack size (#6931) 2023-10-06 11:49:54 +09:00
Christoph M. Wintersteiger 23de8056d7
Add RCF functions to OCaml API (#6932) 2023-10-06 11:49:22 +09:00
Lev Nachmanson bf3817ef7c restore move_non_basic_to_bounds
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-05 18:14:52 -07:00
Lev Nachmanson b61f4ac51f merge changes from master
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-05 07:50:13 -07:00
Nikolaj Bjorner b0df74c1c1 #6930
simplify assumptions and only replay assumptions after constraints are simplified. This allows simplifying assumptions with the current set of constraints independently of whether there is another check-sat.
2023-10-05 17:23:17 +09:00
Lev Nachmanson 45c0ed126e remove unnecessery call
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-04 17:39:22 -07:00
Lev Nachmanson edd1761ff3 restore the scheme of m_columns_with_changed_bounds
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-04 11:06:24 -07:00
Lev Nachmanson a88aa7ffa5 debug new propagation scheme
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-03 16:25:49 -07:00
Nikolaj Bjorner 00ba064cd3 ensure bounds propagation on changed columns after nla propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-03 14:28:59 +09:00
Clemens Eisenhofer 4133a1cc5a
Fix UP registration in final callback (#6929)
* Fix registration in final

* Don't make it too complicated...
2023-10-03 09:51:02 +09:00
Lev Nachmanson 7de06c4350 merging master to unit_prop_on_monomials 2023-10-02 16:42:59 -07:00
Lev Nachmanson a297a2b25c fixes in lar_solver around nl unit propagation
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-10-01 11:39:58 -07:00
Nikolaj Bjorner ab8fe199c5 fix case for 0 multiplier in monomial_bounds
disabled in master - it violates invariants in the lra solver.
2023-10-01 18:41:23 +09:00
Nikolaj Bjorner 50654f1f46 add theory propagation to linear monomial propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-30 08:52:09 +09:00
Lev Nachmanson 702322a6e9 change the order of lp and nlp propagation 2023-09-29 15:31:32 -07:00
Lev Nachmanson b64fdef41f better tracking changinc rows and monomials 2023-09-29 15:27:22 -07:00
Lev Nachmanson f30a2c13be propagate only one non-fixed monomial intrernally
lar_solver
2023-09-28 17:24:34 -07:00
Nikolaj Bjorner ddcd1ee992 non-fixed term should have bound 0
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-28 09:25:36 -07:00
Nikolaj Bjorner 65e59e3ec4 sketch of internal propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-27 20:43:38 -07:00
Nikolaj Bjorner 7207f0ff9c sketch of internal propagation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-27 20:40:55 -07:00
Lev Nachmanson 29b5c47a8d track changed monics efficiently
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-27 09:09:38 -07:00
Nikolaj Bjorner 9033b826f4 debug output with the variable that is fixed and its value
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-27 00:52:26 -07:00
Nikolaj Bjorner 42767b9aab
Merge branch 'master' into unit_prop_on_monomials 2023-09-26 23:55:37 -07:00
Nikolaj Bjorner 2297b0334b re-introduce simple implementation of linear monomial propagation for evaluation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 23:53:14 -07:00
Nikolaj Bjorner 6559e5fb32 port over std_vector and std-allocator functionality from monomial propagation branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 21:15:07 -07:00
Nikolaj Bjorner aaa587398e add propagation flag to monic and method for updating it to emonics. This replaces the bool-vector tracking for propagation and internalizes it to the emonics class
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 20:52:34 -07:00
Nikolaj Bjorner 4b85a105bb
Merge branch 'master' into unit_prop_on_monomials 2023-09-26 20:25:43 -07:00
Nikolaj Bjorner 9c63ea3135 port over cosmetics from unit_prop_on_monomials branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 20:24:49 -07:00
Nikolaj Bjorner 94eb101873
Merge branch 'master' into unit_prop_on_monomials 2023-09-26 20:15:58 -07:00
Nikolaj Bjorner 36566d6193 port over moving m_nla_lemmas into nla_core from the linear monomial propagation branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 20:15:22 -07:00
Nikolaj Bjorner e4e1d6148c port over moving m_nla_lemmas into nla_core from the linear monomial propagation branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 20:14:42 -07:00
Nikolaj Bjorner e8fcc876c9
Merge branch 'master' into unit_prop_on_monomials 2023-09-26 20:14:06 -07:00
Nikolaj Bjorner ec2937e2de port over moving m_nla_lemmas into nla_core from the linear monomial propagation branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 20:08:30 -07:00
Nikolaj Bjorner 8d2b65b20b add options to allow testing the effect of non-linear hammers
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-26 19:18:44 -07:00
Lev Nachmanson 368fe80b3d fix the build 2023-09-25 16:55:02 -07:00
Lev Nachmanson 6ff4856e38 throttle monomial unit prop and and nl params 2023-09-25 16:47:34 -07:00
Lev Nachmanson 896aba31f8 move monomial propagation from theory_lra to nla_solver
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-25 14:20:24 -07:00
Nikolaj Bjorner d2c0f7dba7 fix test build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-25 12:48:52 -07:00
Nikolaj Bjorner 0a1ade6f95 move m_nla_lemma_vector to be internal to nla_core
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-25 12:40:52 -07:00
Lev Nachmanson 26a9b776c6 clean m_nla_lemma_vector in nla_solver
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-25 12:10:59 -07:00
Nuno Lopes 029d726eb8 minor code simplification 2023-09-25 15:33:40 +01:00
Nikolaj Bjorner 87a839c794 fixup unit test for added argument to constructor of nla_solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-23 18:07:56 -07:00
Nikolaj Bjorner db097bae05 use format from unit_prop_on_monomials branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-23 17:24:46 -07:00
Nikolaj Bjorner 3433366bef Merge branch 'unit_prop_on_monomials' of https://github.com/z3prover/z3 into unit_prop_on_monomials 2023-09-23 17:20:08 -07:00
Nikolaj Bjorner 85eacf9bb1 merge with master
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-23 17:20:00 -07:00
Nikolaj Bjorner 61319ffd85 cache is_shared information in the enode
observed perf overhead for QF_NIA is that assume_eqs in theory_lra incurs significant overhead when calling is_relevant_and_shared. The call to context::is_shared and the loop checking for beta redexes is a main bottleneck. The bottleneck is avoided by caching the result if is_shared inside the enode. It is invalidated for every merge/unmerge.
2023-09-23 17:19:06 -07:00
Nikolaj Bjorner a3e2e68d93
Update theory_lra.cpp 2023-09-23 16:26:31 -07:00
Nikolaj Bjorner acad9fa62c
Update smt_context.cpp 2023-09-23 16:25:46 -07:00
Nikolaj Bjorner eea9c0bec6 fix #6914 2023-09-23 11:22:25 -07:00
Nikolaj Bjorner 30d1800c31 #6916
short circuiting equality consequence appears to have the wrong sign
2023-09-23 10:32:51 -07:00
Nikolaj Bjorner 421fe94607 rmove debug out
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-22 17:59:07 -07:00
Nikolaj Bjorner 886d3f4351 indentation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-22 16:55:34 -07:00
Nikolaj Bjorner eac54ba084 indentation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-22 16:54:12 -07:00
Nikolaj Bjorner 940775d12d indentation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-22 16:48:40 -07:00
Lev Nachmanson caa929f01f do not use lemmase in monomial propagation 2023-09-22 14:27:26 -07:00
Nikolaj Bjorner 5d8779b05d
Merge branch 'master' into unit_prop_on_monomials 2023-09-22 09:46:41 -07:00
Nikolaj Bjorner eff3f5f65e port bug fixes from unit prop branch
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-22 09:45:58 -07:00
Lev Nachmanson 576309a16f Revert "reject rows with columns with big numbers for lp bound propagation"
This reverts commit c0b55d1435.
2023-09-21 16:30:43 -07:00
Lev Nachmanson c0b55d1435 reject rows with columns with big numbers for lp bound propagation
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-21 15:53:53 -07:00
Lev Nachmanson f423642e9b try the lemma scheme 2023-09-21 12:18:21 -07:00
Lev Nachmanson e31cecf5db transfer propagate monomial bounds to nla_solver 2023-09-21 11:27:53 -07:00
Lev Nachmanson 536930b4a1 make m_ibounds inside of lp_bound_propagator
a reference
2023-09-20 17:13:25 -07:00
Lev Nachmanson 20c02f4f45 fix a lambda bug
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-09-20 17:02:35 -07:00
Nikolaj Bjorner f9de65a464 indetation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-09-20 15:22:28 -07:00
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