sat_solver_sig.ml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67(******************************************************************************) (* *) (* The Alt-Ergo theorem prover *) (* Copyright (C) 2006-2013 *) (* *) (* Sylvain Conchon *) (* Evelyne Contejean *) (* *) (* Francois Bobot *) (* Mohamed Iguernelala *) (* Stephane Lescuyer *) (* Alain Mebsout *) (* *) (* CNRS - INRIA - Universite Paris Sud *) (* *) (* This file is distributed under the terms of the Apache Software *) (* License version 2.0 *) (* *) (* ------------------------------------------------------------------------ *) (* *) (* Alt-Ergo: The SMT Solver For Software Verification *) (* Copyright (C) 2013-2018 --- OCamlPro SAS *) (* *) (* This file is distributed under the terms of the Apache Software *) (* License version 2.0 *) (* *) (******************************************************************************) (* We put an ml file for the module type, to avoid issues when building the lib *) module type S = sig type t exception Sat of t exception Unsat of Explanation.t exception I_dont_know of t (* the empty sat-solver context *) val empty : unit -> t val empty_with_inst : (Expr.t -> bool) -> t (* [assume env f] assume a new formula [f] in [env]. Raises Unsat if [f] is unsatisfiable in [env] *) val assume : t -> Expr.gformula -> Explanation.t -> t val assume_th_elt : t -> Expr.th_elt -> Explanation.t -> t (* [pred_def env f] assume a new predicate definition [f] in [env]. *) val pred_def : t -> Expr.t -> string -> Explanation.t -> Loc.t -> t (* [unsat env f size] checks the unsatisfiability of [f] in [env]. Raises I_dont_know when the proof tree's height reaches [size]. Raises Sat if [f] is satisfiable in [env] *) val unsat : t -> Expr.gformula -> Explanation.t val print_model : header:bool -> Format.formatter -> t -> unit val reset_refs : unit -> unit val get_steps : unit -> int64 end module type SatContainer = sig module Make (Th : Theory.S) : S end