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
6818eb3340
Improve factor 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