Skip to main content

declare_oracle_fun

Function declare_oracle_fun 

Source
pub unsafe extern "C" fn declare_oracle_fun(
    cvc5: *mut Solver,
    symbol: *const c_char,
    size: usize,
    sorts: *const Sort,
    sort: Sort,
    state: *mut c_void,
    fun: Option<unsafe extern "C" fn(arg1: usize, arg2: *const Term, arg3: *mut c_void) -> Term>,
) -> Term
Expand description

Declare an oracle function with reference to an implementation.

Oracle functions have a different semantics with respect to ordinary declared functions. In particular, for an input to be satisfiable, its oracle functions are implicitly universally quantified.

This function is used in part for implementing this command:

\verbatim embed:rst:leading-asterisk .. code:: smtlib

(declare-oracle-fun <sym> (<sort>*) <sort> <sym>)

\endverbatim

In particular, the above command is implemented by constructing a function over terms that wraps a call to binary sym via a text interface.

@warning This function is experimental and may change in future versions.

@param cvc5 The solver instance. @param symbol The name of the oracle @param size The number of domain sorts of the oracle function. @param sorts The domain sorts. @param sort The sort of the return value of this function. @param state The state data for the oracle function, may be NULL. @param fun The function that implements the oracle function, taking a an array of term arguments and its size and a void pointer to optionally capture any state data the function may need. @return The oracle function.