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