3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-03 22:05:45 +00:00

initial warppers for seq-map/seq-fold

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2024-05-09 14:52:49 -07:00
parent f9176fb4b7
commit fc6c4c98e2
5 changed files with 67 additions and 0 deletions

View file

@ -1193,6 +1193,10 @@ typedef enum {
Z3_OP_SEQ_LAST_INDEX,
Z3_OP_SEQ_TO_RE,
Z3_OP_SEQ_IN_RE,
Z3_OP_SEQ_MAP,
Z3_OP_SEQ_MAPI,
Z3_OP_SEQ_FOLDL,
Z3_OP_SEQ_FOLDLI,
// strings
Z3_OP_STR_TO_INT,
@ -3798,6 +3802,30 @@ extern "C" {
*/
Z3_ast Z3_API Z3_mk_seq_last_index(Z3_context c, Z3_ast s, Z3_ast substr);
/**
\brief Create a map of the function \c f over the sequence \c s.
def_API('Z3_mk_seq_map', AST ,(_in(CONTEXT), _in(AST), _in(AST)))
*/
Z3_ast Z3_API Z3_mk_seq_map(Z3_context c, Z3_ast f, Z3_ast s);
/**
\brief Create a map of the function \c f over the sequence \c s starting at index \c i.
def_API('Z3_mk_seq_mapi', AST ,(_in(CONTEXT), _in(AST), _in(AST), _in(AST)))
*/
Z3_ast Z3_API Z3_mk_seq_mapi(Z3_context c, Z3_ast f, Z3_ast i, Z3_ast s);
/**
\brief Create a fold of the function \c f over the sequence \c s with accumulator a.
def_API('Z3_mk_seq_foldl', AST ,(_in(CONTEXT), _in(AST), _in(AST), _in(AST)))
*/
Z3_ast Z3_API Z3_mk_seq_foldl(Z3_context c, Z3_ast f, Z3_ast a, Z3_ast s);
/**
\brief Create a fold with index tracking of the function \c f over the sequence \c s with accumulator \c a starting at index \c i.
def_API('Z3_mk_seq_foldli', AST ,(_in(CONTEXT), _in(AST), _in(AST), _in(AST), _in(AST)))
*/
Z3_ast Z3_API Z3_mk_seq_foldli(Z3_context c, Z3_ast f, Z3_ast i, Z3_ast a, Z3_ast s);
/**
\brief Convert string to integer.