Nikolaj Bjorner
7c177584f3
add propagators to grobner
2022-07-14 15:45:07 -07:00
Nikolaj Bjorner
4a192850f2
add var_factors
...
Add routine to partially factor polynomials. It factors out variables.
2022-07-14 11:06:53 -07:00
Jakob Rath
c31503f67d
improve output
2022-07-14 10:47:35 +02:00
Nikolaj Bjorner
981c82c814
fix initialization order
2022-07-13 18:11:18 -07:00
Nikolaj Bjorner
894fb836e2
fix build break (debug assertion) and isolate gomory functionality
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-13 17:26:56 -07:00
Nikolaj Bjorner
b81f70f6fc
split nla_grobner to separate file
2022-07-13 13:05:57 -07:00
Nikolaj Bjorner
8900db527f
add diagnostics for grobner
2022-07-12 20:49:54 -07:00
Nikolaj Bjorner
d5779bf99c
handle trivial equalities in simplify_leaf
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-11 21:05:26 -07:00
Nikolaj Bjorner
316ed778e0
Tune Grobner equations
...
\brief convert p == 0 into a solved form v == r, such that
v has bounds [lo, oo) iff r has bounds [lo', oo)
v has bounds (oo,hi] iff r has bounds (oo,hi']
The solved form allows the Grobner solver identify more bounds conflicts.
A bad leading term can miss bounds conflicts.
For example for x + y + z == 0 where x, y : [0, oo) and z : (oo,0]
we prefer to solve z == -x - y instead of x == -z - y
because the solution -z - y has neither an upper, nor a lower bound.
The Grobner solver is augmented with a notion of a substitution that is applied before the solver is run.
2022-07-11 16:14:26 -07:00
Nikolaj Bjorner
f33c933241
Add substitution routine to pdd
...
For Grobner we want to preserve directions of intervals for finding sign conflicts. This means that it makes sense to have external control over linear solutions.
2022-07-11 12:10:28 -07:00
Nikolaj Bjorner
b68af0c1e5
working on reconciling perf for arithmetic solvers
...
this update integrates inferences to smt.arith.solver=6 related to grobner basis computation and handling of div/mod axioms to reconcile performance with smt.arith.solver=2.
The default of smt.arth.nl.grobner_subs_fixed is changed to 1 to make comparison with solver=2 more direct.
The selection of cluster equalities for solver=6 was reconciled with how it is done for solver=2.
2022-07-11 07:38:51 -07:00
Jakob Rath
003896991d
fix merge
2022-07-01 17:16:40 +02:00
Jakob Rath
e5e79c1d4b
Merge branch 'master' into polysat
2022-07-01 16:11:17 +02:00
Jakob Rath
d473c23e5b
bailout for saturation lemmas
2022-07-01 11:51:52 +02:00
Nikolaj Bjorner
ff265235c1
adjust trace output
2022-06-29 08:20:01 -07:00
Jakob Rath
c78007fd1a
Use mul_ovfl constraint directly instead of approximating it with bounds
2022-06-29 14:28:59 +02:00
Jakob Rath
69a28a7740
fix check against looping
2022-06-29 14:27:11 +02:00
Jakob Rath
0fb8c72f50
print more information
2022-06-29 14:26:25 +02:00
Nuno Lopes
73a24ca0a9
remove '#include <iostream>' from headers and from unneeded places
...
It's harmful to have iostream everywhere as it injects functions in the compiled files
2022-06-17 14:10:19 +01:00
Nikolaj Bjorner
3d00d1d56b
prepare for equality propagation from Grobner basis
...
Attempt to remedy performance regressions from the new solver core for NLA. It misses easy lemmas, presumably due to weaker bounds information.
2022-06-14 09:51:07 -07:00
Nikolaj Bjorner
35986f3979
fix #6084
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-06-07 11:29:57 -07:00
Nikolaj Bjorner
b629960afb
proof format
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-06-06 07:18:33 -07:00
Nikolaj Bjorner
da3f31697b
fix proof checking for bounds propagation
2022-05-30 10:18:16 -07:00
Nikolaj Bjorner
35db0ae58b
workaround manylinux build failure (it is advertized as a compiler bug)
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-28 14:34:58 -07:00
Jakob Rath
2345fb6428
Support watching inactive constraints
...
This allows us to handle non-redundant clauses (like we get from quot_rem)
2022-05-27 15:49:54 +02:00
Nikolaj Bjorner
186a3c58e5
merge
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-15 12:00:25 -07:00
Arie Gurfinkel
7f62fa2b66
Sparse matrix kernel ( #6035 )
...
* Subtle bug in kernel computation
Coefficient was being passed by reference and, therefore, was
being changed indirectly.
In the process, updated the code to be more generic to avoid rational
computation in the middle of matrix manipulation.
* sparse_matrix: fixed handling of 0 in add_var() and add()
particularly in add_var(), without the fix the user is responsible for checking
coefficients for 0.
2022-05-13 17:30:35 -07:00
Nikolaj Bjorner
6deb4dee37
disable normalize
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-11 13:30:50 -07:00
Nikolaj Bjorner
5aec9b32bd
check zero
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-11 10:13:07 -07:00
Nikolaj Bjorner
860d904699
check zero
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-11 10:11:17 -07:00
Nikolaj Bjorner
361155685c
ensure abs
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-11 09:09:00 -07:00
Nikolaj Bjorner
cbaa16df57
lcm normalization
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-11 09:03:57 -07:00
Nikolaj Bjorner
5ca3bc3212
kernel
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-10 15:48:06 -07:00
Nikolaj Bjorner
2928cc261c
fix
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-10 13:17:25 -07:00
Nikolaj Bjorner
805443c8ab
wip
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-10 11:17:34 -07:00
Nikolaj Bjorner
0557d72d1c
na
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-10 07:42:32 -07:00
Nikolaj Bjorner
6a8ac5f9b1
adding K
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-09 16:47:26 -07:00
Nikolaj Bjorner
ad2445e423
gauss jordan
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-09 16:33:15 -07:00
Jakob Rath
6bf897aad8
backtrack_fi
2022-04-25 17:39:07 +02:00
Jakob Rath
fc2633c964
don't saturate immediately after forbidden intervals
2022-04-25 17:39:07 +02:00
Nikolaj Bjorner
3533bf486f
merge with master
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-04-16 18:30:03 +02:00
Nikolaj Bjorner
f1b10b0ea4
Merge branch 'polysat' of https://github.com/z3prover/z3 into polysat
2022-04-13 12:22:49 +02:00
Nikolaj Bjorner
da168cad2d
track _all_ interval end-points for propagation (in fact only need end-points at unit location, not the others so this can be tuned
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-04-13 12:22:43 +02:00
Jakob Rath
88a17ef33e
print more
2022-04-13 11:42:41 +02:00
Jakob Rath
be488f75ab
Add some fi info
2022-04-13 09:34:59 +02:00
Jakob Rath
9fa5096776
conflict logging
2022-04-12 16:06:20 +02:00
Jakob Rath
00fa4b3320
Better search stack printing
2022-04-12 14:13:20 +02:00
Nikolaj Bjorner
59f2603a3a
add parameter class for polysat
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-04-12 10:36:01 +02:00
Nikolaj Bjorner
afa7162ab1
add parameter class for polysat
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-04-12 10:35:23 +02:00
Nikolaj Bjorner
f2b9c27ed6
use simpler looking for loop
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-04-12 10:13:44 +02:00