diff --git a/dev/sidekick-base/Sidekick_base/Data_ty/index.html b/dev/sidekick-base/Sidekick_base/Data_ty/index.html index 18eda63d..cd36cc29 100644 --- a/dev/sidekick-base/Sidekick_base/Data_ty/index.html +++ b/dev/sidekick-base/Sidekick_base/Data_ty/index.html @@ -1,2 +1,2 @@ -
Sidekick_base.Data_tytype select = Types_.select = {select_id : ID.t; |
select_cstor : Types_.cstor; |
select_ty : Types_.ty lazy_t; |
select_i : int; |
}type cstor = Types_.cstor = {cstor_id : ID.t; |
cstor_is_a : ID.t; |
mutable cstor_arity : int; |
cstor_args : select list lazy_t; |
cstor_ty_as_data : Types_.data; |
cstor_ty : Types_.ty lazy_t; |
}type t = Types_.data = {data_id : ID.t; |
data_cstors : cstor Sidekick_base__.ID.Map.t lazy_t; |
data_as_ty : Types_.ty lazy_t; |
}include Sidekick_sigs.EQ_HASH_PRINT with type t := tinclude Sidekick_sigs.EQ with type t := tinclude Sidekick_sigs.HASH with type t := tval hash : t -> intinclude Sidekick_sigs.PRINT with type t := tval pp : t Sidekick_sigs.printermodule Select : sig ... endmodule Cstor : sig ... endval data : Types_.Term.store -> t -> Types_.Term.tval cstor : Types_.Term.store -> cstor -> Types_.Term.tval select : Types_.Term.store -> select -> Types_.Term.tval is_a : Types_.Term.store -> cstor -> Types_.Term.tval as_data : Types_.ty -> Types_.data optionval as_select : Types_.term -> select optionval as_cstor : Types_.term -> cstor optionval as_is_a : Types_.term -> cstor optionSidekick_base.Data_tytype select = Types_.select = {select_id : ID.t; |
select_cstor : Types_.cstor; |
select_ty : Types_.ty lazy_t; |
select_i : int; |
}type cstor = Types_.cstor = {cstor_id : ID.t; |
cstor_is_a : ID.t; |
mutable cstor_arity : int; |
cstor_args : select list lazy_t; |
cstor_ty_as_data : Types_.data; |
cstor_ty : Types_.ty lazy_t; |
}type t = Types_.data = {data_id : ID.t; |
data_cstors : cstor Sidekick_base__.ID.Map.t lazy_t; |
data_as_ty : Types_.ty lazy_t; |
}include Sidekick_sigs.EQ_HASH_PRINT with type t := tinclude Sidekick_sigs.EQ with type t := tinclude Sidekick_sigs.HASH with type t := tval hash : t -> intinclude Sidekick_sigs.PRINT with type t := tval pp : t Sidekick_sigs.printermodule Select : sig ... endmodule Cstor : sig ... endval data : Types_.Term.store -> t -> Types_.Term.tval cstor : Types_.Term.store -> cstor -> Types_.Term.tval select : Types_.Term.store -> select -> Types_.Term.tval is_a : Types_.Term.store -> cstor -> Types_.Term.tval as_data : Types_.ty -> Types_.data optionval as_select : Types_.term -> select optionval as_cstor : Types_.term -> cstor optionval as_is_a : Types_.term -> cstor optionSidekick_base.FormFormulas (boolean terms).
This module defines function symbols, constants, and views to manipulate boolean formulas in Sidekick_base. This is useful to have the ability to use boolean connectives instead of being limited to clauses; by using Sidekick_th_bool_static, the formulas are turned into clauses automatically for you.
type term = Types_.Term.ttype 'a view = 'a Sidekick_core.Bool_view.t = | B_bool of bool |
| B_not of 'a |
| B_and of 'a list |
| B_or of 'a list |
| B_imply of 'a * 'a |
| B_equiv of 'a * 'a |
| B_xor of 'a * 'a |
| B_eq of 'a * 'a |
| B_neq of 'a * 'a |
| B_ite of 'a * 'a * 'a |
| B_atom of 'a |
val bool : Types_.Term.store -> bool -> termval not_ : Types_.Term.store -> term -> termval and_ : Types_.Term.store -> term -> term -> termval or_ : Types_.Term.store -> term -> term -> termval eq : Types_.Term.store -> term -> term -> termval neq : Types_.Term.store -> term -> term -> termval imply : Types_.Term.store -> term -> term -> termval equiv : Types_.Term.store -> term -> term -> termval xor : Types_.Term.store -> term -> term -> termval ite : Types_.Term.store -> term -> term -> term -> termval distinct_l : Types_.Term.store -> term list -> termval and_l : Types_.Term.store -> term list -> termval or_l : Types_.Term.store -> term list -> termval imply_l : Types_.Term.store -> term list -> term -> termval mk_of_view : Types_.Term.store -> term view -> termSidekick_base.FormFormulas (boolean terms).
This module defines function symbols, constants, and views to manipulate boolean formulas in Sidekick_base. This is useful to have the ability to use boolean connectives instead of being limited to clauses; by using Sidekick_th_bool_static, the formulas are turned into clauses automatically for you.
type term = Types_.Term.ttype 'a view = 'a Sidekick_core.Bool_view.t = | B_bool of bool |
| B_not of 'a |
| B_and of 'a list |
| B_or of 'a list |
| B_imply of 'a * 'a |
| B_equiv of 'a * 'a |
| B_xor of 'a * 'a |
| B_eq of 'a * 'a |
| B_neq of 'a * 'a |
| B_ite of 'a * 'a * 'a |
| B_atom of 'a |
val bool : Types_.Term.store -> bool -> termval not_ : Types_.Term.store -> term -> termval and_ : Types_.Term.store -> term -> term -> termval or_ : Types_.Term.store -> term -> term -> termval eq : Types_.Term.store -> term -> term -> termval neq : Types_.Term.store -> term -> term -> termval imply : Types_.Term.store -> term -> term -> termval equiv : Types_.Term.store -> term -> term -> termval xor : Types_.Term.store -> term -> term -> termval ite : Types_.Term.store -> term -> term -> term -> termval distinct_l : Types_.Term.store -> term list -> termval const_decoders : Types_.Const.decodersval and_l : Types_.Term.store -> term list -> termval or_l : Types_.Term.store -> term list -> termval imply_l : Types_.Term.store -> term list -> term -> termval mk_of_view : Types_.Term.store -> term view -> termSidekick_base.IDUnique Identifiers
We use generative identifiers everywhere in Sidekick_base. Unlike strings, there are no risk of collision: during parsing, a new declaration or definition should create a fresh ID.t and associate it with the string name, and later references should look into some hashtable or map to get the ID corresponding to a string.
This allows us to handle definition shadowing or binder shadowing easily.
val make : string -> tmake s creates a new identifier with name s and some internal information. It is different than any other identifier created before or after, even with the same name.
val makef : ( 'a, Stdlib.Format.formatter, unit, t ) Stdlib.format4 -> 'amakef "foo %d bar %b" 42 true is like make (Format.asprintf "foo %d bar %b" 42 true).
val id : t -> intUnique integer counter for this identifier.
val to_string : t -> stringPrint identifier.
val to_string_full : t -> stringPrinter name and unique counter for this ID.
include Sidekick_sigs.EQ_ORD_HASH_PRINT with type t := tinclude Sidekick_sigs.EQ with type t := tinclude Sidekick_sigs.ORD with type t := tinclude Sidekick_sigs.HASH with type t := tval hash : t -> intinclude Sidekick_sigs.PRINT with type t := tval pp : t Sidekick_sigs.printerval pp_name : t CCFormat.printerval pp_full : t CCFormat.printerSidekick_base.IDUnique Identifiers
We use generative identifiers everywhere in Sidekick_base. Unlike strings, there are no risk of collision: during parsing, a new declaration or definition should create a fresh ID.t and associate it with the string name, and later references should look into some hashtable or map to get the ID corresponding to a string.
This allows us to handle definition shadowing or binder shadowing easily.
val make : string -> tmake s creates a new identifier with name s and some internal information. It is different than any other identifier created before or after, even with the same name.
val makef : ( 'a, Stdlib.Format.formatter, unit, t ) Stdlib.format4 -> 'amakef "foo %d bar %b" 42 true is like make (Format.asprintf "foo %d bar %b" 42 true).
val id : t -> intUnique integer counter for this identifier.
val to_string : t -> stringPrint identifier.
val to_string_full : t -> stringPrinter name and unique counter for this ID.
val ser : t -> Sidekick_util.Ser_value.tval deser : t Sidekick_util.Ser_decode.tinclude Sidekick_sigs.EQ_ORD_HASH_PRINT with type t := tinclude Sidekick_sigs.EQ with type t := tinclude Sidekick_sigs.ORD with type t := tinclude Sidekick_sigs.HASH with type t := tval hash : t -> intinclude Sidekick_sigs.PRINT with type t := tval pp : t Sidekick_sigs.printerval pp_name : t CCFormat.printerval pp_full : t CCFormat.printerSidekick_base.LRA_termmodule Pred : sig ... endmodule Op : sig ... endmodule View : sig ... endtype term = Sidekick_core.Term.ttype ty = Sidekick_core.Term.tval term_of_view : Sidekick_core.Term.store -> term View.t -> termval real : Sidekick_core.Term.store -> tyval has_ty_real : term -> boolval pred : Sidekick_core.Term.store -> Pred.t -> term -> term -> termval mult_by : Sidekick_core.Term.store -> Q.t -> term -> termval op : Sidekick_core.Term.store -> Op.t -> term -> term -> termval const : Sidekick_core.Term.store -> Q.t -> termval leq : Sidekick_core.Term.store -> term -> term -> termval lt : Sidekick_core.Term.store -> term -> term -> termval geq : Sidekick_core.Term.store -> term -> term -> termval gt : Sidekick_core.Term.store -> term -> term -> termval eq : Sidekick_core.Term.store -> term -> term -> termval neq : Sidekick_core.Term.store -> term -> term -> termval plus : Sidekick_core.Term.store -> term -> term -> termval minus : Sidekick_core.Term.store -> term -> term -> termSidekick_base.LRA_termmodule Pred : sig ... endmodule Op : sig ... endval const_decoders : Sidekick_core.Const.decodersmodule View : sig ... endtype term = Sidekick_core.Term.ttype ty = Sidekick_core.Term.tval term_of_view : Sidekick_core.Term.store -> term View.t -> termval real : Sidekick_core.Term.store -> tyval has_ty_real : term -> boolval pred : Sidekick_core.Term.store -> Pred.t -> term -> term -> termval mult_by : Sidekick_core.Term.store -> Q.t -> term -> termval op : Sidekick_core.Term.store -> Op.t -> term -> term -> termval const : Sidekick_core.Term.store -> Q.t -> termval leq : Sidekick_core.Term.store -> term -> term -> termval lt : Sidekick_core.Term.store -> term -> term -> termval geq : Sidekick_core.Term.store -> term -> term -> termval gt : Sidekick_core.Term.store -> term -> term -> termval eq : Sidekick_core.Term.store -> term -> term -> termval neq : Sidekick_core.Term.store -> term -> term -> termval plus : Sidekick_core.Term.store -> term -> term -> termval minus : Sidekick_core.Term.store -> term -> term -> termAdd a clause to the solver, given as a list.
val assert_terms : t -> Sidekick_smt_solver.Sigs.term list -> unitHelper that turns each term into an atom, before adding the result to the solver as an assertion
val assert_term : t -> Sidekick_smt_solver.Sigs.term -> unitHelper that turns the term into an atom, before adding the result to the solver as a unit clause assertion
type res = | Sat of Sidekick_smt_solver.Model.t | (* Satisfiable *) | ||||
| Unsat of {
} | (* Unsatisfiable *) | ||||
| Unknown of Unknown.t | (* Unknown, obtained after a timeout, memory limit, etc. *) |
Result of solving for the current set of clauses
val assert_terms : t -> Sidekick_smt_solver.Sigs.term list -> unitHelper that turns each term into an atom, before adding disjunction of the resulting atoms to the solver as a clause assertion
val assert_term : t -> Sidekick_smt_solver.Sigs.term -> unitHelper that turns the term into an atom, before adding the result to the solver as a unit clause assertion
val add_ty : t -> Sidekick_smt_solver.Sigs.ty -> unittype res = | Sat of Sidekick_smt_solver.Sigs.Model.t | (* Satisfiable *) | ||||
| Unsat of {
} | (* Unsatisfiable *) | ||||
| Unknown of Unknown.t | (* Unknown, obtained after a timeout, memory limit, etc. *) |
Result of solving for the current set of clauses
val solve :
?on_exit:( unit -> unit ) list ->
?check:bool ->
?on_progress:( t -> unit ) ->
@@ -41,6 +42,7 @@
propagation_resultcheck_sat_propagations_only solver uses assumptions (including the assumptions parameter, and atoms previously added via push_assumptions) and boolean+theory propagation to quickly assess satisfiability. It is not complete; calling solve is required to get an accurate result.
val pp_stats : t CCFormat.printerPrint some statistics. What it prints exactly is unspecified.
val default_arg : (module Sidekick_smt_solver.Sigs.ARG)val create_default :
?stat:Sidekick_util.Stat.t ->
?size:[ `Big | `Small | `Tiny ] ->
+ ?tracer:Sidekick_smt_solver.Tracer.t ->
proof:Sidekick_smt_solver.Sigs.proof_trace ->
theories:Sidekick_smt_solver.Theory.t list ->
Sidekick_smt_solver.Sigs.Term.store ->
diff --git a/dev/sidekick-base/Sidekick_base/Term/index.html b/dev/sidekick-base/Sidekick_base/Term/index.html
index 9cb9a25c..e994c650 100644
--- a/dev/sidekick-base/Sidekick_base/Term/index.html
+++ b/dev/sidekick-base/Sidekick_base/Term/index.html
@@ -1,5 +1,5 @@
-Term (sidekick-base.Sidekick_base.Term) Module Sidekick_base.Term
include module type of struct include Sidekick_core.Term end
include module type of struct include Sidekick_core_logic.Term end
type store = Sidekick_core.Term.storeThe store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
type view = | E_type of int| E_var of var| E_bound_var of bvar| E_app of t * t| E_lam of string * t * t| E_pi of string * t * t
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intval pp_debug : t Sidekick_util.Fmt.printerval pp_debug_with_ids : t Sidekick_util.Fmt.printerContainers
include Sidekick_sigs.WITH_SET_MAP_TBL with type t := t
module Set = Sidekick_core.Term.Setmodule Map = Sidekick_core.Term.Mapmodule Tbl = Sidekick_core.Term.TblUtils
val is_app : t -> boolval is_const : t -> booliter_dag t ~f calls f once on each subterm of t, t included. It must not traverse t as a tree, but rather as a perfectly shared DAG.
For example, in:
let x = 2 in
+Term (sidekick-base.Sidekick_base.Term) Module Sidekick_base.Term
include module type of struct include Sidekick_core.Term end
include module type of struct include Sidekick_core_logic.Term end
type var = Sidekick_core_logic.Var.ttype bvar = Sidekick_core_logic.Bvar.ttype store = Sidekick_core.Term.storeThe store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
type view = | E_type of int| E_var of var| E_bound_var of bvar| E_app of t * t| E_lam of string * t * t| E_pi of string * t * t
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intval pp_debug : t Sidekick_util.Fmt.printerval pp_debug_with_ids : t Sidekick_util.Fmt.printerContainers
include Sidekick_sigs.WITH_SET_MAP_TBL with type t := t
module Set = Sidekick_core.Term.Setmodule Map = Sidekick_core.Term.Mapmodule Tbl = Sidekick_core.Term.Tblinclude Sidekick_sigs.WITH_WEAK with type t := t
module Weak_set = Sidekick_core.Term.Weak_setmodule Weak_map = Sidekick_core.Term.Weak_mapUtils
val is_app : t -> boolval is_const : t -> boolval is_pi : t -> booliter_dag t ~f calls f once on each subterm of t, t included. It must not traverse t as a tree, but rather as a perfectly shared DAG.
For example, in:
let x = 2 in
let y = f x x in
let z = g y x in
z = z
the DAG has the following nodes:
n1: 2
@@ -11,7 +11,7 @@ n4: = n3 n3
Sidekick_core_logic__.Var.Set.tval is_type : t -> boolis_type t is true iff view t is Type _
val is_a_type : t -> boolis_a_type t is true if is_ty (ty t)
val is_closed : t -> boolIs the term closed (all bound variables are paired with a binder)? time: O(1)
val has_fvars : t -> boolDoes the term contain free variables? time: O(1)
Creation
module Store = Sidekick_core.Term.Storemodule DB = Sidekick_core.Term.DBDe bruijn indices
include module type of struct include Sidekick_core_logic.T_builtins end
val bool : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval c_not : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval c_eq : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval c_ite : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval true_ : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval false_ : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval bool_val :
Sidekick_core_logic.Term.store ->
bool ->
- Sidekick_core_logic.Term.tval eq :
+ Sidekick_core_logic.Term.tval const_decoders : Sidekick_core_logic.Const.decodersval eq :
Sidekick_core_logic.Term.store ->
Sidekick_core_logic.Term.t ->
Sidekick_core_logic.Term.t ->
@@ -26,11 +26,13 @@ n4: = n3 n3Sidekick_core_logic.Term.tite a b c is if a then b else c
val is_eq : Sidekick_core_logic.Term.t -> boolval is_bool : Sidekick_core_logic.Term.t -> boolval abs :
Sidekick_core_logic.Term.store ->
Sidekick_core_logic.Term.t ->
- bool * Sidekick_core_logic.Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Sidekick_core_logic.Term.t -> bool optiontype term = Sidekick_core_logic.Term.ttype hook =
+ bool * Sidekick_core_logic.Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Sidekick_core_logic.Term.t -> bool optionval open_eq :
+ Sidekick_core_logic.Term.t ->
+ (Sidekick_core_logic.Term.t * Sidekick_core_logic.Term.t) optionopen_eq (a=b) returns Some (a,b), None for other terms.
type term = Sidekick_core_logic.Term.tPrinting hook, responsible for printing certain subterms
module Hooks = Sidekick_core.Term.Hooksval default_hooks : Hooks.t Stdlib.refval pp : term Sidekick_util.Fmt.printerPrint using default_hooks
module Hooks = Sidekick_core.Term.Hooksval default_hooks : Hooks.t Stdlib.refval pp : term Sidekick_util.Fmt.printerPrint using default_hooks
module Tracer = Sidekick_core.Term.Tracermodule Trace_reader = Sidekick_core.Term.Trace_reader
val view_as_cc :
Sidekick_core_logic.Term.t ->
( Sidekick_core_logic.Const.t,
Sidekick_core_logic.Term.t,
diff --git a/dev/sidekick-base/Sidekick_base/Th_ty_unin/index.html b/dev/sidekick-base/Sidekick_base/Th_ty_unin/index.html
new file mode 100644
index 00000000..cb47d406
--- /dev/null
+++ b/dev/sidekick-base/Sidekick_base/Th_ty_unin/index.html
@@ -0,0 +1,2 @@
+
+Th_ty_unin (sidekick-base.Sidekick_base.Th_ty_unin) Module Sidekick_base.Th_ty_unin
val theory : Solver.theory
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Th_uf/index.html b/dev/sidekick-base/Sidekick_base/Th_uf/index.html
deleted file mode 100644
index 12bdf94e..00000000
--- a/dev/sidekick-base/Sidekick_base/Th_uf/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Th_uf (sidekick-base.Sidekick_base.Th_uf) Module Sidekick_base.Th_uf
Theory of uninterpreted functions
val theory : Sidekick_smt_solver.Theory.t
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Ty/index.html b/dev/sidekick-base/Sidekick_base/Ty/index.html
index 2f19b435..23e03ef6 100644
--- a/dev/sidekick-base/Sidekick_base/Ty/index.html
+++ b/dev/sidekick-base/Sidekick_base/Ty/index.html
@@ -1,10 +1,10 @@
-Ty (sidekick-base.Sidekick_base.Ty) Module Sidekick_base.Ty
include module type of struct include Types_.Term end
include module type of struct include Sidekick_core_logic.Term end
type store = Sidekick_core.Term.storeThe store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH
+Ty (sidekick-base.Sidekick_base.Ty) Module Sidekick_base.Ty
include module type of struct include Types_.Term end
include module type of struct include Sidekick_core_logic.Term end
type var = Sidekick_core_logic.Var.ttype bvar = Sidekick_core_logic.Bvar.ttype store = Sidekick_core.Term.storeThe store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH
with type t := Sidekick_core_logic__Types_.term
include Sidekick_sigs.EQ with type t := Sidekick_core_logic__Types_.term
include Sidekick_sigs.ORD with type t := Sidekick_core_logic__Types_.term
include Sidekick_sigs.HASH with type t := Sidekick_core_logic__Types_.term
Containers
include Sidekick_sigs.WITH_SET_MAP_TBL
- with type t := Sidekick_core_logic__Types_.term
module Set = Sidekick_core.Term.Setmodule Map = Sidekick_core.Term.Mapmodule Tbl = Sidekick_core.Term.TblUtils
val view : Sidekick_core_logic__Types_.term -> viewval unfold_app :
+ with type t := Sidekick_core_logic__Types_.termmodule Set = Sidekick_core.Term.Setmodule Map = Sidekick_core.Term.Mapmodule Tbl = Sidekick_core.Term.Tblinclude Sidekick_sigs.WITH_WEAK with type t := Sidekick_core_logic__Types_.term
module Weak_set = Sidekick_core.Term.Weak_setmodule Weak_map = Sidekick_core.Term.Weak_mapUtils
val view : Sidekick_core_logic__Types_.term -> viewSidekick_core_logic.Term.tite a b c is if a then b else c
val is_eq : Sidekick_core_logic.Term.t -> boolval is_bool : Sidekick_core_logic.Term.t -> boolval abs :
Sidekick_core_logic.Term.store ->
Sidekick_core_logic.Term.t ->
- bool * Sidekick_core_logic.Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Sidekick_core_logic.Term.t -> bool optiontype term = Sidekick_core_logic.Term.ttype hook =
+ bool * Sidekick_core_logic.Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Sidekick_core_logic.Term.t -> bool optionval open_eq :
+ Sidekick_core_logic.Term.t ->
+ (Sidekick_core_logic.Term.t * Sidekick_core_logic.Term.t) optionopen_eq (a=b) returns Some (a,b), None for other terms.
type term = Sidekick_core_logic.Term.tPrinting hook, responsible for printing certain subterms
module Hooks = Sidekick_core.Term.Hooksval default_hooks : Hooks.t Stdlib.reftype t = Types_.tytype data = Types_.datainclude Sidekick_sigs.EQ_ORD_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval is_uninterpreted : t -> boolval is_real : t -> boolval is_int : t -> bool
\ No newline at end of file
+ boolPrinting hook, responsible for printing certain subterms
module Hooks = Sidekick_core.Term.Hooksval default_hooks : Hooks.t Stdlib.refmodule Tracer = Sidekick_core.Term.Tracermodule Trace_reader = Sidekick_core.Term.Trace_readertype t = Types_.tytype data = Types_.datainclude Sidekick_sigs.EQ_ORD_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval const_decoders : Types_.Const.decodersval is_uninterpreted : t -> boolval is_real : t -> boolval is_int : t -> bool
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Types_/index.html b/dev/sidekick-base/Sidekick_base/Types_/index.html
index 16e19b25..a69bcbb9 100644
--- a/dev/sidekick-base/Sidekick_base/Types_/index.html
+++ b/dev/sidekick-base/Sidekick_base/Types_/index.html
@@ -1,2 +1,2 @@
-Types_ (sidekick-base.Sidekick_base.Types_) Module Sidekick_base.Types_
include module type of struct include Sidekick_core end
module Fmt = Sidekick_core.FmtRe-exports from core-logic
module Const = Sidekick_core.Constmodule Term = Sidekick_core.Termmodule Gensym = Sidekick_core.Gensymview
module Bool_view = Sidekick_core.Bool_viewmodule CC_view = Sidekick_core.CC_viewmodule Default_cc_view = Sidekick_core.Default_cc_viewMain modules
module Bvar = Sidekick_core.Bvarmodule Lit = Sidekick_core.Litmodule Proof_step = Sidekick_core.Proof_stepmodule Proof_core = Sidekick_core.Proof_coremodule Proof_sat = Sidekick_core.Proof_satmodule Proof_trace = Sidekick_core.Proof_tracemodule Proof_term = Sidekick_core.Proof_termmodule Subst = Sidekick_core.Substmodule Var = Sidekick_core.Vartype term = Term.ttype ty = Term.ttype value = Term.ttype statement = | Stmt_set_logic of string| Stmt_set_option of string list| Stmt_set_info of string * string| Stmt_data of data list| Stmt_ty_decl of ID.t * int| Stmt_decl of ID.t * ty list * ty| Stmt_define of definition list| Stmt_assert of term| Stmt_assert_clause of term list| Stmt_check_sat of (bool * term) list| Stmt_get_model| Stmt_get_value of term list| Stmt_exit
\ No newline at end of file
+Types_ (sidekick-base.Sidekick_base.Types_) Module Sidekick_base.Types_
include module type of struct include Sidekick_core end
module Fmt = Sidekick_core.FmtRe-exports from core-logic
module Const = Sidekick_core.Constmodule Term = Sidekick_core.Termmodule Gensym = Sidekick_core.Gensymview
module Bool_view = Sidekick_core.Bool_viewmodule CC_view = Sidekick_core.CC_viewmodule Default_cc_view = Sidekick_core.Default_cc_viewMain modules
module Bvar = Sidekick_core.Bvarmodule Lit = Sidekick_core.Litmodule Proof_step = Sidekick_core.Proof_stepmodule Proof_core = Sidekick_core.Proof_coremodule Proof_sat = Sidekick_core.Proof_satmodule Proof_trace = Sidekick_core.Proof_tracemodule Proof_term = Sidekick_core.Proof_termmodule Subst = Sidekick_core.Substmodule Var = Sidekick_core.Varmodule Box = Sidekick_core.Boxmodule Clause_tracer = Sidekick_core.Clause_tracertype term = Term.ttype ty = Term.ttype value = Term.ttype statement = | Stmt_set_logic of string| Stmt_set_option of string list| Stmt_set_info of string * string| Stmt_data of data list| Stmt_ty_decl of ID.t * int| Stmt_decl of ID.t * ty list * ty| Stmt_define of definition list| Stmt_assert of term| Stmt_assert_clause of term list| Stmt_check_sat of (bool * term) list| Stmt_get_model| Stmt_get_value of term list| Stmt_exit
\ No newline at end of file
diff --git a/dev/sidekick-base/Sidekick_base/Uconst/index.html b/dev/sidekick-base/Sidekick_base/Uconst/index.html
index 75dffa6a..dcf27b3d 100644
--- a/dev/sidekick-base/Sidekick_base/Uconst/index.html
+++ b/dev/sidekick-base/Sidekick_base/Uconst/index.html
@@ -1,5 +1,5 @@
-Uconst (sidekick-base.Sidekick_base.Uconst) Module Sidekick_base.Uconst
Uninterpreted constants
type ty = Types_.Term.tinclude Sidekick_sigs.EQ_ORD_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval uconst : Types_.Term.store -> t -> Types_.Term.tval uconst_of_id : Types_.Term.store -> ID.t -> ty -> Types_.Term.tval uconst_of_id' : Types_.Term.store -> ID.t -> ty list -> ty -> Types_.Term.tval uconst_of_str :
+Uconst (sidekick-base.Sidekick_base.Uconst) Module Sidekick_base.Uconst
Uninterpreted constants
type ty = Types_.Term.tinclude Sidekick_sigs.EQ_ORD_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval const_decoders : Types_.Const.decodersval uconst : Types_.Term.store -> t -> Types_.Term.tval uconst_of_id : Types_.Term.store -> ID.t -> ty -> Types_.Term.tval uconst_of_id' : Types_.Term.store -> ID.t -> ty list -> ty -> Types_.Term.tval uconst_of_str :
Types_.Term.store ->
string ->
ty list ->
diff --git a/dev/sidekick-base/Sidekick_base/index.html b/dev/sidekick-base/Sidekick_base/index.html
index ae1f8bc3..bc2afafb 100644
--- a/dev/sidekick-base/Sidekick_base/index.html
+++ b/dev/sidekick-base/Sidekick_base/index.html
@@ -1,2 +1,7 @@
-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.
module Types_ : sig ... endmodule Term : sig ... endmodule Const = Sidekick_core.Constmodule Ty : sig ... endmodule ID : sig ... endUnique Identifiers
module Form : sig ... endFormulas (boolean terms).
module Data_ty : sig ... endmodule Cstor = Data_ty.Cstormodule Select = Data_ty.Selectmodule Statement : sig ... endStatements.
module Solver : sig ... endmodule Uconst : sig ... endUninterpreted constants
module Config : sig ... endConfiguration
module LRA_term : sig ... endmodule Th_data : sig ... endTheory of datatypes
module Th_bool : sig ... endReducing boolean formulas to clauses
module Th_lra : sig ... endTheory of Linear Rational Arithmetic
module Th_uf : sig ... endTheory of uninterpreted functions
val k_th_bool_config : [ `Dyn | `Static ] Config.Key.tval th_bool : Config.t -> Solver.theoryval th_bool_dyn : Solver.theoryval th_bool_static : Solver.theoryval th_data : Solver.theoryval th_lra : Solver.theoryval th_uf : Solver.theory
\ No newline at end of file
+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.
module Types_ : sig ... endmodule Term : sig ... endmodule Const = Sidekick_core.Constmodule Ty : sig ... endmodule ID : sig ... endUnique Identifiers
module Form : sig ... endFormulas (boolean terms).
module Data_ty : sig ... endmodule Cstor = Data_ty.Cstormodule Select = Data_ty.Selectmodule Statement : sig ... endStatements.
module Solver : sig ... endmodule Uconst : sig ... endUninterpreted constants
module Config : sig ... endConfiguration
module LRA_term : sig ... endmodule Th_data : sig ... endTheory of datatypes
module Th_bool : sig ... endReducing boolean formulas to clauses
module Th_lra : sig ... endTheory of Linear Rational Arithmetic
module Th_ty_unin : sig ... endval k_th_bool_config : [ `Dyn | `Static ] Config.Key.tval th_bool : Config.t -> Solver.theoryval th_bool_dyn : Solver.theoryval th_bool_static : Solver.theoryval th_data : Solver.theoryval th_lra : Solver.theoryval th_ty_unin : Solver.theoryval const_decoders :
+ (string
+ * Types_.Const.Ops.t
+ * ( Sidekick_core_logic__Types_.term Sidekick_util.Ser_decode.t ->
+ Types_.Const.view Sidekick_util.Ser_decode.t ))
+ listAll constant decoders
\ 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 b2a494fb..5c197c2b 100644
--- a/dev/sidekick-bin/Sidekick_smtlib/Process/index.html
+++ b/dev/sidekick-bin/Sidekick_smtlib/Process/index.html
@@ -1,5 +1,5 @@
-Process (sidekick-bin.Sidekick_smtlib.Process) Module Sidekick_smtlib.Process
Process Statements
module Solver = Sidekick_base.Solverval th_bool_dyn : Solver.theoryval th_bool_static : Solver.theoryval th_bool : Sidekick_base.Config.t -> Solver.theoryval th_data : Solver.theoryval th_lra : Solver.theoryval th_uf : Solver.theorymodule Check_cc : sig ... endval process_stmt :
+Process (sidekick-bin.Sidekick_smtlib.Process) Module Sidekick_smtlib.Process
Process Statements
module Solver = Sidekick_base.Solverval th_bool_dyn : Solver.theoryval th_bool_static : Solver.theoryval th_bool : Sidekick_base.Config.t -> Solver.theoryval th_data : Solver.theoryval th_lra : Solver.theoryval th_ty_unin : Solver.theorymodule Check_cc : sig ... endval process_stmt :
?gc:bool ->
?restarts:bool ->
?pp_cnf:bool ->
diff --git a/dev/sidekick/Sidekick_arith/module-type-INT/index.html b/dev/sidekick/Sidekick_arith/module-type-INT/index.html
index 074c26c1..a2d0e3f1 100644
--- a/dev/sidekick/Sidekick_arith/module-type-INT/index.html
+++ b/dev/sidekick/Sidekick_arith/module-type-INT/index.html
@@ -1,2 +1,2 @@
-INT (sidekick.Sidekick_arith.INT) Module type Sidekick_arith.INT
include NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
+INT (sidekick.Sidekick_arith.INT) Module type Sidekick_arith.INT
include NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_arith/module-type-INT_FULL/index.html b/dev/sidekick/Sidekick_arith/module-type-INT_FULL/index.html
index bd60e908..b715cfda 100644
--- a/dev/sidekick/Sidekick_arith/module-type-INT_FULL/index.html
+++ b/dev/sidekick/Sidekick_arith/module-type-INT_FULL/index.html
@@ -1,2 +1,2 @@
-INT_FULL (sidekick.Sidekick_arith.INT_FULL) Module type Sidekick_arith.INT_FULL
include INT
include NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval probab_prime : t -> bool
\ No newline at end of file
+INT_FULL (sidekick.Sidekick_arith.INT_FULL) Module type Sidekick_arith.INT_FULL
include INT
include NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval probab_prime : t -> bool
\ 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
index cce4c5f9..6d25d661 100644
--- a/dev/sidekick/Sidekick_arith/module-type-NUM/index.html
+++ b/dev/sidekick/Sidekick_arith/module-type-NUM/index.html
@@ -1,2 +1,2 @@
-NUM (sidekick.Sidekick_arith.NUM) Module type Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
+NUM (sidekick.Sidekick_arith.NUM) Module type Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ 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
index f0518623..56b31236 100644
--- a/dev/sidekick/Sidekick_arith/module-type-RATIONAL/index.html
+++ b/dev/sidekick/Sidekick_arith/module-type-RATIONAL/index.html
@@ -1,2 +1,2 @@
-RATIONAL (sidekick.Sidekick_arith.RATIONAL) Module type Sidekick_arith.RATIONAL
include NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
+RATIONAL (sidekick.Sidekick_arith.RATIONAL) Module type Sidekick_arith.RATIONAL
include NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty 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_bencode/.dummy b/dev/sidekick/Sidekick_bencode/.dummy
new file mode 100644
index 00000000..e69de29b
diff --git a/dev/sidekick/Sidekick_bencode/Decode/index.html b/dev/sidekick/Sidekick_bencode/Decode/index.html
new file mode 100644
index 00000000..6b5403b9
--- /dev/null
+++ b/dev/sidekick/Sidekick_bencode/Decode/index.html
@@ -0,0 +1,2 @@
+
+Decode (sidekick.Sidekick_bencode.Decode) Module Sidekick_bencode.Decode
val of_string : ?idx:int -> string -> (int * t) optionDecode string, and also return how many bytes were consumed.
val of_string_exn : ?idx:int -> string -> int * tParse string.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_bencode/Encode/index.html b/dev/sidekick/Sidekick_bencode/Encode/index.html
new file mode 100644
index 00000000..40825ad4
--- /dev/null
+++ b/dev/sidekick/Sidekick_bencode/Encode/index.html
@@ -0,0 +1,2 @@
+
+Encode (sidekick.Sidekick_bencode.Encode) Module Sidekick_bencode.Encode
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_bencode/index.html b/dev/sidekick/Sidekick_bencode/index.html
new file mode 100644
index 00000000..c5adde49
--- /dev/null
+++ b/dev/sidekick/Sidekick_bencode/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_bencode (sidekick.Sidekick_bencode) Module Sidekick_bencode
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Box/index.html b/dev/sidekick/Sidekick_core/Box/index.html
new file mode 100644
index 00000000..47b53ef0
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Box/index.html
@@ -0,0 +1,5 @@
+
+Box (sidekick.Sidekick_core.Box) Module Sidekick_core.Box
val box :
+ Sidekick_core_logic.Term.store ->
+ Sidekick_core_logic.Term.t ->
+ Sidekick_core_logic.Term.tbox tst t makes a new constant that "boxes" t. This way it will be opaque.
val const_decoders : Sidekick_core_logic.Const.decodersval as_box : Sidekick_core_logic.Term.t -> Sidekick_core_logic.Term.t optionval is_box : Sidekick_core_logic.Term.t -> bool
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Clause_tracer/class-dummy/index.html b/dev/sidekick/Sidekick_core/Clause_tracer/class-dummy/index.html
new file mode 100644
index 00000000..6694d495
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Clause_tracer/class-dummy/index.html
@@ -0,0 +1,2 @@
+
+dummy (sidekick.Sidekick_core.Clause_tracer.dummy) Class Clause_tracer.dummy
method assert_clause : id:int -> Sidekick_core__Lit.t Iter.t -> Tr.Entry_id.tmethod unsat_clause : id:int -> Tr.Entry_id.tmethod encode_lit : Sidekick_core__Lit.t -> Sidekick_util.Ser_value.t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Clause_tracer/class-type-t/index.html b/dev/sidekick/Sidekick_core/Clause_tracer/class-type-t/index.html
new file mode 100644
index 00000000..5683f316
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Clause_tracer/class-type-t/index.html
@@ -0,0 +1,2 @@
+
+t (sidekick.Sidekick_core.Clause_tracer.t) Class type Clause_tracer.t
Tracer for clauses.
method assert_clause : id:int -> Sidekick_core__Lit.t Iter.t -> Tr.Entry_id.tmethod unsat_clause : id:int -> Tr.Entry_id.tmethod encode_lit : Sidekick_core__Lit.t -> Sidekick_util.Ser_value.t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Clause_tracer/index.html b/dev/sidekick/Sidekick_core/Clause_tracer/index.html
new file mode 100644
index 00000000..09663846
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Clause_tracer/index.html
@@ -0,0 +1,2 @@
+
+Clause_tracer (sidekick.Sidekick_core.Clause_tracer) Module Sidekick_core.Clause_tracer
Tracer for clauses and literals
module Tr = Sidekick_traceclass type t = object ... endTracer for clauses.
val dummy : tDummy tracer, recording nothing.
val assert_clause : t -> id:int -> Lit.t Iter.t -> Tr.Entry_id.tval unsat_clause : t -> id:int -> Tr.Entry_id.tval unsat_clause' : t -> id:int -> unitval encode_lit : t -> Lit.t -> Sidekick_util.Ser_value.t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Gensym/index.html b/dev/sidekick/Sidekick_core/Gensym/index.html
index f388a636..4e4114d4 100644
--- a/dev/sidekick/Sidekick_core/Gensym/index.html
+++ b/dev/sidekick/Sidekick_core/Gensym/index.html
@@ -1,2 +1,2 @@
-Gensym (sidekick.Sidekick_core.Gensym) Module Sidekick_core.Gensym
Fresh symbol generation
type term = Sidekick_core_logic.Term.ttype ty = Sidekick_core_logic.Term.tFresh symbol generator.
The theory needs to be able to create new terms with fresh names, to be used as placeholders for complex formulas during Tseitin encoding.
val create : Sidekick_core_logic.Term.store -> tNew (stateful) generator instance.
\ No newline at end of file
+Gensym (sidekick.Sidekick_core.Gensym) Module Sidekick_core.Gensym
Fresh symbol generation
type term = Sidekick_core_logic.Term.ttype ty = Sidekick_core_logic.Term.tFresh symbol generator.
The theory needs to be able to create new terms with fresh names, to be used as placeholders for complex formulas during Tseitin encoding.
val create : Sidekick_core_logic.Term.store -> tNew (stateful) generator instance.
val const_decoders : Sidekick_core_logic.Const.decodersval reset : t -> unitReset to initial state
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Term/Trace_reader/index.html b/dev/sidekick/Sidekick_core/Term/Trace_reader/index.html
new file mode 100644
index 00000000..40bdbd41
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Term/Trace_reader/index.html
@@ -0,0 +1,13 @@
+
+Trace_reader (sidekick.Sidekick_core.Term.Trace_reader) Module Term.Trace_reader
module Tr = Sidekick_tracemodule Dec = Sidekick_util.Ser_decodetype term_ref = Tr.entry_idtype const_decoders = Sidekick_core_logic.Const.decodersval create :
+ ?const_decoders:const_decoders list ->
+ source:Tr.Source.t ->
+ Sidekick_core_logic.Term.store ->
+ tval add_const_decoders : t -> const_decoders -> unitval read_term :
+ t ->
+ term_ref ->
+ ( Sidekick_core_logic.Term.t, string ) Stdlib.resultval read_term_err :
+ t ->
+ term_ref ->
+ ( Sidekick_core_logic.Term.t, Sidekick_util.Ser_decode.Error.t )
+ Stdlib.result
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Term/Tracer/class-concrete/index.html b/dev/sidekick/Sidekick_core/Term/Tracer/class-concrete/index.html
new file mode 100644
index 00000000..20ee17a5
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Term/Tracer/class-concrete/index.html
@@ -0,0 +1,2 @@
+
+concrete (sidekick.Sidekick_core.Term.Tracer.concrete) Class Tracer.concrete
Concrete implementation of t
method emit_term : Sidekick_core_logic.Term.t -> term_ref
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Term/Tracer/class-dummy/index.html b/dev/sidekick/Sidekick_core/Term/Tracer/class-dummy/index.html
new file mode 100644
index 00000000..15a26c55
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Term/Tracer/class-dummy/index.html
@@ -0,0 +1,2 @@
+
+dummy (sidekick.Sidekick_core.Term.Tracer.dummy) Class Tracer.dummy
Dummy implementation, returns Tr.Entry_id.dummy
inherit tmethod emit_term : Sidekick_core_logic.Term.t -> term_ref
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Term/Tracer/class-type-t/index.html b/dev/sidekick/Sidekick_core/Term/Tracer/class-type-t/index.html
new file mode 100644
index 00000000..d14090c8
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Term/Tracer/class-type-t/index.html
@@ -0,0 +1,2 @@
+
+t (sidekick.Sidekick_core.Term.Tracer.t) Class type Tracer.t
method emit_term : Sidekick_core_logic.Term.t -> term_ref
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Term/Tracer/index.html b/dev/sidekick/Sidekick_core/Term/Tracer/index.html
new file mode 100644
index 00000000..2e5e575c
--- /dev/null
+++ b/dev/sidekick/Sidekick_core/Term/Tracer/index.html
@@ -0,0 +1,2 @@
+
+Tracer (sidekick.Sidekick_core.Term.Tracer) Module Term.Tracer
Emit terms in traces.
Traces will contains terms, encoded as a DAG. Each subterm is its own event, and gets a term identifier used in other subsequent entries to refer to it.
module Tr = Sidekick_tracetype term_ref = Tr.entry_idtype Tr.entry_view += | T_ty of int| T_app of term_ref * term_ref| T_var of string * term_ref| T_bvar of int * term_ref| T_const of {c : Sidekick_core_logic.Const.view;c_ops : Sidekick_core_logic.Const.Ops.t;ty : term_ref;
}| T_lam of {v_name : string;v_ty : term_ref;body : term_ref;
}| T_pi of {v_name : string;v_ty : term_ref;body : term_ref;
}
class type t = object ... endclass dummy : object ... endDummy implementation, returns Tr.Entry_id.dummy
create ~sink () makes a tracer that will write terms into the given sink.
val emit : t -> Sidekick_core_logic.Term.t -> term_refval emit' : t -> Sidekick_core_logic.Term.t -> unit
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/Term/index.html b/dev/sidekick/Sidekick_core/Term/index.html
index ec21831f..e9fb6674 100644
--- a/dev/sidekick/Sidekick_core/Term/index.html
+++ b/dev/sidekick/Sidekick_core/Term/index.html
@@ -1,5 +1,5 @@
-Term (sidekick.Sidekick_core.Term) Module Sidekick_core.Term
include module type of struct include Sidekick_core_logic.Term end
The store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
type view = | E_type of int| E_var of var| E_bound_var of bvar| E_app of t * t| E_lam of string * t * t| E_pi of string * t * t
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intval pp_debug : t Sidekick_util.Fmt.printerval pp_debug_with_ids : t Sidekick_util.Fmt.printerContainers
include Sidekick_sigs.WITH_SET_MAP_TBL with type t := t
Utils
val is_app : t -> boolval is_const : t -> booliter_dag t ~f calls f once on each subterm of t, t included. It must not traverse t as a tree, but rather as a perfectly shared DAG.
For example, in:
let x = 2 in
+Term (sidekick.Sidekick_core.Term) Module Sidekick_core.Term
include module type of struct include Sidekick_core_logic.Term end
type var = Sidekick_core_logic.Var.ttype bvar = Sidekick_core_logic.Bvar.tThe store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
type view = | E_type of int| E_var of var| E_bound_var of bvar| E_app of t * t| E_lam of string * t * t| E_pi of string * t * t
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intval pp_debug : t Sidekick_util.Fmt.printerval pp_debug_with_ids : t Sidekick_util.Fmt.printerContainers
include Sidekick_sigs.WITH_SET_MAP_TBL with type t := t
include Sidekick_sigs.WITH_WEAK with type t := t
Utils
val is_app : t -> boolval is_const : t -> boolval is_pi : t -> booliter_dag t ~f calls f once on each subterm of t, t included. It must not traverse t as a tree, but rather as a perfectly shared DAG.
For example, in:
let x = 2 in
let y = f x x in
let z = g y x in
z = z
the DAG has the following nodes:
n1: 2
@@ -11,7 +11,7 @@ n4: = n3 n3
Sidekick_core_logic__.Var.Set.tval is_type : t -> boolis_type t is true iff view t is Type _
val is_a_type : t -> boolis_a_type t is true if is_ty (ty t)
val is_closed : t -> boolIs the term closed (all bound variables are paired with a binder)? time: O(1)
val has_fvars : t -> boolDoes the term contain free variables? time: O(1)
Creation
module Store : sig ... endmodule DB : sig ... endDe bruijn indices
include module type of struct include Sidekick_core_logic.T_builtins end
val bool : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval c_not : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval c_eq : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval c_ite : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval true_ : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval false_ : Sidekick_core_logic.Term.store -> Sidekick_core_logic.Term.tval bool_val :
Sidekick_core_logic.Term.store ->
bool ->
- Sidekick_core_logic.Term.tval eq :
+ Sidekick_core_logic.Term.tval const_decoders : Sidekick_core_logic.Const.decodersval eq :
Sidekick_core_logic.Term.store ->
Sidekick_core_logic.Term.t ->
Sidekick_core_logic.Term.t ->
@@ -26,8 +26,10 @@ n4: = n3 n3Sidekick_core_logic.Term.tite a b c is if a then b else c
val is_eq : Sidekick_core_logic.Term.t -> boolval is_bool : Sidekick_core_logic.Term.t -> boolval abs :
Sidekick_core_logic.Term.store ->
Sidekick_core_logic.Term.t ->
- bool * Sidekick_core_logic.Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Sidekick_core_logic.Term.t -> bool optiontype term = Sidekick_core_logic.Term.ttype hook =
+ bool * Sidekick_core_logic.Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Sidekick_core_logic.Term.t -> bool optionval open_eq :
+ Sidekick_core_logic.Term.t ->
+ (Sidekick_core_logic.Term.t * Sidekick_core_logic.Term.t) optionopen_eq (a=b) returns Some (a,b), None for other terms.
type term = Sidekick_core_logic.Term.tPrinting hook, responsible for printing certain subterms
module Hooks : sig ... endval default_hooks : Hooks.t Stdlib.refval pp : term Sidekick_util.Fmt.printerPrint using default_hooks
\ No newline at end of file
+ bool
Printing hook, responsible for printing certain subterms
module Hooks : sig ... endval default_hooks : Hooks.t Stdlib.refval pp : term Sidekick_util.Fmt.printerPrint using default_hooks
module Tracer : sig ... endEmit terms in traces.
module Trace_reader : sig ... end
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core/index.html b/dev/sidekick/Sidekick_core/index.html
index b55669f5..9d323b63 100644
--- a/dev/sidekick/Sidekick_core/index.html
+++ b/dev/sidekick/Sidekick_core/index.html
@@ -1,2 +1,2 @@
-Sidekick_core (sidekick.Sidekick_core) Module Sidekick_core
Main Signatures.
Theories and concrete solvers rely on an environment that defines several important types:
- types
- terms (to represent logic expressions and formulas)
- a congruence closure instance
- a bridge to some SAT solver
In this module we define most of the main signatures used throughout Sidekick.
Re-exports from core-logic
module Const = Sidekick_core_logic.Constmodule Term : sig ... endmodule Gensym : sig ... endFresh symbol generation
view
module Bool_view : sig ... endBoolean-oriented view of terms
module CC_view : sig ... endView terms through the lens of a Congruence Closure
module Default_cc_view : sig ... endMain modules
module Bvar = Sidekick_core_logic.Bvarmodule Lit : sig ... endLiterals
module Proof_step : sig ... endmodule Proof_core : sig ... endCore proofs for SMT and congruence closure.
module Proof_sat : sig ... endSAT-solver proof emission.
module Proof_trace : sig ... endProof traces.
module Proof_term : sig ... endProof terms.
module Subst = Sidekick_core_logic.Substmodule Var = Sidekick_core_logic.Var
\ No newline at end of file
+Sidekick_core (sidekick.Sidekick_core) Module Sidekick_core
Main Signatures.
Theories and concrete solvers rely on an environment that defines several important types:
- types
- terms (to represent logic expressions and formulas)
- a congruence closure instance
- a bridge to some SAT solver
In this module we define most of the main signatures used throughout Sidekick.
Re-exports from core-logic
module Const = Sidekick_core_logic.Constmodule Term : sig ... endmodule Gensym : sig ... endFresh symbol generation
view
module Bool_view : sig ... endBoolean-oriented view of terms
module CC_view : sig ... endView terms through the lens of a Congruence Closure
module Default_cc_view : sig ... endMain modules
module Bvar = Sidekick_core_logic.Bvarmodule Lit : sig ... endLiterals
module Proof_step : sig ... endmodule Proof_core : sig ... endCore proofs for SMT and congruence closure.
module Proof_sat : sig ... endSAT-solver proof emission.
module Proof_trace : sig ... endProof traces.
module Proof_term : sig ... endProof terms.
module Subst = Sidekick_core_logic.Substmodule Var = Sidekick_core_logic.Varmodule Box : sig ... endmodule Clause_tracer : sig ... endTracer for clauses and literals
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core_logic/Bvar/index.html b/dev/sidekick/Sidekick_core_logic/Bvar/index.html
index 95874fe0..e78f3055 100644
--- a/dev/sidekick/Sidekick_core_logic/Bvar/index.html
+++ b/dev/sidekick/Sidekick_core_logic/Bvar/index.html
@@ -1,2 +1,2 @@
-Bvar (sidekick.Sidekick_core_logic.Bvar) Module Sidekick_core_logic.Bvar
Bound variable
include Sidekick_sigs.EQ_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval make : int -> Sidekick_core_logic__Types_.term -> tval ty : t -> Sidekick_core_logic__Types_.term
\ No newline at end of file
+Bvar (sidekick.Sidekick_core_logic.Bvar) Module Sidekick_core_logic.Bvar
Bound variable
include Sidekick_sigs.EQ_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval make : int -> Sidekick_core_logic__Types_.term -> tval idx : t -> intval ty : t -> Sidekick_core_logic__Types_.term
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core_logic/Const/Ops/index.html b/dev/sidekick/Sidekick_core_logic/Const/Ops/index.html
new file mode 100644
index 00000000..8b2c2d56
--- /dev/null
+++ b/dev/sidekick/Sidekick_core_logic/Const/Ops/index.html
@@ -0,0 +1,6 @@
+
+Ops (sidekick.Sidekick_core_logic.Const.Ops) Module Const.Ops
type t = {pp : Sidekick_core_logic__Types_.const_view Sidekick_util.Fmt.printer;(*Pretty-print constant
*) equal : Sidekick_core_logic__Types_.const_view ->
+ Sidekick_core_logic__Types_.const_view ->
+ bool;(*Equality of constant with any other constant
*) hash : Sidekick_core_logic__Types_.const_view -> int;(*Hash constant
*) ser : ( Sidekick_core_logic__Types_.term -> Sidekick_util.Ser_value.t ) ->
+ Sidekick_core_logic__Types_.const_view ->
+ string * Sidekick_util.Ser_value.t;(*Serialize a constant, along with a tag to recognize it.
*)
}
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core_logic/Const/index.html b/dev/sidekick/Sidekick_core_logic/Const/index.html
index ba68c814..9c07f6c8 100644
--- a/dev/sidekick/Sidekick_core_logic/Const/index.html
+++ b/dev/sidekick/Sidekick_core_logic/Const/index.html
@@ -1,2 +1,10 @@
-Const (sidekick.Sidekick_core_logic.Const) Module Sidekick_core_logic.Const
Constants.
Constants are logical symbols, defined by the user thanks to an open type
module type DYN_OPS = sig ... endtype ops = (module DYN_OPS)val ty : t -> Sidekick_core_logic__Types_.terminclude Sidekick_sigs.EQ_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
+Const (sidekick.Sidekick_core_logic.Const) Module Sidekick_core_logic.Const
Constants.
Constants are logical symbols, defined by the user thanks to an open type
module Ops : sig ... endval ser :
+ ser_t:( Sidekick_core_logic__Types_.term -> Sidekick_util.Ser_value.t ) ->
+ t ->
+ string * Sidekick_util.Ser_value.tval ty : t -> Sidekick_core_logic__Types_.termtype decoders =
+ (string
+ * Ops.t
+ * ( Sidekick_core_logic__Types_.term Sidekick_util.Ser_decode.t ->
+ view Sidekick_util.Ser_decode.t ))
+ listDecoders for constants: given a term store, return a list of supported tags, and for each tag, a decoder for constants that have this particular tag.
include Sidekick_sigs.EQ_HASH_PRINT with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core_logic/Const/module-type-DYN_OPS/index.html b/dev/sidekick/Sidekick_core_logic/Const/module-type-DYN_OPS/index.html
deleted file mode 100644
index 5a7d6719..00000000
--- a/dev/sidekick/Sidekick_core_logic/Const/module-type-DYN_OPS/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-DYN_OPS (sidekick.Sidekick_core_logic.Const.DYN_OPS) Module type Const.DYN_OPS
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core_logic/Str_const/index.html b/dev/sidekick/Sidekick_core_logic/Str_const/index.html
index 243ea602..51db6831 100644
--- a/dev/sidekick/Sidekick_core_logic/Str_const/index.html
+++ b/dev/sidekick/Sidekick_core_logic/Str_const/index.html
@@ -1,5 +1,5 @@
-Str_const (sidekick.Sidekick_core_logic.Str_const) Module Sidekick_core_logic.Str_const
Basic string constants.
These constants are a string name, coupled with a type.
val make :
+Str_const (sidekick.Sidekick_core_logic.Str_const) Module Sidekick_core_logic.Str_const
Basic string constants.
These constants are a string name, coupled with a type.
val const_decoders : Const.decoders
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core_logic/T_builtins/index.html b/dev/sidekick/Sidekick_core_logic/T_builtins/index.html
index 84578ba2..27223a03 100644
--- a/dev/sidekick/Sidekick_core_logic/T_builtins/index.html
+++ b/dev/sidekick/Sidekick_core_logic/T_builtins/index.html
@@ -1,2 +1,2 @@
-T_builtins (sidekick.Sidekick_core_logic.T_builtins) Module Sidekick_core_logic.T_builtins
Core builtins
val bool : Term.store -> Term.tval c_not : Term.store -> Term.tval c_eq : Term.store -> Term.tval c_ite : Term.store -> Term.tval true_ : Term.store -> Term.tval false_ : Term.store -> Term.tval bool_val : Term.store -> bool -> Term.tval eq : Term.store -> Term.t -> Term.t -> Term.teq a b is a = b
val not : Term.store -> Term.t -> Term.tval ite : Term.store -> Term.t -> Term.t -> Term.t -> Term.tite a b c is if a then b else c
val is_eq : Term.t -> boolval is_bool : Term.t -> boolval abs : Term.store -> Term.t -> bool * Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Term.t -> bool option
\ No newline at end of file
+T_builtins (sidekick.Sidekick_core_logic.T_builtins) Module Sidekick_core_logic.T_builtins
Core builtins
val bool : Term.store -> Term.tval c_not : Term.store -> Term.tval c_eq : Term.store -> Term.tval c_ite : Term.store -> Term.tval true_ : Term.store -> Term.tval false_ : Term.store -> Term.tval bool_val : Term.store -> bool -> Term.tval const_decoders : Const.decodersval eq : Term.store -> Term.t -> Term.t -> Term.teq a b is a = b
val not : Term.store -> Term.t -> Term.tval ite : Term.store -> Term.t -> Term.t -> Term.t -> Term.tite a b c is if a then b else c
val is_eq : Term.t -> boolval is_bool : Term.t -> boolval abs : Term.store -> Term.t -> bool * Term.tabs t returns an "absolute value" for the term, along with the sign of t.
The idea is that we want to turn not a into (false, a), or (a != b) into (false, a=b). For terms without a negation this should return (true, t).
val as_bool_val : Term.t -> bool option
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_core_logic/Term/index.html b/dev/sidekick/Sidekick_core_logic/Term/index.html
index e66b2a52..c335fe37 100644
--- a/dev/sidekick/Sidekick_core_logic/Term/index.html
+++ b/dev/sidekick/Sidekick_core_logic/Term/index.html
@@ -1,5 +1,5 @@
-Term (sidekick.Sidekick_core_logic.Term) Module Sidekick_core_logic.Term
Core logic terms.
The core terms are expressions in the calculus of constructions, with no universe polymorphism nor cumulativity. It should be fast, with hashconsing; and simple enough (no inductives, no universe trickery).
It is intended to be the foundation for user-level terms and types and formulas.
type t = termA term, in the calculus of constructions
The store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
type view = | E_type of int| E_var of var| E_bound_var of bvar| E_app of t * t| E_app_fold of {f : term;(*function to fold
*) args : term list;(*Arguments to the fold
*) acc0 : term;(*initial accumulator
*)
}| E_lam of string * t * t| E_pi of string * t * t
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intval pp_debug : t Sidekick_util.Fmt.printerval pp_debug_with_ids : t Sidekick_util.Fmt.printerContainers
include Sidekick_sigs.WITH_SET_MAP_TBL with type t := t
Utils
val is_app : t -> boolval is_const : t -> booliter_dag t ~f calls f once on each subterm of t, t included. It must not traverse t as a tree, but rather as a perfectly shared DAG.
For example, in:
let x = 2 in
+Term (sidekick.Sidekick_core_logic.Term) Module Sidekick_core_logic.Term
Core logic terms.
The core terms are expressions in the calculus of constructions, with no universe polymorphism nor cumulativity. It should be fast, with hashconsing; and simple enough (no inductives, no universe trickery).
It is intended to be the foundation for user-level terms and types and formulas.
type var = Var.ttype bvar = Bvar.ttype t = termA term, in the calculus of constructions
The store for terms.
The store is responsible for allocating unique IDs to terms, and enforcing their hashconsing (so that syntactic equality is just a pointer comparison).
type view = | E_type of int| E_var of var| E_bound_var of bvar| E_app of t * t| E_app_fold of {f : term;(*function to fold
*) args : term list;(*Arguments to the fold
*) acc0 : term;(*initial accumulator
*)
}| E_lam of string * t * t| E_pi of string * t * t
View.
A view is the shape of the root node of a term.
include Sidekick_sigs.EQ_ORD_HASH with type t := t
include Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intval pp_debug : t Sidekick_util.Fmt.printerval pp_debug_with_ids : t Sidekick_util.Fmt.printerContainers
include Sidekick_sigs.WITH_SET_MAP_TBL with type t := t
include Sidekick_sigs.WITH_WEAK with type t := t
Utils
val is_app : t -> boolval is_const : t -> boolval is_pi : t -> booliter_dag t ~f calls f once on each subterm of t, t included. It must not traverse t as a tree, but rather as a perfectly shared DAG.
For example, in:
let x = 2 in
let y = f x x in
let z = g y x in
z = z
the DAG has the following nodes:
n1: 2
diff --git a/dev/sidekick/Sidekick_core_logic/index.html b/dev/sidekick/Sidekick_core_logic/index.html
index 852e8763..e62ad73b 100644
--- a/dev/sidekick/Sidekick_core_logic/index.html
+++ b/dev/sidekick/Sidekick_core_logic/index.html
@@ -1,2 +1,2 @@
-Sidekick_core_logic (sidekick.Sidekick_core_logic) Module Sidekick_core_logic
module Term : sig ... endCore logic terms.
module Var : sig ... endFree variable
module Bvar : sig ... endBound variable
module Const : sig ... endConstants.
module Subst : sig ... endSubstitutions
module T_builtins : sig ... endCore builtins
module Store = Term.Storemodule Str_const : sig ... endBasic string constants.
\ No newline at end of file
+Sidekick_core_logic (sidekick.Sidekick_core_logic) Module Sidekick_core_logic
module Term : sig ... endCore logic terms.
module Var : sig ... endFree variable
module Bvar : sig ... endBound variable
module Const : sig ... endConstants.
module Subst : sig ... endSubstitutions
module T_builtins : sig ... endCore builtins
module Ser_sink = Sidekick_util.Ser_sinkmodule Store = Term.Storemodule Str_const : sig ... endBasic string constants.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_model/.dummy b/dev/sidekick/Sidekick_model/.dummy
new file mode 100644
index 00000000..e69de29b
diff --git a/dev/sidekick/Sidekick_model/index.html b/dev/sidekick/Sidekick_model/index.html
new file mode 100644
index 00000000..97dddfd6
--- /dev/null
+++ b/dev/sidekick/Sidekick_model/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_model (sidekick.Sidekick_model) Module Sidekick_model
Models
A model can be produced when the solver is found to be in a satisfiable state after a call to solve.
val empty : tval is_empty : t -> boolval mem : t -> Sidekick_core.Term.t -> boolval find : t -> Sidekick_core.Term.t -> Sidekick_core.Term.t optionval eval : t -> Sidekick_core.Term.t -> Sidekick_core.Term.t optionval add : Sidekick_core.Term.t -> Sidekick_core.Term.t -> t -> tval keys : t -> Sidekick_core.Term.t Iter.tval to_iter : t -> (Sidekick_core.Term.t * Sidekick_core.Term.t) Iter.tinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sat/Solver/index.html b/dev/sidekick/Sidekick_sat/Solver/index.html
index 5e5e2be2..9216daab 100644
--- a/dev/sidekick/Sidekick_sat/Solver/index.html
+++ b/dev/sidekick/Sidekick_sat/Solver/index.html
@@ -25,11 +25,13 @@
(module Sidekick_sat__Sigs.PLUGIN)
Create a plugin
val create :
?stat:Sidekick_util.Stat.t ->
?size:[ `Tiny | `Small | `Big ] ->
+ ?tracer:Sidekick_core.Clause_tracer.t ->
proof:Sidekick_core.Proof_trace.t ->
plugin ->
tCreate new solver
val plugin_pure_sat : pluginval create_pure_sat :
?stat:Sidekick_util.Stat.t ->
?size:[ `Tiny | `Small | `Big ] ->
+ ?tracer:Sidekick_core.Clause_tracer.t ->
proof:Sidekick_core.Proof_trace.t ->
unit ->
t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sat/index.html b/dev/sidekick/Sidekick_sat/index.html
index 7883e27d..51d31902 100644
--- a/dev/sidekick/Sidekick_sat/index.html
+++ b/dev/sidekick/Sidekick_sat/index.html
@@ -25,11 +25,13 @@
(module Sidekick_sat__Sigs.PLUGIN)
Create a plugin
val create :
?stat:Sidekick_util.Stat.t ->
?size:[ `Tiny | `Small | `Big ] ->
+ ?tracer:Sidekick_core.Clause_tracer.t ->
proof:Sidekick_core.Proof_trace.t ->
plugin ->
tCreate new solver
val plugin_pure_sat : pluginval create_pure_sat :
?stat:Sidekick_util.Stat.t ->
?size:[ `Tiny | `Small | `Big ] ->
+ ?tracer:Sidekick_core.Clause_tracer.t ->
proof:Sidekick_core.Proof_trace.t ->
unit ->
t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sigs/index.html b/dev/sidekick/Sidekick_sigs/index.html
index 301123f8..07ccdc10 100644
--- a/dev/sidekick/Sidekick_sigs/index.html
+++ b/dev/sidekick/Sidekick_sigs/index.html
@@ -1,2 +1,2 @@
-Sidekick_sigs (sidekick.Sidekick_sigs) Module Sidekick_sigs
module type EQ = sig ... endmodule type ORD = sig ... endmodule type HASH = sig ... endmodule type PRINT = sig ... endmodule type EQ_HASH_PRINT = sig ... endmodule type EQ_ORD_HASH_PRINT = sig ... endmodule type EQ_ORD_HASH = sig ... endmodule type DYN_BACKTRACKABLE = sig ... endmodule type BACKTRACKABLE0 = sig ... endmodule type BACKTRACKABLE1 = sig ... endmodule type BACKTRACKABLE1_CB = sig ... endmodule type WITH_SET_MAP_TBL = sig ... end
\ No newline at end of file
+Sidekick_sigs (sidekick.Sidekick_sigs) Module Sidekick_sigs
module type EQ = sig ... endmodule type ORD = sig ... endmodule type HASH = sig ... endmodule type PRINT = sig ... endmodule type EQ_HASH_PRINT = sig ... endmodule type EQ_ORD_HASH_PRINT = sig ... endmodule type EQ_ORD_HASH = sig ... endmodule type DYN_BACKTRACKABLE = sig ... endmodule type BACKTRACKABLE0 = sig ... endmodule type BACKTRACKABLE1 = sig ... endmodule type BACKTRACKABLE1_CB = sig ... endmodule type WITH_SET_MAP_TBL = sig ... endmodule type WITH_WEAK = sig ... end
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_sigs/module-type-WITH_WEAK/index.html b/dev/sidekick/Sidekick_sigs/module-type-WITH_WEAK/index.html
new file mode 100644
index 00000000..f2354765
--- /dev/null
+++ b/dev/sidekick/Sidekick_sigs/module-type-WITH_WEAK/index.html
@@ -0,0 +1,2 @@
+
+WITH_WEAK (sidekick.Sidekick_sigs.WITH_WEAK) Module type Sidekick_sigs.WITH_WEAK
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Comb/index.html b/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Comb/index.html
index 5ca0aa54..70929231 100644
--- a/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Comb/index.html
+++ b/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Comb/index.html
@@ -1,2 +1,2 @@
-Comb (sidekick.Sidekick_simplex.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.
val pp : t Sidekick_util.Fmt.printerPrinter for linear combinations.
val is_empty : t -> boolIs the given expression empty ?
Creation
val empty : tThe empty linear combination.
as_singleton l returns Some (c,x) if l = c * x, None otherwise
module Infix : sig ... endInfix operations on combinations
Include the previous module.
include module type of Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
+Comb (sidekick.Sidekick_simplex.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.
val pp : t Sidekick_util.Fmt.printerPrinter for linear combinations.
val is_empty : t -> boolIs the given expression empty ?
Creation
val empty : tThe empty linear combination.
as_singleton l returns Some (c,x) if l = c * x, None otherwise
module Infix : sig ... endInfix operations on combinations
Include the previous module.
include module type of Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Expr/index.html b/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Expr/index.html
index 6b84b17f..977e0a9e 100644
--- a/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Expr/index.html
+++ b/dev/sidekick/Sidekick_simplex/Linear_expr/Make/Expr/index.html
@@ -1,2 +1,2 @@
-Expr (sidekick.Sidekick_simplex.Linear_expr.Make.Expr) Module Make.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
val is_zero : t -> boolval is_const : t -> boolval pp : t Sidekick_util.Fmt.printerStandard printing function on expressions.
val zero : tThe expression 2.
module Infix : sig ... endInfix operations on expressions
Include the previous module.
include module type of Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
+Expr (sidekick.Sidekick_simplex.Linear_expr.Make.Expr) Module Make.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
val is_zero : t -> boolval is_const : t -> boolval pp : t Sidekick_util.Fmt.printerStandard printing function on expressions.
val zero : tThe expression 2.
module Infix : sig ... endInfix operations on expressions
Include the previous module.
include module type of Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Comb/index.html b/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Comb/index.html
index 2825e690..d63f99d6 100644
--- a/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Comb/index.html
+++ b/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Comb/index.html
@@ -1,2 +1,2 @@
-Comb (sidekick.Sidekick_simplex.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.
val pp : t Sidekick_util.Fmt.printerPrinter for linear combinations.
val is_empty : t -> boolIs the given expression empty ?
Creation
val empty : tThe empty linear combination.
as_singleton l returns Some (c,x) if l = c * x, None otherwise
module Infix : sig ... endInfix operations on combinations
Include the previous module.
include module type of Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
+Comb (sidekick.Sidekick_simplex.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.
val pp : t Sidekick_util.Fmt.printerPrinter for linear combinations.
val is_empty : t -> boolIs the given expression empty ?
Creation
val empty : tThe empty linear combination.
as_singleton l returns Some (c,x) if l = c * x, None otherwise
module Infix : sig ... endInfix operations on combinations
Include the previous module.
include module type of Infix
Infix operations on combinations
This module defines usual operations on linear combinations, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Expr/index.html b/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Expr/index.html
index 3c45a4be..7561dbfe 100644
--- a/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Expr/index.html
+++ b/dev/sidekick/Sidekick_simplex/Linear_expr_intf/module-type-S/Expr/index.html
@@ -1,2 +1,2 @@
-Expr (sidekick.Sidekick_simplex.Linear_expr_intf.S.Expr) Module S.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
val is_zero : t -> boolval is_const : t -> boolval pp : t Sidekick_util.Fmt.printerStandard printing function on expressions.
val zero : tThe expression 2.
module Infix : sig ... endInfix operations on expressions
Include the previous module.
include module type of Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
+Expr (sidekick.Sidekick_simplex.Linear_expr_intf.S.Expr) Module S.Expr
Linear expressions represent linear arithmetic expressions as a linear combination and a constant.
val is_zero : t -> boolval is_const : t -> boolval pp : t Sidekick_util.Fmt.printerStandard printing function on expressions.
val zero : tThe expression 2.
module Infix : sig ... endInfix operations on expressions
Include the previous module.
include module type of Infix
Infix operations on expressions
This module defines usual operations on linear expressions, as infix operators to ease reading of complex computations.
Semantics
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_simplex/Make/argument-1-Arg/Q/index.html b/dev/sidekick/Sidekick_simplex/Make/argument-1-Arg/Q/index.html
index 5ec35cfd..08871508 100644
--- a/dev/sidekick/Sidekick_simplex/Make/argument-1-Arg/Q/index.html
+++ b/dev/sidekick/Sidekick_simplex/Make/argument-1-Arg/Q/index.html
@@ -1,2 +1,2 @@
-Q (sidekick.Sidekick_simplex.Make.1-Arg.Q) Module 1-Arg.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
+Q (sidekick.Sidekick_simplex.Make.1-Arg.Q) Module 1-Arg.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty 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_simplex/Make/argument-1-Arg/Z/index.html b/dev/sidekick/Sidekick_simplex/Make/argument-1-Arg/Z/index.html
index 6e302d1b..a7d66ec9 100644
--- a/dev/sidekick/Sidekick_simplex/Make/argument-1-Arg/Z/index.html
+++ b/dev/sidekick/Sidekick_simplex/Make/argument-1-Arg/Z/index.html
@@ -1,2 +1,2 @@
-Z (sidekick.Sidekick_simplex.Make.1-Arg.Z) Module 1-Arg.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
+Z (sidekick.Sidekick_simplex.Make.1-Arg.Z) Module 1-Arg.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_simplex/module-type-ARG/Q/index.html b/dev/sidekick/Sidekick_simplex/module-type-ARG/Q/index.html
index ad6c3767..2b5740bc 100644
--- a/dev/sidekick/Sidekick_simplex/module-type-ARG/Q/index.html
+++ b/dev/sidekick/Sidekick_simplex/module-type-ARG/Q/index.html
@@ -1,2 +1,2 @@
-Q (sidekick.Sidekick_simplex.ARG.Q) Module ARG.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
+Q (sidekick.Sidekick_simplex.ARG.Q) Module ARG.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty 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_simplex/module-type-ARG/Z/index.html b/dev/sidekick/Sidekick_simplex/module-type-ARG/Z/index.html
index 7159a046..bc6f0670 100644
--- a/dev/sidekick/Sidekick_simplex/module-type-ARG/Z/index.html
+++ b/dev/sidekick/Sidekick_simplex/module-type-ARG/Z/index.html
@@ -1,2 +1,2 @@
-Z (sidekick.Sidekick_simplex.ARG.Z) Module ARG.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
+Z (sidekick.Sidekick_simplex.ARG.Z) Module ARG.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_simplex/module-type-S/Q/index.html b/dev/sidekick/Sidekick_simplex/module-type-S/Q/index.html
index 31f54798..af9c64c0 100644
--- a/dev/sidekick/Sidekick_simplex/module-type-S/Q/index.html
+++ b/dev/sidekick/Sidekick_simplex/module-type-S/Q/index.html
@@ -1,2 +1,2 @@
-Q (sidekick.Sidekick_simplex.S.Q) Module S.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
+Q (sidekick.Sidekick_simplex.S.Q) Module S.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty 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_simplex/module-type-S/Z/index.html b/dev/sidekick/Sidekick_simplex/module-type-S/Z/index.html
index 6e63e709..e51be9d3 100644
--- a/dev/sidekick/Sidekick_simplex/module-type-S/Z/index.html
+++ b/dev/sidekick/Sidekick_simplex/module-type-S/Z/index.html
@@ -1,2 +1,2 @@
-Z (sidekick.Sidekick_simplex.S.Z) Module S.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
+Z (sidekick.Sidekick_simplex.S.Z) Module S.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Find_foreign/index.html b/dev/sidekick/Sidekick_smt_solver/Find_foreign/index.html
new file mode 100644
index 00000000..d444e268
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Find_foreign/index.html
@@ -0,0 +1,2 @@
+
+Find_foreign (sidekick.Sidekick_smt_solver.Find_foreign) Module Sidekick_smt_solver.Find_foreign
Find foreign variables.
This module is a modular discoverer of foreign variables (and boolean terms). It should run after preprocessing of terms.
module type ACTIONS = sig ... endtype actions = (module ACTIONS)type hook = actions -> is_sub:bool -> Sidekick_core.Term.t -> unitval create : unit -> tval traverse_term : t -> actions -> Sidekick_core.Term.t -> unitTraverse subterms of this term to detect foreign variables and boolean subterms.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Find_foreign/module-type-ACTIONS/index.html b/dev/sidekick/Sidekick_smt_solver/Find_foreign/module-type-ACTIONS/index.html
new file mode 100644
index 00000000..a34c98b9
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Find_foreign/module-type-ACTIONS/index.html
@@ -0,0 +1,2 @@
+
+ACTIONS (sidekick.Sidekick_smt_solver.Find_foreign.ACTIONS) Module type Find_foreign.ACTIONS
val declare_need_th_combination : Sidekick_core.Term.t -> unitDeclare that this term is a foreign variable in some other subterm.
val add_lit_for_bool_term : ?default_pol:bool -> Sidekick_core.Term.t -> unitAdd the (boolean) term to the SAT solver
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Model/Internal_/index.html b/dev/sidekick/Sidekick_smt_solver/Model/Internal_/index.html
deleted file mode 100644
index 298445e0..00000000
--- a/dev/sidekick/Sidekick_smt_solver/Model/Internal_/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Internal_ (sidekick.Sidekick_smt_solver.Model.Internal_) Module Model.Internal_
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Model/index.html b/dev/sidekick/Sidekick_smt_solver/Model/index.html
deleted file mode 100644
index de2a1abf..00000000
--- a/dev/sidekick/Sidekick_smt_solver/Model/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Model (sidekick.Sidekick_smt_solver.Model) Module Sidekick_smt_solver.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_smt_solver/Model_builder/index.html b/dev/sidekick/Sidekick_smt_solver/Model_builder/index.html
index 7369e8f5..1ae90707 100644
--- a/dev/sidekick/Sidekick_smt_solver/Model_builder/index.html
+++ b/dev/sidekick/Sidekick_smt_solver/Model_builder/index.html
@@ -1,2 +1,2 @@
-Model_builder (sidekick.Sidekick_smt_solver.Model_builder) Module Sidekick_smt_solver.Model_builder
Model Builder.
This contains a partial model, in construction. It is accessible to every theory, so they can contribute partial values.
TODO: seen values?
include Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval create : Sigs.Term.store -> tval mem : t -> Sigs.Term.t -> boolval require_eval : t -> Sigs.Term.t -> unitRequire that this term gets a value.
val add : t -> ?subs:Sigs.Term.t list -> Sigs.Term.t -> Sigs.value -> unitAdd a value to the model.
val gensym : t -> pre:string -> ty:Sigs.Term.t -> Sigs.Term.tNew fresh constant
val eval : ?cache:eval_cache -> t -> Sigs.Term.t -> Sigs.valueval pop_required : t -> Sigs.Term.t optiongives the next subterm that is required but has no value yet
\ No newline at end of file
+Model_builder (sidekick.Sidekick_smt_solver.Model_builder) Module Sidekick_smt_solver.Model_builder
Model Builder.
This contains a partial model, in construction. It is accessible to every theory, so they can contribute partial values.
TODO: seen values?
include Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval create : Sigs.Term.store -> tval mem : t -> Sigs.Term.t -> boolval require_eval : t -> Sigs.Term.t -> unitRequire that this term gets a value.
val add : t -> ?subs:Sigs.Term.t list -> Sigs.Term.t -> Sigs.value -> unitAdd a value to the model.
val gensym : t -> pre:string -> ty:Sigs.Term.t -> Sigs.Term.tNew fresh constant
val eval : ?cache:eval_cache -> t -> Sigs.Term.t -> Sigs.valueval pop_required : t -> Sigs.Term.t optiongives the next subterm that is required but has no value yet
val to_model : t -> Sigs.Model.t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Preprocess/index.html b/dev/sidekick/Sidekick_smt_solver/Preprocess/index.html
new file mode 100644
index 00000000..fe1dde3e
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Preprocess/index.html
@@ -0,0 +1,28 @@
+
+Preprocess (sidekick.Sidekick_smt_solver.Preprocess) Module Sidekick_smt_solver.Preprocess
Preprocessor
The preprocessor turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Every literal undergoes preprocessing. Typically some clauses are also added to the solver on the side, and some subterms are found to be foreign variables.
val create :
+ ?stat:Sidekick_util.Stat.t ->
+ proof:Sigs.proof_trace ->
+ cc:Sigs.CC.t ->
+ simplify:Sigs.Simplify.t ->
+ Sigs.Term.store ->
+ tmodule type PREPROCESS_ACTS = sig ... endActions given to preprocessor hooks
type preprocess_actions = (module PREPROCESS_ACTS)Actions available to the preprocessor
type preprocess_hook =
+ t ->
+ is_sub:bool ->
+ recurse:( Sigs.term -> Sigs.term ) ->
+ preprocess_actions ->
+ Sigs.term ->
+ Sigs.term optionGiven a term, preprocess it.
The idea is to add literals and clauses to help define the meaning of the term, if needed. For example for boolean formulas, clauses for their Tseitin encoding can be added, with the formula acting as its own proxy symbol; or a new symbol might be added.
val on_preprocess : t -> preprocess_hook -> unitAdd a hook that will be called when terms are preprocessed
val simplify_and_preproc_lit :
+ t ->
+ preprocess_actions ->
+ Sigs.lit ->
+ Sigs.lit * Sigs.step_id optionval preprocess_clause :
+ t ->
+ preprocess_actions ->
+ Sigs.lit list ->
+ Sigs.step_id ->
+ Sigs.lit list * Sigs.step_idval preprocess_clause_array :
+ t ->
+ preprocess_actions ->
+ Sigs.lit array ->
+ Sigs.step_id ->
+ Sigs.lit array * Sigs.step_id
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Preprocess/module-type-PREPROCESS_ACTS/index.html b/dev/sidekick/Sidekick_smt_solver/Preprocess/module-type-PREPROCESS_ACTS/index.html
new file mode 100644
index 00000000..4452f939
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Preprocess/module-type-PREPROCESS_ACTS/index.html
@@ -0,0 +1,2 @@
+
+PREPROCESS_ACTS (sidekick.Sidekick_smt_solver.Preprocess.PREPROCESS_ACTS) Module type Preprocess.PREPROCESS_ACTS
Actions given to preprocessor hooks
val proof : Sigs.proof_tracemk_lit t creates a new literal for a boolean term t.
val add_clause : Sigs.lit list -> Sigs.step_id -> unitpushes a new clause into the SAT solver.
val add_lit : ?default_pol:bool -> Sigs.lit -> unitEnsure the literal will be decided/handled by the SAT solver.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Sigs/index.html b/dev/sidekick/Sidekick_smt_solver/Sigs/index.html
index b348de75..5b50d9a9 100644
--- a/dev/sidekick/Sidekick_smt_solver/Sigs/index.html
+++ b/dev/sidekick/Sidekick_smt_solver/Sigs/index.html
@@ -1,2 +1,2 @@
-Sigs (sidekick.Sidekick_smt_solver.Sigs) Module Sidekick_smt_solver.Sigs
Signature for the main SMT solver types.
Theories and concrete solvers rely on an environment that defines several important types:
- sorts
- terms (to represent logic expressions and formulas)
- a congruence closure instance
- a bridge to some SAT solver
In this module we collect signatures defined elsewhere and define the module types for the main SMT solver.
include module type of struct include Sidekick_core end
module Fmt = Sidekick_core.FmtRe-exports from core-logic
module Const = Sidekick_core.Constmodule Term = Sidekick_core.Termmodule Gensym = Sidekick_core.Gensymview
module Bool_view = Sidekick_core.Bool_viewmodule CC_view = Sidekick_core.CC_viewmodule Default_cc_view = Sidekick_core.Default_cc_viewMain modules
module Bvar = Sidekick_core.Bvarmodule Lit = Sidekick_core.Litmodule Proof_step = Sidekick_core.Proof_stepmodule Proof_core = Sidekick_core.Proof_coremodule Proof_sat = Sidekick_core.Proof_satmodule Proof_trace = Sidekick_core.Proof_tracemodule Proof_term = Sidekick_core.Proof_termmodule Subst = Sidekick_core.Substmodule Var = Sidekick_core.Varmodule Simplify = Sidekick_simplifymodule CC = Sidekick_cc.CCmodule E_node = Sidekick_cc.E_nodemodule CC_expl = Sidekick_cc.Expltype term = Term.ttype ty = termtype value = Term.ttype lit = Lit.ttype term_store = Term.storetype proof_trace = Proof_trace.ttype step_id = Proof_step.idtype sat_acts = Sidekick_sat.actsConflict obtained during theory combination. It involves equalities merged because of the current model so it's not a "true" conflict and doesn't need to kill the current trail.
module type ARG = sig ... endArgument to pass to the functor Make in order to create a new Msat-based SMT solver.
\ No newline at end of file
+Sigs (sidekick.Sidekick_smt_solver.Sigs) Module Sidekick_smt_solver.Sigs
Signature for the main SMT solver types.
Theories and concrete solvers rely on an environment that defines several important types:
- sorts
- terms (to represent logic expressions and formulas)
- a congruence closure instance
- a bridge to some SAT solver
In this module we collect signatures defined elsewhere and define the module types for the main SMT solver.
include module type of struct include Sidekick_core end
module Fmt = Sidekick_core.FmtRe-exports from core-logic
module Const = Sidekick_core.Constmodule Term = Sidekick_core.Termmodule Gensym = Sidekick_core.Gensymview
module Bool_view = Sidekick_core.Bool_viewmodule CC_view = Sidekick_core.CC_viewmodule Default_cc_view = Sidekick_core.Default_cc_viewMain modules
module Bvar = Sidekick_core.Bvarmodule Lit = Sidekick_core.Litmodule Proof_step = Sidekick_core.Proof_stepmodule Proof_core = Sidekick_core.Proof_coremodule Proof_sat = Sidekick_core.Proof_satmodule Proof_trace = Sidekick_core.Proof_tracemodule Proof_term = Sidekick_core.Proof_termmodule Subst = Sidekick_core.Substmodule Var = Sidekick_core.Varmodule Box = Sidekick_core.Boxmodule Clause_tracer = Sidekick_core.Clause_tracermodule Model = Sidekick_modelmodule Simplify = Sidekick_simplifymodule CC = Sidekick_cc.CCmodule E_node = Sidekick_cc.E_nodemodule CC_expl = Sidekick_cc.Expltype term = Term.ttype ty = termtype value = Term.ttype lit = Lit.ttype term_store = Term.storetype proof_trace = Proof_trace.ttype step_id = Proof_step.idtype sat_acts = Sidekick_sat.actsConflict obtained during theory combination. It involves equalities merged because of the current model so it's not a "true" conflict and doesn't need to kill the current trail.
module type ARG = sig ... endArgument to pass to the functor Make in order to create a new Msat-based SMT solver.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Sigs/module-type-ARG/index.html b/dev/sidekick/Sidekick_smt_solver/Sigs/module-type-ARG/index.html
index 0b5bcaae..7f27a4e0 100644
--- a/dev/sidekick/Sidekick_smt_solver/Sigs/module-type-ARG/index.html
+++ b/dev/sidekick/Sidekick_smt_solver/Sigs/module-type-ARG/index.html
@@ -1,2 +1,2 @@
-ARG (sidekick.Sidekick_smt_solver.Sigs.ARG) Module type Sigs.ARG
Argument to pass to the functor Make in order to create a new Msat-based SMT solver.
val view_as_cc : Sidekick_cc.view_as_ccval is_valid_literal : Term.t -> boolIs this a valid boolean literal? (e.g. is it a closed term, not inside a quantifier)
\ No newline at end of file
+ARG (sidekick.Sidekick_smt_solver.Sigs.ARG) Module type Sigs.ARG
Argument to pass to the functor Make in order to create a new Msat-based SMT solver.
val view_as_cc : Sidekick_cc.view_as_cc
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Solver/index.html b/dev/sidekick/Sidekick_smt_solver/Solver/index.html
index cee58b14..e6995bcc 100644
--- a/dev/sidekick/Sidekick_smt_solver/Solver/index.html
+++ b/dev/sidekick/Sidekick_smt_solver/Solver/index.html
@@ -9,6 +9,7 @@
(module Sigs.ARG) ->
?stat:Sidekick_util.Stat.t ->
?size:[ `Big | `Tiny | `Small ] ->
+ ?tracer:Tracer.t ->
proof:Sigs.proof_trace ->
theories:Theory.t list ->
Sigs.Term.store ->
@@ -16,11 +17,12 @@
tCreate a new 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.
val create_default :
?stat:Sidekick_util.Stat.t ->
?size:[ `Big | `Tiny | `Small ] ->
+ ?tracer:Tracer.t ->
proof:Sigs.proof_trace ->
theories:Theory.t list ->
Sigs.Term.store ->
unit ->
- tCreate a new solver with the default CC view, and where all boolean subterms are mapped to boolean atoms.
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).
mk_lit_t _ ~sign t returns lit', where lit' is preprocess(lit) and lit is an internal representation of ± t.
The proof of |- lit = lit' is directly added to the solver's proof.
val add_clause : t -> Sigs.lit array -> Sigs.step_id -> unitadd_clause solver cs adds a boolean clause to the solver. Subsequent calls to solve will need to satisfy this clause.
val add_clause_l : t -> Sigs.lit list -> Sigs.step_id -> unitAdd a clause to the solver, given as a list.
Helper that turns each term into an atom, before adding the result to the solver as an assertion
Helper that turns the term into an atom, before adding the result to the solver as a unit clause assertion
type res = | Sat of Model.t(*Satisfiable
*) | Unsat of {unsat_core : unit -> Sigs.lit Iter.t;(*Unsat core (subset of assumptions), or empty
*) unsat_step_id : unit -> Sigs.step_id option;(*Proof step for the empty clause
*)
}(*Unsatisfiable
*) | Unknown of Unknown.t(*Unknown, obtained after a timeout, memory limit, etc.
*)
Result of solving for the current set of clauses
val solve :
+ tCreate a new solver with the default CC view, and where all boolean subterms are mapped to boolean atoms.
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).
mk_lit_t _ ~sign t returns lit', where lit' is preprocess(lit) and lit is an internal representation of ± t.
The proof of |- lit = lit' is directly added to the solver's proof.
val add_clause : t -> Sigs.lit array -> Sigs.step_id -> unitadd_clause solver cs adds a boolean clause to the solver. Subsequent calls to solve will need to satisfy this clause.
val add_clause_l : t -> Sigs.lit list -> Sigs.step_id -> unitAdd a clause to the solver, given as a list.
Helper that turns each term into an atom, before adding disjunction of the resulting atoms to the solver as a clause assertion
Helper that turns the term into an atom, before adding the result to the solver as a unit clause assertion
type res = | Sat of Sigs.Model.t(*Satisfiable
*) | Unsat of {unsat_core : unit -> Sigs.lit Iter.t;(*Unsat core (subset of assumptions), or empty
*) unsat_step_id : unit -> Sigs.step_id option;(*Proof step for the empty clause
*)
}(*Unsatisfiable
*) | Unknown of Unknown.t(*Unknown, obtained after a timeout, memory limit, etc.
*)
Result of solving for the current set of clauses
val solve :
?on_exit:( unit -> unit ) list ->
?check:bool ->
?on_progress:( t -> unit ) ->
diff --git a/dev/sidekick/Sidekick_smt_solver/Solver_internal/index.html b/dev/sidekick/Sidekick_smt_solver/Solver_internal/index.html
index da945e1c..bc755548 100644
--- a/dev/sidekick/Sidekick_smt_solver/Solver_internal/index.html
+++ b/dev/sidekick/Sidekick_smt_solver/Solver_internal/index.html
@@ -1,5 +1,11 @@
-Solver_internal (sidekick.Sidekick_smt_solver.Solver_internal) Module Sidekick_smt_solver.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.
type solver = tval tst : t -> Sigs.term_storeval stats : t -> Sidekick_util.Stat.tval proof : t -> Sigs.proof_traceAccess the proof object
val registry : t -> Registry.tA solver contains a registry so that theories can share data
Actions for the theories
Congruence Closure
Backtracking
Interface to SAT
val to_sat_plugin : t -> (module Sidekick_sat.PLUGIN)Simplifiers
type simplify_hook = Sigs.Simplify.hookval simplifier : t -> Sigs.Simplify.tval add_simplifier : t -> Sigs.Simplify.hook -> unitAdd a simplifier hook for preprocessing.
val simplify_t : t -> Sigs.term -> (Sigs.term * Sigs.step_id) optionSimplify input term, returns Some u if some simplification occurred.
val simp_t : t -> Sigs.term -> Sigs.term * Sigs.step_id optionsimp_t si t returns u even if no simplification occurred (in which case t == u syntactically). It emits |- t=u. (see simplifier)
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
module type PREPROCESS_ACTS = sig ... endtype preprocess_actions = (module PREPROCESS_ACTS)Actions available to the preprocessor
type preprocess_hook = t -> preprocess_actions -> Sigs.term -> unitGiven a term, preprocess it.
The idea is to add literals and clauses to help define the meaning of the term, if needed. For example for boolean formulas, clauses for their Tseitin encoding can be added, with the formula acting as its own proxy symbol.
val on_preprocess : t -> preprocess_hook -> unitAdd a hook that will be called when terms are preprocessed
val preprocess_clause :
+Solver_internal (sidekick.Sidekick_smt_solver.Solver_internal) Module Sidekick_smt_solver.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.
type solver = tval tst : t -> Sigs.term_storeval stats : t -> Sidekick_util.Stat.tval proof : t -> Sigs.proof_traceAccess the proof object
val registry : t -> Registry.tA solver contains a registry so that theories can share data
Actions for the theories
Congruence Closure
Backtracking
Interface to SAT
val to_sat_plugin : t -> (module Sidekick_sat.PLUGIN)Simplifiers
type simplify_hook = Sigs.Simplify.hookval simplifier : t -> Sigs.Simplify.tval add_simplifier : t -> Sigs.Simplify.hook -> unitAdd a simplifier hook for preprocessing.
val simplify_t : t -> Sigs.term -> (Sigs.term * Sigs.step_id) optionSimplify input term, returns Some u if some simplification occurred.
val simp_t : t -> Sigs.term -> Sigs.term * Sigs.step_id optionsimp_t si t returns u even if no simplification occurred (in which case t == u syntactically). It emits |- t=u. (see simplifier)
Preprocessors
These preprocessors turn mixed, raw literals (possibly simplified) into literals suitable for reasoning. Typically some clauses are also added to the solver.
module type PREPROCESS_ACTS = Preprocess.PREPROCESS_ACTStype preprocess_actions = (module PREPROCESS_ACTS)Actions available to the preprocessor
type preprocess_hook =
+ Preprocess.t ->
+ is_sub:bool ->
+ recurse:( Sigs.term -> Sigs.term ) ->
+ preprocess_actions ->
+ Sigs.term ->
+ Sigs.term optionGiven a term, preprocess it.
The idea is to add literals and clauses to help define the meaning of the term, if needed. For example for boolean formulas, clauses for their Tseitin encoding can be added, with the formula acting as its own proxy symbol.
val preprocess : t -> Preprocess.tval on_preprocess : t -> preprocess_hook -> unitAdd a hook that will be called when terms are preprocessed
val preprocess_clause :
t ->
Sigs.lit list ->
Sigs.step_id ->
@@ -7,7 +13,7 @@
t ->
Sigs.lit array ->
Sigs.step_id ->
- Sigs.lit array * Sigs.step_idval simplify_and_preproc_lit : t -> Sigs.lit -> Sigs.lit * Sigs.step_id optionSimplify literal then preprocess it
val claim_term : t -> th_id:Theory_id.t -> Sigs.term -> unitClaim a term, for a theory that might decide or merge it with another term. This is useful for theory combination.
hooks for the theory
val raise_conflict : t -> theory_actions -> Sigs.lit list -> Sigs.step_id -> 'aGive a conflict clause to the solver
val push_decision : t -> theory_actions -> Sigs.lit -> unitAsk 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.
val propagate :
+ Sigs.lit array * Sigs.step_idval simplify_and_preproc_lit : t -> Sigs.lit -> Sigs.lit * Sigs.step_id optionSimplify literal then preprocess it
Finding foreign variables
val find_foreign : t -> Find_foreign.tval on_find_foreign : t -> Find_foreign.hook -> unitAdd a hook for finding foreign variables
hooks for the theory
val raise_conflict : t -> theory_actions -> Sigs.lit list -> Sigs.step_id -> 'aGive a conflict clause to the solver
val push_decision : t -> theory_actions -> Sigs.lit -> unitAsk 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.
val propagate :
t ->
theory_actions ->
Sigs.lit ->
@@ -28,7 +34,7 @@
theory_actions ->
Sigs.lit list ->
Sigs.step_id ->
- unitAdd toplevel clause to the SAT solver. This clause will not be backtracked.
Create a literal. This automatically preprocesses the term.
val add_lit : t -> theory_actions -> ?default_pol:bool -> Sigs.lit -> unitAdd the given literal to the SAT solver, so it gets assigned a boolean value.
val add_lit_t : t -> theory_actions -> ?sign:bool -> Sigs.term -> unitAdd the given (signed) bool term to the SAT solver, so it gets assigned a boolean value
val cc_find : t -> Sigs.E_node.t -> Sigs.E_node.tFind representative of the node
Are these two terms equal in the congruence closure?
val cc_resolve_expl : t -> Sigs.CC_expl.t -> Sigs.lit list * Sigs.step_idval cc_add_term : t -> Sigs.term -> Sigs.E_node.tAdd/retrieve congruence closure node for this term. To be used in theories
Return true if the term is explicitly in the congruence closure. To be used in theories
Add toplevel clause to the SAT solver. This clause will not be backtracked.
Create a literal. This automatically preprocesses the term.
val add_lit : t -> theory_actions -> ?default_pol:bool -> Sigs.lit -> unitAdd the given literal to the SAT solver, so it gets assigned a boolean value.
val add_lit_t : t -> theory_actions -> ?sign:bool -> Sigs.term -> unitAdd the given (signed) bool term to the SAT solver, so it gets assigned a boolean value
val cc_find : t -> Sigs.E_node.t -> Sigs.E_node.tFind representative of the node
Are these two terms equal in the congruence closure?
val cc_resolve_expl : t -> Sigs.CC_expl.t -> Sigs.lit list * Sigs.step_idval cc_add_term : t -> Sigs.term -> Sigs.E_node.tAdd/retrieve congruence closure node for this term. To be used in theories
Return true if the term is explicitly in the congruence closure. To be used in theories
val on_cc_pre_merge :
t ->
( (Sigs.CC.t * Sigs.E_node.t * Sigs.E_node.t * Sigs.CC_expl.t) ->
Sigs.CC.Handler_action.or_conflict ) ->
@@ -46,7 +52,7 @@
t ->
( (Sigs.CC.t * Sigs.lit * ( unit -> Sigs.lit list * Sigs.step_id )) ->
Sigs.CC.Handler_action.t list ) ->
- unitCallback called on every CC propagation
val on_new_ty : t -> ( Sigs.ty, unit ) Sidekick_util.Event.tAdd a callback for when new types are added via add_ty
val on_partial_check :
t ->
( t -> theory_actions -> Sigs.lit Iter.t -> unit ) ->
unitRegister 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 :
@@ -63,7 +69,7 @@
?ask:model_ask_hook ->
?complete:model_completion_hook ->
t ->
- unitAdd model production/completion hooks.
val on_progress : t -> ( unit, unit ) Sidekick_util.Event.tval is_complete : t -> boolAre we still in a complete logic fragment?
Delayed actions
module type PERFORM_ACTS = sig ... endmodule Perform_delayed (A : PERFORM_ACTS) : sig ... endval on_progress : t -> ( unit, unit ) Sidekick_util.Event.tval is_complete : t -> boolAre we still in a complete logic fragment?
val last_model : t -> Sigs.Model.t optionDelayed actions
module type PERFORM_ACTS = sig ... endmodule Perform_delayed (A : PERFORM_ACTS) : sig ... endval create :
(module Sigs.ARG) ->
stat:Sidekick_util.Stat.t ->
+ tracer:Tracer.t ->
proof:Sigs.Proof_trace.t ->
Sigs.Term.store ->
unit ->
diff --git a/dev/sidekick/Sidekick_smt_solver/Solver_internal/module-type-PREPROCESS_ACTS/index.html b/dev/sidekick/Sidekick_smt_solver/Solver_internal/module-type-PREPROCESS_ACTS/index.html
deleted file mode 100644
index 84c6cc2a..00000000
--- a/dev/sidekick/Sidekick_smt_solver/Solver_internal/module-type-PREPROCESS_ACTS/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-PREPROCESS_ACTS (sidekick.Sidekick_smt_solver.Solver_internal.PREPROCESS_ACTS) Module type Solver_internal.PREPROCESS_ACTS
val proof : Sigs.proof_tracemk_lit t creates a new literal for a boolean term t.
val add_clause : Sigs.lit list -> Sigs.step_id -> unitpushes a new clause into the SAT solver.
val add_lit : ?default_pol:bool -> Sigs.lit -> unitEnsure the literal will be decided/handled by the SAT solver.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Trace_reader/index.html b/dev/sidekick/Sidekick_smt_solver/Trace_reader/index.html
new file mode 100644
index 00000000..d6634eb4
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Trace_reader/index.html
@@ -0,0 +1,6 @@
+
+Trace_reader (sidekick.Sidekick_smt_solver.Trace_reader) Module Sidekick_smt_solver.Trace_reader
Read trace
module Tr = Sidekick_tracetype entry = | Assert of Sidekick_core.Term.t| Assert_clause of {id : int;c : Sidekick_core.Lit.t list;
}
val pp_entry : entry Sidekick_core.Fmt.printerval create :
+ ?const_decoders:Sidekick_core.Const.decoders list ->
+ Sidekick_core.Term.store ->
+ Tr.Source.t ->
+ tval add_const_decoders : t -> Sidekick_core.Const.decoders -> unitval decode : t -> tag:string -> Sidekick_util.Ser_value.t -> entry optionval decode_entry : t -> Tr.Entry_id.t -> entry option
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Tracer/class-concrete/index.html b/dev/sidekick/Sidekick_smt_solver/Tracer/class-concrete/index.html
new file mode 100644
index 00000000..270712b6
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Tracer/class-concrete/index.html
@@ -0,0 +1,2 @@
+
+concrete (sidekick.Sidekick_smt_solver.Tracer.concrete) Class Tracer.concrete
Tracer emitting to a sink
inherit Sidekick_core.Term.Tracer.tinherit Sidekick_core.Clause_tracer.tmethod emit_assert_term : Sidekick_core.Term.t -> Tr.Entry_id.tEmit an assertion
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Tracer/class-dummy/index.html b/dev/sidekick/Sidekick_smt_solver/Tracer/class-dummy/index.html
new file mode 100644
index 00000000..d98f1b5a
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Tracer/class-dummy/index.html
@@ -0,0 +1,2 @@
+
+dummy (sidekick.Sidekick_smt_solver.Tracer.dummy) Class Tracer.dummy
Dummy tracer
inherit Sidekick_core.Term.Tracer.tinherit Sidekick_core.Clause_tracer.tmethod emit_assert_term : Sidekick_core.Term.t -> Tr.Entry_id.tEmit an assertion
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Tracer/class-type-t/index.html b/dev/sidekick/Sidekick_smt_solver/Tracer/class-type-t/index.html
new file mode 100644
index 00000000..d0c144a0
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Tracer/class-type-t/index.html
@@ -0,0 +1,2 @@
+
+t (sidekick.Sidekick_smt_solver.Tracer.t) Class type Tracer.t
inherit Sidekick_core.Term.Tracer.tinherit Sidekick_core.Clause_tracer.tmethod emit_assert_term : Sidekick_core.Term.t -> Tr.Entry_id.tEmit an assertion
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/Tracer/index.html b/dev/sidekick/Sidekick_smt_solver/Tracer/index.html
new file mode 100644
index 00000000..b028e115
--- /dev/null
+++ b/dev/sidekick/Sidekick_smt_solver/Tracer/index.html
@@ -0,0 +1,2 @@
+
+Tracer (sidekick.Sidekick_smt_solver.Tracer) Module Sidekick_smt_solver.Tracer
module Tr = Sidekick_traceclass type t = object ... endval dummy : tval assert_term : t -> Sidekick_core.Term.t -> Tr.Entry_id.tval assert_term' : t -> Sidekick_core.Term.t -> unitval assert_clause : t -> id:int -> Sidekick_core.Lit.t Iter.t -> Tr.Entry_id.tval assert_clause' : t -> id:int -> Sidekick_core.Lit.t Iter.t -> unitval delete_clause : t -> id:int -> Sidekick_core.Lit.t Iter.t -> unitval unsat_clause : t -> id:int -> Tr.Entry_id.tval unsat_clause' : t -> id:int -> unitval encode_lit : t -> Sidekick_core.Lit.t -> Sidekick_util.Ser_value.t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_smt_solver/index.html b/dev/sidekick/Sidekick_smt_solver/index.html
index ae32114b..a641d4b3 100644
--- a/dev/sidekick/Sidekick_smt_solver/index.html
+++ b/dev/sidekick/Sidekick_smt_solver/index.html
@@ -1,2 +1,2 @@
-Sidekick_smt_solver (sidekick.Sidekick_smt_solver) Module Sidekick_smt_solver
Core of the SMT solver using Sidekick_sat
Sidekick_sat (in src/sat/) is a modular SAT solver in pure OCaml.
This builds a SMT solver on top of it.
module Sigs : sig ... endSignature for the main SMT solver types.
module Model : sig ... endModels
module Model_builder : sig ... endModel Builder.
module Registry : sig ... endRegistry to extract values
module Solver_internal : sig ... endA view of the solver from a theory's point of view.
module Solver : sig ... endMain solver type, user facing.
module Theory : sig ... endSignatures for theory plugins
module Theory_id : sig ... endtype theory = Theory.ttype solver = Solver.t
\ No newline at end of file
+Sidekick_smt_solver (sidekick.Sidekick_smt_solver) Module Sidekick_smt_solver
Core of the SMT solver using Sidekick_sat
Sidekick_sat (in src/sat/) is a modular SAT solver in pure OCaml.
This builds a SMT solver on top of it.
module Sigs : sig ... endSignature for the main SMT solver types.
module Model = Sidekick_modelmodule Model_builder : sig ... endModel Builder.
module Registry : sig ... endRegistry to extract values
module Solver_internal : sig ... endA view of the solver from a theory's point of view.
module Solver : sig ... endMain solver type, user facing.
module Theory : sig ... endSignatures for theory plugins
module Theory_id : sig ... endmodule Preprocess : sig ... endPreprocessor
module Find_foreign : sig ... endFind foreign variables.
module Tracer : sig ... endmodule Trace_reader : sig ... endRead trace
type theory = Theory.ttype solver = Solver.t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_lra/Intf/module-type-ARG/Q/index.html b/dev/sidekick/Sidekick_th_lra/Intf/module-type-ARG/Q/index.html
index 1409f7be..b6cd1523 100644
--- a/dev/sidekick/Sidekick_th_lra/Intf/module-type-ARG/Q/index.html
+++ b/dev/sidekick/Sidekick_th_lra/Intf/module-type-ARG/Q/index.html
@@ -1,2 +1,2 @@
-Q (sidekick.Sidekick_th_lra.Intf.ARG.Q) Module ARG.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
+Q (sidekick.Sidekick_th_lra.Intf.ARG.Q) Module ARG.Q
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printertype bigint = Z.tval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty 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_th_lra/Intf/module-type-ARG/Z/index.html b/dev/sidekick/Sidekick_th_lra/Intf/module-type-ARG/Z/index.html
index e8580fa1..a08e5612 100644
--- a/dev/sidekick/Sidekick_th_lra/Intf/module-type-ARG/Z/index.html
+++ b/dev/sidekick/Sidekick_th_lra/Intf/module-type-ARG/Z/index.html
@@ -1,2 +1,2 @@
-Z (sidekick.Sidekick_th_lra.Intf.ARG.Z) Module ARG.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
+Z (sidekick.Sidekick_th_lra.Intf.ARG.Z) Module ARG.Z
include Sidekick_arith.NUM
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_ty_unin/.dummy b/dev/sidekick/Sidekick_th_ty_unin/.dummy
new file mode 100644
index 00000000..e69de29b
diff --git a/dev/sidekick/Sidekick_th_ty_unin/index.html b/dev/sidekick/Sidekick_th_ty_unin/index.html
new file mode 100644
index 00000000..b728c4b2
--- /dev/null
+++ b/dev/sidekick/Sidekick_th_ty_unin/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_th_ty_unin (sidekick.Sidekick_th_ty_unin) Module Sidekick_th_ty_unin
type ty = Sidekick_core.Term.tmodule type ARG = sig ... endval theory : (module ARG) -> Sidekick_smt_solver.Theory.tTheory of uninterpreted types
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_th_ty_unin/module-type-ARG/index.html b/dev/sidekick/Sidekick_th_ty_unin/module-type-ARG/index.html
new file mode 100644
index 00000000..12f3161e
--- /dev/null
+++ b/dev/sidekick/Sidekick_th_ty_unin/module-type-ARG/index.html
@@ -0,0 +1,2 @@
+
+ARG (sidekick.Sidekick_th_ty_unin.ARG) Module type Sidekick_th_ty_unin.ARG
val ty_is_unin : ty -> bool
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_trace/.dummy b/dev/sidekick/Sidekick_trace/.dummy
new file mode 100644
index 00000000..e69de29b
diff --git a/dev/sidekick/Sidekick_trace/Entry_id/index.html b/dev/sidekick/Sidekick_trace/Entry_id/index.html
new file mode 100644
index 00000000..4165c54b
--- /dev/null
+++ b/dev/sidekick/Sidekick_trace/Entry_id/index.html
@@ -0,0 +1,2 @@
+
+Entry_id (sidekick.Sidekick_trace.Entry_id) Module Sidekick_trace.Entry_id
Entry in the sink.
This integer tag represent a single entry in a trace, for example a line if we serialized using line-separate json values. In general each entry has its own unique ID that is monotonically increasing with time.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_trace/Entry_view/index.html b/dev/sidekick/Sidekick_trace/Entry_view/index.html
new file mode 100644
index 00000000..5f3d54c1
--- /dev/null
+++ b/dev/sidekick/Sidekick_trace/Entry_view/index.html
@@ -0,0 +1,2 @@
+
+Entry_view (sidekick.Sidekick_trace.Entry_view) Module Sidekick_trace.Entry_view
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_trace/Sink/index.html b/dev/sidekick/Sidekick_trace/Sink/index.html
new file mode 100644
index 00000000..81b3c92d
--- /dev/null
+++ b/dev/sidekick/Sidekick_trace/Sink/index.html
@@ -0,0 +1,2 @@
+
+Sink (sidekick.Sidekick_trace.Sink) Module Sidekick_trace.Sink
An IO sink for serialization/tracing
A trace is emitted on the fly into a sink. The sink collects or writes entries that are emitted into it.
module type S = sig ... endtype t = (module S)Trace sink
val emit : t -> tag:tag -> Sidekick_util.Ser_value.t -> Entry_id.tval emit' : t -> tag:tag -> Sidekick_util.Ser_value.t -> unitval null : tSink that writes nowhere, just eats bytes.
val of_out_channel_using_bencode : Stdlib.out_channel -> tA sink that emits entries using Bencode into the given channel
val of_buffer_using_bencode : Stdlib.Buffer.t -> tEmit entries into the given buffer, in Bencode.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_trace/Sink/module-type-S/index.html b/dev/sidekick/Sidekick_trace/Sink/module-type-S/index.html
new file mode 100644
index 00000000..f1a2bccc
--- /dev/null
+++ b/dev/sidekick/Sidekick_trace/Sink/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (sidekick.Sidekick_trace.Sink.S) Module type Sink.S
val emit : tag:tag -> Sidekick_util.Ser_value.t -> Entry_id.t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_trace/Source/index.html b/dev/sidekick/Sidekick_trace/Source/index.html
new file mode 100644
index 00000000..33e3d430
--- /dev/null
+++ b/dev/sidekick/Sidekick_trace/Source/index.html
@@ -0,0 +1,5 @@
+
+Source (sidekick.Sidekick_trace.Source) Module Sidekick_trace.Source
Source to read a trace.
A source is an IO input source that allows the read of individual entries of the trace, by providing their entry ID. It also allows to iterate on entries in chronological order.
module type S = sig ... endtype t = (module S)val get_entry : t -> Entry_id.t -> (tag * Sidekick_util.Ser_value.t) optionval get_entry_exn : t -> Entry_id.t -> tag * Sidekick_util.Ser_value.tval iter_all :
+ t ->
+ ( Entry_id.t -> tag:tag -> Sidekick_util.Ser_value.t -> unit ) ->
+ unitval of_string_using_bencode : string -> tDecode string, where entries are offsets
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_trace/Source/module-type-S/index.html b/dev/sidekick/Sidekick_trace/Source/module-type-S/index.html
new file mode 100644
index 00000000..e6180cb5
--- /dev/null
+++ b/dev/sidekick/Sidekick_trace/Source/module-type-S/index.html
@@ -0,0 +1,4 @@
+
+S (sidekick.Sidekick_trace.Source.S) Module type Source.S
val get_entry : Entry_id.t -> tag * Sidekick_util.Ser_value.tval iter_all :
+ ( Entry_id.t -> tag:tag -> Sidekick_util.Ser_value.t -> unit ) ->
+ unitIterate on all entries
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_trace/index.html b/dev/sidekick/Sidekick_trace/index.html
new file mode 100644
index 00000000..b5d4bfd4
--- /dev/null
+++ b/dev/sidekick/Sidekick_trace/index.html
@@ -0,0 +1,2 @@
+
+Sidekick_trace (sidekick.Sidekick_trace) Module Sidekick_trace
Tracing.
Sidekick should be able to emit traces of some or all of the events happening inside its components (SAT solver, SMT solver, theories, etc.).
Traces can be written to disk and read back later from another process.
The two initial intended use cases are:
- proof production (trace all inferences; reconstruct a proof from them starting from the inference of
false) - debugging (trace some inferences/internal states/partial models; double check them later)
Exports
module Entry_view : sig ... endmodule Sink : sig ... endAn IO sink for serialization/tracing
module Source : sig ... endSource to read a trace.
module Entry_id : sig ... endEntry in the sink.
type entry_id = Entry_id.ttype entry_view = Entry_view.t = ..
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/Error/index.html b/dev/sidekick/Sidekick_util/Error/index.html
index 9c7f6c86..f830be61 100644
--- a/dev/sidekick/Sidekick_util/Error/index.html
+++ b/dev/sidekick/Sidekick_util/Error/index.html
@@ -1,2 +1,2 @@
-Error (sidekick.Sidekick_util.Error) Module Sidekick_util.Error
\ No newline at end of file
+Error (sidekick.Sidekick_util.Error) Module Sidekick_util.Error
val try_ : ( unit -> 'a ) -> 'a result
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/Event/index.html b/dev/sidekick/Sidekick_util/Event/index.html
index caee63c7..5de74f85 100644
--- a/dev/sidekick/Sidekick_util/Event/index.html
+++ b/dev/sidekick/Sidekick_util/Event/index.html
@@ -1,2 +1,2 @@
-Event (sidekick.Sidekick_util.Event) Module Sidekick_util.Event
module Emitter : sig ... endval on : ( 'a, 'b ) t -> f:( 'a -> 'b ) -> unitval emit : ( 'a, unit ) Emitter.t -> 'a -> unitval emit_collect : ( 'a, 'b ) Emitter.t -> 'a -> 'b listval emit_iter : ( 'a, 'b ) Emitter.t -> 'a -> f:( 'b -> unit ) -> unit
\ No newline at end of file
+Event (sidekick.Sidekick_util.Event) Module Sidekick_util.Event
Event pattern.
This provides a basic observer pattern, where events are emitted from some source (with an attached value), and callbacks that were registered will receive this value.
module Emitter : sig ... endval on : ( 'a, 'b ) t -> f:( 'a -> 'b ) -> unitval emit : ( 'a, unit ) Emitter.t -> 'a -> unitval emit_collect : ( 'a, 'b ) Emitter.t -> 'a -> 'b listval emit_iter : ( 'a, 'b ) Emitter.t -> 'a -> f:( 'b -> unit ) -> unit
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/Ser_decode/Error/index.html b/dev/sidekick/Sidekick_util/Ser_decode/Error/index.html
new file mode 100644
index 00000000..80d4f1b9
--- /dev/null
+++ b/dev/sidekick/Sidekick_util/Ser_decode/Error/index.html
@@ -0,0 +1,2 @@
+
+Error (sidekick.Sidekick_util.Ser_decode.Error) Module Ser_decode.Error
Errors
include Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval to_string : t -> stringval of_string : string -> Ser_value.t -> t
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/Ser_decode/Infix/index.html b/dev/sidekick/Sidekick_util/Ser_decode/Infix/index.html
new file mode 100644
index 00000000..883c9dce
--- /dev/null
+++ b/dev/sidekick/Sidekick_util/Ser_decode/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (sidekick.Sidekick_util.Ser_decode.Infix) Module Ser_decode.Infix
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/Ser_decode/index.html b/dev/sidekick/Sidekick_util/Ser_decode/index.html
new file mode 100644
index 00000000..7f7eb22a
--- /dev/null
+++ b/dev/sidekick/Sidekick_util/Ser_decode/index.html
@@ -0,0 +1,2 @@
+
+Ser_decode (sidekick.Sidekick_util.Ser_decode) Module Sidekick_util.Ser_decode
Decoders for Ser_value.
Combinators to decode values.
module Error : sig ... endErrors
Main combinators
val int : int tval bool : bool tval string : string tval return : 'a -> 'a tval return_result : ( 'a, string ) Stdlib.result -> 'a tval fail : string -> 'a tval failf : ( 'a, unit, string, 'b t ) Stdlib.format4 -> 'aval unwrap_opt : string -> 'a option -> 'a tUnwrap option, or fail
val any : Ser_value.t tUnwrap option, or fail
val reflect : 'a t -> Ser_value.t -> ( 'a, Error.t ) Stdlib.result treflect dec v returns the result of decoding v with dec
val reflect_or_fail : 'a t -> Ser_value.t -> 'a tmodule Infix : sig ... endDeserializing
val run : 'a t -> Ser_value.t -> ( 'a, Error.t ) Stdlib.resultval run_exn : 'a t -> Ser_value.t -> 'a
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/Ser_value/index.html b/dev/sidekick/Sidekick_util/Ser_value/index.html
new file mode 100644
index 00000000..e24d4c54
--- /dev/null
+++ b/dev/sidekick/Sidekick_util/Ser_value/index.html
@@ -0,0 +1,2 @@
+
+Ser_value (sidekick.Sidekick_util.Ser_value) Module Sidekick_util.Ser_value
Serialization representation.
A Ser_value.t describes how to serialized some structured data into bytes. It reflects the shape of the structured data but does not commit to a particular serialization format.
val null : tval bool : bool -> tval int : int -> tval string : string -> tval bytes : string -> tval is_null : t -> boolinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printer
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/Util/index.html b/dev/sidekick/Sidekick_util/Util/index.html
index a1fe043c..819bd5ab 100644
--- a/dev/sidekick/Sidekick_util/Util/index.html
+++ b/dev/sidekick/Sidekick_util/Util/index.html
@@ -3,4 +3,4 @@
f:( int -> 'a -> 'b -> unit ) ->
'a array ->
'b array ->
- unit
\ No newline at end of file
+ unit
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_util/index.html b/dev/sidekick/Sidekick_util/index.html
index b74ab294..eb879294 100644
--- a/dev/sidekick/Sidekick_util/index.html
+++ b/dev/sidekick/Sidekick_util/index.html
@@ -1,2 +1,2 @@
-Sidekick_util (sidekick.Sidekick_util) Module Sidekick_util
module Util : sig ... endmodule Vec : sig ... endVectors
module Veci : sig ... endVectors of int32 integers
module Vec_float : sig ... endVectors of floats
module Vec_sig : sig ... endmodule Bitvec : sig ... endBitvector.
module Int_id : sig ... endInteger-based identifiers.
module Int_tbl = Util.Int_tblmodule Int_set = Util.Int_setmodule Int_map = Util.Int_mapmodule Event : sig ... endmodule Backtrack_stack : sig ... endmodule Backtrackable_tbl : sig ... endmodule Backtrackable_ref : sig ... endmodule Log : sig ... endLogging function, for debugging
module Error : sig ... endmodule Bag : sig ... endmodule Stat : sig ... endmodule Hash : sig ... endmodule Profile : sig ... endProfiling probes.
module Chunk_stack : sig ... endManage a list of chunks.
\ No newline at end of file
+Sidekick_util (sidekick.Sidekick_util) Module Sidekick_util
module Util : sig ... endmodule Vec : sig ... endVectors
module Veci : sig ... endVectors of int32 integers
module Vec_float : sig ... endVectors of floats
module Vec_sig : sig ... endmodule Bitvec : sig ... endBitvector.
module Int_id : sig ... endInteger-based identifiers.
module Int_tbl = Util.Int_tblmodule Int_set = Util.Int_setmodule Int_map = Util.Int_mapmodule Event : sig ... endEvent pattern.
module Backtrack_stack : sig ... endmodule Backtrackable_tbl : sig ... endmodule Backtrackable_ref : sig ... endmodule Log : sig ... endLogging function, for debugging
module Error : sig ... endmodule Bag : sig ... endmodule Stat : sig ... endmodule Hash : sig ... endmodule Profile : sig ... endProfiling probes.
module Chunk_stack : sig ... endManage a list of chunks.
module Ser_value : sig ... endSerialization representation.
module Ser_decode : sig ... endDecoders for Ser_value.
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_zarith/Int/index.html b/dev/sidekick/Sidekick_zarith/Int/index.html
index 7394006b..ecf1a185 100644
--- a/dev/sidekick/Sidekick_zarith/Int/index.html
+++ b/dev/sidekick/Sidekick_zarith/Int/index.html
@@ -1,2 +1,2 @@
-Int (sidekick.Sidekick_zarith.Int) Module Sidekick_zarith.Int
include Sidekick_arith.INT with type t = Z.t
include Sidekick_arith.NUM with type t = Z.t
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval probab_prime : t -> bool
\ No newline at end of file
+Int (sidekick.Sidekick_zarith.Int) Module Sidekick_zarith.Int
include Sidekick_arith.INT with type t = Z.t
include Sidekick_arith.NUM with type t = Z.t
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval probab_prime : t -> bool
\ No newline at end of file
diff --git a/dev/sidekick/Sidekick_zarith/Rational/index.html b/dev/sidekick/Sidekick_zarith/Rational/index.html
index d0004f7c..250ad55d 100644
--- a/dev/sidekick/Sidekick_zarith/Rational/index.html
+++ b/dev/sidekick/Sidekick_zarith/Rational/index.html
@@ -1,2 +1,2 @@
-Rational (sidekick.Sidekick_zarith.Rational) Module Sidekick_zarith.Rational
include Sidekick_arith.NUM with type t = Q.t
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tinclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty print rational with given amount of precision (for example as a floating point number)
\ No newline at end of file
+Rational (sidekick.Sidekick_zarith.Rational) Module Sidekick_zarith.Rational
include Sidekick_arith.NUM with type t = Q.t
val zero : tval one : tval minus_one : tval sign : t -> intval of_int : int -> tval to_string : t -> stringval of_string : string -> t optioninclude Sidekick_sigs.EQ with type t := t
include Sidekick_sigs.ORD with type t := t
include Sidekick_sigs.HASH with type t := t
val hash : t -> intinclude Sidekick_sigs.PRINT with type t := t
val pp : t Sidekick_sigs.printerval infinity : t+infinity
val minus_infinity : tval is_real : t -> boolA proper real, not nan/infinity
val is_int : t -> boolIs this a proper integer?
val pp_approx : int -> Stdlib.Format.formatter -> t -> unitPretty 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/index.html b/dev/sidekick/index.html
index 353921b8..9bcd3ef2 100644
--- a/dev/sidekick/index.html
+++ b/dev/sidekick/index.html
@@ -1,2 +1,2 @@
-index (sidekick.index) sidekick index
Library sidekick.arith
The entry point of this library is the module: Sidekick_arith.
Library sidekick.cc
The entry point of this library is the module: Sidekick_cc.
Library sidekick.cc.plugin
The entry point of this library is the module: Sidekick_cc_plugin.
Library sidekick.core
The entry point of this library is the module: Sidekick_core.
Library sidekick.core-logic
The entry point of this library is the module: Sidekick_core_logic.
Library sidekick.drup
The entry point of this library is the module: Sidekick_drup.
Library sidekick.memtrace
The entry point of this library is the module: Sidekick_memtrace.
Library sidekick.mini-cc
The entry point of this library is the module: Sidekick_mini_cc.
Library sidekick.quip
The entry point of this library is the module: Sidekick_quip.
Library sidekick.sat
The entry point of this library is the module: Sidekick_sat.
Library sidekick.sigs
The entry point of this library is the module: Sidekick_sigs.
Library sidekick.simplex
The entry point of this library is the module: Sidekick_simplex.
Library sidekick.simplify
The entry point of this library is the module: Sidekick_simplify.
Library sidekick.smt-solver
The entry point of this library is the module: Sidekick_smt_solver.
Library sidekick.tef
The entry point of this library is the module: Sidekick_tef.
Library sidekick.th-bool-dyn
The entry point of this library is the module: Sidekick_th_bool_dyn.
Library sidekick.th-bool-static
The entry point of this library is the module: Sidekick_th_bool_static.
Library sidekick.th-cstor
The entry point of this library is the module: Sidekick_th_cstor.
Library sidekick.th-data
The entry point of this library is the module: Sidekick_th_data.
Library sidekick.th-lra
The entry point of this library is the module: Sidekick_th_lra.
Library sidekick.util
The entry point of this library is the module: Sidekick_util.
Library sidekick.zarith
The entry point of this library is the module: Sidekick_zarith.
\ No newline at end of file
+index (sidekick.index) sidekick index
Library sidekick.arith
The entry point of this library is the module: Sidekick_arith.
Library sidekick.bencode
The entry point of this library is the module: Sidekick_bencode.
Library sidekick.cc
The entry point of this library is the module: Sidekick_cc.
Library sidekick.cc.plugin
The entry point of this library is the module: Sidekick_cc_plugin.
Library sidekick.core
The entry point of this library is the module: Sidekick_core.
Library sidekick.core-logic
The entry point of this library is the module: Sidekick_core_logic.
Library sidekick.drup
The entry point of this library is the module: Sidekick_drup.
Library sidekick.memtrace
The entry point of this library is the module: Sidekick_memtrace.
Library sidekick.mini-cc
The entry point of this library is the module: Sidekick_mini_cc.
Library sidekick.model
The entry point of this library is the module: Sidekick_model.
Library sidekick.quip
The entry point of this library is the module: Sidekick_quip.
Library sidekick.sat
The entry point of this library is the module: Sidekick_sat.
Library sidekick.sigs
The entry point of this library is the module: Sidekick_sigs.
Library sidekick.simplex
The entry point of this library is the module: Sidekick_simplex.
Library sidekick.simplify
The entry point of this library is the module: Sidekick_simplify.
Library sidekick.smt-solver
The entry point of this library is the module: Sidekick_smt_solver.
Library sidekick.tef
The entry point of this library is the module: Sidekick_tef.
Library sidekick.th-bool-dyn
The entry point of this library is the module: Sidekick_th_bool_dyn.
Library sidekick.th-bool-static
The entry point of this library is the module: Sidekick_th_bool_static.
Library sidekick.th-cstor
The entry point of this library is the module: Sidekick_th_cstor.
Library sidekick.th-data
The entry point of this library is the module: Sidekick_th_data.
Library sidekick.th-lra
The entry point of this library is the module: Sidekick_th_lra.
Library sidekick.th-ty-unin
The entry point of this library is the module: Sidekick_th_ty_unin.
Library sidekick.trace
The entry point of this library is the module: Sidekick_trace.
Library sidekick.util
The entry point of this library is the module: Sidekick_util.
Library sidekick.zarith
The entry point of this library is the module: Sidekick_zarith.
\ No newline at end of file