sidekick/src/base/Sidekick_base.ml
2021-07-04 01:29:23 -04:00

53 lines
1.6 KiB
OCaml

(** {1 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 {{!Base_types.Statement} 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 Base_types = Base_types
module ID = ID
module Fun = Base_types.Fun
module Stat = Stat
module Model = Model
module Term = Base_types.Term
module Value = Base_types.Value
module Term_cell = Base_types.Term_cell
module Ty = Base_types.Ty
module Statement = Base_types.Statement
module Data = Base_types.Data
module Select = Base_types.Select
module Proof = Proof
module Form = Form
(* re-export *)
module IArray = IArray
(** Concrete implementation of {!Sidekick_core.TERM}
this module gathers most definitions above in a form
that is compatible with what Sidekick expects for terms, functions, etc.
*)
module Arg
: Sidekick_core.TERM
with type Term.t = Term.t
and type Fun.t = Fun.t
and type Ty.t = Ty.t
and type Term.store = Term.store
= struct
module Term = Term
module Fun = Fun
module Ty = Ty
end