package alt-ergo-lib
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=df56045a3af79fbcfbd1deeaf09012d5bc390b4c2223e1d9c25c11c301d9eeba
sha512=ff83e5ce7598bc30509be8ca2c14d791856b0269f852903f81216ae1cbc27737d90b6313176fa24768944433b875811ee19b51fc821948634ea678dbcca4befb
doc/alt-ergo-lib/AltErgoLib/Records_rel/index.html
Module AltErgoLib.Records_rel
include Sig_rel.RELATION
val timer : Timers.ty_module
val empty : Uf.t -> t * Uf.GlobalDomains.t
empty uf
creates a new environment for this relation and allows for the registration of global domains in the union-find.
The second component of the pair should be Uf.domains uf
with any domains that the relation requires added.
val assume :
t ->
Uf.t ->
Shostak.Combine.r Sig_rel.input list ->
t * Uf.GlobalDomains.t * Shostak.Combine.r Sig_rel.result
assume env uf la
adds and processes the literals in la
to the environment env
.
The second value returned by this function can be used to update any relevant domain.
val query : t -> Uf.t -> Shostak.Combine.r Sig_rel.input -> Th_util.answer
val case_split : t -> Uf.t -> for_model:bool -> Th_util.case_split list
case_split env returns a list of equalities
The returned case splits *must* have a CS
origin; see the doc of Th_util.case_split
.
The for_model
flag is true
when we are splitting for the purpose of generating a model; the case split may need to be more aggressive in this case to ensure completeness.
Note: not always equalities (e.g. the arrays theory returns disequalities)
val optimizing_objective :
t ->
Uf.t ->
Objective.Function.t ->
Th_util.optimized_split option
optimizing_split env uf o
tries to optimize objective o
. Returns None
if the theory cannot optimize the objective.
val add :
t ->
Uf.t ->
Shostak.Combine.r ->
Expr.t ->
t
* Uf.GlobalDomains.t
* (Shostak.Combine.r Xliteral.view * Explanation.t) list
add a representant to take into account
val instantiate :
do_syntactic_matching:bool ->
(Matching_types.info Expr.Map.t * Expr.t list Expr.Map.t Symbols.Map.t) ->
t ->
Uf.t ->
(Expr.t -> Expr.t -> bool) ->
t * Sig_rel.instances
val new_terms : t -> Expr.Set.t
new_terms env
returns all the new terms created by the theory. These terms can be used to instantiate axiomes.
val assume_th_elt : t -> Expr.th_elt -> Explanation.t -> t
val src : Logs.src