1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677(******************************************************************************)(* *)(* 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 *)moduletypeS=sigtypetexceptionSatoftexceptionUnsatofExplanation.texceptionI_dont_knowoft(* the empty sat-solver context *)valempty:unit->tvalempty_with_inst:(Expr.t->bool)->t(** [push env n] add n new assertion levels.
A guard g is added for every expression e assumed at the current
assertion level.
Ie. assuming e after the push will become g -> e,
a g will be forced to be true (but not propagated at level 0) *)valpush:t->int->t(** [pop env n] remove an assertion level.
Internally, the guard g introduced in the push correponsding to this pop
will be propagated to false (at level 0) *)valpop:t->int->t(* [assume env f] assume a new formula [f] in [env]. Raises Unsat if
[f] is unsatisfiable in [env] *)valassume:t->Expr.gformula->Explanation.t->tvalassume_th_elt:t->Expr.th_elt->Explanation.t->t(* [pred_def env f] assume a new predicate definition [f] in [env]. *)valpred_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] *)valunsat:t->Expr.gformula->Explanation.tvalprint_model:header:bool->Format.formatter->t->unitvalreset_refs:unit->unitendmoduletypeSatContainer=sigmoduleMake(Th:Theory.S):Send