(* * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION * TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * *) type t module type SOLVER = sig type soln type bind val create : bind FixConfig.cfg -> FixConstraint.soln option -> (t * soln) val solve : t -> soln -> (soln * (FixConstraint.t list) * Counterexample.cex list) val save : string -> t -> soln -> unit val read : soln -> FixConstraint.soln val min_read : soln -> FixConstraint.soln val read_bind : soln -> Ast.Symbol.t -> bind val cone : t -> FixConstraint.id -> FixConstraint.tag Ast.Cone.t (* val meet : soln -> soln -> soln *) end module Make (Dom : SolverArch.DOMAIN) : SOLVER with type bind = Dom.bind with type soln = Dom.t