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.10.0.tbz
sha256=f9f66dc2a16f10d4afc9599ce76f19d3868fca184b42f2a28bc81b37089be68f
sha512=bc56322323d1c56870bb8618c9eeed95fa7eb0ba8bde3c9ea9fe86627ecb1c97abc610401e3af7662c9f9386719be284d7144c5af5d39b3f64c63e2b2cdecb1d
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)"
>