Module Smtml.SolverSource

Sourcemodule type S = Solver_intf.S

The S module type, which defines the core solver interface.

Batch Mode

In this module, constraints are handled in a 'batch' mode, meaning that the solver delays all interactions with the underlying SMT solver until it becomes necessary. It communicates with the underlying solver only when a call to Solver_intf.S.check, Solver_intf.S.get_value, or Solver_intf.S.model is made.

The Batch module is parameterized by the mapping module M implementing Mappings_intf.S. In this mode, the solver delays all interactions with the underlying SMT solver until necessary.

Incremental Mode

In the Incremental module, constraints are managed incrementally, meaning that every interaction with the solver prompts a corresponding interaction with the underlying SMT solver. Unlike the batch solver, nearly every interaction with this solver involves the underlying SMT solver.

The Incremental module, like Batch, presents a solver parameterized by the mapping module M. In this mode, the Incremental solver engages with the underlying SMT solver in nearly every interaction.