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
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
Bernhard Gleiss de31b07008 arith-theory-axiom reducer to handle arithmetic axioms 2018-06-14 16:08:48 -07:00
Arie Gurfinkel df2eb771ef Fix in spacer_itp_solver: use pr.get() instead of get_proof() 2018-06-14 16:08:48 -07:00
Arie Gurfinkel ab3a6702af Fix several bugs in hyp_reducer
- compute_marks didn't find all units
  - call to m.mk_unit_resolution expects that there is at least one unit
  - hyp-reduced proof wasn't used
  - bug in early termination
  - any hypothesis was  replaced with the old derivation of the literal
  - handle the case of a single literal premise under hypothesis that is
    replaced by an empty clause under hypothesis
2018-06-14 16:08:48 -07:00
Arie Gurfinkel 56114a5f6d Refactor iuc_proof as a separate class
This also adds DOT printing support to interpolating proofs
(color for different parts)

iuc_proof is a proof used for IUC computation
2018-06-14 16:08:48 -07:00
Bernhard Gleiss 247c570e6b Debug sanity check in spacer_context
Triggered by bugs in hypothesis remover

only sanitycheck lemmas in debug-mode
2018-06-14 16:08:48 -07:00
Matteo Marescotti a4e67b8bb6 Wire JSON printing into Spacer 2018-06-14 16:08:48 -07:00
Matteo Marescotti 3248f57434 Add support for printing spacer pobs in JSON 2018-06-14 16:08:48 -07:00
Matteo Marescotti 28ef9ab9d1 User option to enable starting spacer from a given level 2018-06-14 16:08:48 -07:00
Matteo Marescotti ff7c949be8 Fix: call collect_statistics() in virtual_solver 2018-06-14 16:08:48 -07:00
Matteo 65885f7eba add_constraint API 2018-06-14 16:08:48 -07:00
Matteo 3c7165780c Extend spacer with callback events
Callback events allow the client of spacer to
get events during exection. The events include
new lemmas and unfolding.
2018-06-14 16:08:48 -07:00
Arie Gurfinkel b51251f394 Move tout under TRACE 2018-06-14 16:08:48 -07:00
Arie Gurfinkel fd7bcc7afc Format 2018-06-14 16:08:48 -07:00
Yakir Vizel 5df7a08d1c A simple version for finding the stride between different indices in a POB
This current version is very limited.
It assumes a pre-defined structure (namely, an ADDER).
2018-06-14 16:08:48 -07:00
Arie Gurfinkel 04a778f2fd Option to enable cube normalization in quic generalizer 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 852e181fed New quic3 lemma generalizer 2018-06-14 16:08:48 -07:00
Arie Gurfinkel 9cdb63ae4a Handle conversion of quantified lemma to quantifier free
When a cube is updated, a lemma might loose all of its quantified
variables. In this case, it is effectively quantifier free
and might be a version of an already existing lemma.

For that reason, we convert it to quantifier free lemma when
this happens.
2018-06-14 16:08:48 -07:00
Yakir Vizel 23a8e59493 Initial commit of QGen
Controlled by fixedpoint.spacer.use_quanti_generalizer

measure cumulative time, number of invocations, and number of failed
SMT calls

Relaxing equality in a pattern: if a variable equals a numeral, relax with GE

pob::get_skolems() returns all skolems that might appear in the pob.
New skolems must be added above the largest index in that map,
even if they are not used in the pob itself.

pattern generalization should be done before the pattern is skolemized and
added into the new cube.
2018-06-14 16:08:47 -07:00
Arie Gurfinkel a1efb88318 Semantic matcher
Extends matcher with rewrites based on semantics of arithmetic operations

Like matcher, but uses arithmetic and logic rewrites to try to
get a semantic match.
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 7dee36358d Allow bool_ind_generalizer to skip non-array literals
Currently a hack to skip generalizing some literals.
Used together with quic generalizer to remove all array terms if possible
before quic generalization
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 46fb0d928a Fix in spacer_term_graph 2018-06-14 16:08:47 -07:00
Yakir Vizel 068b77d43a Normalizing LE and GE with constants 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 0c1ef7155a Option to rewrite expression in term_graph
Rewrite expressions to minimize uses of constants 0 and 1
Currently disabled due to interaction with quic
2018-06-14 16:08:47 -07:00
Arie Gurfinkel ecf9c629b0 Fix binding handling for quantifier free lemmas 2018-06-14 16:08:47 -07:00
Arie Gurfinkel a8318b8822 Fix lemma::has_binding() 2018-06-14 16:08:47 -07:00
Arie Gurfinkel ec179da0fa API to get num of free variables in a pob 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 05e876d684 Fix n-arry applications in spacer_term_graph 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 7b82ec1bee Attempt bug fix 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 981e521b18 Cleanup lemma definition
exposes a potential bug. See comments in code.
2018-06-14 16:08:47 -07:00
Yakir Vizel f51c07adf6 Moving skolems to lemma 2018-06-14 16:08:47 -07:00
Arie Gurfinkel ea73acef45 Implements mk_num_pat
Abstracts interpreted numeric constants with variables in a ground expression
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 9bc11b2122 Wire term graph into eq_generalizer 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 09d54c10a6 Wire term graph into spacer normalizer 2018-06-14 16:08:47 -07:00
Arie Gurfinkel be77b1de39 Improve interface of term_graph 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 6407ec8725 spacer_term_graph: an egraph of terms
Used to determine and factor out equalities
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 088bd3ed8e Fix compiler warning 2018-06-14 16:08:47 -07:00
Bernhard Gleiss 25fad153d1 added option fixedpoint.spacer.iuc.debug_proof to debug proof which is used for generation of iuc 2018-06-14 16:08:47 -07:00
Bernhard Gleiss c3a66217e1 improved options for IUC computation 2018-06-14 16:08:47 -07:00
Bernhard Gleiss 370667722d New option fixedpoint.spacer.print_farkas_stats
Prints the number of Farkas lemmas in each proof
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 880fc77655 Further rewrite equalities 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 5a37518e58 Improve statistics from spacer 2018-06-14 16:08:47 -07:00
Bernhard Gleiss 00a99f01b4 improved options for IUC computation 2018-06-14 16:08:47 -07:00
Bernhard Gleiss fba995294d refactored options regarding farkas lemma handling 2018-06-14 16:08:47 -07:00
Bernhard Gleiss 56fcb8e6fd added option fixedpoint.spacer.print_farkas_stats to print number of Farkas lemmas in each proof 2018-06-14 16:08:47 -07:00
Bernhard Gleiss 4148ee128c fixed bug, which added too many edges between super-source and source in the case where the source was used by multiple inferences 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 9b050e8d30 Fix benign warning 2018-06-14 16:08:47 -07:00
Arie Gurfinkel e7815c703c Fix a typo 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 321cad70d6 improve comments for scoped_weakness 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 890bc0f7c9 fix scoped_weakness
forgot to save current state of params before resetting them
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 68518b0e32 propagate weakness from pob down to all related checks
If a pob was discharged with a weak solver, propagate the level of
weakness to inductive generalization and to lemma propagation.
2018-06-14 16:08:47 -07:00
Arie Gurfinkel b8b3703511 improved implementation of is_qblocked()
Disabled by default. Has no effect if ran with the default set of
options where qlemmas=true  and instantiate=true
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 371ba4fbc0 added parameters that seem to work well with quantifiers and arith 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 27d8fa4a34 hard-code quantifier weight to 15
With default settings, the eager threshold is 10 and lazy is 20.  15
puts us in the middle ensuring that lemmas are instantiated when UNSAT
and otherwise delayed.
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 135a4a765f Adding grounding of the current lemma
In addition to adding the necessary instance of a quantified lemma,
add its grounding over the global set of skolems.
2018-06-14 16:08:47 -07:00
Arie Gurfinkel e8befc072c cleaned up lemma instantiation code 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 6917aa3eb9 debug print 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 1d478bd8d3 using sk_lt_proc order instead of ast_lt_proc when creating a lemma 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 6cf68bee80 app ordering that puts special skolem constants first 2018-06-14 16:08:47 -07:00
Arie Gurfinkel 9f0eb367b1 ground lemmas during propagation when qlemmas are disabled
When asserting quantified lemmas are disabled, ground a lemma
explicitly during propagate to make sure that it is ground using our
local set of skolem constants.
2018-06-14 16:08:47 -07:00
Arie Gurfinkel 5da0753269 (spacer) add instances even when a q-lemma already exists
It is possible that a new instance of a quantified lemma is discovered
even though a quantified lemma it already known. In this case, the
instance should be added to a corresponding context, even though the
lemma is not new.
2018-06-14 16:08:47 -07:00
Nikolaj Bjorner e94b97376c fix memory leak in relation_manager, use for loops
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 10:16:03 -07:00
Nikolaj Bjorner a9ca01d8d3 deprecating interp
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-05-24 13:12:07 -07:00
Nikolaj Bjorner 4f5775c531 remove interpolation and duality dependencies
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-05-24 08:33:48 -07:00
Nikolaj Bjorner 50c93d1ad4 merge with 4.7.1
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-05-22 17:10:36 -07:00
corrodedHash d097d90731 Fixed Segfault when failing to load datalog file 2018-05-08 19:26:14 +02:00
Nikolaj Bjorner fa93bc419d fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-05-01 10:53:36 -07:00
Nikolaj Bjorner f525f43e43 merge
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-04-30 09:30:43 -07:00
Nikolaj Bjorner b5f067bec5 fix #1592 #1587
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-04-25 11:18:24 +02:00
Nikolaj Bjorner 97cee7d0a4 fix #1576, hopefully
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-04-18 07:30:26 -07:00
Nikolaj Bjorner 098bce0f46 fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-04-14 08:44:20 -07:00
Nikolaj Bjorner d939c05e72 fix build warnings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-04-14 08:27:40 -07:00
Bruce Mitchener 2fa304d8de Remove int64, uint64 typedefs in favor of int64_t / uint64_t. 2018-03-31 14:45:04 +07:00
Nikolaj Bjorner c513f3ca09 merge with master
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-25 14:57:01 -07:00
Bruce Mitchener 878a6ca14f Fix typos. 2018-03-09 14:30:43 +07:00
Nikolaj Bjorner 246941f2d3 fix #1522
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-07 14:26:38 -08:00
Nikolaj Bjorner 718e5a9b6c add unit extraction
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-06 01:08:17 -08:00
Nikolaj Bjorner 8e09a78c26 fix #1510 by reintroducing automatic declaration of recognizers
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-02 23:02:20 +09:00
Nikolaj Bjorner 9279cbfbac don't reinit assumptions when the solver is unsat. fixes #1502
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-02-24 16:30:08 +09:00
Nikolaj Bjorner a4c58ec4c2 fix #1496
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-02-22 08:05:28 +09:00
Nikolaj Bjorner 7b6f51941c fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-02-21 22:18:47 +09:00
Nikolaj Bjorner 54b00f357b fix rule inlining, add WithParams to pass parameters directly to python API
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-02-21 21:57:54 +09:00
Bruce Mitchener 76eb7b9ede Use nullptr. 2018-02-12 14:05:55 +07:00
Bruce Mitchener 7167fda1dc Use override rather than virtual. 2018-02-10 09:56:33 +07:00
Bruce Mitchener 50f3e9c3c0 Fix typos. 2018-02-09 16:35:26 +07:00
Nikolaj Bjorner fa0c75e76e rename to core2 to avoid overloaded virtual
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-02-07 15:13:13 -08:00
Bruce Mitchener 54b3cd0071 Reserve vector space when possible.
This fixes all current instances of the
`performance-inefficient-vector-operation`
warning in clang-tidy.
2018-02-06 11:21:17 +07:00
Nikolaj Bjorner 9d37257059
Merge pull request #1465 from waywardmonkeys/fix-typos
thanks
2018-02-05 18:31:09 -08:00
Nikolaj Bjorner 3e810d6c54 remove static from format (not thread safe), remove std::move #1466
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-02-05 16:46:49 -08:00
Nikolaj Bjorner 2853558bc2
Merge pull request #1466 from waywardmonkeys/reduce-copying
Use const refs to reduce copying.
2018-02-05 16:37:44 -08:00
Bruce Mitchener ae8027e594 Fix typos. 2018-02-01 19:39:43 +07:00
Bruce Mitchener 6d6b614924 Use char version of rfind.
There is only a single character involved, so use the char version.

This was found via `clang-tidy`.
2018-01-30 21:45:12 +07:00
Bruce Mitchener 177414c0ee Use const refs to reduce copying.
These are things that have been found by `clang-tidy`.
2018-01-30 21:43:56 +07:00
Nikolaj Bjorner e4f29a7b8a debugging mc
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-01-19 21:09:52 -08:00
Nikolaj Bjorner 5159291d57 add missing interpreted tail during bottom-up simplification #1452
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-01-12 19:29:42 -08:00
Bruce Mitchener 73b3da37d8 Typo fixes. 2018-01-02 22:48:06 +07:00
Nikolaj Bjorner a74d18a695 prepare for variable scoping and autarkies
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-12-13 20:11:16 -08:00
Nikolaj Bjorner 33e8113c9e adding instrumentation to debug #1233
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-20 16:51:17 -08:00
Nikolaj Bjorner 2f218b0bdc remove also cores as arguments to tactics
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-19 12:18:50 -08:00
Nikolaj Bjorner 4bbece6616 re-organize proof and model converters to be associated with goals instead of external
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-18 16:33:54 -08:00
Nikolaj Bjorner df6b1a707e remove proof_converter from tactic application, removing nlsat_tactic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-17 23:32:29 -08:00