3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-25 18:15:32 +00:00
Commit graph

549 commits

Author SHA1 Message Date
Nikolaj Bjorner
7d364bf786 Allow building AC functions without requiring arity check from API 2023-01-22 14:39:58 -08:00
Nikolaj Bjorner
523a3f34b0 change to manylinux2014 in setup.py
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-01-19 17:27:07 -08:00
Walden Yan
dbf93c5fbd
Fixing array select for lambda expressions in Python API (#6516)
* fix: making array select work for lambda expressions

* more elegant solution
2023-01-01 15:27:54 -08:00
Nikolaj Bjorner
f6d411d54b experimental feature to access congruence closure of SimpleSolver
This update includes an experimental feature to access a congruence closure data-structure after search.
It comes with several caveats as pre-processing is free to eliminate terms. It is therefore necessary to use a solver that does not eliminate the terms you want to track for congruence of. This is partially addressed by using SimpleSolver or incremental mode solving.

```python
from z3 import *
s = SimpleSolver()
x, y, z = Ints('x y z')
s.add(x == y)
s.add(y == z)
s.check()
print(s.root(x), s.root(y), s.root(z))
print(s.next(x), s.next(y), s.next(z))
```
2022-12-30 21:41:27 -08:00
Nikolaj Bjorner
ec74a87423 fix #6510
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-12-27 20:19:26 -08:00
Nikolaj Bjorner
8efaaaf249 Fix #6503
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-12-25 17:29:06 -08:00
Nikolaj Bjorner
cd3d38caf7 sort out terminology/add explanations, add shortcut to C++, fix #6491
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-12-13 16:17:38 -08:00
Nikolaj Bjorner
1434c7d394 #6059
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-12-09 08:50:32 -08:00
Nikolaj Bjorner
4a451b10d8 add custom coercion for floats. fix #6482
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-12-07 09:07:13 -08:00
Nikolaj Bjorner
ff68df3451 update output of z3 doc 2022-11-08 16:10:50 -08:00
Nikolaj Bjorner
07dd1065db added API to monitor clause inferences
See RELEASE_NOTES for more information
examples pending.
2022-10-19 08:34:55 -07:00
Nikolaj Bjorner
541aba308c fix #6401
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-10-17 10:27:15 -07: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
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
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
Nikolaj Bjorner
4368ec9953 startswith
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-22 11:53:07 -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
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
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
f24c5ca99a #6095
arrays that are interpreted using as-array should be reflected back to store expressions
2022-06-21 12:42:44 -07:00
Dominic Steinhöfel
46bc726391
Better error message for mismatching sorts in substitutions in z3.substitute (#6093) 2022-06-13 13:46:30 -07:00
Nikolaj Bjorner
e468386359 #5656
guard __del__ operator by checking if library was unloaded.
2022-06-08 09:59:29 -07:00
Christoph M. Wintersteiger
33454193d4
Change FP default rounding mode in the Python API 2022-06-04 08:45:52 +01:00
Nikolaj Bjorner
15c47808d6 #6059
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-30 11:03:50 -07:00
Nikolaj Bjorner
7da9f12521 expose description of global parameters #6048
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-27 08:50:40 -04:00
Nikolaj Bjorner
f6b2874d7c update to take effect of def_API for callback functions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-16 10:30:54 -07:00
John Jones
361888f299
Generate bdist wheels for musllinux_1_1 (#6025) 2022-05-09 14:13:08 -07:00
Nikolaj Bjorner
b3e0213cab missing object ref
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-02 12:35:28 -07:00
Nikolaj Bjorner
9b66d8600b add shortcut to serialize/deserialize based on question at FV hangout
use case
```
from z3 import *

x, y = Ints('x y')
s = (x + y).serialize()

y = deserialize(s)

print(y)
```
2022-04-19 07:21:22 +02:00
Nikolaj Bjorner
8e70112832 Update z3.py
allow ading funcinterp to models
2022-04-15 23:31:15 +02:00
Zachary Wimer
9ecd4f8406
MANIFEST.in will now include pyproject.toml (#5979) 2022-04-15 19:53:16 +02:00
Zachary Wimer
7d47e45c6b
Add a hacky patch so that Z3 on M1 hardware can link to libs properly (#5974)
* Add a hacky patch so that Z3 on M1 hardware can link to libs properly

* Update setup.py

Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-04-15 09:57:51 +02:00
Nikolaj Bjorner
ddbe17d581 #5965
define the is_bool on ArithSortRef
2022-04-13 16:08:54 +02:00
Zachary Wimer
c0b455e010
Add cmake setup.py build dep (#5972)
* Add wheel as build dependency

* Add cmake as a python build dependency

* pyproject toml update

Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-04-13 08:48:08 +02:00
Zachary Wimer
9834d7aae0
Setup.py fix dependencies (#5971)
* Add wheel as build dependency

* pyproject toml update
2022-04-13 08:31:24 +02:00
Audrey Dutcher
032768b0fc
setup.py: copy generated python files correctly (#5975) 2022-04-13 08:29:36 +02:00
Nikolaj Bjorner
c996a66da0 separate pre-processing, add callback parameter to push/pop in python API 2022-04-11 17:05:59 +02:00
Nikolaj Bjorner
005b8e3cf8 arc -> arch 2022-04-09 08:28:22 +02:00
Nikolaj Bjorner
c98eda03f7 nightly osx arm64 wheel 2022-04-09 06:55:31 +02:00
Nikolaj Bjorner
f3789e21a3 id doesn't use mk_util 2022-04-08 14:42:18 +02:00
Nikolaj Bjorner
bbb27775ed ensure that objects in callback are of sort Ast. 2022-03-20 11:24:42 -07:00
Nikolaj Bjorner
b5b9c85c40 call it UbuntuBuild 2022-03-19 15:24:53 -07:00
Nikolaj Bjorner
cfe02edda5 remove stale return 2022-03-19 12:26:48 -07:00
Nikolaj Bjorner
3e51b69a9a no fun!
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-03-03 15:03:02 -08:00
Nikolaj Bjorner
2e00f2f32d
Propagator (#5845)
* user propagator without ids

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* user propagator without ids

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix signature

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* references #5818

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix c++ build

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* switch to vs 2022

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* switch 2022

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* Update propagator example (I) (#5835)

* fix #5829

* na

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* switch to vs 2022

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* Adapted the example to the changes in the propagator

Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* context goes out of scope in stack allocation, so can't used scoped context when passing objects around

* parameter check

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* add rewriter

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* Fixed bug in user-propagator "created" (#5843)

Co-authored-by: Clemens Eisenhofer <56730610+CEisenhofer@users.noreply.github.com>
2022-02-17 09:21:41 +02:00
Nikolaj Bjorner
33985ebcf5 update expected
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-02-16 19:14:54 +02:00
Nikolaj Bjorner
07d02ea415 fix #5829 2022-02-09 12:08:36 +02:00
Nikolaj Bjorner
1c10ce4070 #5815 - surface multi-arity arrays over python API 2022-02-06 08:40:56 +02:00