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

949 commits

Author SHA1 Message Date
Arie Gurfinkel 8400122596 mk_synchronize rule transformation 2018-09-04 21:49:59 -04:00
Arie Gurfinkel 3a01fd791b Replace rule API 2018-09-04 21:49:59 -04:00
Arie Gurfinkel 0035d9b8cb Background external invariants
Background external invariants are constraints that are assumed to be
true of the system. This commit introduces a mode in which
background invariants are used only duing inductive generalization
and lemma pushing, but not during predecessor computation.

It is believed that this will be more efficient used of background
external invariants since they will not be able to disturb how
predecessors are generalized and computed.

Based on a patch by Jorge Navas
2018-09-04 21:49:59 -04:00
Arie Gurfinkel 533e9c5837 Expand equality literals when eq_prop is disabled
When equality propagation is disabled for arithmetic,
equality atoms are expanded into inequality for potentially
better generalization with interpolation
2018-09-04 21:49:59 -04:00
Nikolaj Bjorner 84c7df75d6 record statistics setting in config_params so that fp engine can access them, fix serialization bug when check-assumptions returns unsat
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-08-06 16:21:27 -07:00
Nikolaj Bjorner d47e06732c bmc improvements, move fd_solver to self-contained directory
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-08-05 10:02:15 -07:00
Nikolaj Bjorner e041ebbe80 bmc improvements, move fd_solver to self-contained directory
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-08-05 10:00:49 -07:00
Arie Gurfinkel 5d1149adb2 Transformation to eliminate term-ite expressions from DL rules 2018-07-02 17:09:56 -04:00
Arie Gurfinkel 6d75c31468 First draft of elim_term_ite xform. Not working. 2018-07-02 17:09:56 -04:00
Arie Gurfinkel 7acea2791d -tr:spacer.expand-add --> -tr:spacer_progress 2018-07-02 17:09:56 -04:00
Nuno Lopes cef17c22a1 remove some allocs from exceptions 2018-07-02 17:08:02 +01:00
Nikolaj Bjorner c4d893dfad fix compiler warnings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-30 06:10:09 -07:00
Nikolaj Bjorner 3ad7d59f22 Merge branch 'master' of https://github.com/z3prover/z3 2018-06-29 21:25:21 -07:00
Nikolaj Bjorner 797e576195 unreferenced variable in release mode, spaces
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-29 21:25:08 -07:00
Arie Gurfinkel 9b578083f5 Avoid non-linear arithmetic in qgen 2018-06-28 16:50:43 -04:00
Arie Gurfinkel 5e87d7c4a3 Formatting: move q3 parameters closer together 2018-06-28 15:38:51 -04:00
Arie Gurfinkel bd63458778 Shuffle assumptions on every call
Order of assumptions appears to make a huge difference on what lemmas
are discovered. Shuffling the assumptions ensures that the solver
is never stuck with any bad order.
2018-06-28 15:38:51 -04:00
Arie Gurfinkel 6422fa3739 Fix arithmetic equality solver in qgen 2018-06-28 15:38:51 -04:00
Arie Gurfinkel 41a05e9d58 Add methods to print pob 2018-06-28 15:38:51 -04:00
Arie Gurfinkel a63e4b48ca Fix order of arguments when normalizing a conjunction 2018-06-28 15:38:51 -04:00
Arie Gurfinkel a8c9e3a837 Bug fix in qgen 2018-06-28 15:38:50 -04:00
Arie Gurfinkel e8e27f0daf Don't simplify bounds when normalizing a lemma 2018-06-28 15:38:50 -04:00
Arie Gurfinkel 0e5434ce0c Debug prints 2018-06-27 22:49:36 -04:00
Arie Gurfinkel 7c924c49f6 Do not evaluate quantified formulas in a model 2018-06-27 22:49:36 -04:00
Arie Gurfinkel 704c19920d Only 10 levels of weakness 2018-06-27 22:49:35 -04:00
Arie Gurfinkel 4339722e98 Fix segfaults in qgen 2018-06-27 22:49:35 -04:00
Arie Gurfinkel 49e9480928 Fix lemma_as_cti option
Use negation of a lemma as a proof obligation. This speeds up discovering
bad lemmas that do not contain some reachable states.
2018-06-27 22:49:35 -04:00
Arie Gurfinkel d7234dc039 Inactive debug code 2018-06-27 22:49:35 -04:00
Arie Gurfinkel 2b4d92821a Avoid crashing on cancel 2018-06-27 22:49:35 -04:00
Arie Gurfinkel f6dcc6fc72 API to find pob in pob_manager 2018-06-27 22:49:35 -04:00
Arie Gurfinkel 5bc57238a6 Track whether pob is in pob_queue
pob_queue is a priority queue. Changing a pob while it is in the queue might change
the priority. This is a source of subtle bugs. The flag is ment to help defend
against this issues in the future.

As a side-effect, a pob that is already in the queue will be silently not added
to it, and a new version of a pob might be created if a version being looked
for is already in the queue.
2018-06-27 22:49:35 -04:00
Arie Gurfinkel c00c6b4285 Pobs are always managed
Removed options to allow unmanaged pobs.
Other minor cleanups.
2018-06-27 22:49:35 -04:00
Arie Gurfinkel 1910b4c87c Rename pobs into pob_manager 2018-06-27 22:49:35 -04:00
Arie Gurfinkel d9100437ce Weakness of the lemma independent of the pob
Lemma inherits its weakness score from the pob. However,
pob's weakness might be reset or changed for some other reason.

To avoid affecting the lemma, the weakness is copied on
construction.
2018-06-27 22:49:35 -04:00
Nikolaj Bjorner eabe91cdef Merge branch 'master' of https://github.com/z3prover/z3 2018-06-27 17:05:52 -07:00
Nikolaj Bjorner 7844476a7d fixes to term-graph, add proof-checker routines for PR_BIND, remove orphaned file
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-27 17:04:47 -07:00
Nikolaj Bjorner 06c9a9f3e1 merge
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-27 08:51:22 -07:00
Nikolaj Bjorner 5762be2a0f fix 1703
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-27 08:49:52 -07:00
Nikolaj Bjorner 520ce9a5ee integrate lambda expressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-26 07:23:04 -07:00
Arie Gurfinkel 3af3c82f67 Normalize lit0 in theory clause 2018-06-25 09:21:30 -04:00
Arie Gurfinkel f330b96a35 Gracefully failing in assign-bounds to farkas 2018-06-24 21:03:09 -04:00
Arie Gurfinkel e906930922 Debug code 2018-06-24 20:43:04 -04:00
Arie Gurfinkel 8e57ab5d97 Computing missing coeff for assign-bounds lemma 2018-06-24 20:43:04 -04:00
Arie Gurfinkel 1764bb8785 Cleaning up unsat_core_learner 2018-06-24 20:43:04 -04:00
Arie Gurfinkel 7b2ca769ef Cleanup 2018-06-24 20:43:04 -04:00
Arie Gurfinkel 58dc5451e1 iuc code cleanup 2018-06-24 20:43:04 -04:00
Arie Gurfinkel 9c9d0d0840 convert assign-bounds axioms to farkas lemmas 2018-06-24 20:43:04 -04:00
Arie Gurfinkel ac23002dce Fix bugs in iuc generation 2018-06-24 20:43:04 -04:00
Arie Gurfinkel 4ed6783aff Formatting only. No change to code 2018-06-24 20:43:04 -04:00
Arie Gurfinkel fcfa6baeca Refactor mk_th_lemma 2018-06-24 20:43:04 -04:00
Nikolaj Bjorner 915983821b add rewrite to each branch of mbp
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-24 17:06:49 -07:00
Nikolaj Bjorner c32bfb5ecd fix crash during cancelation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-24 15:29:40 -07:00
Nikolaj Bjorner 335d672bf1 fix #1675, regression in core processing in maxres
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-19 23:23:19 -07:00
Nikolaj Bjorner c81f25a1c8 fix build issue
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-17 09:59:03 -07:00
Nikolaj Bjorner 035baf7cb9 align use of spaces before for/if/while
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-17 09:43:40 -07:00
Arie Gurfinkel 4204b6ede2 Switch rest of spacer to new model API and remove mev_util 2018-06-16 14:40:17 -07:00
Arie Gurfinkel a222b6d41f Switch reach_fact to new model API 2018-06-16 14:17:33 -07:00
Arie Gurfinkel f226c6682b Switched derivation to new model API 2018-06-16 14:09:24 -07:00
Arie Gurfinkel 5e65b37f25 Switch spacer::qe_project to new model API 2018-06-16 13:58:58 -07:00
Arie Gurfinkel fffc8489bf Switched compute_implicant_literals to use new model API 2018-06-16 13:43:30 -07:00
Nikolaj Bjorner caca07c85f fix path to moved header file
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-15 15:28:18 -07:00
Nikolaj Bjorner b6c43f6143 move files for build script
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-15 15:13:55 -07:00
Nikolaj Bjorner 6fc08e9c9f Merge branch 'master' of https://github.com/z3prover/z3 2018-06-15 14:58:10 -07:00
Nikolaj Bjorner a51d6cbcbc debug model evaluator
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-15 14:58:02 -07:00
Arie Gurfinkel 9109968e55 Cleanup fixedpoint options
Replace pdr options with spacer
Repace fixedpoint module with fp
2018-06-14 16:08:52 -07:00
Arie Gurfinkel 619f681d28 Fix bug in iuc_solver::get_unsat_core() that prevented clean cores 2018-06-14 16:08:52 -07:00
Arie Gurfinkel d38879e478 Renamed spacer options 2018-06-14 16:08:52 -07:00
Nikolaj Bjorner 74621e0b7d first eufi example running
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner 9a0406d181 replace app by expr
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner 2e44850df9 move term graph closer to qe
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Arie Gurfinkel 4a2eb909bf Re-fixing a bug in compute_implicant_literals() 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 8445e2a7a2 Fix bug in weak abs
Must ensure that weak model makes all summaries true. Otherwise,
it is possible to get stuck discovering the same lemma forever.
2018-06-14 16:08:51 -07:00
Arie Gurfinkel df7ab0e496 pred_transformer: factor rule bookkeeping to a separate class 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 4099f31f4f Fix refutation generation 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 18e3c7b13d Fix bug introduced by formatting 2018-06-14 16:08:51 -07:00
Nikolaj Bjorner f3466bb3e4 tidy
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner 1920450f98 throttle ite-blasting
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Arie Gurfinkel 1f0fd38c99 ground sat refutation from spacer (wip) 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 0534b72c4d sort hypotheses 2018-06-14 16:08:51 -07:00
Arie Gurfinkel c5fb1c1223 Use vector instead of a hashtable to represent a set 2018-06-14 16:08:51 -07:00
Arie Gurfinkel e84ca25f05 Check whether one proof node is an ancestor of another on-demand
Instead of pre-computing sets
2018-06-14 16:08:51 -07:00
Arie Gurfinkel a40e0dce0c proof_utils: use expr_mark instead of hashtable 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 2a6b694373 Imrove hypothesis_reducer 2018-06-14 16:08:51 -07:00
Nikolaj Bjorner 4b2196f114 nits
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner 6adaed718f remove pdr
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Arie Gurfinkel cefdb8c01d Use reachable cache 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 9fef466c63 Respect children order in spacer/pdr 2018-06-14 16:08:51 -07:00
Arie Gurfinkel f74ca2f0c0 Fix caching bug in mbc 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 54add824e9 Debug print 2018-06-14 16:08:51 -07:00
Nikolaj Bjorner c3fb863ad1 formatting/reviewing
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Arie Gurfinkel d2ae3b4025 Create children for pdr in spacer
This is first working version of gpdr strategy. Passes one test.
2018-06-14 16:08:51 -07:00
Arie Gurfinkel e1a45671b3 Cleanup spacer options 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 1994f1d7e4 Cleanup of spacer options 2018-06-14 16:08:51 -07:00
Arie Gurfinkel cb683389f6 spacer::context: Factor params into udpt_params 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 521392a8f1 First partially working pdr strategy in spacer 2018-06-14 16:08:51 -07:00
Arie Gurfinkel ab5f579d0b Comments in pdr_context.cpp 2018-06-14 16:08:51 -07:00
Arie Gurfinkel ece2e53c98 Ported model_search and model_node from pdr into spacer 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 478d7c790e mbc: moved code under get_subst() 2018-06-14 16:08:51 -07:00
Arie Gurfinkel e860e4d045 Bug fix for quantified pob generation 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 2a243d38d1 Model based Cartesian decomposition 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 3178f7f86d Add random order of children in spacer 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 5756871738 Always attempt to eliminate all existential variables
Sometimes variables that cannot be eliminated in one context, can be
eliminated in the other. Pass all available variables to MBP to be
eliminated if possible
2018-06-14 16:08:51 -07:00
Arie Gurfinkel 7396ad72ab Give up when a lemma is re-discovered too many times 2018-06-14 16:08:51 -07:00
Arie Gurfinkel 6fb6279f07 Cleanup array_eq_generalizer 2018-06-14 16:08:51 -07:00
Arie Gurfinkel da66ad6f80 Cleanup derivation::create_next_child 2018-06-14 16:08:50 -07:00
Arie Gurfinkel c5ff5ac2a1 Clen up spacer::pred_transformer::get_origin_summary 2018-06-14 16:08:50 -07:00
Arie Gurfinkel d7dc10212e Clean up spacer::context::create_children 2018-06-14 16:08:50 -07:00
Arie Gurfinkel b61da6fcc0 Debug print in org-mode format 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 6b82068d8d Bug fix in spacer::derivation::exist_skolemize 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 4ca734528e Formatting 2018-06-14 16:08:50 -07:00
Arie Gurfinkel dd064bd8f9 Bug fix to spacer::sym_mux 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 38c2b56f0e Rewrite spacer::sym_mux
Simpler implementation that only provides functionality actually used
by spacer
2018-06-14 16:08:50 -07:00
Arie Gurfinkel 268274911a Fix to cube-and-clause interface in prop_solver 2018-06-14 16:08:50 -07:00
Arie Gurfinkel e0e435582a Minor code cleanup 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 6464468cd8 Remove dead code 2018-06-14 16:08:50 -07:00
Nikolaj Bjorner bfeb15b876 move to list of clauses
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:50 -07:00
Arie Gurfinkel 502e323678 Fixes to pred_tranformer::updt_solver 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 862eef5ec0 Eliminate all existential variables from reach facts 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 70f4674b3a Code to update solver with all constraints of a pred_transformer 2018-06-14 16:08:50 -07:00
Arie Gurfinkel cfcc084688 reach_fact --> rf 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 7a8563a34c spacer: cleaner management of rf tags 2018-06-14 16:08:50 -07:00
Arie Gurfinkel ada548b5ae Removed unused options 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 0b387cd7eb Moved pool_solvers from spacer::manager into spacer::context 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 451d42319b Rename m_reach_ctx into m_reach_solver 2018-06-14 16:08:50 -07:00
Arie Gurfinkel cdba0721e7 Extra stats in iuc_solver 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 16fefe850a Factored mbp into pred_transformer and added stats 2018-06-14 16:08:50 -07:00
Arie Gurfinkel fde58664f6 Moved mk_reach_fact to pred_transformer 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 2a2b21326b Stats on num_proxies in iuc_solver 2018-06-14 16:08:50 -07:00
Arie Gurfinkel e2e1411707 Option to dump SMT queries as benchmarks during Spacer run 2018-06-14 16:08:50 -07:00
Arie Gurfinkel fb52c36210 spacer: switch to new IUC as default 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 3a97451f8c spacer: normalize the cube before creating a lemma 2018-06-14 16:08:50 -07:00
Arie Gurfinkel fce68536d3 spacer: print all lemmas in json 2018-06-14 16:08:50 -07:00
Arie Gurfinkel bfa472faec New style of json dump based on lemmas at pob 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 5072a2a869 spacer: pobs keep track of their lemmas 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 61cd74818f Pin lemmas so that they don't disappear 2018-06-14 16:08:50 -07:00
Nikolaj Bjorner 0c2e3c0894 fixes to clause proof tracking
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:50 -07:00
Arie Gurfinkel f7d015de8d Switch spacer_prop_solver to check_sat_cc 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 1343b272e7 Implement iuc_solver::check_sat_cc 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 723e96175b spacer: prepare to use incremental clause smt_solver interface 2018-06-14 16:08:50 -07:00
Arie Gurfinkel 56a29093d0 Cleanup transition creation in pred_transformer 2018-06-14 16:08:50 -07:00
Arie Gurfinkel af57db0413 Anti-unification of two ground expressions 2018-06-14 16:08:49 -07:00
Arie Gurfinkel a8438e081e Wired qe::mbp into spacer
use option fixedpoint.spacer.native_mbp=true to use it
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner 20300bbf94 updates to mbqi
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Arie Gurfinkel 14b9dd2cd7 spacer: let pool_solver own the solver 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 15d0fd4b42 spacer: removed virtual_solver
This commit removes virtual_solver and smt_context_manager that have
been migrated into solver_pool
2018-06-14 16:08:49 -07:00
Arie Gurfinkel 098e70a9e2 spacer: switched to using solver_pool 2018-06-14 16:08:49 -07:00
Arie Gurfinkel c2304e2636 spacer: Cleanup of smt parameter configuration 2018-06-14 16:08:49 -07:00
Arie Gurfinkel cfeee55d4f spacer: set qi.quick_checker to MC_UNSAT if quantifiers are expected 2018-06-14 16:08:49 -07:00
Arie Gurfinkel c8187886cf spacer: use same params for all solver pools 2018-06-14 16:08:49 -07:00
Arie Gurfinkel c2b8f25cf9 Switch to using solver instead of smt::kernel all around 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 4b09cefb97 Replace smt::kernel with smt_solver
Replace all ad-hoc uses of smt::kernel with ad-hoc uses of smt_solver
2018-06-14 16:08:49 -07:00
Arie Gurfinkel 9c37bef553 Fix bug in ctp 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 40781c0b0c Comment on params used in spacer_context 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 55126692c9 spacer: counterexample to pushing (ctp)
Enable using fixedpoint.spacer.ctp=true

For each lemma L currently at level k, keep a model M that justifies
why L cannot be pushed to (k+1). L is not pushed while the model M
remains valid.
2018-06-14 16:08:49 -07:00
Arie Gurfinkel 95d820196b Cleanup 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 68b7966254 Use C++11 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 4e9023b8fe Remove dead code 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 00f870b7ff to_mbp_benchmark(): prints an mbp problem in benchmark format
currently unused. See comment in spacer_util.c:qe_project for example
usage
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner 402234757e updates to mbqi
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Arie Gurfinkel e8cabdc620 Uninitialized variable 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 054c6196a0 Move spacer qe into spacer_qe namespace
Attempt to solve compilation issues with GCC and current replication
of qe namespace inside and outside spacer
2018-06-14 16:08:49 -07:00
Arie Gurfinkel 56bce005a0 virtual_solver: debug print 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 891dcd99c2 Use fact-generating version of mk_unit_resolution()
fact-using version of mk_unit_resolution() requires the fact to be a
literal. Not sure why this restriction is placed there.
2018-06-14 16:08:49 -07:00
Arie Gurfinkel 8be03f7c1f spacer_context: skolemize quant vars before renaming
Skolemization has to be done before renaming, otherwise,
can't guarantee that variable names do not clash
2018-06-14 16:08:49 -07:00
Arie Gurfinkel 4de58a42fe Update initialization order 2018-06-14 16:08:49 -07:00
Arie Gurfinkel aeb2f3c4bb factor out inherit_properties 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 2f369d8d41 Simplify code using C++11 conventions 2018-06-14 16:08:49 -07:00
Arie Gurfinkel 5a6bd5e782 hypothesis_reducer: worked around propositional literals
propositional formulas (disjunctions) can appear as literals.  This
makes it tricky to recognize whether a formula is a unit clause when
re-building unit resolution.

Added work-around that identifies whether a formula is a literal based
on its appearance in previous unit resolution step.
2018-06-14 16:08:48 -07:00
Arie Gurfinkel b39c532f19 Order of methods in spacer_context.cpp 2018-06-14 16:08:48 -07:00
Nikolaj Bjorner 7931bd1dfc updates to mbqi
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:48 -07:00
Arie Gurfinkel 0fe5e6c2a6 Fix handling of complex literals in hypothesis_reducer
In Z3, an arbitrary, even propositional, formula can be a literal.

This requires careful handling of restructuring of unit resolution.
2018-06-14 16:08:48 -07:00
Arie Gurfinkel d1a7c0ceb0 Remove a print 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 05c8067392 Changed pob queue management strategy in spacer_context 2018-06-14 16:08:48 -07:00
Arie Gurfinkel a696a40a3a Refactoring 2018-06-14 16:08:48 -07:00
Arie Gurfinkel ec8f99fee7 Rename expand_node --> expand_pob 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 3f9b5bce99 Remove debug function 2018-06-14 16:08:48 -07:00
Arie Gurfinkel ac3bbed311 Remove dead code in spacer_manager
- removed bg_assertions. Incompatible with mbp in spacer
  - removed unique number. Unused
  - removed mk_and() and switched to ast_util:mk_and() instead
       spacer_manager::mk_and() uses bool_rewriter to simplify the
       conjunction
2018-06-14 16:08:48 -07:00
Arie Gurfinkel 33466c75a6 mss loop in prop_solver
max sat assignment (mss) to replace core-based maxsmt()
2018-06-14 16:08:48 -07:00
Arie Gurfinkel d379b14942 Cleanup spacer_iuc_solver 2018-06-14 16:08:48 -07:00
Arie Gurfinkel fd13eb9e0e Final cleanup of hypothesis_reducer 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 9d4784baf6 Fix dealloc order in hypotheses_reducer::reset() 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 689414d055 Fix debug printing in iuc_solver 2018-06-14 16:08:48 -07:00
Nikolaj Bjorner ff0f257102 remove iff
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:48 -07:00
Arie Gurfinkel 8d312f9d1f Cleanup of hypothesis_reducer 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 2db38fedd6 Cleanup of theory_axiom_reducer proof trasfomation 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 07ad67ebad Move proof dot printing into iuc_proof 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 45500ff7d3 Cleanup iuc_proof 2018-06-14 16:08:48 -07:00
Arie Gurfinkel abe67705d3 Cleanup iuc_proof 2018-06-14 16:08:48 -07:00
Arie Gurfinkel c893740e13 Fix compilation 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 3bc3b00fdd Post merge compile fixes 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 649bab2f58 Rename itp_solver into iuc_solver
IUC stands for Interpolanted UNSAT Core
2018-06-14 16:08:48 -07:00
Arie Gurfinkel 5d3b515a50 Cleanup option names and default values 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 39bdecf9c2 Minor code cleanup 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 83adb6742e Remove whitespace 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 7c727ee922 Fix compiler warnings 2018-06-14 16:08:48 -07:00
Bernhard Gleiss 4b6921dffb removed unnecessary assignment 2018-06-14 16:08:48 -07:00
Bernhard Gleiss 295d16bfae Rewrite hyp-reducer
This is a new version that conceptually addresses the bugs in
all previous version. However, it had a hard-to-debug memory
corruption. The bug appeared only in optimized compilation under
Linux with GCC.

This code is suspect and should be reviewed and further tested
2018-06-14 16:08:48 -07:00
Bernhard Gleiss 85c58e344c Add option to use old_hyp_reducer 2018-06-14 16:08:48 -07:00
Arie Gurfinkel f0f75d5254 Wire in arith-axiom-reducer 2018-06-14 16:08:48 -07:00
Bernhard Gleiss 0f25e9e831 Moved farkas stats printing to before and after the hyp-reduction 2018-06-14 16:08:48 -07:00