Arie Gurfinkel
bbd917a0e6
Remove dead comment
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
1902360361
debugging mbi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
49279d7047
debugging mbi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
732a8149d8
vurtego update
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
a56c9faedb
A sketch of vurtego
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
f0e105612c
adding dbg
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
9ba76a1332
fixing eufi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
b62d73f209
first round for combined mbi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -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
Arie Gurfinkel
81575fae7c
Remove unused function
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
535b8893ae
Complete euf project with eq and diseq on pure representatives
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
b246389267
Don't reset m_is_var in project
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
5e198f4119
Fix clang compilation issues
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
ec8e3f2aee
consolidate use of plugin by moving declarations up front (separate from constructor at this point)
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
0ae246ad2b
add defs to arith solver
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
5fce4a1d1a
Wire qe_solve_plugin into qe_term_graph
...
Compiles. Not tested.
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
d5081a48b0
merge while skyping
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
8da84ec69e
merge
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
5dc2b7172d
merge
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
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
Arie Gurfinkel
2288931b46
fix mk_unpure_equalities
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
0f799eb2ae
formatting. no change to code
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
6d79b19170
fix a few bugs, debugging eufi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
ba504e4243
debugging mbi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
e0aaf4452b
wip: term_graph::project and term_graph::solve
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
144d8df5d5
Rewrite term_graph::project and term_graph::solve
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
771d3b1349
wip: term_graph::project and term_graph::solve
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
7714d05c1a
fill out qe_solve_plugin functionality
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
e226b39914
Remove pragma once from cpp
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
2e616c482b
plugin work
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
5566b5689c
Silence clang warning
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
5ab6d6ca16
term_le -> term_lt
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
f963fc06f4
sketch out euf-solver based on complete projection
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
44a32bc076
updates
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
6e61a7c1b2
minor
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
73486be590
fix typo in mk_pure
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
9c7d9818d3
get_app --> get_expr + fix term_lt()
2018-06-14 16:08:52 -07:00
Arie Gurfinkel
dda65fdd2e
mk_not: fix clang compilation issue
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
0d71d85069
redo representative algorithm
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
ad153592a2
fix parent list
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
a6848c79b7
redo representative generator to respect stratification
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
c4188fc4be
initial working version
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
1f634efe04
initial working version
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
008f003aa0
initial working version
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
da18f0e0b7
prepare term-graph unit testing
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner
362d9258a4
prepare term-graph for cc
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner
d26609ebdd
prepare term-graph for cc
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner
14696f03f7
add some review comments
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -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
Nikolaj Bjorner
0784074b67
fixes
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner
688cf79619
working on mbi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner
e6468726f5
more code
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:51 -07:00
Nikolaj Bjorner
5fc0f56281
sketch mbi
...
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
fca0442487
Fix proof_checker to use is_int_expr
2018-06-14 16:08:51 -07:00
Arie Gurfinkel
8b689ae27f
Moved is_int_expr into arith_recognizers
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
Nikolaj Bjorner
fee7828b51
fix solve bug
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
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
Arie Gurfinkel
aa77a918cd
Optimizing qe_lite
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
1e54237880
mbp_array: Fix set_model_completion bug
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
bebfac047e
Dump benchmarks in pool_solver
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
b50da20531
array_mbp: turn on model completion
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
0452bc3d43
qe_lite: simplify definitions before deciding on elimination order
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
b120923dd5
qe_lite: bug fix in der::der_sort_vars()
...
The case of
VAR 1 = (+ (:var 2) 10)
VAR 2 = (+ 0 foo)
was not properly handled whenever VAR2 has only one reference.
In that case, VAR2 is not marked as done when VAR1 is processed,
causing VAR2 to be duplicated in elimination order
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
ebfb2a4a1e
Fix mbp to respect reduce_all_selects option
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
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
26339119e4
solver::check_sat_cc : check_sat assuming cube and clause
...
Extends check_sat with an ability to assume a single clause in
addition to assuming a cube of assumptions
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
4477f7d326
Fix memory leak in asserted_formulas
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
c3edf8c8fa
Restore assertion in smt_clause
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
ef58753ae7
Silence clang warning
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
Nikolaj Bjorner
005a6d93bb
cube and clause
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
ea032b56c0
Return false when clause cannot be decided
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
275b99e408
Add missing override
2018-06-14 16:08:50 -07:00
Arie Gurfinkel
4db4547359
silence clang warning
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
b73aa3642a
check with cube and clause
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
af57db0413
Anti-unification of two ground expressions
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
aa8dac2583
fix uninitialized variable
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
e6401908a5
fix crash
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
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
7e9f7d2cfe
remove removed paramter from comment
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
92bac11778
update to make variables work with other theories
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
5eacb8122d
add tuple features, remove dead code from mbp
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
560a26127e
bind nested variables
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
692a701516
updates to mbp
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
7642106e73
add way to unit test mbp from command line
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
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
80c39eb037
Fix solver_pool::updt_params
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
180d38378a
Add additional API to 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
b17be763d3
User control over more arith options
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
1c06229755
User control over qi.quick_checker smt_params option
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
d06f4bd337
Fix reset of params_ref in solver
...
params_ref is not a ref, and params_ref::reset is not ref::reset.
params_ref::reset resets the params object being pointed to by
params_ref.
A proper way to reset a params_ref as a reference is to assign an
empty params_ref object to it.
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
ec8a86b78a
Removed unused m_qi_ematching parameter from smt_params
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
df2e9d8fe2
Make smt_solver::updt_params() commulative
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
1da002d7b1
scoped params on solver
...
solver::push_params() saves current parameters
solver::pop_params() restores previously saved parameters
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
477ac4a19a
Remove dead m_propagate_booleans param
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
Arie Gurfinkel
bf4c35982f
Debug print
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
efb1f50d00
bind nested variables
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
d95e167d61
updates to mbqi
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Nikolaj Bjorner
e281f85586
add way to unit test mbp from command line
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
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
38a45f5482
Fix typo in comment
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
6514741e3f
proof-checker: replace match_negated with ast_manager::is_complement
...
is_complement matches true and false, while match_negated does not
Necessary to handle uses of true-axiom
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
9550fd1ec4
proof-checker: handle true-axiom
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
Nikolaj Bjorner
23272f0d2f
array support for mbp
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
8ffbd5d1e5
model_evaluator: respect array_as_stores option
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
988466705c
port array projection to qe_arrays
...
ensure it works with multi-dimensional arrays
commit on behalf of Nikolaj
2018-06-14 16:08:49 -07:00
Arie Gurfinkel
7281616084
model_evaluator: optionally expand arrays as sequence of stores
...
commit on behalf of Nikolaj
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
Nikolaj Bjorner
ecf15ab07d
add model_evaluator_util features to model_evalautor
...
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
ebf6b18821
maxsat standalone mode
2018-06-14 16:08:48 -07:00
Arie Gurfinkel
49821e7c91
Revised solver_pool
2018-06-14 16:08:48 -07:00
Arie Gurfinkel
c893740e13
Fix compilation
2018-06-14 16:08:48 -07:00
Nikolaj Bjorner
b649cd93cb
change pool solver to enable external control of pool allocation
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
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
Arie Gurfinkel
10106e8e12
Minor fixes to ast_pp_dot
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