3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-26 10:35:33 +00:00

add array-ext to externally exposed functions to enable interpolants with arrays to be usable in feedback loops with Z3. Addresses one issue raised in #292

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2015-11-07 16:42:13 -08:00
parent 8d1fa3ae50
commit 4685a5f8ba
12 changed files with 71 additions and 16 deletions

View file

@ -322,6 +322,9 @@ typedef enum
- Z3_OP_AS_ARRAY An array value that behaves as the function graph of the
function passed as parameter.
- Z3_OP_ARRAY_EXT Array extensionality function. It takes two arrays as arguments and produces an index, such that the arrays
are different if they are different on the index.
- Z3_OP_BNUM Bit-vector numeral.
- Z3_OP_BIT1 One bit bit-vector.
@ -1033,6 +1036,7 @@ typedef enum {
Z3_OP_SET_COMPLEMENT,
Z3_OP_SET_SUBSET,
Z3_OP_AS_ARRAY,
Z3_OP_ARRAY_EXT,
// Bit-vectors
Z3_OP_BNUM = 0x400,
@ -3260,6 +3264,17 @@ END_MLAPI_EXCLUDE
Z3_ast Z3_API Z3_mk_set_subset(Z3_context c, Z3_ast arg1, Z3_ast arg2);
/*@}*/
/**
\brief Create array extensionality index given two arrays with the same sort.
The meaning is given by the axiom:
(=> (= (select A (array-ext A B)) (select B (array-ext A B))) (= A B))
def_API('Z3_mk_array_ext', AST, (_in(CONTEXT), _in(AST), _in(AST)))
*/
Z3_ast Z3_API Z3_mk_array_ext(Z3_context c, Z3_ast arg1, Z3_ast arg2);
/*@}*/
/**
@name Numerals
*/