Nikolaj Bjorner
ce1f3987d9
fix unsoundness in quantifier propagation #6116 and add initial lemma logging
2022-08-23 19:10:01 -07:00
Nikolaj Bjorner
912b284602
disable validate_hint too permissive
2022-08-23 19:07:55 -07:00
Nikolaj Bjorner
2f8b13368d
add redirect for warnings
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-23 15:55:55 -07:00
Nuno Lopes
916d1dbb13
fix default parameter regression
...
bug introduced in commit 63f48f8fd4
2022-08-23 15:26:29 +01:00
Nuno Lopes
7ab904bfc6
remove spurious file
2022-08-23 14:39:44 +01:00
Nikolaj Bjorner
0eea021dc3
include global parameters and fixup for HTML meta-characters
2022-08-22 14:25:18 -07:00
Nikolaj Bjorner
f6e4a45f4b
Merge branch 'master' of https://github.com/z3prover/z3
2022-08-21 18:28:19 -07:00
Nikolaj Bjorner
64e0e785e7
#5953
2022-08-21 18:28:07 -07:00
Nikolaj Bjorner
09ab575d29
parens
2022-08-21 18:27:14 -07:00
Nikolaj Bjorner
daa24ef4ce
add missing error check
2022-08-21 18:26:53 -07:00
Nikolaj Bjorner
9eb4237dfe
fix #6292
...
this patches a case where macro-finder is used with arrays. It doesn't work so macro quantifiers have to be re-instated to ensure correctness
2022-08-21 16:32:01 -07:00
Nikolaj Bjorner
a38308792e
#6288
...
floating points may also track bit-literals.
Since the legacy solver doesn't handle dual tracking of literals we just let the floating point solver track.
2022-08-21 15:47:19 -07:00
Nikolaj Bjorner
4092302590
use interface for creating unary equalities
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-21 15:37:43 -07:00
Nikolaj Bjorner
17fc438476
don't have bv-ackerman influence simplification
...
previous scheme has Ackmerman module instrument main solver to backjump and simplify when reaching a threshold.
This destroys overall performance: simplification does many more things than invoking Ackerman axioms.
Having a dependency between simplification (in-processing) and depleting a priority queue of auxiliary axioms therefore hurts overall performance. It has to be decoupled. The current approach is now to empty the axiom queue on occasion.
It is still not ideal - it should be coupled with the search level - axioms don't survive higher levels where redundant clauses get garbage collected as they don't have a chance of being used.
2022-08-21 15:25:18 -07:00
Nikolaj Bjorner
be0cd74c71
#6289
2022-08-21 15:25:17 -07:00
Nikolaj Bjorner
2181a0ff74
#6289
2022-08-21 15:25:17 -07:00
Clemens Eisenhofer
56fb161532
ADT-constructor generation crashed in .NET/Java when no (= default) fields are given ( #6287 )
2022-08-21 12:40:38 -07:00
Bruce Mitchener
6ba9ada1e2
Fix typos. ( #6291 )
2022-08-21 12:40:07 -07:00
Bruce Mitchener
706f7fbdc7
Fix some warnings about unused stuff. ( #6290 )
2022-08-21 12:39:30 -07:00
Nuno Lopes
d5d77dfe64
minor code simplifications
2022-08-20 12:56:45 +01:00
Nikolaj Bjorner
08bf7a6293
fix name
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-19 18:22:42 -07:00
Nikolaj Bjorner
665ef2c6ba
add missing new
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-19 18:21:03 -07:00
Nikolaj Bjorner
bb5d81195c
use equalities
2022-08-19 18:17:16 -07:00
Nikolaj Bjorner
b26420ed99
#6285
2022-08-19 18:17:16 -07:00
Nikolaj Bjorner
e83a70f9ad
add newlines for description
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-19 06:57:39 -07:00
Nikolaj Bjorner
540e36e6cb
roll version number
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-18 15:47:08 -07:00
Nikolaj Bjorner
19da3c7086
fix closing parnetheses
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-18 13:26:29 -07:00
Nikolaj Bjorner
d094f6a856
fixing interface and test'
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-18 13:00:46 -07:00
Nikolaj Bjorner
c7eda4e687
fixing interface and test'
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-18 12:59:00 -07:00
Nikolaj Bjorner
c3d635cf77
handle build warning
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-18 12:50:30 -07:00
Nikolaj Bjorner
6fb7a049ea
test fromString
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-18 12:41:02 -07:00
Nikolaj Bjorner
53e168879a
add fromString method
2022-08-18 12:33:10 -07:00
Nikolaj Bjorner
4be26eb543
#6116
...
handle also nan/oo/0+ as numerals
2022-08-18 04:26:14 -07:00
Nikolaj Bjorner
8e167aa213
#6116
...
fix unsoundness issue due to book-keeping changes for whether the solver uses assumptions.
2022-08-18 03:58:06 -07:00
Nikolaj Bjorner
1a5503c87b
enable new code path for mod handling
2022-08-17 07:31:26 -07:00
Nikolaj Bjorner
cb272bd7a8
fix missing removal of x in solve_mod
2022-08-17 07:31:26 -07:00
Nikolaj Bjorner
48b13291d1
add bv-size reduce #6137
...
- add option smt.bv.reduce_size.
- it allows to apply incremental pre-processing of bit-vectors by identifying ranges that are known to be constant.
This rewrite is beneficial, for instance, when bit-vectors are constrained to have many high-level bits set to 0.
2022-08-16 16:35:14 -07:00
Nikolaj Bjorner
9d6de2f873
parameters neatified
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-16 09:14:34 -07:00
Nikolaj Bjorner
b169292743
add parameter descriptions
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-16 08:26:53 -07:00
Nikolaj Bjorner
583dae2e27
enable nested division
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-15 16:11:00 -07:00
Nikolaj Bjorner
e0aa32e6c5
fix #6270
...
MBQI asserts auxiliary function definitions to handle models of arrays. This is unsound if the definition contains a model value.
2022-08-15 00:13:32 -07:00
Nikolaj Bjorner
a0d4a8c21c
update diagnostics
2022-08-15 00:12:44 -07:00
Nikolaj Bjorner
138f0d269c
fix regression found by fuzzers fix #6271
2022-08-14 12:26:33 -07:00
Nikolaj Bjorner
1d87592b13
fixes to mod/div elimination
...
elimination of mod/div should be applied to all occurrences of x under mod/div at the same time. It affects performance and termination to perform elimination on each occurrence since substituting in two new variables for eliminated x doubles the number of variables under other occurrences.
Also generalize inequality resolution to use div.
The new features are still disabled.
2022-08-14 11:34:03 -07:00
Nikolaj Bjorner
f014e30d46
disable case1
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-13 08:53:19 -07:00
Nikolaj Bjorner
d80e2fb61d
fix build
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-13 08:49:07 -07:00
Nikolaj Bjorner
16a948683f
Merge branch 'master' of https://github.com/z3prover/z3
2022-08-13 07:07:34 -07:00
Nikolaj Bjorner
fa91a644d3
make extensionality commutative
2022-08-13 07:07:14 -07:00
Nikolaj Bjorner
5669cf65bc
bug fixes to mod/div quantifier elimination features
2022-08-13 06:18:13 -07:00
Nikolaj Bjorner
88b6c4a30d
pdate decl collection to include functions under arrays
...
Signedoff-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-12 13:45:16 -07:00
Bruce Mitchener
72f4ee9230
api: Correctly map OP_BSREM0 to Z3_BSREM0.
2022-08-12 14:40:16 -04:00
Nikolaj Bjorner
550d6914b1
updates to div/mod handling in quantifier projection
...
note: the new code remains disabled at this point.
2022-08-12 14:39:33 -04:00
Nikolaj Bjorner
d272becade
fixes for division
2022-08-12 11:54:26 -04:00
Nikolaj Bjorner
f989521a8c
add initial skeleton for xor-solver
2022-08-12 11:54:10 -04:00
Nikolaj Bjorner
b6d71fccd8
fix #6265
2022-08-12 10:22:22 -04:00
Nikolaj Bjorner
03385bf78d
improve quantifier elimination for arithmetic
...
This update changes the handling of mod and adds support for nested div terms.
Simple use cases that are handled using small results are given below.
```
(declare-const x Int)
(declare-const y Int)
(declare-const z Int)
(assert (exists ((x Int)) (and (<= y (* 10 x)) (<= (* 10 x) z))))
(apply qe2)
(reset)
(declare-const y Int)
(assert (exists ((x Int)) (and (> x 0) (= (div x 41) y))))
(apply qe2)
(reset)
(declare-const y Int)
(assert (exists ((x Int)) (= (mod x 41) y)))
(apply qe2)
(reset)
```
The main idea is to introduce definition rows for mod/div terms.
Elimination of variables under mod/div is defined by rewriting the variable to multiples of the mod/divisior and remainder.
The functionality is disabled in this push.
2022-08-12 10:20:43 -04:00
Nikolaj Bjorner
786280c646
print skolem declarations only for lemma tracing
2022-08-11 11:34:54 +03:00
Nikolaj Bjorner
b55ad5f20e
fix #6267
2022-08-11 09:31:54 +03:00
Nikolaj Bjorner
49064252ac
fix issues for user-propagator from new core
2022-08-09 14:56:27 +03:00
Nikolaj Bjorner
f27485dae7
avoid push/pop if diseq/eq are not defined
2022-08-09 11:33:29 +03:00
Nikolaj Bjorner
78eaefe5a8
move solver-params to params
2022-08-08 11:34:41 +03:00
Nikolaj Bjorner
77a313ff76
redo #6242
...
revert to byte based high watermark
add mb based high watermark
2022-08-08 11:26:18 +03:00
Nikolaj Bjorner
63f48f8fd4
add options for logging learned lemmas and theory axioms
...
- add solver.axioms2files
- prints negated theory axioms to files. Each file should be unsat
- add solver.lemmas2console
- prints lemmas to the console.
- remove option smt.arith.dump_lemmas. It is replaced by solver.axioms2files
2022-08-08 11:18:56 +03:00
Nikolaj Bjorner
410eed9bd5
#6116
2022-08-07 11:09:43 +03:00
Nikolaj Bjorner
8e077d8ef9
#6116
2022-08-07 10:25:04 +03:00
Nikolaj Bjorner
539d44464f
#6196
...
map can be simplified
2022-08-07 10:17:24 +03:00
Nikolaj Bjorner
f34317d604
#6196
2022-08-07 09:44:10 +03:00
Nikolaj Bjorner
a4ea281602
fix #6260
2022-08-06 08:21:52 +03:00
Bruce Mitchener
5014b1a34d
Use = default
for virtual constructors.
2022-08-05 18:11:46 +03:00
Arie Gurfinkel
aa0719abae
model_based_opt: fix enabling complete resolution
...
a bug prevented an optimization to be enabled
2022-08-05 18:11:23 +03:00
Nikolaj Bjorner
80c516bb50
squash stores
2022-08-05 13:57:35 +03:00
Bruce Mitchener
6835522a7f
z3++.h: No longer include unused sstream.
...
This makes some code using the C++ API have to include `<sstream>`
if they used the functionality but didn't include it themselves.
2022-08-05 09:41:49 +03:00
Nikolaj Bjorner
e48474ec0e
Merge branch 'master' of https://github.com/z3prover/z3
2022-08-05 09:20:00 +03:00
Nikolaj Bjorner
c51af91256
#6257
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-05 09:19:49 +03:00
Arie Gurfinkel
a9b7348b4b
(cmake): fix visibility on shell z3 binary
...
Commit #b361226 changed symbol visibility from a global to a local option.
This creates inconsistency for shell that is compiled as an executable rather
than as z3 component.
This commit adds same local options to shell target in cmake.
Prior to the fix, clang on OSX complains with lots of warnings about symbol visibility
being different in different translation units that are linked together
2022-08-05 09:00:40 +03:00
Nikolaj Bjorner
78a0f57398
for #6257
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-05 08:09:39 +03:00
Bruce Mitchener
1d9345c3de
Fix typos.
2022-08-05 07:40:50 +03:00
Bruce Mitchener
08165f5367
No need to return a const bool.
2022-08-05 07:40:19 +03:00
Nikolaj Bjorner
9da6895276
add option to select with folding
2022-08-04 16:59:26 +03:00
Nikolaj Bjorner
a8ff976bcc
max maximal unfolding configurable
2022-08-04 16:59:26 +03:00
Bruce Mitchener
8a3556e5ba
cmake: Remove dep on mk_util.py for update_api.py calls.
...
update_api.py doesn't depend on mk_util.py any longer, so these
dependencies can go away.
2022-08-04 07:54:26 +03:00
Saloed
d908ebec4c
fix memory_high_watermark parameter according to documentation
2022-08-03 18:50:54 +03:00
Bruce Mitchener
d8c99480c6
test/lp: Replace if linux with if not windows.
...
This is stuff that works on posix, so we can flip the check.
2022-08-03 08:22:54 +03:00
Bruce Mitchener
112dba559f
Remove unused private member from smaller_pattern.
2022-08-03 08:21:32 +03:00
Nikolaj Bjorner
774ce3d7ab
create special case for osx arm
...
shortcut when store/select are distinct
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-08-03 07:56:02 +03:00
Bruce Mitchener
42f5047463
cmake: Cleanup remnants of workaround for USES_TERMINAL.
...
In older versions, this was dependent upon the version of cmake,
but when it was updated for newer cmake, these remnants were
left.
2022-08-02 17:39:10 +03:00
Bruce Mitchener
8313282cda
Use char version of find_last_of when possible.
2022-08-02 17:38:11 +03:00
Bruce Mitchener
886c3abec1
Remove remnants of _MP_MSBIGNUM checks.
2022-08-02 09:28:57 +03:00
Bruce Mitchener
9a99c78ffb
Enable thread_local code more broadly.
...
This was only being enabled on Windows, Linux, and FreeBSD. (FreeBSD
only had it enabled in the legacy build system, not in cmake.)
`thread_local` is part of C++11, so now that we require C++17
or later and more recent compilers, this should work everywhere
that threading does, so only disable it within a `SINGLE_THREAD`
build.
2022-08-02 09:24:51 +03:00
Bruce Mitchener
82d853e5f8
Use = delete
to delete special methods.
...
This provides a better experience than just marking them as
private and leaving them as undefined symbols.
2022-08-02 09:23:14 +03:00
Jakob Rath
2c2ab0d57a
Additional BV matchers
2022-08-01 18:37:11 +03:00
Jakob Rath
5d858da58a
union_find::reserve
2022-08-01 18:37:11 +03:00
Jakob Rath
e8e64d3098
dlist::insert_before/after
2022-08-01 18:37:11 +03:00
Jakob Rath
de6a0ab1a7
PDD operations
2022-08-01 18:37:11 +03:00
Jakob Rath
42233ab5c8
Additional BDD operations; BDD vectors and finite domain abstraction
2022-08-01 18:37:11 +03:00
Jakob Rath
9275d1e57a
sparse_matrix iterators
2022-08-01 18:37:11 +03:00
Jakob Rath
6eae27ffad
numeral helper functions
2022-08-01 18:37:11 +03:00
Jakob Rath
e31926d132
var_queue display
2022-08-01 18:37:11 +03:00
Jakob Rath
6a929f91c8
scoped_ptr_vector usability
2022-08-01 18:37:11 +03:00
Jakob Rath
d2fe174320
Add SASSERT_EQ and VERIFY_EQ
2022-08-01 18:37:11 +03:00
Jakob Rath
79ee543d25
Move tbv to util
2022-08-01 18:37:11 +03:00
Bruce Mitchener
a89be68050
Use false
instead of 0
.
2022-08-01 18:28:07 +03:00
Bruce Mitchener
fe1e301735
Remove Z3_bool, Z3_TRUE, Z3_FALSE from the API.
...
These have just been aliases for the standard type `bool` and
values `true` and `false` for a long time now.
2022-08-01 14:25:00 +03:00
Bruce Mitchener
77e5d6ab19
Use nullptr consistently instead of 0
or NULL
.
2022-08-01 14:24:32 +03:00
Nikolaj Bjorner
bf282b05c8
fix #6213
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-31 18:40:59 +03:00
Nikolaj Bjorner
4a1baa7d2d
fix #6165
2022-07-30 17:10:01 +02:00
Bruce Mitchener
5d0dea05aa
Remove empty leaf destructors. ( #6211 )
2022-07-30 10:07:03 +01:00
Bruce Mitchener
fc40e3c510
Remove usages of Z3_bool, just use bool.
2022-07-30 05:49:05 +02:00
Nikolaj Bjorner
2a8e73f34f
Merge branch 'master' of https://github.com/z3prover/z3
2022-07-29 23:30:37 +02:00
Nikolaj Bjorner
6d71d9e816
update coding style to C++11
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-29 23:30:33 +02:00
Bruce Mitchener
1eb84fe4b9
Mark override methods appropriately. ( #6207 )
2022-07-29 23:29:15 +02:00
Bruce Mitchener
8e0d9bf42d
Remove remainder workaround for pre-MSVC2013. ( #6204 )
...
This workaround was built for _MSC_VER <= 1700. 1700 was
Visual Studio 2012, which is no longer supported for
building Z3.
2022-07-29 11:50:31 +02:00
Bruce Mitchener
eba29a280d
Use std::hexfloat more. ( #6203 )
...
Previously, we were only using std::hexfloat on Windows on VS2013
and later.
Since std::hexfloat is part of C++11 and we require C++11 to build
the Z3 library, this should be supported everywhere.
2022-07-29 11:49:56 +02:00
Bruce Mitchener
75339c6db7
Fix doxygen warnings in C API docs. ( #6202 )
2022-07-29 11:49:24 +02:00
Bruce Mitchener
78237578f3
Enable more tests on non-Windows. ( #6199 )
...
Some tests were `#ifdef _WINDOWS` even though they compiled
and ran on other platforms. Remove the #ifdef protections
in these cases.
2022-07-29 11:48:27 +02:00
Nikolaj Bjorner
ee80414e55
sketch initial for mpz/mpq numeral creation
2022-07-27 10:46:03 +02:00
Nikolaj Bjorner
8551b217ce
fix #6194
2022-07-27 08:03:57 +02:00
Nikolaj Bjorner
b6c80e8b00
fix #6193
2022-07-27 04:28:41 +02:00
Nikolaj Bjorner
cd7ef11593
add decide callbacks to propagator API
...
this is an intermediary state. The decide_eh is only partially implemented.
2022-07-27 04:28:41 +02:00
JohnLyu2
3e8daa5965
fix re.range symbolic argument bug in z3str3 ( #6189 )
2022-07-27 04:24:20 +02:00
Bruce Mitchener
70895b2375
Improve intra-doc linking. ( #6191 )
2022-07-25 23:14:10 +02:00
Nikolaj Bjorner
43f2b848d4
fix typo
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-25 03:44:12 +02:00
Nikolaj Bjorner
5c2c0ae900
force-push on new_eq, new_diseq in user propagator, other fixes to Python bindings for user propagator
...
This update allows the python bindings for user-propagator to handle functions that are declared to be registered with the user propagator plugin. It fixes a bug in UserPropagateBase.add to allow registering terms dynamically during search.
It also fixes a bug in theory_user_propagate as scopes were not fully pushed when the solver gets the callbacks for new equalities and new disequalities.
It also adds equality and disequality interfaces to the sat/smt solver version (which isn't being exercised in earnest yet)
2022-07-25 03:42:29 +02:00
Bruce Mitchener
3e38bbb009
Make sure all headers do #pragma once
. ( #6188 )
2022-07-23 10:41:14 -07:00
Nikolaj Bjorner
1155ea69a1
add await
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-22 12:42:19 -07:00
Nikolaj Bjorner
212a0657a2
try .ast
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-22 12:34:07 -07:00
Nikolaj Bjorner
7c0ec21af8
try to add basic expression simplification
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-22 12:21:25 -07:00
Nikolaj Bjorner
4368ec9953
startswith
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-22 11:53:07 -07:00
Nikolaj Bjorner
1e0f71c971
add way to access range bounds directly #6186
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-22 09:35:37 -07:00
Nikolaj Bjorner
87dd837b55
Merge branch 'master' of https://github.com/Z3Prover/z3
2022-07-21 23:22:37 -07:00
Nikolaj Bjorner
89af9df02d
add IEnumerable for distinct
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-21 23:22:24 -07:00
Nikolaj Bjorner
0f9684e1f8
make fresh_eh() work for Python bindings of user-propagator
2022-07-21 21:44:02 -07:00
Nikolaj Bjorner
907dc2c2d2
adding toString() to model object
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-21 20:45:45 -07:00
Nikolaj Bjorner
efa74fe6c6
fix #6180
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-21 12:20:36 -07:00
Nikolaj Bjorner
cf5a8fd248
fix validation code for pb
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-21 08:58:32 -07:00
Nikolaj Bjorner
a66095bb08
fix the path to ../build/z3-built
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-20 22:36:34 -07:00
Nikolaj Bjorner
dc9565990c
did I mess up wasm paths in jest - or not?
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-20 22:15:22 -07:00
Nikolaj Bjorner
37008226c3
did I mess up wasm paths in jest?
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-20 22:14:21 -07:00
Nikolaj Bjorner
32c0d1f636
fix #6168
2022-07-20 21:48:47 -07:00
Nikolaj Bjorner
7f983e7d9e
fix #6174
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-20 21:22:41 -07:00
Nikolaj Bjorner
32614722ef
fix #6176
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-20 21:19:20 -07:00
Nikolaj Bjorner
1b83a4556b
fix #6178
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-20 20:48:23 -07:00
Nikolaj Bjorner
5b219aab76
add mutual recursive datatypes to c++ API #6179
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-20 20:32:00 -07:00
Nikolaj Bjorner
2e13c0bf41
add API and example for one dimensional algebraic datatype #6179
2022-07-20 19:43:18 -07:00
Nikolaj Bjorner
81cb575c22
simplify
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-19 22:58:12 -07:00
Nikolaj Bjorner
2e52029114
add command-line overwrite capability to setup.py
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-19 22:53:25 -07:00
Nikolaj Bjorner
2c8df54b70
enable fresh for python wrapper for user-propagator
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-19 13:48:44 -07:00
Nikolaj Bjorner
111d27cbee
remove dependency on pragma
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-19 09:36:22 -07:00
Nikolaj Bjorner
dead0c9de2
reverting relative path
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-18 11:47:57 -07:00
Nikolaj Bjorner
afcfc80c42
the relative path seems out of sync with how it is set up in node.ts
2022-07-18 11:21:16 -07:00
Nikolaj Bjorner
7f1893d781
add missing MkSub to NativeContext
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-18 10:21:27 -07:00
Nikolaj Bjorner
393c63fe0c
fix #6114
2022-07-18 09:33:39 -07:00
Nikolaj Bjorner
527914db05
update documentation to use latest conventions
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-17 11:49:28 -07:00
Nikolaj Bjorner
b5a89eb4ab
add missing generation of z3.z3 for pydoc and add some explanations to logging function declaration
2022-07-17 11:03:55 -07:00
Clemens Eisenhofer
95c3dd9224
Added missing decide-callback for tactics ( #6166 )
...
* Added function to select the next variable to split on
* Fixed typo
* Small fixes
* uint -> int
* Fixed missing assignment for binary clauses
* Added missing decide-callback for tactics
2022-07-17 10:07:52 -07:00
Nuno Lopes
6e5ced0080
optimizations to api ctx ref counting
2022-07-17 11:44:35 +01:00
Nikolaj Bjorner
eb2ee34dfe
fix typo
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-16 16:58:57 -07:00
Nikolaj Bjorner
aefd336c18
set OCaml default behaivor to enable concurrent dec ref #6160
...
Add Z3_enable_concurrent_dec_ref to the API.
It is enables behavior of dec_ref functions that are exposed over the API to work with concurrent GC. The API calls to dec_ref are queued and processed in the main thread where context operations take place (in a way that is assumed thread safe as context operations are only allowed to be serialized on one thread at a time).
2022-07-16 16:49:39 -07:00
Nikolaj Bjorner
6c5747a80e
guard against lemmas that are already true
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-15 10:03:31 -07:00
Nikolaj Bjorner
4ecb61aeaa
neatify
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-15 09:53:56 -07:00
Nikolaj Bjorner
2696775088
remove stale assertion
...
with support for substitutions we allow the simplifier to change the state of equations.
2022-07-15 04:03:25 -07:00
Nikolaj Bjorner
6688c1d62a
prepare for #6160
...
The idea is to set _concurrent_dec_ref from the API
(function not yet provided externally, but you can experiment with it by setting the default of m_concurrent_dec_ref to true).
It then provides concurrency support for dec_ref operations.
2022-07-15 03:53:15 -07:00
Nikolaj Bjorner
b29cdca936
integrate factorization to Grobner
2022-07-14 21:24:27 -07:00
Nikolaj Bjorner
7c177584f3
add propagators to grobner
2022-07-14 15:45:07 -07:00
Andrea Lattuada
af80bd18ce
Flush the trace stream before displaying sat results ( #6162 )
2022-07-14 13:43:57 -07:00
Stefan Muenzel
2f5fef92b7
Cache param descrs when modifying solver params ( #6156 )
2022-07-14 11:11:56 -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
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
b253db2c0a
redundant parenthesis
2022-07-13 16:20:03 -07:00
Nikolaj Bjorner
dec87fe4d9
fix issue with set-logic for eval_smtlib2_string
2022-07-13 16:19:12 -07:00
Nikolaj Bjorner
1378e713ba
fix #6157
2022-07-13 14:37:04 -07:00
Nikolaj Bjorner
a3eb9da191
fix #6158
2022-07-13 14:33:42 -07:00
Nikolaj Bjorner
8e23af33d7
fix build
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-13 14:20:21 -07:00
Nikolaj Bjorner
b81f70f6fc
split nla_grobner to separate file
2022-07-13 13:05:57 -07:00
Nikolaj Bjorner
7d0c789af0
propagate has-length over map/mapi
2022-07-12 20:50:28 -07:00
Nikolaj Bjorner
8900db527f
add diagnostics for grobner
2022-07-12 20:49:54 -07:00
Nikolaj Bjorner
ca80d99617
fix #6153
2022-07-12 15:49:57 -07:00
Nikolaj Bjorner
43cf053066
fix #6128
2022-07-12 15:43:12 -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
5c54d6564b
fix #6143
2022-07-11 12:09:15 -07:00
Victor Paléologue
8b29f40152
Fix build on Mac ( #6146 )
...
* Fix finding Python on Mac
On Mac you have to specify the version.
It also works well on other platforms this way.
* Ignore CMake build directories from index
* Fix warning about unused variable in release
The variable is used in debug only,
but it's legit that the compiler does not warn us for that in release.
2022-07-11 09:46:23 -07:00
Nikolaj Bjorner
49b7e9084f
Merge branch 'master' of https://github.com/z3prover/z3
2022-07-11 09:26:34 -07:00
Anthony Romano
7ae1a338a7
parallel-tactic: fix deadlocking race between shutdown and get_task ( #6152 )
...
Deadlock/Race is as follows:
1. get_task() reads m_shutdown == false and enters loop body
2. shutdown() is called; sets m_shutdown = true
3. shutdown() calls m_cond.notify_all()
4. get_task() finds no task in try_get_task()
5. get_task() calls m_cond.wait(), missing the notification
6. solve() waits forever on join()
Provided patch wraps (2) and (3) with the condition variable lock so that
step (5) cannot miss the notification.
Co-authored-by: Anthony Romano <anthony@forallsecure.com>
2022-07-11 09:26:11 -07:00
Stefan Muenzel
99212a2726
Use int64 for ocaml api functions that require it ( #6150 )
...
* Use int64 for ocaml api functions that require it
Signed-off-by: Stefan Muenzel <source@s.muenzel.net>
* Use elif
Signed-off-by: Stefan Muenzel <source@s.muenzel.net>
2022-07-11 09:25:05 -07:00
Clemens Eisenhofer
1f2346073a
Fixed missing assignment for binary clauses ( #6148 )
...
* Added function to select the next variable to split on
* Fixed typo
* Small fixes
* uint -> int
* Fixed missing assignment for binary clauses
2022-07-11 09:24:03 -07:00
Nikolaj Bjorner
9dd529bb12
missing initialization of List for cmd interpreter
2022-07-11 08:17:38 -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
Nikolaj Bjorner
0c42d3b079
small format update
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-06 11:41:48 -07:00
Kevin Gibbons
0d4169533a
fix js distributable ( #6139 )
2022-07-06 10:59:01 -07:00
Nikolaj Bjorner
580ed31afd
fix types and incompleteness for feature #6104
2022-07-06 01:08:54 -07:00
Nikolaj Bjorner
85c3d874dc
neatify
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-05 16:57:41 -07:00
Nikolaj Bjorner
f23dc894b4
add disabled pass to detect upper bound range constraints
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-05 16:51:05 -07:00
Nikolaj Bjorner
a374e2c575
ignore qid if they are both numerical - come from the parser
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-05 15:47:48 -07:00
Nikolaj Bjorner
6e53621146
#6112
...
add q->get_qid() to comparison of quantifiers
2022-07-05 13:17:04 -07:00
Nikolaj Bjorner
d7472f0726
fix #6124
...
expression pointers were changed within a function, but not pinned. So the pointers got stale. To enforce their life-time within the function body (for use in logging) pin the expressions.
2022-07-05 12:48:21 -07:00
Nikolaj Bjorner
f82ca197d2
#6104 also in the new core
2022-07-05 12:38:07 -07:00
Nikolaj Bjorner
de41cfd277
fix #6104
...
add equality reasoning to bit-vector solver to instantiate int2bv(bv2int(x)) = x identity on demand.
2022-07-05 12:23:24 -07:00
Nikolaj Bjorner
ac822acb0f
add parameter incremental to ensure preprocessing does not interefere with adding constraints during search
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-05 08:10:20 -07:00
Nikolaj Bjorner
71fc83c051
Move out equality use out of the loop
2022-07-04 12:42:39 -07:00
Nikolaj Bjorner
0353fc38ff
fix #6127 again
...
this time adding inheritance to the recfun plugin so it properly contains the recursive definitions from the source.
2022-07-04 12:42:11 -07:00
Nikolaj Bjorner
6ed2b444b5
probably won't fix #6127
...
recfun decl plugin does not get copied so recursive functions are lost when cloning.
Fix is risky and use case is limited to threads + recursive definitions
2022-07-03 18:10:52 -07:00
Nikolaj Bjorner
ac8aaed1d4
fix #6126
2022-07-03 17:47:05 -07:00
Nikolaj Bjorner
02a92fb9e9
revert to use GCHandle for UserPropagator
...
avoids using a global static array
2022-07-03 17:00:40 -07:00
Nikolaj Bjorner
1e8f9078e3
fix unsoundness in explanation handling for nested datatypes and sequences
2022-07-03 17:00:39 -07:00
Nikolaj Bjorner
bb966776b8
Update UserPropagator.cs
2022-07-02 13:15:05 -07:00
Nikolaj Bjorner
d37ed4171d
Update Expr.cs
...
Add a Dup functionality that allows extending the life-time of expressions that are passed by the UserPropagator callbacks (or other code).
2022-07-02 13:12:54 -07:00
Nikolaj Bjorner
54b16f0496
Update NativeStatic.txt
...
not so automatically generated
2022-07-02 13:04:09 -07:00
Nikolaj Bjorner
004139b320
rewrites for characters
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-02 11:37:21 -07:00
Nikolaj Bjorner
f20db3e644
allow for toggling proof and core mode until the first assertion.
2022-07-02 09:31:36 -07:00
Nikolaj Bjorner
4d23f2801c
ml pre
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-01 20:35:47 -07:00
Nikolaj Bjorner
815518dc02
add facility for incremental parsing #6123
...
Adding new API object to maintain state between calls to parser.
The state is incremental: all declarations of sorts and functions are valid in the next parse. The parser produces an ast-vector of assertions that are parsed in the current calls.
The following is a unit test:
```
from z3 import *
pc = ParserContext()
A = DeclareSort('A')
pc.add_sort(A)
print(pc.from_string("(declare-const x A) (declare-const y A) (assert (= x y))"))
print(pc.from_string("(declare-const z A) (assert (= x z))"))
print(parse_smt2_string("(declare-const x Int) (declare-const y Int) (assert (= x y))"))
s = Solver()
s.from_string("(declare-sort A)")
s.from_string("(declare-const x A)")
s.from_string("(declare-const y A)")
s.from_string("(assert (= x y))")
print(s.assertions())
s.from_string("(declare-const z A)")
print(s.assertions())
s.from_string("(assert (= x z))")
print(s.assertions())
```
It produces results of the form
```
[x == y]
[x == z]
[x == y]
[x == y]
[x == y]
[x == y, x == z]
```
Thus, the set of assertions returned by a parse call is just the set of assertions added.
The solver maintains state between parser calls so that declarations made in a previous call are still available when declaring the constant 'z'.
The same holds for the parser_context_from_string function: function and sort declarations either added externally or declared using SMTLIB2 command line format as strings are valid for later calls.
2022-07-01 20:27:18 -07:00
Nikolaj Bjorner
8c2ba3d47e
missing virtual functions
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-01 19:18:09 -07:00
Nikolaj Bjorner
06771d1ac5
missing virtual functions
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-01 18:31:08 -07:00
Nikolaj Bjorner
4f9ef12f34
create dummy tactics for single threaded mode
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-01 18:13:36 -07:00
Nikolaj Bjorner
3c94083a23
fix doc errors
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-01 15:29:44 -07:00
Nikolaj Bjorner
ea2a843325
flat only
...
remove option for uzers (users who are in reality fuzzers) to toggle flat option. The legacy arithmetic solver bakes in assumptions about flat format so it isn't helpful to expose this to fuzzers, I mean uzers.
2022-06-30 19:59:46 -07:00
Nikolaj Bjorner
b618537322
Merge branch 'master' of https://github.com/z3prover/z3
2022-06-30 19:49:28 -07:00
Nikolaj Bjorner
94a2477fa0
totalizer
2022-06-30 19:49:19 -07:00
Nikolaj Bjorner
959a0ba370
fix #6121
2022-06-30 19:47:26 -07:00
Mark Marron
e054f1683c
fixing compiler warn (missing override) ( #6125 )
2022-06-30 15:39:28 -07:00
Nikolaj Bjorner
c3d2120bdd
add totalizer version of rc2
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-06-29 23:10:42 -07:00
Nikolaj Bjorner
8ab8b63a4c
fix incorrect mod axiomatization #6116
2022-06-29 12:32:04 -07:00
Nikolaj Bjorner
f6932f9a75
Merge branch 'master' of https://github.com/z3prover/z3
2022-06-29 11:16:34 -07:00
Nikolaj Bjorner
1a9122663c
remove unsound axioms, fix #6115
2022-06-29 11:16:10 -07:00
Joe Hauns
03287d65a4
fixes issue #6119 ( #6120 )
...
Co-authored-by: Johannes Schoisswohl <johannes.schoisswohl@myotis.at>
2022-06-29 11:10:33 -07:00
Nikolaj Bjorner
ff265235c1
adjust trace output
2022-06-29 08:20:01 -07:00
Nikolaj Bjorner
5afcb489e0
adding totalizer
2022-06-29 08:20:01 -07:00
Nikolaj Bjorner
fd8ee34564
add logging
2022-06-29 08:20:01 -07:00
Max Levatich
12e7b4c3d6
fix gc'ed callbacks in .NET propagator api ( #6118 )
...
Co-authored-by: Maxwell Levatich <t-mlevatich@microsoft.com>
2022-06-28 19:22:41 -07:00
Nikolaj Bjorner
79778767b0
add doc string
2022-06-28 14:25:43 -07:00
Nikolaj Bjorner
798a4ee86e
use IEnumerator and format
2022-06-28 14:24:05 -07:00
Nikolaj Bjorner
556f0d7b5f
use static list to connect managed and unmanaged objects
2022-06-28 14:09:22 -07:00
Nikolaj Bjorner
820c782b5e
pinned semantics
2022-06-28 13:03:52 -07:00
Nikolaj Bjorner
9836d5e6fc
missing public
2022-06-28 12:46:29 -07:00
Nikolaj Bjorner
b43965bf05
make user propagator work with combined solver
...
Then users don't have to specify SImpleSolver, but can use "Solver"
2022-06-28 09:42:28 -07:00
Nikolaj Bjorner
4c8f6b60ce
fix #6107
2022-06-27 20:51:30 -07:00
Nikolaj Bjorner
61f5489223
fix #6107
2022-06-27 16:53:18 -07:00
Nikolaj Bjorner
1fcf7cf0b7
add nl div mod axioms
2022-06-27 09:02:53 -07:00
Nikolaj Bjorner
30165ed40a
fix #6105
...
non-linear division axioms appear incomplete.
Fixed for legacy arithmetic. Fix pending for new arithmetic solver.
2022-06-26 20:37:18 -07:00
Nikolaj Bjorner
56aa4261b6
fix #6082
2022-06-23 07:43:06 -07:00
Kevin Gibbons
352666b19f
JS api: fix type for from ( #6103 )
...
* JS api: fix type for from
* whitespace
2022-06-22 14:51:40 -07:00
Kevin Gibbons
c15a000d9b
Make high-level JS API more idiomatic/type-safe ( #6101 )
...
* make JS api more idiomatic
* make JS api type-safe by default
* use strings, not symbols, for results
* add toString
* add miracle sudoku example
* ints should be ints
* add error handling
* add missing Cond to Context
* fewer side-effecting getters
2022-06-22 09:26:44 -07:00
Nikolaj Bjorner
8234eeae40
unbreak
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-06-22 09:03:32 -07:00
Nikolaj Bjorner
3189544050
next split
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-06-22 09:03:32 -07:00
Felix Kohlgrüber
a7b41c49fe
fix for spurious wakeups in scoped_timer ( #6102 )
2022-06-22 10:50:19 +01:00
Nuno Lopes
41deed59a3
fix bug in array rewriter introduced in 202ce1e
2022-06-21 22:40:40 +01:00
Nikolaj Bjorner
36a1f758bc
mask regression
2022-06-21 14:34:47 -07:00