1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283(**************************************************************************)(* This file is part of BINSEC. *)(* *)(* Copyright (C) 2016-2026 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file licenses/LGPLv2.1). *)(* *)(**************************************************************************)moduleLogger=LoggermoduleLang=structincludeSmtlibmoduleLocation=LocationmoduleLexer=Smtlib_lexermoduleParser=Smtlib_parsermodule Printer =Smtlib_ppmoduleUtils=Smtlib_utilsendmodule Formula=structincludeFormulainclude Formula_ppmoduleTo_smtlib=Formula_to_smtlibmoduleTransformation=Formula_transformationmoduleModel=Formula_modelmoduleSolver=Formula_solvermoduleUtils=Formula_utilsmoduleLogger =Formula_loggerendmoduleBindings=Binsec_smtlib_bindingsmoduleSolver=structtypestatus=Session.status=Sat|Unsat|UnknownincludeSolvermodule Session =Sessiontypebackend=|None:backend|Text:{session:(moduleSession.Swithtypearg='a);arg:'a;}->backend|Binding :{factory :(module Bindings.OPEN);complete_fold_ax_values:bool;(** [complete_fold_ax_values] is [true] if there is an explicit value for each accessed address, [false] when there can exist a missed default value. *)}->backendletdefault_backend()=matchBindings.bitwuzla_cxxwith|Somefactory->Binding{factory;complete_fold_ax_values=false}|None ->(matchBindings.bitwuzla_cwith|Somefactory->Binding {factory;complete_fold_ax_values=true}|None->(matchBindings.z3with|Somefactory->Binding{factory;complete_fold_ax_values=false}|None->(matchList.findSolver.ping[Bitwuzla;Boolector;Yices;Z3;CVC4]with|solver->Text{session=(moduleSession.Spawn);arg=solver}|exceptionNot_found->None)))end