package binsec
Semantic analysis of binary executables
Install
Dune Dependency
Authors
-
AAdel Djoudi
-
BBenjamin Farinier
-
CChakib Foulani
-
DDorian Lesbre
-
FFrédéric Recoules
-
GGuillaume Girol
-
JJosselin Feist
-
LLesly-Ann Daniel
-
MMahmudul Faisal Al Ameen
-
MManh-Dung Nguyen
-
MMathéo Vergnolle
-
MMathilde Ollivier
-
MMatthieu Lemerre
-
NNicolas Bellec
-
OOlivier Nicole
-
RRichard Bonichon
-
RRobin David
-
SSébastien Bardin
-
SSoline Ducousso
-
TTa Thanh Dinh
-
YYaëlle Vinçont
-
YYanis Sellami
Maintainers
Sources
binsec-0.9.1.tbz
sha256=a6ccc9c0a756f6056a5bf6a2f602d59690944f4164cc180d0082c36f081e7e94
sha512=cd85654f94da9ce8fedab746c557c326821cc7932005337303607e0c52d7caf403655fc1000b34d32f1f2606ab1b3d079b9057346ef0a2f88057e0dd7b412cce
doc/src/binsec.smt/smt_solver.ml.html
Source file smt_solver.ml
1 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
(**************************************************************************) (* This file is part of BINSEC. *) (* *) (* Copyright (C) 2016-2024 *) (* 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). *) (* *) (**************************************************************************) let solvers = let open Formula_options in [ Bitwuzla; Boolector; Z3; CVC4; Yices ] let map = let open Formula_options in let open Smt_options in function | Auto | Bitwuzla_builtin | Bitwuzla_legacy | Z3_builtin -> assert false | Bitwuzla_smtlib -> Bitwuzla | Boolector_smtlib -> Boolector | Z3_smtlib -> Z3 | CVC4_smtlib -> CVC4 | Yices_smtlib -> Yices let get_solver () = let open Formula_options in let open Smt_options in match SMTSolver.get () with | (Auto | Bitwuzla_builtin) when Option.is_some Libsolver.bitwuzla_cxx -> let module Solver = (val Option.get Libsolver.bitwuzla_cxx) in (module Smt_internal.Make (Solver) : Smt_sig.Solver) | (Auto | Bitwuzla_builtin | Bitwuzla_legacy) when Option.is_some Libsolver.bitwuzla_c -> let module Solver = (val Option.get Libsolver.bitwuzla_c) in (module Smt_internal.Make (Solver) : Smt_sig.Solver) | (Auto | Z3_builtin) when Option.is_some Libsolver.z3 -> let module Solver = (val Option.get Libsolver.z3) in (module Smt_internal.Make (Solver) : Smt_sig.Solver) | Auto -> ( try let solver = List.find Prover.ping solvers in Logger.info "Found %a in the path." Prover.pp solver; Solver.set solver; (module Smt_external.Solver : Smt_sig.Solver) with Not_found -> Logger.fatal "No SMT solver found.") | Bitwuzla_builtin | Bitwuzla_legacy -> Logger.fatal "Native bitwuzla binding is required but not available." | Z3_builtin -> Logger.fatal "Native z3 binding is required but not available." | solver when Prover.ping (map solver) -> Solver.set (map solver); (module Smt_external.Solver : Smt_sig.Solver) | solver -> Logger.fatal "%a is required but not available in path." Prover.pp (map solver)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>