Sidekick_baseThis 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 Base_types : sig ... endBasic type definitions for Sidekick_base
module ID : sig ... endUnique Identifiers
module Fun = Base_types.Funmodule Stat = Sidekick_util.Statmodule Model : sig ... endModels
module Term = Base_types.Termmodule Value = Base_types.Valuemodule Term_cell = Base_types.Term_cellmodule Ty = Base_types.Tymodule Statement = Base_types.Statementmodule Data = Base_types.Datamodule Select = Base_types.Selectmodule Form : sig ... endFormulas (boolean terms).
module Solver_arg : sig ... endConcrete implementation of Sidekick_core.TERM
module Lit : sig ... endmodule Proof_dummy : sig ... endDummy proof module that does nothing.
module Proof : sig ... endProof representation
module Proof_quip : sig ... endExport to Quip from Proof.
module IArray = Sidekick_util.IArray