3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-12-03 10:39:07 +00:00
Commit graph

108 commits

Author SHA1 Message Date
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
4e9023b8fe Remove dead code 2018-06-14 16:08:49 -07:00
Arie Gurfinkel
e8cabdc620 Uninitialized variable 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
b39c532f19 Order of methods in spacer_context.cpp 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
3bc3b00fdd Post merge compile fixes 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
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
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
04a778f2fd Option to enable cube normalization in quic 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
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
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
5a37518e58 Improve statistics from spacer 2018-06-14 16:08:47 -07:00
Arie Gurfinkel
e7815c703c Fix a typo 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
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
c513f3ca09 merge with master
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-25 14:57:01 -07:00
Bruce Mitchener
76eb7b9ede Use nullptr. 2018-02-12 14:05:55 +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
2f218b0bdc remove also cores as arguments to tactics
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-19 12:18:50 -08:00