An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/N/index.html b/dev/sidekick-arith/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/N/index.html
deleted file mode 100644
index f3e4df16..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/N/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-N (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.N)
Module CC.N
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
All information pertaining to the whole equivalence class is stored in this representative's node.
When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.
We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.
type t
An equivalent class, containing terms that are proved to be equal.
A value of type t points to a particular term, but see find to get the representative of the class.
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
ev_on_conflict acts ~th c is called when the congruence closure triggers a conflict by asserting the tautology c.
parameter th
true if the explanation for this conflict involves at least one "theory" explanation; i.e. some of the equations participating in the conflict are purely syntactic theories like injectivity of constructors.
type ev_on_propagate = t->lit->(unit ->lit list * P.t)-> unit
ev_on_is_subterm n t is called when n is a subterm of another node for the first time. t is the term corresponding to the node n. This can be useful for theory combination.
Given a term, try to simplify it. Return None if it didn't change.
A simple example could be a hook that takes a term t, and if t is app "+" (const x) (const y) where x and y are number, returns Some (const (x+y)), and None otherwise.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/Make/argument-1-A/S/module-type-THEORY/index.html b/dev/sidekick-arith/Sidekick_arith_lra/Make/argument-1-A/S/module-type-THEORY/index.html
deleted file mode 100644
index 86110944..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra/Make/argument-1-A/S/module-type-THEORY/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-THEORY (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.THEORY)
Module type S.THEORY
A theory
Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.
Typically a theory should be a functor taking an argument containing a SOLVER_INTERNAL or even a full SOLVER, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type Sidekick_core.SOLVER.theory) can be added to the solver.
Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state equivalent to what it was just before push_level.
it does not have to be exactly the same state, it just needs to be equivalent.
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/N/index.html b/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/N/index.html
deleted file mode 100644
index b0bdda97..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/N/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-N (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.CC.N)
Module CC.N
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
All information pertaining to the whole equivalence class is stored in this representative's node.
When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.
We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.
type t
An equivalent class, containing terms that are proved to be equal.
A value of type t points to a particular term, but see find to get the representative of the class.
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
ev_on_conflict acts ~th c is called when the congruence closure triggers a conflict by asserting the tautology c.
parameter th
true if the explanation for this conflict involves at least one "theory" explanation; i.e. some of the equations participating in the conflict are purely syntactic theories like injectivity of constructors.
type ev_on_propagate = t->lit->(unit ->lit list * P.t)-> unit
ev_on_is_subterm n t is called when n is a subterm of another node for the first time. t is the term corresponding to the node n. This can be useful for theory combination.
Given a term, try to simplify it. Return None if it didn't change.
A simple example could be a hook that takes a term t, and if t is app "+" (const x) (const y) where x and y are number, returns Some (const (x+y)), and None otherwise.
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/module-type-THEORY/index.html b/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/module-type-THEORY/index.html
deleted file mode 100644
index 32c53395..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/module-type-THEORY/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-THEORY (sidekick-arith.Sidekick_arith_lra.ARG.S.THEORY)
Module type S.THEORY
A theory
Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.
Typically a theory should be a functor taking an argument containing a SOLVER_INTERNAL or even a full SOLVER, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type Sidekick_core.SOLVER.theory) can be added to the solver.
Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state equivalent to what it was just before push_level.
it does not have to be exactly the same state, it just needs to be equivalent.
An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/N/index.html b/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/N/index.html
deleted file mode 100644
index eec3672f..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/N/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-N (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.CC.N)
Module CC.N
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
All information pertaining to the whole equivalence class is stored in this representative's node.
When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.
We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.
type t
An equivalent class, containing terms that are proved to be equal.
A value of type t points to a particular term, but see find to get the representative of the class.
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
ev_on_conflict acts ~th c is called when the congruence closure triggers a conflict by asserting the tautology c.
parameter th
true if the explanation for this conflict involves at least one "theory" explanation; i.e. some of the equations participating in the conflict are purely syntactic theories like injectivity of constructors.
type ev_on_propagate = t->lit->(unit ->lit list * P.t)-> unit
ev_on_is_subterm n t is called when n is a subterm of another node for the first time. t is the term corresponding to the node n. This can be useful for theory combination.
Given a term, try to simplify it. Return None if it didn't change.
A simple example could be a hook that takes a term t, and if t is app "+" (const x) (const y) where x and y are number, returns Some (const (x+y)), and None otherwise.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/S/module-type-THEORY/index.html b/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/S/module-type-THEORY/index.html
deleted file mode 100644
index a0b3f282..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/S/module-type-THEORY/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-THEORY (sidekick-arith.Sidekick_arith_lra.S.A.S.THEORY)
Module type S.THEORY
A theory
Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.
Typically a theory should be a functor taking an argument containing a SOLVER_INTERNAL or even a full SOLVER, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type Sidekick_core.SOLVER.theory) can be added to the solver.
Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state equivalent to what it was just before push_level.
it does not have to be exactly the same state, it just needs to be equivalent.
pop_levels theory n pops n backtracking levels, restoring theory to its state before calling push_level n times.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/index.html b/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/index.html
deleted file mode 100644
index 96a2c7ea..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-A (sidekick-arith.Sidekick_arith_lra.S.A)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/index.html b/dev/sidekick-arith/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/index.html
deleted file mode 100644
index e4f2a9cb..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-S (sidekick-arith.Sidekick_arith_lra__.Linear_expr_intf.S)
Module type Linear_expr_intf.S
Linear expressions & formulas.
This modules defines linear expressions (which are linear combinations of variables), and linear constraints, where the value of a linear expressions is constrained.
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
val add_upper_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.t Var_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
val add_upper_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.t Var_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__Linear_expr_intf/module-type-S/index.html b/dev/sidekick-arith/Sidekick_arith_lra__Linear_expr_intf/module-type-S/index.html
deleted file mode 100644
index 00b9bdab..00000000
--- a/dev/sidekick-arith/Sidekick_arith_lra__Linear_expr_intf/module-type-S/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-S (sidekick-arith.Sidekick_arith_lra__Linear_expr_intf.S)
Module type Sidekick_arith_lra__Linear_expr_intf.S
Linear expressions & formulas.
This modules defines linear expressions (which are linear combinations of variables), and linear constraints, where the value of a linear expressions is constrained.
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
val add_upper_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.t Var_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
val add_upper_bound : t->?strict:bool->reason:lit->var-> Q.t -> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.t Var_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
Methods on the custom term view whose arguments are 'a. Terms must be printable, and provide some additional theory handles.
relevant must return a subset of args (possibly the same set). The terms it returns will be activated and evaluated whenever possible. Terms in args \ relevant args are considered for congruence but not for evaluation.
Methods on the custom term view whose arguments are 'a. Terms must be printable, and provide some additional theory handles.
relevant must return a subset of args (possibly the same set). The terms it returns will be activated and evaluated whenever possible. Terms in args \ relevant args are considered for congruence but not for evaluation.
Methods on the custom term view whose arguments are 'a. Terms must be printable, and provide some additional theory handles.
relevant must return a subset of args (possibly the same set). The terms it returns will be activated and evaluated whenever possible. Terms in args \ relevant args are considered for congruence but not for evaluation.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/.dune-keep b/dev/sidekick-base/Sidekick_base/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_arith_lra/.dune-keep
rename to dev/sidekick-base/Sidekick_base/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base/Arg/Fun/index.html b/dev/sidekick-base/Sidekick_base/Arg/Fun/index.html
new file mode 100644
index 00000000..722ed96d
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Arg/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick-base.Sidekick_base.Arg.Fun)
Module Arg.Fun
A function symbol, like "f" or "plus" or "is_human" or "socrates"
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Arg/Term/index.html b/dev/sidekick-base/Sidekick_base/Arg/Term/index.html
new file mode 100644
index 00000000..e92f2344
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Arg/Term/index.html
@@ -0,0 +1,8 @@
+
+Term (sidekick-base.Sidekick_base.Arg.Term)
Module Arg.Term
Term structure.
Terms should be hashconsed, with perfect sharing. This allows, for example, Term.Tbl and Term.iter_dag to be efficient.
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Arg/Ty/index.html b/dev/sidekick-base/Sidekick_base/Arg/Ty/index.html
new file mode 100644
index 00000000..2bda895c
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Arg/Ty/index.html
@@ -0,0 +1,2 @@
+
+Ty (sidekick-base.Sidekick_base.Arg.Ty)
Module Arg.Ty
Types
Types should be comparable (ideally, in O(1)), and have at least a boolean type available.
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Arg/index.html b/dev/sidekick-base/Sidekick_base/Arg/index.html
new file mode 100644
index 00000000..8ab40017
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Arg/index.html
@@ -0,0 +1,2 @@
+
+Arg (sidekick-base.Sidekick_base.Arg)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Cstor/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Cstor/index.html
new file mode 100644
index 00000000..ee1c6fb0
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Cstor/index.html
@@ -0,0 +1,2 @@
+
+Cstor (sidekick-base.Sidekick_base.Base_types.Cstor)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Data/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Data/index.html
new file mode 100644
index 00000000..89544223
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Data/index.html
@@ -0,0 +1,2 @@
+
+Data (sidekick-base.Sidekick_base.Base_types.Data)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Fun/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Fun/index.html
new file mode 100644
index 00000000..ac915316
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick-base.Sidekick_base.Base_types.Fun)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Select/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Select/index.html
new file mode 100644
index 00000000..3cf4fb03
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Select/index.html
@@ -0,0 +1,2 @@
+
+Select (sidekick-base.Sidekick_base.Base_types.Select)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Statement/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Statement/index.html
new file mode 100644
index 00000000..a54e9183
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Statement/index.html
@@ -0,0 +1,2 @@
+
+Statement (sidekick-base.Sidekick_base.Base_types.Statement)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Term/Iter_dag/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Term/Iter_dag/index.html
new file mode 100644
index 00000000..4a77a833
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Term/Iter_dag/index.html
@@ -0,0 +1,2 @@
+
+Iter_dag (sidekick-base.Sidekick_base.Base_types.Term.Iter_dag)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Term/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Term/index.html
new file mode 100644
index 00000000..870694c7
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Term/index.html
@@ -0,0 +1,2 @@
+
+Term (sidekick-base.Sidekick_base.Base_types.Term)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/Make_eq/argument-1-X/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/Make_eq/argument-1-X/index.html
new file mode 100644
index 00000000..1b48a701
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/Make_eq/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (sidekick-base.Sidekick_base.Base_types.Term_cell.Make_eq.1-X)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/Make_eq/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/Make_eq/index.html
new file mode 100644
index 00000000..5ee9ae29
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/Make_eq/index.html
@@ -0,0 +1,2 @@
+
+Make_eq (sidekick-base.Sidekick_base.Base_types.Term_cell.Make_eq)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/index.html
new file mode 100644
index 00000000..8de786d5
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/index.html
@@ -0,0 +1,2 @@
+
+Term_cell (sidekick-base.Sidekick_base.Base_types.Term_cell)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/module-type-ARG/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/module-type-ARG/index.html
new file mode 100644
index 00000000..07b74a7c
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Term_cell/module-type-ARG/index.html
@@ -0,0 +1,2 @@
+
+ARG (sidekick-base.Sidekick_base.Base_types.Term_cell.ARG)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Ty/Fun/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Ty/Fun/index.html
new file mode 100644
index 00000000..1086e8ae
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Ty/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick-base.Sidekick_base.Base_types.Ty.Fun)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Ty/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Ty/index.html
new file mode 100644
index 00000000..05f1072a
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Ty/index.html
@@ -0,0 +1,2 @@
+
+Ty (sidekick-base.Sidekick_base.Base_types.Ty)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/Value/index.html b/dev/sidekick-base/Sidekick_base/Base_types/Value/index.html
new file mode 100644
index 00000000..ef529fb9
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/Value/index.html
@@ -0,0 +1,2 @@
+
+Value (sidekick-base.Sidekick_base.Base_types.Value)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Base_types/index.html b/dev/sidekick-base/Sidekick_base/Base_types/index.html
new file mode 100644
index 00000000..115a3925
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Base_types/index.html
@@ -0,0 +1,2 @@
+
+Base_types (sidekick-base.Sidekick_base.Base_types)
Methods on the custom term view whose arguments are 'a. Terms must be printable, and provide some additional theory handles.
relevant must return a subset of args (possibly the same set). The terms it returns will be activated and evaluated whenever possible. Terms in args \ relevant args are considered for congruence but not for evaluation.
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/ID/B/index.html b/dev/sidekick-base/Sidekick_base/ID/B/index.html
new file mode 100644
index 00000000..67eb647b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/ID/B/index.html
@@ -0,0 +1,2 @@
+
+B (sidekick-base.Sidekick_base.ID.B)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/ID/index.html b/dev/sidekick-base/Sidekick_base/ID/index.html
new file mode 100644
index 00000000..4ab25a99
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/ID/index.html
@@ -0,0 +1,2 @@
+
+ID (sidekick-base.Sidekick_base.ID)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Model/Fun_interpretation/index.html b/dev/sidekick-base/Sidekick_base/Model/Fun_interpretation/index.html
new file mode 100644
index 00000000..37ea47af
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Model/Fun_interpretation/index.html
@@ -0,0 +1,2 @@
+
+Fun_interpretation (sidekick-base.Sidekick_base.Model.Fun_interpretation)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Model/Val_map/index.html b/dev/sidekick-base/Sidekick_base/Model/Val_map/index.html
new file mode 100644
index 00000000..cc7c10bd
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Model/Val_map/index.html
@@ -0,0 +1,2 @@
+
+Val_map (sidekick-base.Sidekick_base.Model.Val_map)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Model/index.html b/dev/sidekick-base/Sidekick_base/Model/index.html
new file mode 100644
index 00000000..47d48969
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Model/index.html
@@ -0,0 +1,2 @@
+
+Model (sidekick-base.Sidekick_base.Model)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Proof/Quip/index.html b/dev/sidekick-base/Sidekick_base/Proof/Quip/index.html
new file mode 100644
index 00000000..fec3b2d3
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Proof/Quip/index.html
@@ -0,0 +1,2 @@
+
+Quip (sidekick-base.Sidekick_base.Proof.Quip)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Proof/index.html b/dev/sidekick-base/Sidekick_base/Proof/index.html
new file mode 100644
index 00000000..691e25fe
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Proof/index.html
@@ -0,0 +1,2 @@
+
+Proof (sidekick-base.Sidekick_base.Proof)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/index.html b/dev/sidekick-base/Sidekick_base/index.html
new file mode 100644
index 00000000..9ce512d3
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base (sidekick-base.Sidekick_base)
Module Sidekick_base
Sidekick base
This library is a starting point for writing concrete implementations of SMT solvers with Sidekick.
It provides a representation of terms, boolean formulas, linear arithmetic expressions, datatypes for the functors in Sidekick.
In addition, it has a notion of Statement. Statements are instructions for the SMT solver to do something, such as: define a new constant, declare a new constant, assert a formula as being true, set an option, check satisfiability of the set of statements added so far, etc. Logic formats such as SMT-LIB 2.6 are in fact based on a similar notion of statements, and a .smt2 files contains a list of statements.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__/.dune-keep b/dev/sidekick-base/Sidekick_base__/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_arith_lra__/.dune-keep
rename to dev/sidekick-base/Sidekick_base__/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Cstor/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Cstor/index.html
new file mode 100644
index 00000000..98a2b957
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Cstor/index.html
@@ -0,0 +1,2 @@
+
+Cstor (sidekick-base.Sidekick_base__.Base_types.Cstor)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Data/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Data/index.html
new file mode 100644
index 00000000..07d50057
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Data/index.html
@@ -0,0 +1,2 @@
+
+Data (sidekick-base.Sidekick_base__.Base_types.Data)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Fun/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Fun/index.html
new file mode 100644
index 00000000..21871ac5
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick-base.Sidekick_base__.Base_types.Fun)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Select/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Select/index.html
new file mode 100644
index 00000000..f24b153b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Select/index.html
@@ -0,0 +1,2 @@
+
+Select (sidekick-base.Sidekick_base__.Base_types.Select)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Statement/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Statement/index.html
new file mode 100644
index 00000000..521b0e8e
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Statement/index.html
@@ -0,0 +1,2 @@
+
+Statement (sidekick-base.Sidekick_base__.Base_types.Statement)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Term/Iter_dag/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Term/Iter_dag/index.html
new file mode 100644
index 00000000..57425cd5
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Term/Iter_dag/index.html
@@ -0,0 +1,2 @@
+
+Iter_dag (sidekick-base.Sidekick_base__.Base_types.Term.Iter_dag)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Term/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Term/index.html
new file mode 100644
index 00000000..3a54dba7
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Term/index.html
@@ -0,0 +1,2 @@
+
+Term (sidekick-base.Sidekick_base__.Base_types.Term)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/Make_eq/argument-1-X/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/Make_eq/argument-1-X/index.html
new file mode 100644
index 00000000..3d13143c
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/Make_eq/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (sidekick-base.Sidekick_base__.Base_types.Term_cell.Make_eq.1-X)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/Make_eq/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/Make_eq/index.html
new file mode 100644
index 00000000..4ef47bb4
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/Make_eq/index.html
@@ -0,0 +1,2 @@
+
+Make_eq (sidekick-base.Sidekick_base__.Base_types.Term_cell.Make_eq)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/index.html
new file mode 100644
index 00000000..039813dc
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/index.html
@@ -0,0 +1,2 @@
+
+Term_cell (sidekick-base.Sidekick_base__.Base_types.Term_cell)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/module-type-ARG/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/module-type-ARG/index.html
new file mode 100644
index 00000000..e2b0630b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Term_cell/module-type-ARG/index.html
@@ -0,0 +1,2 @@
+
+ARG (sidekick-base.Sidekick_base__.Base_types.Term_cell.ARG)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Ty/Fun/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Ty/Fun/index.html
new file mode 100644
index 00000000..41e8ec65
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Ty/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick-base.Sidekick_base__.Base_types.Ty.Fun)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Ty/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Ty/index.html
new file mode 100644
index 00000000..6abbfba6
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Ty/index.html
@@ -0,0 +1,2 @@
+
+Ty (sidekick-base.Sidekick_base__.Base_types.Ty)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/Value/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/Value/index.html
new file mode 100644
index 00000000..ff6444b5
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/Value/index.html
@@ -0,0 +1,2 @@
+
+Value (sidekick-base.Sidekick_base__.Base_types.Value)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Base_types/index.html b/dev/sidekick-base/Sidekick_base__/Base_types/index.html
new file mode 100644
index 00000000..a763837b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Base_types/index.html
@@ -0,0 +1,2 @@
+
+Base_types (sidekick-base.Sidekick_base__.Base_types)
Methods on the custom term view whose arguments are 'a. Terms must be printable, and provide some additional theory handles.
relevant must return a subset of args (possibly the same set). The terms it returns will be activated and evaluated whenever possible. Terms in args \ relevant args are considered for congruence but not for evaluation.
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/CCHet/Key/index.html b/dev/sidekick-base/Sidekick_base__/CCHet/Key/index.html
new file mode 100644
index 00000000..2236a256
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/CCHet/Key/index.html
@@ -0,0 +1,2 @@
+
+Key (sidekick-base.Sidekick_base__.CCHet.Key)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/CCHet/Map/index.html b/dev/sidekick-base/Sidekick_base__/CCHet/Map/index.html
new file mode 100644
index 00000000..cf94a821
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/CCHet/Map/index.html
@@ -0,0 +1,2 @@
+
+Map (sidekick-base.Sidekick_base__.CCHet.Map)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/CCHet/Tbl/index.html b/dev/sidekick-base/Sidekick_base__/CCHet/Tbl/index.html
new file mode 100644
index 00000000..0d3b78da
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/CCHet/Tbl/index.html
@@ -0,0 +1,2 @@
+
+Tbl (sidekick-base.Sidekick_base__.CCHet.Tbl)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/CCHet/index.html b/dev/sidekick-base/Sidekick_base__/CCHet/index.html
new file mode 100644
index 00000000..ec9bd907
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/CCHet/index.html
@@ -0,0 +1,2 @@
+
+CCHet (sidekick-base.Sidekick_base__.CCHet)
Module Sidekick_base__.CCHet
Associative containers with Heterogeneous Values
This is similar to CCMixtbl, but the injection is directly used as a key.
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Config/Key/index.html b/dev/sidekick-base/Sidekick_base__/Config/Key/index.html
new file mode 100644
index 00000000..37d768d4
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Config/Key/index.html
@@ -0,0 +1,2 @@
+
+Key (sidekick-base.Sidekick_base__.Config.Key)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Config/index.html b/dev/sidekick-base/Sidekick_base__/Config/index.html
new file mode 100644
index 00000000..e83791b4
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Config/index.html
@@ -0,0 +1,2 @@
+
+Config (sidekick-base.Sidekick_base__.Config)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Hashcons/Make/argument-1-A/index.html b/dev/sidekick-base/Sidekick_base__/Hashcons/Make/argument-1-A/index.html
new file mode 100644
index 00000000..c79c3f1b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Hashcons/Make/argument-1-A/index.html
@@ -0,0 +1,2 @@
+
+1-A (sidekick-base.Sidekick_base__.Hashcons.Make.1-A)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Hashcons/Make/index.html b/dev/sidekick-base/Sidekick_base__/Hashcons/Make/index.html
new file mode 100644
index 00000000..2586f26e
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Hashcons/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick-base.Sidekick_base__.Hashcons.Make)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Hashcons/index.html b/dev/sidekick-base/Sidekick_base__/Hashcons/index.html
new file mode 100644
index 00000000..83feefdc
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Hashcons/index.html
@@ -0,0 +1,2 @@
+
+Hashcons (sidekick-base.Sidekick_base__.Hashcons)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Hashcons/module-type-ARG/index.html b/dev/sidekick-base/Sidekick_base__/Hashcons/module-type-ARG/index.html
new file mode 100644
index 00000000..33616c1c
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Hashcons/module-type-ARG/index.html
@@ -0,0 +1,2 @@
+
+ARG (sidekick-base.Sidekick_base__.Hashcons.ARG)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/ID/B/index.html b/dev/sidekick-base/Sidekick_base__/ID/B/index.html
new file mode 100644
index 00000000..d9bae380
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/ID/B/index.html
@@ -0,0 +1,2 @@
+
+B (sidekick-base.Sidekick_base__.ID.B)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/ID/index.html b/dev/sidekick-base/Sidekick_base__/ID/index.html
new file mode 100644
index 00000000..6b64eed7
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/ID/index.html
@@ -0,0 +1,2 @@
+
+ID (sidekick-base.Sidekick_base__.ID)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Model/Fun_interpretation/index.html b/dev/sidekick-base/Sidekick_base__/Model/Fun_interpretation/index.html
new file mode 100644
index 00000000..d58677a5
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Model/Fun_interpretation/index.html
@@ -0,0 +1,2 @@
+
+Fun_interpretation (sidekick-base.Sidekick_base__.Model.Fun_interpretation)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Model/Val_map/index.html b/dev/sidekick-base/Sidekick_base__/Model/Val_map/index.html
new file mode 100644
index 00000000..0621ce67
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Model/Val_map/index.html
@@ -0,0 +1,2 @@
+
+Val_map (sidekick-base.Sidekick_base__.Model.Val_map)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Model/index.html b/dev/sidekick-base/Sidekick_base__/Model/index.html
new file mode 100644
index 00000000..98a9f546
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Model/index.html
@@ -0,0 +1,2 @@
+
+Model (sidekick-base.Sidekick_base__.Model)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Proof/Quip/index.html b/dev/sidekick-base/Sidekick_base__/Proof/Quip/index.html
new file mode 100644
index 00000000..e7c6e809
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Proof/Quip/index.html
@@ -0,0 +1,2 @@
+
+Quip (sidekick-base.Sidekick_base__.Proof.Quip)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/Proof/index.html b/dev/sidekick-base/Sidekick_base__/Proof/index.html
new file mode 100644
index 00000000..c558cfe6
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/Proof/index.html
@@ -0,0 +1,2 @@
+
+Proof (sidekick-base.Sidekick_base__.Proof)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__/index.html b/dev/sidekick-base/Sidekick_base__/index.html
new file mode 100644
index 00000000..acb8b58e
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__ (sidekick-base.Sidekick_base__)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__Linear_expr/.dune-keep b/dev/sidekick-base/Sidekick_base__Base_types/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_arith_lra__Linear_expr/.dune-keep
rename to dev/sidekick-base/Sidekick_base__Base_types/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Cstor/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Cstor/index.html
new file mode 100644
index 00000000..ed988f86
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Cstor/index.html
@@ -0,0 +1,2 @@
+
+Cstor (sidekick-base.Sidekick_base__Base_types.Cstor)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Data/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Data/index.html
new file mode 100644
index 00000000..43483e9d
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Data/index.html
@@ -0,0 +1,2 @@
+
+Data (sidekick-base.Sidekick_base__Base_types.Data)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Fun/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Fun/index.html
new file mode 100644
index 00000000..59f2a4ef
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick-base.Sidekick_base__Base_types.Fun)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Select/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Select/index.html
new file mode 100644
index 00000000..2dd2f07b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Select/index.html
@@ -0,0 +1,2 @@
+
+Select (sidekick-base.Sidekick_base__Base_types.Select)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Statement/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Statement/index.html
new file mode 100644
index 00000000..be8a522b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Statement/index.html
@@ -0,0 +1,2 @@
+
+Statement (sidekick-base.Sidekick_base__Base_types.Statement)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Term/Iter_dag/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Term/Iter_dag/index.html
new file mode 100644
index 00000000..38b866a9
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Term/Iter_dag/index.html
@@ -0,0 +1,2 @@
+
+Iter_dag (sidekick-base.Sidekick_base__Base_types.Term.Iter_dag)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Term/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Term/index.html
new file mode 100644
index 00000000..51691135
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Term/index.html
@@ -0,0 +1,2 @@
+
+Term (sidekick-base.Sidekick_base__Base_types.Term)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/Make_eq/argument-1-X/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/Make_eq/argument-1-X/index.html
new file mode 100644
index 00000000..9887dc1d
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/Make_eq/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (sidekick-base.Sidekick_base__Base_types.Term_cell.Make_eq.1-X)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/Make_eq/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/Make_eq/index.html
new file mode 100644
index 00000000..f4ad8028
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/Make_eq/index.html
@@ -0,0 +1,2 @@
+
+Make_eq (sidekick-base.Sidekick_base__Base_types.Term_cell.Make_eq)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/index.html
new file mode 100644
index 00000000..6170bd0c
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/index.html
@@ -0,0 +1,2 @@
+
+Term_cell (sidekick-base.Sidekick_base__Base_types.Term_cell)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/module-type-ARG/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/module-type-ARG/index.html
new file mode 100644
index 00000000..96eb211e
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Term_cell/module-type-ARG/index.html
@@ -0,0 +1,2 @@
+
+ARG (sidekick-base.Sidekick_base__Base_types.Term_cell.ARG)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Ty/Fun/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Ty/Fun/index.html
new file mode 100644
index 00000000..7c2a8a33
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Ty/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick-base.Sidekick_base__Base_types.Ty.Fun)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Ty/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Ty/index.html
new file mode 100644
index 00000000..0dd1230b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Ty/index.html
@@ -0,0 +1,2 @@
+
+Ty (sidekick-base.Sidekick_base__Base_types.Ty)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/Value/index.html b/dev/sidekick-base/Sidekick_base__Base_types/Value/index.html
new file mode 100644
index 00000000..23d57206
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/Value/index.html
@@ -0,0 +1,2 @@
+
+Value (sidekick-base.Sidekick_base__Base_types.Value)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Base_types/index.html b/dev/sidekick-base/Sidekick_base__Base_types/index.html
new file mode 100644
index 00000000..bd18d812
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Base_types/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__Base_types (sidekick-base.Sidekick_base__Base_types)
Methods on the custom term view whose arguments are 'a. Terms must be printable, and provide some additional theory handles.
relevant must return a subset of args (possibly the same set). The terms it returns will be activated and evaluated whenever possible. Terms in args \ relevant args are considered for congruence but not for evaluation.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__Linear_expr_intf/.dune-keep b/dev/sidekick-base/Sidekick_base__CCHet/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_arith_lra__Linear_expr_intf/.dune-keep
rename to dev/sidekick-base/Sidekick_base__CCHet/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__CCHet/Key/index.html b/dev/sidekick-base/Sidekick_base__CCHet/Key/index.html
new file mode 100644
index 00000000..c56839bf
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__CCHet/Key/index.html
@@ -0,0 +1,2 @@
+
+Key (sidekick-base.Sidekick_base__CCHet.Key)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__CCHet/Map/index.html b/dev/sidekick-base/Sidekick_base__CCHet/Map/index.html
new file mode 100644
index 00000000..a0baef6b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__CCHet/Map/index.html
@@ -0,0 +1,2 @@
+
+Map (sidekick-base.Sidekick_base__CCHet.Map)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__CCHet/Tbl/index.html b/dev/sidekick-base/Sidekick_base__CCHet/Tbl/index.html
new file mode 100644
index 00000000..fa480c78
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__CCHet/Tbl/index.html
@@ -0,0 +1,2 @@
+
+Tbl (sidekick-base.Sidekick_base__CCHet.Tbl)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__CCHet/index.html b/dev/sidekick-base/Sidekick_base__CCHet/index.html
new file mode 100644
index 00000000..613a2d13
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__CCHet/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__CCHet (sidekick-base.Sidekick_base__CCHet)
Module Sidekick_base__CCHet
Associative containers with Heterogeneous Values
This is similar to CCMixtbl, but the injection is directly used as a key.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__Predicate/.dune-keep b/dev/sidekick-base/Sidekick_base__Config/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_arith_lra__Predicate/.dune-keep
rename to dev/sidekick-base/Sidekick_base__Config/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__Config/Key/index.html b/dev/sidekick-base/Sidekick_base__Config/Key/index.html
new file mode 100644
index 00000000..7100fd9a
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Config/Key/index.html
@@ -0,0 +1,2 @@
+
+Key (sidekick-base.Sidekick_base__Config.Key)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Config/index.html b/dev/sidekick-base/Sidekick_base__Config/index.html
new file mode 100644
index 00000000..df0dfee4
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Config/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__Config (sidekick-base.Sidekick_base__Config)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__Simplex2/.dune-keep b/dev/sidekick-base/Sidekick_base__Hashcons/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_arith_lra__Simplex2/.dune-keep
rename to dev/sidekick-base/Sidekick_base__Hashcons/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__Hashcons/Make/argument-1-A/index.html b/dev/sidekick-base/Sidekick_base__Hashcons/Make/argument-1-A/index.html
new file mode 100644
index 00000000..55f8ffa9
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Hashcons/Make/argument-1-A/index.html
@@ -0,0 +1,2 @@
+
+1-A (sidekick-base.Sidekick_base__Hashcons.Make.1-A)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Hashcons/Make/index.html b/dev/sidekick-base/Sidekick_base__Hashcons/Make/index.html
new file mode 100644
index 00000000..13210917
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Hashcons/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick-base.Sidekick_base__Hashcons.Make)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Hashcons/index.html b/dev/sidekick-base/Sidekick_base__Hashcons/index.html
new file mode 100644
index 00000000..cc05421b
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Hashcons/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__Hashcons (sidekick-base.Sidekick_base__Hashcons)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Hashcons/module-type-ARG/index.html b/dev/sidekick-base/Sidekick_base__Hashcons/module-type-ARG/index.html
new file mode 100644
index 00000000..16ce96b7
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Hashcons/module-type-ARG/index.html
@@ -0,0 +1,2 @@
+
+ARG (sidekick-base.Sidekick_base__Hashcons.ARG)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra__Simplex_intf/.dune-keep b/dev/sidekick-base/Sidekick_base__ID/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_arith_lra__Simplex_intf/.dune-keep
rename to dev/sidekick-base/Sidekick_base__ID/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__ID/B/index.html b/dev/sidekick-base/Sidekick_base__ID/B/index.html
new file mode 100644
index 00000000..5c4d6fd6
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__ID/B/index.html
@@ -0,0 +1,2 @@
+
+B (sidekick-base.Sidekick_base__ID.B)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__ID/index.html b/dev/sidekick-base/Sidekick_base__ID/index.html
new file mode 100644
index 00000000..f44afd12
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__ID/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__ID (sidekick-base.Sidekick_base__ID)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term/.dune-keep b/dev/sidekick-base/Sidekick_base__Model/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term/.dune-keep
rename to dev/sidekick-base/Sidekick_base__Model/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__Model/Fun_interpretation/index.html b/dev/sidekick-base/Sidekick_base__Model/Fun_interpretation/index.html
new file mode 100644
index 00000000..041dbd9c
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Model/Fun_interpretation/index.html
@@ -0,0 +1,2 @@
+
+Fun_interpretation (sidekick-base.Sidekick_base__Model.Fun_interpretation)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Model/Val_map/index.html b/dev/sidekick-base/Sidekick_base__Model/Val_map/index.html
new file mode 100644
index 00000000..b6778e84
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Model/Val_map/index.html
@@ -0,0 +1,2 @@
+
+Val_map (sidekick-base.Sidekick_base__Model.Val_map)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Model/index.html b/dev/sidekick-base/Sidekick_base__Model/index.html
new file mode 100644
index 00000000..5b12b4a2
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Model/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__Model (sidekick-base.Sidekick_base__Model)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__/.dune-keep b/dev/sidekick-base/Sidekick_base__Proof/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__/.dune-keep
rename to dev/sidekick-base/Sidekick_base__Proof/.dune-keep
diff --git a/dev/sidekick-base/Sidekick_base__Proof/Quip/index.html b/dev/sidekick-base/Sidekick_base__Proof/Quip/index.html
new file mode 100644
index 00000000..bdd42651
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Proof/Quip/index.html
@@ -0,0 +1,2 @@
+
+Quip (sidekick-base.Sidekick_base__Proof.Quip)
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base__Proof/index.html b/dev/sidekick-base/Sidekick_base__Proof/index.html
new file mode 100644
index 00000000..f9dbbaa4
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base__Proof/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_base__Proof (sidekick-base.Sidekick_base__Proof)
\ No newline at end of file
diff --git a/dev/sidekick-base/index.html b/dev/sidekick-base/index.html
new file mode 100644
index 00000000..952ff705
--- /dev/null
+++ b/dev/sidekick-base/index.html
@@ -0,0 +1,2 @@
+
+index (sidekick-base.index)
sidekick-base index
Library sidekick-base
The entry point of this library is the module: Sidekick_base.
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/P/index.html b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/P/index.html
index 7ca4aec9..d0e3d0cc 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/P/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick-bin.Sidekick_smtlib.Process.Solver.P)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/Solver_internal/index.html b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/Solver_internal/index.html
index 6a40171d..03c9c0c4 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/Solver_internal/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/Term/index.html b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/Term/index.html
index 4265fdae..77e57ba5 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/Term/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/Term/index.html
@@ -1,5 +1,5 @@
-Term (sidekick-bin.Sidekick_smtlib.Process.Solver.T.Term)
Module T.Term
Term structure.
Terms should be hashconsed, with perfect sharing. This allows, for example, Term.Tbl and Term.iter_dag to be efficient.
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/index.html b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/index.html
index 841f55b5..f79455e2 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/T/index.html
@@ -1,2 +1,2 @@
-T (sidekick-bin.Sidekick_smtlib.Process.Solver.T)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/index.html b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/index.html
index f257d8ff..d96a46eb 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/index.html
@@ -1,2 +1,2 @@
-Solver (sidekick-bin.Sidekick_smtlib.Process.Solver)
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib/Process/index.html b/dev/sidekick-bin/Sidekick_smtlib/Process/index.html
index 7459d840..85e41998 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/Process/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/Process/index.html
@@ -1,2 +1,2 @@
-Process (sidekick-bin.Sidekick_smtlib.Process)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib/index.html b/dev/sidekick-bin/Sidekick_smtlib/index.html
index 0aa6373c..2dc5ae19 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/index.html
@@ -1,2 +1,2 @@
-Sidekick_smtlib (sidekick-bin.Sidekick_smtlib)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Form/Funs/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Form/Funs/index.html
index 95f36395..4f536b5d 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Form/Funs/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Form/Funs/index.html
@@ -1,2 +1,2 @@
-Funs (sidekick-bin.Sidekick_smtlib__.Form.Funs)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Form/Gensym/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Form/Gensym/index.html
index a6b923e9..f31fe2cf 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Form/Gensym/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Form/Gensym/index.html
@@ -1,2 +1,2 @@
-Gensym (sidekick-bin.Sidekick_smtlib__.Form.Gensym)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Form/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Form/index.html
index f02ec011..794e3e96 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Form/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Form/index.html
@@ -1,2 +1,2 @@
-Form (sidekick-bin.Sidekick_smtlib__.Form)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/P/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/P/index.html
index 104df3e2..0fb1fe98 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/P/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick-bin.Sidekick_smtlib__.Process.Solver.P)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/Solver_internal/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/Solver_internal/index.html
index 6a024843..956deaf8 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/Solver_internal/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/Term/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/Term/index.html
index 482b4eb6..1ef3b049 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/Term/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/Term/index.html
@@ -1,5 +1,5 @@
-Term (sidekick-bin.Sidekick_smtlib__.Process.Solver.T.Term)
Module T.Term
Term structure.
Terms should be hashconsed, with perfect sharing. This allows, for example, Term.Tbl and Term.iter_dag to be efficient.
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/index.html
index 28fc3a8c..114f5b33 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/T/index.html
@@ -1,2 +1,2 @@
-T (sidekick-bin.Sidekick_smtlib__.Process.Solver.T)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/index.html
index 29373542..91fae815 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Process/Solver/index.html
@@ -1,2 +1,2 @@
-Solver (sidekick-bin.Sidekick_smtlib__.Process.Solver)
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Process/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Process/index.html
index 20c13fbb..05218ce1 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Process/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Process/index.html
@@ -1,2 +1,2 @@
-Process (sidekick-bin.Sidekick_smtlib__.Process)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/Ctx/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/Ctx/index.html
index 500a3955..dc9c4b93 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/Ctx/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/Ctx/index.html
@@ -1,2 +1,2 @@
-Ctx (sidekick-bin.Sidekick_smtlib__.Typecheck.Ctx)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/index.html b/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/index.html
index ad0a3897..85b7c521 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__/Typecheck/index.html
@@ -1,2 +1,2 @@
-Typecheck (sidekick-bin.Sidekick_smtlib__.Typecheck)
val conv_statement : Ctx.t->PA.statement ->Stmt.t list
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Form/Funs/index.html b/dev/sidekick-bin/Sidekick_smtlib__Form/Funs/index.html
index 6da961a9..4bc65fc1 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Form/Funs/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Form/Funs/index.html
@@ -1,2 +1,2 @@
-Funs (sidekick-bin.Sidekick_smtlib__Form.Funs)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Form/Gensym/index.html b/dev/sidekick-bin/Sidekick_smtlib__Form/Gensym/index.html
index 14cd4f04..0f996495 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Form/Gensym/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Form/Gensym/index.html
@@ -1,2 +1,2 @@
-Gensym (sidekick-bin.Sidekick_smtlib__Form.Gensym)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Form/index.html b/dev/sidekick-bin/Sidekick_smtlib__Form/index.html
index 1fddcf2e..525ba85b 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Form/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Form/index.html
@@ -1,2 +1,2 @@
-Sidekick_smtlib__Form (sidekick-bin.Sidekick_smtlib__Form)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/P/index.html b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/P/index.html
index 94da99a9..e07888ae 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/P/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick-bin.Sidekick_smtlib__Process.Solver.P)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/Solver_internal/index.html b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/Solver_internal/index.html
index 9c0ad11e..93345163 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/Solver_internal/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/Term/index.html b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/Term/index.html
index 36238d0e..2f92b3e8 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/Term/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/Term/index.html
@@ -1,5 +1,5 @@
-Term (sidekick-bin.Sidekick_smtlib__Process.Solver.T.Term)
Module T.Term
Term structure.
Terms should be hashconsed, with perfect sharing. This allows, for example, Term.Tbl and Term.iter_dag to be efficient.
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/index.html b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/index.html
index 30e17a26..1fc2cf78 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/T/index.html
@@ -1,2 +1,2 @@
-T (sidekick-bin.Sidekick_smtlib__Process.Solver.T)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/index.html b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/index.html
index f6c62ab0..c986e46c 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Process/Solver/index.html
@@ -1,2 +1,2 @@
-Solver (sidekick-bin.Sidekick_smtlib__Process.Solver)
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Process/index.html b/dev/sidekick-bin/Sidekick_smtlib__Process/index.html
index 168414e9..c016fa44 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Process/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Process/index.html
@@ -1,2 +1,2 @@
-Sidekick_smtlib__Process (sidekick-bin.Sidekick_smtlib__Process)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Typecheck/Ctx/index.html b/dev/sidekick-bin/Sidekick_smtlib__Typecheck/Ctx/index.html
index 46d9067d..9f207d14 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Typecheck/Ctx/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Typecheck/Ctx/index.html
@@ -1,2 +1,2 @@
-Ctx (sidekick-bin.Sidekick_smtlib__Typecheck.Ctx)
\ No newline at end of file
diff --git a/dev/sidekick-bin/Sidekick_smtlib__Typecheck/index.html b/dev/sidekick-bin/Sidekick_smtlib__Typecheck/index.html
index 6dc919c0..a2f142dd 100644
--- a/dev/sidekick-bin/Sidekick_smtlib__Typecheck/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib__Typecheck/index.html
@@ -1,2 +1,2 @@
-Sidekick_smtlib__Typecheck (sidekick-bin.Sidekick_smtlib__Typecheck)
val conv_statement : Ctx.t->PA.statement ->Stmt.t list
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__Base_types/.dune-keep b/dev/sidekick/Sidekick_arith/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__Base_types/.dune-keep
rename to dev/sidekick/Sidekick_arith/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith/index.html b/dev/sidekick/Sidekick_arith/index.html
new file mode 100644
index 00000000..73460aa5
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith (sidekick.Sidekick_arith)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith/module-type-INT/index.html b/dev/sidekick/Sidekick_arith/module-type-INT/index.html
new file mode 100644
index 00000000..55c909ee
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith/module-type-INT/index.html
@@ -0,0 +1,2 @@
+
+INT (sidekick.Sidekick_arith.INT)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith/module-type-NUM/index.html b/dev/sidekick/Sidekick_arith/module-type-NUM/index.html
new file mode 100644
index 00000000..61380d24
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith/module-type-NUM/index.html
@@ -0,0 +1,2 @@
+
+NUM (sidekick.Sidekick_arith.NUM)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith/module-type-RATIONAL/index.html b/dev/sidekick/Sidekick_arith/module-type-RATIONAL/index.html
new file mode 100644
index 00000000..10b14215
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith/module-type-RATIONAL/index.html
@@ -0,0 +1,2 @@
+
+RATIONAL (sidekick.Sidekick_arith.RATIONAL)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__CCHet/.dune-keep b/dev/sidekick/Sidekick_arith_lra/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__CCHet/.dune-keep
rename to dev/sidekick/Sidekick_arith_lra/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Comb/Infix/index.html
new file mode 100644
index 00000000..4d266be4
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra.Linear_expr.Make.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Comb/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Comb/index.html
new file mode 100644
index 00000000..35704084
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra.Linear_expr.Make.Comb)
Module Make.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Constr/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Constr/index.html
new file mode 100644
index 00000000..ee05d4ed
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra.Linear_expr.Make.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Expr/Infix/index.html
new file mode 100644
index 00000000..26eb1a0f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra.Linear_expr.Make.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Expr/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Expr/index.html
new file mode 100644
index 00000000..ee9dc91d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra.Linear_expr.Make.Expr)
Module Make.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/argument-1-C/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/argument-1-C/index.html
new file mode 100644
index 00000000..1db2e8c2
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/argument-1-C/index.html
@@ -0,0 +1,2 @@
+
+1-C (sidekick.Sidekick_arith_lra.Linear_expr.Make.1-C)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/argument-2-Var/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/argument-2-Var/index.html
new file mode 100644
index 00000000..1f02a29f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/argument-2-Var/index.html
@@ -0,0 +1,2 @@
+
+2-Var (sidekick.Sidekick_arith_lra.Linear_expr.Make.2-Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/index.html
new file mode 100644
index 00000000..bea3c147
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick.Sidekick_arith_lra.Linear_expr.Make)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/index.html
new file mode 100644
index 00000000..69747d0e
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/index.html
@@ -0,0 +1,2 @@
+
+Linear_expr (sidekick.Sidekick_arith_lra.Linear_expr)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-COEFF/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-COEFF/index.html
new file mode 100644
index 00000000..2cf0cf05
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-COEFF/index.html
@@ -0,0 +1,2 @@
+
+COEFF (sidekick.Sidekick_arith_lra.Linear_expr.COEFF)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/C/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/C/index.html
new file mode 100644
index 00000000..6b2e3b63
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/C/index.html
@@ -0,0 +1,2 @@
+
+C (sidekick.Sidekick_arith_lra.Linear_expr.S.C)
Module S.C
Coeficients used. Can be integers as well as rationals.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Comb/Infix/index.html
new file mode 100644
index 00000000..d9739e07
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra.Linear_expr.S.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Comb/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Comb/index.html
new file mode 100644
index 00000000..ae24dd1d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra.Linear_expr.S.Comb)
Module S.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Constr/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Constr/index.html
new file mode 100644
index 00000000..b8b78fb8
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra.Linear_expr.S.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Expr/Infix/index.html
new file mode 100644
index 00000000..1ee29a10
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra.Linear_expr.S.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Expr/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Expr/index.html
new file mode 100644
index 00000000..d9c12c97
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra.Linear_expr.S.Expr)
Module S.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Var/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Var/index.html
new file mode 100644
index 00000000..3fdbd878
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/Var/index.html
@@ -0,0 +1,2 @@
+
+Var (sidekick.Sidekick_arith_lra.Linear_expr.S.Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/index.html
new file mode 100644
index 00000000..1a4d6718
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra.Linear_expr.S)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-VAR/index.html
new file mode 100644
index 00000000..072860bb
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Linear_expr/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra.Linear_expr.VAR)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/Gensym/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/Gensym/index.html
similarity index 66%
rename from dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/Gensym/index.html
rename to dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/Gensym/index.html
index 118ee03f..65b4c554 100644
--- a/dev/sidekick-arith/Sidekick_arith_lra/module-type-S/A/Gensym/index.html
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/Gensym/index.html
@@ -1,2 +1,2 @@
-Gensym (sidekick-arith.Sidekick_arith_lra.S.A.Gensym)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/Q/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/Q/index.html
new file mode 100644
index 00000000..2f89649d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra.Make.1-A.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Atom/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Atom/index.html
new file mode 100644
index 00000000..b979a66d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Atom/index.html
@@ -0,0 +1,2 @@
+
+Atom (sidekick.Sidekick_arith_lra.Make.1-A.S.Atom)
Module S.Atom
Boolean Atoms
Atoms are the SAT solver's version of our boolean literals (they may have a different representation).
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Lit/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Lit/index.html
new file mode 100644
index 00000000..e11ccff9
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Lit/index.html
@@ -0,0 +1,2 @@
+
+Lit (sidekick.Sidekick_arith_lra.Make.1-A.S.Lit)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Model/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Model/index.html
new file mode 100644
index 00000000..c11b9221
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Model/index.html
@@ -0,0 +1,2 @@
+
+Model (sidekick.Sidekick_arith_lra.Make.1-A.S.Model)
Module S.Model
Models
A model can be produced when the solver is found to be in a satisfiable state after a call to solve.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/P/Quip/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/P/Quip/index.html
new file mode 100644
index 00000000..c5d2fe8a
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/P/Quip/index.html
@@ -0,0 +1,2 @@
+
+Quip (sidekick.Sidekick_arith_lra.Make.1-A.S.P.Quip)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/P/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/P/index.html
new file mode 100644
index 00000000..d939d561
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/P/index.html
@@ -0,0 +1,2 @@
+
+P (sidekick.Sidekick_arith_lra.Make.1-A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Pre_proof/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Pre_proof/index.html
new file mode 100644
index 00000000..618b5c61
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Pre_proof/index.html
@@ -0,0 +1,2 @@
+
+Pre_proof (sidekick.Sidekick_arith_lra.Make.1-A.S.Pre_proof)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/Actions/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/Actions/index.html
new file mode 100644
index 00000000..adce6008
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/Actions/index.html
@@ -0,0 +1,2 @@
+
+Actions (sidekick.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.Actions)
An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.
This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/Expl/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/Expl/index.html
new file mode 100644
index 00000000..604fccbb
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/Expl/index.html
@@ -0,0 +1,2 @@
+
+Expl (sidekick.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.Expl)
Module CC.Expl
Explanations
Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/N/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/N/index.html
new file mode 100644
index 00000000..c472502c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/N/index.html
@@ -0,0 +1,2 @@
+
+N (sidekick.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.N)
Module CC.N
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
All information pertaining to the whole equivalence class is stored in this representative's node.
When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.
We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.
type t
An equivalent class, containing terms that are proved to be equal.
A value of type t points to a particular term, but see find to get the representative of the class.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/index.html
new file mode 100644
index 00000000..af08f5d1
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/CC/index.html
@@ -0,0 +1,2 @@
+
+CC (sidekick.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC)
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
ev_on_conflict acts ~th c is called when the congruence closure triggers a conflict by asserting the tautology c.
parameter th
true if the explanation for this conflict involves at least one "theory" explanation; i.e. some of the equations participating in the conflict are purely syntactic theories like injectivity of constructors.
type ev_on_propagate = t->lit->(unit ->lit list * P.t)-> unit
ev_on_is_subterm n t is called when n is a subterm of another node for the first time. t is the term corresponding to the node n. This can be useful for theory combination.
get all the equivalence classes so they can be merged in the model
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/Simplify/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/Simplify/index.html
new file mode 100644
index 00000000..3d1238b7
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/Simplify/index.html
@@ -0,0 +1,2 @@
+
+Simplify (sidekick.Sidekick_arith_lra.Make.1-A.S.Solver_internal.Simplify)
Given a term, try to simplify it. Return None if it didn't change.
A simple example could be a hook that takes a term t, and if t is app "+" (const x) (const y) where x and y are number, returns Some (const (x+y)), and None otherwise.
Normalize a term using all the hooks, along with a proof that the simplification is correct. returns t, refl t if no simplification occurred.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/index.html
new file mode 100644
index 00000000..8a51a1f9
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Solver_internal/index.html
@@ -0,0 +1,2 @@
+
+Solver_internal (sidekick.Sidekick_arith_lra.Make.1-A.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Fun/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Fun/index.html
new file mode 100644
index 00000000..714f7c43
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick.Sidekick_arith_lra.Make.1-A.S.T.Fun)
Module T.Fun
A function symbol, like "f" or "plus" or "is_human" or "socrates"
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Term/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Term/index.html
new file mode 100644
index 00000000..004478cb
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Term/index.html
@@ -0,0 +1,8 @@
+
+Term (sidekick.Sidekick_arith_lra.Make.1-A.S.T.Term)
Module T.Term
Term structure.
Terms should be hashconsed, with perfect sharing. This allows, for example, Term.Tbl and Term.iter_dag to be efficient.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Ty/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Ty/index.html
new file mode 100644
index 00000000..b24cd2f6
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/Ty/index.html
@@ -0,0 +1,2 @@
+
+Ty (sidekick.Sidekick_arith_lra.Make.1-A.S.T.Ty)
Module T.Ty
Types
Types should be comparable (ideally, in O(1)), and have at least a boolean type available.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/index.html
new file mode 100644
index 00000000..96c3e263
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/T/index.html
@@ -0,0 +1,2 @@
+
+T (sidekick.Sidekick_arith_lra.Make.1-A.S.T)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Unknown/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Unknown/index.html
new file mode 100644
index 00000000..b991a116
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/Unknown/index.html
@@ -0,0 +1,2 @@
+
+Unknown (sidekick.Sidekick_arith_lra.Make.1-A.S.Unknown)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/index.html
new file mode 100644
index 00000000..22b6d790
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra.Make.1-A.S)
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/module-type-THEORY/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/module-type-THEORY/index.html
new file mode 100644
index 00000000..f94aab9c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/S/module-type-THEORY/index.html
@@ -0,0 +1,2 @@
+
+THEORY (sidekick.Sidekick_arith_lra.Make.1-A.S.THEORY)
Module type S.THEORY
A theory
Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.
Typically a theory should be a functor taking an argument containing a SOLVER_INTERNAL or even a full SOLVER, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type Sidekick_core.SOLVER.theory) can be added to the solver.
Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state equivalent to what it was just before push_level.
it does not have to be exactly the same state, it just needs to be equivalent.
pop_levels theory n pops n backtracking levels, restoring theory to its state before calling push_level n times.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/index.html b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/index.html
new file mode 100644
index 00000000..f0d33542
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/argument-1-A/index.html
@@ -0,0 +1,2 @@
+
+1-A (sidekick.Sidekick_arith_lra.Make.1-A)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Make/index.html b/dev/sidekick/Sidekick_arith_lra/Make/index.html
new file mode 100644
index 00000000..3910f844
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick.Sidekick_arith_lra.Make)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Predicate/index.html b/dev/sidekick/Sidekick_arith_lra/Predicate/index.html
new file mode 100644
index 00000000..da62cb8c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Predicate/index.html
@@ -0,0 +1,2 @@
+
+Predicate (sidekick.Sidekick_arith_lra.Predicate)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Constraint/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Constraint/index.html
new file mode 100644
index 00000000..cbfff130
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Constraint/index.html
@@ -0,0 +1,2 @@
+
+Constraint (sidekick.Sidekick_arith_lra.Simplex2.Make.Constraint)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Subst/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Subst/index.html
new file mode 100644
index 00000000..13a15416
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Subst/index.html
@@ -0,0 +1,2 @@
+
+Subst (sidekick.Sidekick_arith_lra.Simplex2.Make.Subst)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Unsat_cert/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Unsat_cert/index.html
new file mode 100644
index 00000000..b9a81a45
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/Unsat_cert/index.html
@@ -0,0 +1,2 @@
+
+Unsat_cert (sidekick.Sidekick_arith_lra.Simplex2.Make.Unsat_cert)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/argument-1-Q/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/argument-1-Q/index.html
new file mode 100644
index 00000000..e75920a6
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/argument-1-Q/index.html
@@ -0,0 +1,2 @@
+
+1-Q (sidekick.Sidekick_arith_lra.Simplex2.Make.1-Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/argument-2-Var/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/argument-2-Var/index.html
new file mode 100644
index 00000000..2b21e458
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/argument-2-Var/index.html
@@ -0,0 +1,2 @@
+
+2-Var (sidekick.Sidekick_arith_lra.Simplex2.Make.2-Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/index.html
new file mode 100644
index 00000000..136f628d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick.Sidekick_arith_lra.Simplex2.Make)
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
val check : on_propagate:(V.lit->reason:V.lit list-> unit)->t->result
Call check_exn and return a model or a proof of unsat.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/Op/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/Op/index.html
new file mode 100644
index 00000000..3c0c8337
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/Op/index.html
@@ -0,0 +1,2 @@
+
+Op (sidekick.Sidekick_arith_lra.Simplex2.Op)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/index.html
new file mode 100644
index 00000000..7ce39c95
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/index.html
@@ -0,0 +1,2 @@
+
+Simplex2 (sidekick.Sidekick_arith_lra.Simplex2)
Module Sidekick_arith_lra.Simplex2
Fast Simplex for CDCL(T)
We follow the paper "Integrating Simplex with DPLL(T )" from de Moura and Dutertre.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-RATIONAL/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-RATIONAL/index.html
new file mode 100644
index 00000000..6bce0a95
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-RATIONAL/index.html
@@ -0,0 +1,2 @@
+
+RATIONAL (sidekick.Sidekick_arith_lra.Simplex2.RATIONAL)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Constraint/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Constraint/index.html
new file mode 100644
index 00000000..0e11a7b9
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Constraint/index.html
@@ -0,0 +1,2 @@
+
+Constraint (sidekick.Sidekick_arith_lra.Simplex2.S.Constraint)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Q/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Q/index.html
new file mode 100644
index 00000000..045c98bc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra.Simplex2.S.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Subst/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Subst/index.html
new file mode 100644
index 00000000..7cbd58c5
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Subst/index.html
@@ -0,0 +1,2 @@
+
+Subst (sidekick.Sidekick_arith_lra.Simplex2.S.Subst)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Unsat_cert/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Unsat_cert/index.html
new file mode 100644
index 00000000..8340825b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/Unsat_cert/index.html
@@ -0,0 +1,2 @@
+
+Unsat_cert (sidekick.Sidekick_arith_lra.Simplex2.S.Unsat_cert)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/V/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/V/index.html
new file mode 100644
index 00000000..d37909bc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/V/index.html
@@ -0,0 +1,2 @@
+
+V (sidekick.Sidekick_arith_lra.Simplex2.S.V)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/index.html
new file mode 100644
index 00000000..127b9b7f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra.Simplex2.S)
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
val check : on_propagate:(V.lit->reason:V.lit list-> unit)->t->result
Call check_exn and return a model or a proof of unsat.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-VAR/index.html
new file mode 100644
index 00000000..1fedd961
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/Simplex2/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra.Simplex2.VAR)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/index.html b/dev/sidekick/Sidekick_arith_lra/index.html
new file mode 100644
index 00000000..cf3cf33f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith_lra (sidekick.Sidekick_arith_lra)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/Gensym/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/Gensym/index.html
new file mode 100644
index 00000000..09d9fcf1
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/Gensym/index.html
@@ -0,0 +1,2 @@
+
+Gensym (sidekick.Sidekick_arith_lra.ARG.Gensym)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/Q/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/Q/index.html
new file mode 100644
index 00000000..7f08ede9
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra.ARG.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Atom/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Atom/index.html
new file mode 100644
index 00000000..a03284a8
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Atom/index.html
@@ -0,0 +1,2 @@
+
+Atom (sidekick.Sidekick_arith_lra.ARG.S.Atom)
Module S.Atom
Boolean Atoms
Atoms are the SAT solver's version of our boolean literals (they may have a different representation).
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Lit/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Lit/index.html
new file mode 100644
index 00000000..3e538853
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Lit/index.html
@@ -0,0 +1,2 @@
+
+Lit (sidekick.Sidekick_arith_lra.ARG.S.Lit)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Model/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Model/index.html
new file mode 100644
index 00000000..faed967b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Model/index.html
@@ -0,0 +1,2 @@
+
+Model (sidekick.Sidekick_arith_lra.ARG.S.Model)
Module S.Model
Models
A model can be produced when the solver is found to be in a satisfiable state after a call to solve.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/P/Quip/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/P/Quip/index.html
new file mode 100644
index 00000000..b97383fa
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/P/Quip/index.html
@@ -0,0 +1,2 @@
+
+Quip (sidekick.Sidekick_arith_lra.ARG.S.P.Quip)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/P/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/P/index.html
new file mode 100644
index 00000000..b29f97ac
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/P/index.html
@@ -0,0 +1,2 @@
+
+P (sidekick.Sidekick_arith_lra.ARG.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Pre_proof/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Pre_proof/index.html
new file mode 100644
index 00000000..7fcba505
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Pre_proof/index.html
@@ -0,0 +1,2 @@
+
+Pre_proof (sidekick.Sidekick_arith_lra.ARG.S.Pre_proof)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/Actions/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/Actions/index.html
new file mode 100644
index 00000000..ff7af603
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/Actions/index.html
@@ -0,0 +1,2 @@
+
+Actions (sidekick.Sidekick_arith_lra.ARG.S.Solver_internal.CC.Actions)
An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.
This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/Expl/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/Expl/index.html
new file mode 100644
index 00000000..2151db03
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/Expl/index.html
@@ -0,0 +1,2 @@
+
+Expl (sidekick.Sidekick_arith_lra.ARG.S.Solver_internal.CC.Expl)
Module CC.Expl
Explanations
Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/N/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/N/index.html
new file mode 100644
index 00000000..d94bda0c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/N/index.html
@@ -0,0 +1,2 @@
+
+N (sidekick.Sidekick_arith_lra.ARG.S.Solver_internal.CC.N)
Module CC.N
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
All information pertaining to the whole equivalence class is stored in this representative's node.
When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.
We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.
type t
An equivalent class, containing terms that are proved to be equal.
A value of type t points to a particular term, but see find to get the representative of the class.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/index.html
new file mode 100644
index 00000000..4002af35
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/CC/index.html
@@ -0,0 +1,2 @@
+
+CC (sidekick.Sidekick_arith_lra.ARG.S.Solver_internal.CC)
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
ev_on_conflict acts ~th c is called when the congruence closure triggers a conflict by asserting the tautology c.
parameter th
true if the explanation for this conflict involves at least one "theory" explanation; i.e. some of the equations participating in the conflict are purely syntactic theories like injectivity of constructors.
type ev_on_propagate = t->lit->(unit ->lit list * P.t)-> unit
ev_on_is_subterm n t is called when n is a subterm of another node for the first time. t is the term corresponding to the node n. This can be useful for theory combination.
get all the equivalence classes so they can be merged in the model
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/Simplify/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/Simplify/index.html
new file mode 100644
index 00000000..8f062ac1
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/Simplify/index.html
@@ -0,0 +1,2 @@
+
+Simplify (sidekick.Sidekick_arith_lra.ARG.S.Solver_internal.Simplify)
Given a term, try to simplify it. Return None if it didn't change.
A simple example could be a hook that takes a term t, and if t is app "+" (const x) (const y) where x and y are number, returns Some (const (x+y)), and None otherwise.
Normalize a term using all the hooks, along with a proof that the simplification is correct. returns t, refl t if no simplification occurred.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/index.html
new file mode 100644
index 00000000..84695880
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/index.html
@@ -0,0 +1,2 @@
+
+Solver_internal (sidekick.Sidekick_arith_lra.ARG.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Fun/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Fun/index.html
new file mode 100644
index 00000000..9ae70fdc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick.Sidekick_arith_lra.ARG.S.T.Fun)
Module T.Fun
A function symbol, like "f" or "plus" or "is_human" or "socrates"
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Term/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Term/index.html
new file mode 100644
index 00000000..bafaf489
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Term/index.html
@@ -0,0 +1,8 @@
+
+Term (sidekick.Sidekick_arith_lra.ARG.S.T.Term)
Module T.Term
Term structure.
Terms should be hashconsed, with perfect sharing. This allows, for example, Term.Tbl and Term.iter_dag to be efficient.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Ty/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Ty/index.html
new file mode 100644
index 00000000..cb5c4a99
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/Ty/index.html
@@ -0,0 +1,2 @@
+
+Ty (sidekick.Sidekick_arith_lra.ARG.S.T.Ty)
Module T.Ty
Types
Types should be comparable (ideally, in O(1)), and have at least a boolean type available.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/index.html
new file mode 100644
index 00000000..a0625a3f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/T/index.html
@@ -0,0 +1,2 @@
+
+T (sidekick.Sidekick_arith_lra.ARG.S.T)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Unknown/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Unknown/index.html
new file mode 100644
index 00000000..39e44f43
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/Unknown/index.html
@@ -0,0 +1,2 @@
+
+Unknown (sidekick.Sidekick_arith_lra.ARG.S.Unknown)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/index.html
new file mode 100644
index 00000000..d8f687fb
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra.ARG.S)
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/module-type-THEORY/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/module-type-THEORY/index.html
new file mode 100644
index 00000000..e305f9c5
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/S/module-type-THEORY/index.html
@@ -0,0 +1,2 @@
+
+THEORY (sidekick.Sidekick_arith_lra.ARG.S.THEORY)
Module type S.THEORY
A theory
Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.
Typically a theory should be a functor taking an argument containing a SOLVER_INTERNAL or even a full SOLVER, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type Sidekick_core.SOLVER.theory) can be added to the solver.
Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state equivalent to what it was just before push_level.
it does not have to be exactly the same state, it just needs to be equivalent.
pop_levels theory n pops n backtracking levels, restoring theory to its state before calling push_level n times.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-ARG/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/index.html
new file mode 100644
index 00000000..c60cdb38
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-ARG/index.html
@@ -0,0 +1,2 @@
+
+ARG (sidekick.Sidekick_arith_lra.ARG)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-RATIONAL/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-RATIONAL/index.html
new file mode 100644
index 00000000..699a7308
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-RATIONAL/index.html
@@ -0,0 +1,2 @@
+
+RATIONAL (sidekick.Sidekick_arith_lra.RATIONAL)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/Gensym/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/Gensym/index.html
new file mode 100644
index 00000000..cb8edcbd
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/Gensym/index.html
@@ -0,0 +1,2 @@
+
+Gensym (sidekick.Sidekick_arith_lra.S.A.Gensym)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/Q/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/Q/index.html
new file mode 100644
index 00000000..b200360f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra.S.A.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Atom/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Atom/index.html
new file mode 100644
index 00000000..be97fcd7
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Atom/index.html
@@ -0,0 +1,2 @@
+
+Atom (sidekick.Sidekick_arith_lra.S.A.S.Atom)
Module S.Atom
Boolean Atoms
Atoms are the SAT solver's version of our boolean literals (they may have a different representation).
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Lit/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Lit/index.html
new file mode 100644
index 00000000..44591830
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Lit/index.html
@@ -0,0 +1,2 @@
+
+Lit (sidekick.Sidekick_arith_lra.S.A.S.Lit)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Model/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Model/index.html
new file mode 100644
index 00000000..f2c2f27c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Model/index.html
@@ -0,0 +1,2 @@
+
+Model (sidekick.Sidekick_arith_lra.S.A.S.Model)
Module S.Model
Models
A model can be produced when the solver is found to be in a satisfiable state after a call to solve.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/P/Quip/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/P/Quip/index.html
new file mode 100644
index 00000000..581d6ea1
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/P/Quip/index.html
@@ -0,0 +1,2 @@
+
+Quip (sidekick.Sidekick_arith_lra.S.A.S.P.Quip)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/P/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/P/index.html
new file mode 100644
index 00000000..614babc1
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/P/index.html
@@ -0,0 +1,2 @@
+
+P (sidekick.Sidekick_arith_lra.S.A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Pre_proof/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Pre_proof/index.html
new file mode 100644
index 00000000..3fc7c327
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Pre_proof/index.html
@@ -0,0 +1,2 @@
+
+Pre_proof (sidekick.Sidekick_arith_lra.S.A.S.Pre_proof)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/Actions/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/Actions/index.html
new file mode 100644
index 00000000..cb26de66
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/Actions/index.html
@@ -0,0 +1,2 @@
+
+Actions (sidekick.Sidekick_arith_lra.S.A.S.Solver_internal.CC.Actions)
An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.
This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/Expl/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/Expl/index.html
new file mode 100644
index 00000000..58e76d75
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/Expl/index.html
@@ -0,0 +1,2 @@
+
+Expl (sidekick.Sidekick_arith_lra.S.A.S.Solver_internal.CC.Expl)
Module CC.Expl
Explanations
Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/N/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/N/index.html
new file mode 100644
index 00000000..80917252
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/N/index.html
@@ -0,0 +1,2 @@
+
+N (sidekick.Sidekick_arith_lra.S.A.S.Solver_internal.CC.N)
Module CC.N
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
All information pertaining to the whole equivalence class is stored in this representative's node.
When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.
We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.
type t
An equivalent class, containing terms that are proved to be equal.
A value of type t points to a particular term, but see find to get the representative of the class.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/index.html
new file mode 100644
index 00000000..fbc865e9
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/CC/index.html
@@ -0,0 +1,2 @@
+
+CC (sidekick.Sidekick_arith_lra.S.A.S.Solver_internal.CC)
An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".
ev_on_conflict acts ~th c is called when the congruence closure triggers a conflict by asserting the tautology c.
parameter th
true if the explanation for this conflict involves at least one "theory" explanation; i.e. some of the equations participating in the conflict are purely syntactic theories like injectivity of constructors.
type ev_on_propagate = t->lit->(unit ->lit list * P.t)-> unit
ev_on_is_subterm n t is called when n is a subterm of another node for the first time. t is the term corresponding to the node n. This can be useful for theory combination.
get all the equivalence classes so they can be merged in the model
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/Simplify/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/Simplify/index.html
new file mode 100644
index 00000000..5cd2790e
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/Simplify/index.html
@@ -0,0 +1,2 @@
+
+Simplify (sidekick.Sidekick_arith_lra.S.A.S.Solver_internal.Simplify)
Given a term, try to simplify it. Return None if it didn't change.
A simple example could be a hook that takes a term t, and if t is app "+" (const x) (const y) where x and y are number, returns Some (const (x+y)), and None otherwise.
Normalize a term using all the hooks, along with a proof that the simplification is correct. returns t, refl t if no simplification occurred.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/index.html
similarity index 58%
rename from dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/index.html
rename to dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/index.html
index 711d685b..5eb7d392 100644
--- a/dev/sidekick-arith/Sidekick_arith_lra/module-type-ARG/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Fun/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Fun/index.html
new file mode 100644
index 00000000..f9a3a03a
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Fun/index.html
@@ -0,0 +1,2 @@
+
+Fun (sidekick.Sidekick_arith_lra.S.A.S.T.Fun)
Module T.Fun
A function symbol, like "f" or "plus" or "is_human" or "socrates"
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Term/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Term/index.html
new file mode 100644
index 00000000..04957adc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Term/index.html
@@ -0,0 +1,8 @@
+
+Term (sidekick.Sidekick_arith_lra.S.A.S.T.Term)
Module T.Term
Term structure.
Terms should be hashconsed, with perfect sharing. This allows, for example, Term.Tbl and Term.iter_dag to be efficient.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Ty/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Ty/index.html
new file mode 100644
index 00000000..4b0a7de6
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/Ty/index.html
@@ -0,0 +1,2 @@
+
+Ty (sidekick.Sidekick_arith_lra.S.A.S.T.Ty)
Module T.Ty
Types
Types should be comparable (ideally, in O(1)), and have at least a boolean type available.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/index.html
new file mode 100644
index 00000000..8c053da9
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/T/index.html
@@ -0,0 +1,2 @@
+
+T (sidekick.Sidekick_arith_lra.S.A.S.T)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Unknown/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Unknown/index.html
new file mode 100644
index 00000000..5a7bc5cc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/Unknown/index.html
@@ -0,0 +1,2 @@
+
+Unknown (sidekick.Sidekick_arith_lra.S.A.S.Unknown)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/index.html
new file mode 100644
index 00000000..8c33e93f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra.S.A.S)
It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.
parameter store_proof
if true, proofs from the SAT solver and theories are retained and potentially accessible after solve returns UNSAT.
parameter size
influences the size of initial allocations.
parameter theories
theories to load from the start. Other theories can be added using add_theory.
Add a theory to the solver. This should be called before any call to solve or to add_clause and the likes (otherwise the theory will have a partial view of the problem).
Print some statistics. What it prints exactly is unspecified.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/module-type-THEORY/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/module-type-THEORY/index.html
new file mode 100644
index 00000000..7a0698d6
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/S/module-type-THEORY/index.html
@@ -0,0 +1,2 @@
+
+THEORY (sidekick.Sidekick_arith_lra.S.A.S.THEORY)
Module type S.THEORY
A theory
Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.
Typically a theory should be a functor taking an argument containing a SOLVER_INTERNAL or even a full SOLVER, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type Sidekick_core.SOLVER.theory) can be added to the solver.
Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state equivalent to what it was just before push_level.
it does not have to be exactly the same state, it just needs to be equivalent.
pop_levels theory n pops n backtracking levels, restoring theory to its state before calling push_level n times.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/A/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/index.html
new file mode 100644
index 00000000..c920d348
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/A/index.html
@@ -0,0 +1,2 @@
+
+A (sidekick.Sidekick_arith_lra.S.A)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra/module-type-S/index.html
new file mode 100644
index 00000000..fb0a59cc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra.S)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__Config/.dune-keep b/dev/sidekick/Sidekick_arith_lra__/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__Config/.dune-keep
rename to dev/sidekick/Sidekick_arith_lra__/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Comb/Infix/index.html
new file mode 100644
index 00000000..11460af4
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Linear_expr.Make.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Comb/index.html
new file mode 100644
index 00000000..bd0b4f52
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__.Linear_expr.Make.Comb)
Module Make.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Constr/index.html
new file mode 100644
index 00000000..20b39280
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__.Linear_expr.Make.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Expr/Infix/index.html
new file mode 100644
index 00000000..c1b9ba26
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Linear_expr.Make.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Expr/index.html
new file mode 100644
index 00000000..d370ddee
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__.Linear_expr.Make.Expr)
Module Make.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/argument-1-C/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/argument-1-C/index.html
new file mode 100644
index 00000000..2b325293
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/argument-1-C/index.html
@@ -0,0 +1,2 @@
+
+1-C (sidekick.Sidekick_arith_lra__.Linear_expr.Make.1-C)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/argument-2-Var/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/argument-2-Var/index.html
new file mode 100644
index 00000000..b88f9483
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/argument-2-Var/index.html
@@ -0,0 +1,2 @@
+
+2-Var (sidekick.Sidekick_arith_lra__.Linear_expr.Make.2-Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/index.html
new file mode 100644
index 00000000..8002a63e
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick.Sidekick_arith_lra__.Linear_expr.Make)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/index.html
new file mode 100644
index 00000000..e7ffea1b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/index.html
@@ -0,0 +1,2 @@
+
+Linear_expr (sidekick.Sidekick_arith_lra__.Linear_expr)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-COEFF/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-COEFF/index.html
new file mode 100644
index 00000000..38e12607
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-COEFF/index.html
@@ -0,0 +1,2 @@
+
+COEFF (sidekick.Sidekick_arith_lra__.Linear_expr.COEFF)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/C/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/C/index.html
new file mode 100644
index 00000000..0e75e447
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/C/index.html
@@ -0,0 +1,2 @@
+
+C (sidekick.Sidekick_arith_lra__.Linear_expr.S.C)
Module S.C
Coeficients used. Can be integers as well as rationals.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Comb/Infix/index.html
new file mode 100644
index 00000000..21301a69
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Linear_expr.S.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Comb/index.html
new file mode 100644
index 00000000..6209ce2a
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__.Linear_expr.S.Comb)
Module S.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Constr/index.html
new file mode 100644
index 00000000..ddb90f16
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__.Linear_expr.S.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Expr/Infix/index.html
new file mode 100644
index 00000000..1313cf72
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Linear_expr.S.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Expr/index.html
new file mode 100644
index 00000000..072cba46
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__.Linear_expr.S.Expr)
Module S.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Var/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Var/index.html
new file mode 100644
index 00000000..835c3622
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/Var/index.html
@@ -0,0 +1,2 @@
+
+Var (sidekick.Sidekick_arith_lra__.Linear_expr.S.Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/index.html
new file mode 100644
index 00000000..fbef19e4
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__.Linear_expr.S)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-VAR/index.html
new file mode 100644
index 00000000..bb876032
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra__.Linear_expr.VAR)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/index.html
new file mode 100644
index 00000000..e2115566
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/index.html
@@ -0,0 +1,2 @@
+
+Linear_expr_intf (sidekick.Sidekick_arith_lra__.Linear_expr_intf)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-COEFF/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-COEFF/index.html
new file mode 100644
index 00000000..645eb006
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-COEFF/index.html
@@ -0,0 +1,2 @@
+
+COEFF (sidekick.Sidekick_arith_lra__.Linear_expr_intf.COEFF)
Module type Linear_expr_intf.COEFF
Coefficients
Coefficients are used in expressions. They usually are either rationals, or integers.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/C/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/C/index.html
new file mode 100644
index 00000000..1805a07f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/C/index.html
@@ -0,0 +1,2 @@
+
+C (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S.C)
Module S.C
Coeficients used. Can be integers as well as rationals.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Comb/Infix/index.html
new file mode 100644
index 00000000..03f829cb
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Comb/index.html
new file mode 100644
index 00000000..bc9f55ca
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S.Comb)
Module S.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Constr/index.html
new file mode 100644
index 00000000..1c7f3d01
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Expr/Infix/index.html
new file mode 100644
index 00000000..3b8bb63b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Expr/index.html
new file mode 100644
index 00000000..df4c15e5
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S.Expr)
Module S.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Var/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Var/index.html
new file mode 100644
index 00000000..06103677
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/Var/index.html
@@ -0,0 +1,2 @@
+
+Var (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S.Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/index.html
new file mode 100644
index 00000000..1f97e9da
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__.Linear_expr_intf.S)
Module type Linear_expr_intf.S
Linear expressions & formulas.
This modules defines linear expressions (which are linear combinations of variables), and linear constraints, where the value of a linear expressions is constrained.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-VAR/index.html
new file mode 100644
index 00000000..71d8eed3
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Linear_expr_intf/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra__.Linear_expr_intf.VAR)
Module type Linear_expr_intf.VAR
Variable interface
Standard interface for variables that are meant to be used in expressions.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Predicate/index.html b/dev/sidekick/Sidekick_arith_lra__/Predicate/index.html
new file mode 100644
index 00000000..44d25bd8
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Predicate/index.html
@@ -0,0 +1,2 @@
+
+Predicate (sidekick.Sidekick_arith_lra__.Predicate)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Constraint/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Constraint/index.html
new file mode 100644
index 00000000..13cafce1
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Constraint/index.html
@@ -0,0 +1,2 @@
+
+Constraint (sidekick.Sidekick_arith_lra__.Simplex2.Make.Constraint)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Subst/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Subst/index.html
new file mode 100644
index 00000000..77bc1543
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Subst/index.html
@@ -0,0 +1,2 @@
+
+Subst (sidekick.Sidekick_arith_lra__.Simplex2.Make.Subst)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Unsat_cert/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Unsat_cert/index.html
new file mode 100644
index 00000000..ce0a25d4
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/Unsat_cert/index.html
@@ -0,0 +1,2 @@
+
+Unsat_cert (sidekick.Sidekick_arith_lra__.Simplex2.Make.Unsat_cert)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/argument-1-Q/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/argument-1-Q/index.html
new file mode 100644
index 00000000..50ec397f
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/argument-1-Q/index.html
@@ -0,0 +1,2 @@
+
+1-Q (sidekick.Sidekick_arith_lra__.Simplex2.Make.1-Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/argument-2-Var/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/argument-2-Var/index.html
new file mode 100644
index 00000000..200ad723
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/argument-2-Var/index.html
@@ -0,0 +1,2 @@
+
+2-Var (sidekick.Sidekick_arith_lra__.Simplex2.Make.2-Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/index.html
new file mode 100644
index 00000000..53a7d11e
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick.Sidekick_arith_lra__.Simplex2.Make)
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
val check : on_propagate:(V.lit->reason:V.lit list-> unit)->t->result
Call check_exn and return a model or a proof of unsat.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/Op/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Op/index.html
new file mode 100644
index 00000000..08a1feb2
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/Op/index.html
@@ -0,0 +1,2 @@
+
+Op (sidekick.Sidekick_arith_lra__.Simplex2.Op)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/index.html
new file mode 100644
index 00000000..83d46a67
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/index.html
@@ -0,0 +1,2 @@
+
+Simplex2 (sidekick.Sidekick_arith_lra__.Simplex2)
Module Sidekick_arith_lra__.Simplex2
Fast Simplex for CDCL(T)
We follow the paper "Integrating Simplex with DPLL(T )" from de Moura and Dutertre.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-RATIONAL/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-RATIONAL/index.html
new file mode 100644
index 00000000..da7442ef
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-RATIONAL/index.html
@@ -0,0 +1,2 @@
+
+RATIONAL (sidekick.Sidekick_arith_lra__.Simplex2.RATIONAL)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Constraint/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Constraint/index.html
new file mode 100644
index 00000000..e1c738e3
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Constraint/index.html
@@ -0,0 +1,2 @@
+
+Constraint (sidekick.Sidekick_arith_lra__.Simplex2.S.Constraint)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Q/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Q/index.html
new file mode 100644
index 00000000..7985acd9
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra__.Simplex2.S.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Subst/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Subst/index.html
new file mode 100644
index 00000000..23e68b76
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Subst/index.html
@@ -0,0 +1,2 @@
+
+Subst (sidekick.Sidekick_arith_lra__.Simplex2.S.Subst)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Unsat_cert/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Unsat_cert/index.html
new file mode 100644
index 00000000..f9ac8653
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/Unsat_cert/index.html
@@ -0,0 +1,2 @@
+
+Unsat_cert (sidekick.Sidekick_arith_lra__.Simplex2.S.Unsat_cert)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/V/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/V/index.html
new file mode 100644
index 00000000..8773da76
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/V/index.html
@@ -0,0 +1,2 @@
+
+V (sidekick.Sidekick_arith_lra__.Simplex2.S.V)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/index.html
new file mode 100644
index 00000000..bd45622a
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__.Simplex2.S)
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
val check : on_propagate:(V.lit->reason:V.lit list-> unit)->t->result
Call check_exn and return a model or a proof of unsat.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-VAR/index.html
new file mode 100644
index 00000000..f2744af8
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex2/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra__.Simplex2.VAR)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/index.html
new file mode 100644
index 00000000..9012b9e0
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/index.html
@@ -0,0 +1,2 @@
+
+Simplex_intf (sidekick.Sidekick_arith_lra__.Simplex_intf)
Module Sidekick_arith_lra__.Simplex_intf
Modular and incremental implementation of the general simplex
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-RATIONAL/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-RATIONAL/index.html
new file mode 100644
index 00000000..405a78f4
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-RATIONAL/index.html
@@ -0,0 +1,2 @@
+
+RATIONAL (sidekick.Sidekick_arith_lra__.Simplex_intf.RATIONAL)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S/Q/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S/Q/index.html
new file mode 100644
index 00000000..5db67026
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra__.Simplex_intf.S.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S/index.html
new file mode 100644
index 00000000..e8226a75
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__.Simplex_intf.S)
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
val add_upper_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.tVar_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/C/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/C/index.html
new file mode 100644
index 00000000..6f43d402
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/C/index.html
@@ -0,0 +1,2 @@
+
+C (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L.C)
Module L.C
Coeficients used. Can be integers as well as rationals.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Comb/Infix/index.html
new file mode 100644
index 00000000..f035f7a7
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Comb/index.html
new file mode 100644
index 00000000..306848a8
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L.Comb)
Module L.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Constr/index.html
new file mode 100644
index 00000000..cd64caaf
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Expr/Infix/index.html
new file mode 100644
index 00000000..e00353fd
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Expr/index.html
new file mode 100644
index 00000000..2dac3338
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L.Expr)
Module L.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Var/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Var/index.html
new file mode 100644
index 00000000..af496e99
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/Var/index.html
@@ -0,0 +1,2 @@
+
+Var (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L.Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/index.html
new file mode 100644
index 00000000..585395c7
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/L/index.html
@@ -0,0 +1,2 @@
+
+L (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.L)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/Q/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/Q/index.html
new file mode 100644
index 00000000..0d992909
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/index.html b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/index.html
new file mode 100644
index 00000000..15dcecfe
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/Simplex_intf/module-type-S_FULL/index.html
@@ -0,0 +1,2 @@
+
+S_FULL (sidekick.Sidekick_arith_lra__.Simplex_intf.S_FULL)
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
val add_upper_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.tVar_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__/index.html b/dev/sidekick/Sidekick_arith_lra__/index.html
new file mode 100644
index 00000000..e6f4f426
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith_lra__ (sidekick.Sidekick_arith_lra__)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__Hashcons/.dune-keep b/dev/sidekick/Sidekick_arith_lra__Linear_expr/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__Hashcons/.dune-keep
rename to dev/sidekick/Sidekick_arith_lra__Linear_expr/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Comb/Infix/index.html
new file mode 100644
index 00000000..5e077f86
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__Linear_expr.Make.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Comb/index.html
new file mode 100644
index 00000000..a449c5ef
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__Linear_expr.Make.Comb)
Module Make.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Constr/index.html
new file mode 100644
index 00000000..c4eb94c4
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__Linear_expr.Make.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Expr/Infix/index.html
new file mode 100644
index 00000000..d32ac444
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__Linear_expr.Make.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Expr/index.html
new file mode 100644
index 00000000..e5988be3
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__Linear_expr.Make.Expr)
Module Make.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/argument-1-C/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/argument-1-C/index.html
new file mode 100644
index 00000000..974d8476
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/argument-1-C/index.html
@@ -0,0 +1,2 @@
+
+1-C (sidekick.Sidekick_arith_lra__Linear_expr.Make.1-C)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/argument-2-Var/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/argument-2-Var/index.html
new file mode 100644
index 00000000..425b5b03
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/argument-2-Var/index.html
@@ -0,0 +1,2 @@
+
+2-Var (sidekick.Sidekick_arith_lra__Linear_expr.Make.2-Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/index.html
new file mode 100644
index 00000000..b537d858
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick.Sidekick_arith_lra__Linear_expr.Make)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/index.html
new file mode 100644
index 00000000..485671c0
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith_lra__Linear_expr (sidekick.Sidekick_arith_lra__Linear_expr)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-COEFF/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-COEFF/index.html
new file mode 100644
index 00000000..805f0273
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-COEFF/index.html
@@ -0,0 +1,2 @@
+
+COEFF (sidekick.Sidekick_arith_lra__Linear_expr.COEFF)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/C/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/C/index.html
new file mode 100644
index 00000000..6dae991d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/C/index.html
@@ -0,0 +1,2 @@
+
+C (sidekick.Sidekick_arith_lra__Linear_expr.S.C)
Module S.C
Coeficients used. Can be integers as well as rationals.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Comb/Infix/index.html
new file mode 100644
index 00000000..ccdb55f5
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__Linear_expr.S.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Comb/index.html
new file mode 100644
index 00000000..a2042aaf
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__Linear_expr.S.Comb)
Module S.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Constr/index.html
new file mode 100644
index 00000000..97bf7ff7
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__Linear_expr.S.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Expr/Infix/index.html
new file mode 100644
index 00000000..3f9a40c6
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__Linear_expr.S.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Expr/index.html
new file mode 100644
index 00000000..9633625d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__Linear_expr.S.Expr)
Module S.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Var/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Var/index.html
new file mode 100644
index 00000000..051e022b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/Var/index.html
@@ -0,0 +1,2 @@
+
+Var (sidekick.Sidekick_arith_lra__Linear_expr.S.Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/index.html
new file mode 100644
index 00000000..42441278
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__Linear_expr.S)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-VAR/index.html
new file mode 100644
index 00000000..d0c01fa0
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra__Linear_expr.VAR)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__ID/.dune-keep b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__ID/.dune-keep
rename to dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/index.html
new file mode 100644
index 00000000..50222eaa
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith_lra__Linear_expr_intf (sidekick.Sidekick_arith_lra__Linear_expr_intf)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-COEFF/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-COEFF/index.html
new file mode 100644
index 00000000..c5872751
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-COEFF/index.html
@@ -0,0 +1,2 @@
+
+COEFF (sidekick.Sidekick_arith_lra__Linear_expr_intf.COEFF)
Module type Sidekick_arith_lra__Linear_expr_intf.COEFF
Coefficients
Coefficients are used in expressions. They usually are either rationals, or integers.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/C/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/C/index.html
new file mode 100644
index 00000000..bde043c3
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/C/index.html
@@ -0,0 +1,2 @@
+
+C (sidekick.Sidekick_arith_lra__Linear_expr_intf.S.C)
Module S.C
Coeficients used. Can be integers as well as rationals.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Comb/Infix/index.html
new file mode 100644
index 00000000..097de165
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Comb/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__Linear_expr_intf.S.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Comb/index.html
new file mode 100644
index 00000000..7ac3c107
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__Linear_expr_intf.S.Comb)
Module S.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Constr/index.html
new file mode 100644
index 00000000..535e2ae7
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__Linear_expr_intf.S.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Expr/Infix/index.html
new file mode 100644
index 00000000..a8619efa
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Expr/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_arith_lra__Linear_expr_intf.S.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Expr/index.html
new file mode 100644
index 00000000..eac5e67e
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__Linear_expr_intf.S.Expr)
Module S.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Var/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Var/index.html
new file mode 100644
index 00000000..01f57bcc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/Var/index.html
@@ -0,0 +1,2 @@
+
+Var (sidekick.Sidekick_arith_lra__Linear_expr_intf.S.Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/index.html
new file mode 100644
index 00000000..76e0efd7
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__Linear_expr_intf.S)
Module type Sidekick_arith_lra__Linear_expr_intf.S
Linear expressions & formulas.
This modules defines linear expressions (which are linear combinations of variables), and linear constraints, where the value of a linear expressions is constrained.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-VAR/index.html
new file mode 100644
index 00000000..6cd4264b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Linear_expr_intf/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra__Linear_expr_intf.VAR)
Module type Sidekick_arith_lra__Linear_expr_intf.VAR
Variable interface
Standard interface for variables that are meant to be used in expressions.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__Model/.dune-keep b/dev/sidekick/Sidekick_arith_lra__Predicate/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__Model/.dune-keep
rename to dev/sidekick/Sidekick_arith_lra__Predicate/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith_lra__Predicate/index.html b/dev/sidekick/Sidekick_arith_lra__Predicate/index.html
new file mode 100644
index 00000000..b0dedd98
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Predicate/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith_lra__Predicate (sidekick.Sidekick_arith_lra__Predicate)
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_base_term__Proof/.dune-keep b/dev/sidekick/Sidekick_arith_lra__Simplex2/.dune-keep
similarity index 100%
rename from dev/sidekick-arith/Sidekick_base_term__Proof/.dune-keep
rename to dev/sidekick/Sidekick_arith_lra__Simplex2/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Constraint/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Constraint/index.html
new file mode 100644
index 00000000..c6c1071d
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Constraint/index.html
@@ -0,0 +1,2 @@
+
+Constraint (sidekick.Sidekick_arith_lra__Simplex2.Make.Constraint)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Subst/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Subst/index.html
new file mode 100644
index 00000000..5bdca39b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Subst/index.html
@@ -0,0 +1,2 @@
+
+Subst (sidekick.Sidekick_arith_lra__Simplex2.Make.Subst)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Unsat_cert/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Unsat_cert/index.html
new file mode 100644
index 00000000..9601fe86
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/Unsat_cert/index.html
@@ -0,0 +1,2 @@
+
+Unsat_cert (sidekick.Sidekick_arith_lra__Simplex2.Make.Unsat_cert)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/argument-1-Q/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/argument-1-Q/index.html
new file mode 100644
index 00000000..9934eb8e
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/argument-1-Q/index.html
@@ -0,0 +1,2 @@
+
+1-Q (sidekick.Sidekick_arith_lra__Simplex2.Make.1-Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/argument-2-Var/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/argument-2-Var/index.html
new file mode 100644
index 00000000..3a9094b2
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/argument-2-Var/index.html
@@ -0,0 +1,2 @@
+
+2-Var (sidekick.Sidekick_arith_lra__Simplex2.Make.2-Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/index.html
new file mode 100644
index 00000000..c47bdaba
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (sidekick.Sidekick_arith_lra__Simplex2.Make)
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
val check : on_propagate:(V.lit->reason:V.lit list-> unit)->t->result
Call check_exn and return a model or a proof of unsat.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/Op/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/Op/index.html
new file mode 100644
index 00000000..51c0b503
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/Op/index.html
@@ -0,0 +1,2 @@
+
+Op (sidekick.Sidekick_arith_lra__Simplex2.Op)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/index.html
new file mode 100644
index 00000000..6bfe9e5b
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith_lra__Simplex2 (sidekick.Sidekick_arith_lra__Simplex2)
Module Sidekick_arith_lra__Simplex2
Fast Simplex for CDCL(T)
We follow the paper "Integrating Simplex with DPLL(T )" from de Moura and Dutertre.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-RATIONAL/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-RATIONAL/index.html
new file mode 100644
index 00000000..b335accc
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-RATIONAL/index.html
@@ -0,0 +1,2 @@
+
+RATIONAL (sidekick.Sidekick_arith_lra__Simplex2.RATIONAL)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Constraint/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Constraint/index.html
new file mode 100644
index 00000000..4297af4a
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Constraint/index.html
@@ -0,0 +1,2 @@
+
+Constraint (sidekick.Sidekick_arith_lra__Simplex2.S.Constraint)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Q/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Q/index.html
new file mode 100644
index 00000000..4886b75a
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra__Simplex2.S.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Subst/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Subst/index.html
new file mode 100644
index 00000000..79a4c631
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Subst/index.html
@@ -0,0 +1,2 @@
+
+Subst (sidekick.Sidekick_arith_lra__Simplex2.S.Subst)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Unsat_cert/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Unsat_cert/index.html
new file mode 100644
index 00000000..8d68da2e
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/Unsat_cert/index.html
@@ -0,0 +1,2 @@
+
+Unsat_cert (sidekick.Sidekick_arith_lra__Simplex2.S.Unsat_cert)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/V/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/V/index.html
new file mode 100644
index 00000000..634350eb
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/V/index.html
@@ -0,0 +1,2 @@
+
+V (sidekick.Sidekick_arith_lra__Simplex2.S.V)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/index.html
new file mode 100644
index 00000000..1289698c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__Simplex2.S)
Define a basic variable in terms of other variables. This is useful to "name" a linear expression and get back a variable that can be used in a Constraint.t
val check : on_propagate:(V.lit->reason:V.lit list-> unit)->t->result
Call check_exn and return a model or a proof of unsat.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-VAR/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-VAR/index.html
new file mode 100644
index 00000000..3270e002
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex2/module-type-VAR/index.html
@@ -0,0 +1,2 @@
+
+VAR (sidekick.Sidekick_arith_lra__Simplex2.VAR)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util__Intf/.dune-keep b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/.dune-keep
similarity index 100%
rename from dev/sidekick/Sidekick_util__Intf/.dune-keep
rename to dev/sidekick/Sidekick_arith_lra__Simplex_intf/.dune-keep
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/index.html
new file mode 100644
index 00000000..b979eacd
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_arith_lra__Simplex_intf (sidekick.Sidekick_arith_lra__Simplex_intf)
Module Sidekick_arith_lra__Simplex_intf
Modular and incremental implementation of the general simplex
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-RATIONAL/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-RATIONAL/index.html
new file mode 100644
index 00000000..a6cfd01c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-RATIONAL/index.html
@@ -0,0 +1,2 @@
+
+RATIONAL (sidekick.Sidekick_arith_lra__Simplex_intf.RATIONAL)
Module type Sidekick_arith_lra__Simplex_intf.RATIONAL
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S/Q/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S/Q/index.html
new file mode 100644
index 00000000..5e45a941
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra__Simplex_intf.S.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S/index.html
new file mode 100644
index 00000000..3f912192
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_arith_lra__Simplex_intf.S)
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
val add_upper_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.tVar_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/C/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/C/index.html
new file mode 100644
index 00000000..b105601c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/C/index.html
@@ -0,0 +1,2 @@
+
+C (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL.L.C)
Module L.C
Coeficients used. Can be integers as well as rationals.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/Linear_expr/Make/Comb/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Comb/Infix/index.html
similarity index 84%
rename from dev/sidekick-arith/Sidekick_arith_lra/Linear_expr/Make/Comb/Infix/index.html
rename to dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Comb/Infix/index.html
index 0454fafa..620b0fa9 100644
--- a/dev/sidekick-arith/Sidekick_arith_lra/Linear_expr/Make/Comb/Infix/index.html
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Comb/Infix/index.html
@@ -1,2 +1,2 @@
-Infix (sidekick-arith.Sidekick_arith_lra.Linear_expr.Make.Comb.Infix)
Module Comb.Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Comb/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Comb/index.html
new file mode 100644
index 00000000..7c209d38
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Comb/index.html
@@ -0,0 +1,2 @@
+
+Comb (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL.L.Comb)
Module L.Comb
Combinations.
This module defines linear combnations as mapping from variables to coefficients. This allows for very fast computations.
Evaluate a linear combination given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Constr/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Constr/index.html
new file mode 100644
index 00000000..404d0f73
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Constr/index.html
@@ -0,0 +1,2 @@
+
+Constr (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL.L.Constr)
Evaluate the given constraint under a substitution.
\ No newline at end of file
diff --git a/dev/sidekick-arith/Sidekick_arith_lra/Linear_expr/Make/Expr/Infix/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Expr/Infix/index.html
similarity index 84%
rename from dev/sidekick-arith/Sidekick_arith_lra/Linear_expr/Make/Expr/Infix/index.html
rename to dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Expr/Infix/index.html
index 5f23c6e4..a372193c 100644
--- a/dev/sidekick-arith/Sidekick_arith_lra/Linear_expr/Make/Expr/Infix/index.html
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Expr/Infix/index.html
@@ -1,2 +1,2 @@
-Infix (sidekick-arith.Sidekick_arith_lra.Linear_expr.Make.Expr.Infix)
Module Expr.Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Expr/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Expr/index.html
new file mode 100644
index 00000000..260c092c
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Expr/index.html
@@ -0,0 +1,2 @@
+
+Expr (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL.L.Expr)
Module L.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
Evaluate a linear expression given a substitution for its variables. TODO: document potential exceptions raised ?
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Var/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Var/index.html
new file mode 100644
index 00000000..51b0e8ea
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/Var/index.html
@@ -0,0 +1,2 @@
+
+Var (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL.L.Var)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/index.html
new file mode 100644
index 00000000..c97a6d08
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/L/index.html
@@ -0,0 +1,2 @@
+
+L (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL.L)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/Q/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/Q/index.html
new file mode 100644
index 00000000..0bf4fcde
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/Q/index.html
@@ -0,0 +1,2 @@
+
+Q (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL.Q)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/index.html b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/index.html
new file mode 100644
index 00000000..c5ef85bf
--- /dev/null
+++ b/dev/sidekick/Sidekick_arith_lra__Simplex_intf/module-type-S_FULL/index.html
@@ -0,0 +1,2 @@
+
+S_FULL (sidekick.Sidekick_arith_lra__Simplex_intf.S_FULL)
Module type Sidekick_arith_lra__Simplex_intf.S_FULL
An unsatisfiability explanation is a couple (x, expr). If expr is the empty list, then there is a contradiction between two given bounds of x. Else, the explanation is an equality x = expr that is valid (it can be derived from the original equations of the system) from which a bound can be deduced which contradicts an already given bound of the system.
Generic type returned when solving the simplex. A solution is a list of bindings that satisfies all the constraints inside the system. If the system is unsatisfiable, an explanation of type 'cert is returned.
val add_bounds : t->?strict_lower:bool->?strict_upper:bool->?lower_reason:lit->?upper_reason:lit->(var * Q.t * Q.t)-> unit
add_bounds (x, lower, upper) adds to s the bounds lower and upper for the given variable x. If the bound is loose on one side (no upper bounds for instance), the values Q.inf and Q.minus_inf can be used. By default, in a system, all variables have no bounds, i.e have lower bound Q.minus_inf and upper bound Q.inf. Optional parameters allow to make the the bounds strict. Defaults to false, so that bounds are large by default.
val add_lower_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
val add_upper_bound : t->?strict:bool->reason:lit->var->Q.t-> unit
solve s solves the system s and returns a solution, if one exists. This function may change the internal representation of the system to that of an equivalent one (permutation of basic and non basic variables and pivot operation on the tableaux).
val check_cert : t->cert->[ `Ok of lit list| `Bad_bounds of string * string| `Diff_not_0 of Q.tVar_map.t ]
checks that the certificat indeed yields to a contradiction in the current state of the simplex.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_cc/Make/argument-1-A/P/index.html b/dev/sidekick/Sidekick_cc/Make/argument-1-A/P/index.html
index 5c5ad5d1..4feead72 100644
--- a/dev/sidekick/Sidekick_cc/Make/argument-1-A/P/index.html
+++ b/dev/sidekick/Sidekick_cc/Make/argument-1-A/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_cc.Make.1-A.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_cc/module-type-S/P/index.html b/dev/sidekick/Sidekick_cc/module-type-S/P/index.html
index f7f90f93..6070c51e 100644
--- a/dev/sidekick/Sidekick_cc/module-type-S/P/index.html
+++ b/dev/sidekick/Sidekick_cc/module-type-S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_cc.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/P/index.html b/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/P/index.html
index 615c1659..ac77577e 100644
--- a/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/P/index.html
+++ b/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_core.Monoid_of_repr.1-M.SI.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/index.html b/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/index.html
index 69a60957..6c8af844 100644
--- a/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/index.html
+++ b/dev/sidekick/Sidekick_core/Monoid_of_repr/argument-1-M/SI/index.html
@@ -1,2 +1,2 @@
-SI (sidekick.Sidekick_core.Monoid_of_repr.1-M.SI)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-CC_ACTIONS/P/index.html b/dev/sidekick/Sidekick_core/module-type-CC_ACTIONS/P/index.html
index 2a8e97cd..5a7a6d5c 100644
--- a/dev/sidekick/Sidekick_core/module-type-CC_ACTIONS/P/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-CC_ACTIONS/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_core.CC_ACTIONS.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-CC_ARG/P/index.html b/dev/sidekick/Sidekick_core/module-type-CC_ARG/P/index.html
index 1c228b53..9441160f 100644
--- a/dev/sidekick/Sidekick_core/module-type-CC_ARG/P/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-CC_ARG/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_core.CC_ARG.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-CC_S/P/index.html b/dev/sidekick/Sidekick_core/module-type-CC_S/P/index.html
index a421a6c1..1b168762 100644
--- a/dev/sidekick/Sidekick_core/module-type-CC_S/P/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-CC_S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_core.CC_S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/P/index.html b/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/P/index.html
index de9dda24..9f69e926 100644
--- a/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/P/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_core.MONOID_ARG.SI.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/index.html b/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/index.html
index 25a4a068..5d56df47 100644
--- a/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-MONOID_ARG/SI/index.html
@@ -1,2 +1,2 @@
-SI (sidekick.Sidekick_core.MONOID_ARG.SI)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-PROOF/index.html b/dev/sidekick/Sidekick_core/module-type-PROOF/index.html
index c5a73b97..bca500ec 100644
--- a/dev/sidekick/Sidekick_core/module-type-PROOF/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-PROOF/index.html
@@ -1,2 +1,2 @@
-PROOF (sidekick.Sidekick_core.PROOF)
Module type Sidekick_core.PROOF
type term
type ty
type t
type hres_step
hyper-resolution steps: resolution, unit resolution; bool paramodulation, unit bool paramodulation
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-SOLVER/P/index.html b/dev/sidekick/Sidekick_core/module-type-SOLVER/P/index.html
index 19c1a0e6..76298c7e 100644
--- a/dev/sidekick/Sidekick_core/module-type-SOLVER/P/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-SOLVER/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_core.SOLVER.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-SOLVER/Solver_internal/index.html b/dev/sidekick/Sidekick_core/module-type-SOLVER/Solver_internal/index.html
index 8259c2a9..78206eec 100644
--- a/dev/sidekick/Sidekick_core/module-type-SOLVER/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-SOLVER/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_core.SOLVER.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/P/index.html b/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/P/index.html
index bc5fba09..51dd2084 100644
--- a/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/P/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_core.SOLVER_INTERNAL.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/index.html b/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/index.html
index 1efe1816..f90b57b8 100644
--- a/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/index.html
+++ b/dev/sidekick/Sidekick_core/module-type-SOLVER_INTERNAL/index.html
@@ -1,2 +1,2 @@
-SOLVER_INTERNAL (sidekick.Sidekick_core.SOLVER_INTERNAL)
Module type Sidekick_core.SOLVER_INTERNAL
A view of the solver from a theory's point of view.
Theories should interact with the solver via this module, to assert new lemmas, propagate literals, access the congruence closure, etc.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_msat_solver/Make/Solver_internal/index.html b/dev/sidekick/Sidekick_msat_solver/Make/Solver_internal/index.html
index 9bd88b9a..2948f6bb 100644
--- a/dev/sidekick/Sidekick_msat_solver/Make/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_msat_solver/Make/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_msat_solver.Make.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_msat_solver/Make/argument-1-A/P/index.html b/dev/sidekick/Sidekick_msat_solver/Make/argument-1-A/P/index.html
index 54610786..94c174fc 100644
--- a/dev/sidekick/Sidekick_msat_solver/Make/argument-1-A/P/index.html
+++ b/dev/sidekick/Sidekick_msat_solver/Make/argument-1-A/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_msat_solver.Make.1-A.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_msat_solver/module-type-ARG/P/index.html b/dev/sidekick/Sidekick_msat_solver/module-type-ARG/P/index.html
index 39339b69..247949f5 100644
--- a/dev/sidekick/Sidekick_msat_solver/module-type-ARG/P/index.html
+++ b/dev/sidekick/Sidekick_msat_solver/module-type-ARG/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_msat_solver.ARG.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_msat_solver/module-type-S/P/index.html b/dev/sidekick/Sidekick_msat_solver/module-type-S/P/index.html
index 58190425..7c3a03cf 100644
--- a/dev/sidekick/Sidekick_msat_solver/module-type-S/P/index.html
+++ b/dev/sidekick/Sidekick_msat_solver/module-type-S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_msat_solver.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_msat_solver/module-type-S/Solver_internal/index.html b/dev/sidekick/Sidekick_msat_solver/module-type-S/Solver_internal/index.html
index cc61feba..40dd02c3 100644
--- a/dev/sidekick/Sidekick_msat_solver/module-type-S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_msat_solver/module-type-S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_msat_solver.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sigs/.dune-keep b/dev/sidekick/Sidekick_sigs/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/dev/sidekick/Sidekick_sigs/index.html b/dev/sidekick/Sidekick_sigs/index.html
new file mode 100644
index 00000000..ec86b598
--- /dev/null
+++ b/dev/sidekick/Sidekick_sigs/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_sigs (sidekick.Sidekick_sigs)
type'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sigs/module-type-EQ/index.html b/dev/sidekick/Sidekick_sigs/module-type-EQ/index.html
new file mode 100644
index 00000000..072070f5
--- /dev/null
+++ b/dev/sidekick/Sidekick_sigs/module-type-EQ/index.html
@@ -0,0 +1,2 @@
+
+EQ (sidekick.Sidekick_sigs.EQ)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sigs/module-type-HASH/index.html b/dev/sidekick/Sidekick_sigs/module-type-HASH/index.html
new file mode 100644
index 00000000..2a85ad98
--- /dev/null
+++ b/dev/sidekick/Sidekick_sigs/module-type-HASH/index.html
@@ -0,0 +1,2 @@
+
+HASH (sidekick.Sidekick_sigs.HASH)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sigs/module-type-ORD/index.html b/dev/sidekick/Sidekick_sigs/module-type-ORD/index.html
new file mode 100644
index 00000000..62a48f27
--- /dev/null
+++ b/dev/sidekick/Sidekick_sigs/module-type-ORD/index.html
@@ -0,0 +1,2 @@
+
+ORD (sidekick.Sidekick_sigs.ORD)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sigs/module-type-PRINT/index.html b/dev/sidekick/Sidekick_sigs/module-type-PRINT/index.html
new file mode 100644
index 00000000..d7f2031b
--- /dev/null
+++ b/dev/sidekick/Sidekick_sigs/module-type-PRINT/index.html
@@ -0,0 +1,2 @@
+
+PRINT (sidekick.Sidekick_sigs.PRINT)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/P/index.html b/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/P/index.html
index eeb2adee..a336ce10 100644
--- a/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_bool_static.Make.1-A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/Solver_internal/index.html
index 02e9a4fd..20f84c72 100644
--- a/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_bool_static/Make/argument-1-A/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_bool_static.Make.1-A.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/P/index.html b/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/P/index.html
index e10264fc..a985113b 100644
--- a/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_bool_static.ARG.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/Solver_internal/index.html
index 27367bc0..1464915f 100644
--- a/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_bool_static/module-type-ARG/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_bool_static.ARG.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/P/index.html b/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/P/index.html
index 5634dedf..40962730 100644
--- a/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_bool_static.S.A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/Solver_internal/index.html
index 7bf40e42..aec52a35 100644
--- a/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_bool_static/module-type-S/A/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_bool_static.S.A.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/P/index.html b/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/P/index.html
index a142ccab..73c6bc18 100644
--- a/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_cstor.Make.1-A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/Solver_internal/index.html
index ae2f44a1..c5647246 100644
--- a/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_cstor/Make/argument-1-A/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_cstor.Make.1-A.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/P/index.html b/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/P/index.html
index 78e340ec..81f512da 100644
--- a/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_cstor.ARG.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/Solver_internal/index.html
index 6eedb1bf..96b30247 100644
--- a/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_cstor/module-type-ARG/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_cstor.ARG.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/P/index.html b/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/P/index.html
index 662698d3..cc99f7a5 100644
--- a/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_cstor.S.A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/Solver_internal/index.html
index d29c05ed..eedd8242 100644
--- a/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_cstor/module-type-S/A/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_cstor.S.A.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/P/index.html b/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/P/index.html
index a7938655..81376a72 100644
--- a/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_data.Make.1-A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/Solver_internal/index.html
index ff32004d..ed122cfa 100644
--- a/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_data/Make/argument-1-A/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_data.Make.1-A.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_data/module-type-ARG/S/P/index.html b/dev/sidekick/Sidekick_th_data/module-type-ARG/S/P/index.html
index 0fa28d34..50f824ed 100644
--- a/dev/sidekick/Sidekick_th_data/module-type-ARG/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_data/module-type-ARG/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_data.ARG.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_data/module-type-ARG/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_data/module-type-ARG/S/Solver_internal/index.html
index 7684c3ac..d6def99f 100644
--- a/dev/sidekick/Sidekick_th_data/module-type-ARG/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_data/module-type-ARG/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_data.ARG.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
Add a hook that will be called when a model is being produced
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_data/module-type-S/A/S/P/index.html b/dev/sidekick/Sidekick_th_data/module-type-S/A/S/P/index.html
index 0e2d206a..9b8c0f37 100644
--- a/dev/sidekick/Sidekick_th_data/module-type-S/A/S/P/index.html
+++ b/dev/sidekick/Sidekick_th_data/module-type-S/A/S/P/index.html
@@ -1,2 +1,2 @@
-P (sidekick.Sidekick_th_data.S.A.S.P)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_data/module-type-S/A/S/Solver_internal/index.html b/dev/sidekick/Sidekick_th_data/module-type-S/A/S/Solver_internal/index.html
index e16cbe58..83c0640f 100644
--- a/dev/sidekick/Sidekick_th_data/module-type-S/A/S/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_th_data/module-type-S/A/S/Solver_internal/index.html
@@ -1,2 +1,2 @@
-Solver_internal (sidekick.Sidekick_th_data.S.A.S.Solver_internal)
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
define_const si ~const ~rhs adds the definition const := rhs to the (future) proof. const should be a fresh constant that occurs nowhere else, and rhs a term defined without const.
Ask the SAT solver to decide the given literal in an extension of the current trail. This is useful for theory combination. If the SAT solver backtracks, this (potential) decision is removed and forgotten.
Callback to add data on terms when they are added to the congruence closure
val on_cc_is_subterm : t->(CC.N.t->term-> unit)-> unit
Callback for when a term is a subterm of another term in the congruence closure
val on_cc_conflict : t->(CC.t->th:bool->lit list-> unit)-> unit
Callback called on every CC conflict
val on_cc_propagate : t->(CC.t->lit->(unit ->lit list * proof)-> unit)-> unit
Callback called on every CC propagation
val on_partial_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callbacked to be called with the slice of literals newly added on the trail.
This is called very often and should be efficient. It doesn't have to be complete, only correct. It's given only the slice of the trail consisting in new literals.
val on_final_check : t->(t->actions->lit Iter.t-> unit)-> unit
Register callback to be called during the final check.
Must be complete (i.e. must raise a conflict if the set of literals is not satisfiable) and can be expensive. The function is given the whole trail.
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
Given a term, try to preprocess it. Return None if it didn't change, or Some (u,p) if t=u and p is a proof of t=u. Can also add clauses to define new terms.
Preprocessing might transform terms to make them more amenable to reasoning, e.g. by removing boolean formulas via Tseitin encoding, adding clauses that encode their meaning in the same move.
A model-production hook. It takes the solver, a class, and returns a term for this class. For example, an arithmetic theory might detect that a class contains a numeric constant, and return this constant as a model value.
If no hook assigns a value to a class, a fake value is created for it.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/index.html b/dev/sidekick/Sidekick_util/index.html
index a56f9b7d..e40efc1d 100644
--- a/dev/sidekick/Sidekick_util/index.html
+++ b/dev/sidekick/Sidekick_util/index.html
@@ -1,2 +1,2 @@
-Sidekick_util (sidekick.Sidekick_util)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util__/index.html b/dev/sidekick/Sidekick_util__/index.html
index be767bfd..7fec0673 100644
--- a/dev/sidekick/Sidekick_util__/index.html
+++ b/dev/sidekick/Sidekick_util__/index.html
@@ -1,2 +1,2 @@
-Sidekick_util__ (sidekick.Sidekick_util__)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_zarith/.dune-keep b/dev/sidekick/Sidekick_zarith/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/dev/sidekick/Sidekick_zarith/Int/index.html b/dev/sidekick/Sidekick_zarith/Int/index.html
new file mode 100644
index 00000000..39b6038c
--- /dev/null
+++ b/dev/sidekick/Sidekick_zarith/Int/index.html
@@ -0,0 +1,2 @@
+
+Int (sidekick.Sidekick_zarith.Int)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_zarith/Rational/index.html b/dev/sidekick/Sidekick_zarith/Rational/index.html
new file mode 100644
index 00000000..cbcf46b3
--- /dev/null
+++ b/dev/sidekick/Sidekick_zarith/Rational/index.html
@@ -0,0 +1,2 @@
+
+Rational (sidekick.Sidekick_zarith.Rational)
val pp_approx : int -> Stdlib.Format.formatter ->t-> unit
Pretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_zarith/index.html b/dev/sidekick/Sidekick_zarith/index.html
new file mode 100644
index 00000000..fd1edf95
--- /dev/null
+++ b/dev/sidekick/Sidekick_zarith/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_zarith (sidekick.Sidekick_zarith)
\ No newline at end of file
diff --git a/dev/sidekick/index.html b/dev/sidekick/index.html
index d4b40352..0c7b7547 100644
--- a/dev/sidekick/index.html
+++ b/dev/sidekick/index.html
@@ -1,2 +1,2 @@
-index (sidekick.index)
sidekick index
Library sidekick.cc
The entry point of this library is the module: Sidekick_cc.
Library sidekick.core
The entry point of this library is the module: Sidekick_core.
Library sidekick.mini-cc
The entry point of this library is the module: Sidekick_mini_cc.