opam-version: "2.0" maintainer: "guillaume.melquiond@inria.fr" authors: [ "François Bobot" "Jean-Christophe Filliâtre" "Claude Marché" "Guillaume Melquiond" "Andrei Paskevich" ] homepage: "http://why3.lri.fr/" license: "LGPL-2.1-only" doc: "http://why3.lri.fr/doc/" bug-reports: "https://gitlab.inria.fr/why3/why3/issues" dev-repo: "git+https://gitlab.inria.fr/why3/why3.git" tags: [ "deductive" "program verification" "formal specification" "automated theorem prover" "interactive theorem prover" ] build-env: OCAMLPARAM = "_,w=-46,keywords=5.2" build: [ ["./autogen.sh"] {dev} # when pinning, there might be no configure file ["./configure" "--prefix" prefix "--disable-frama-c" "--disable-coq-libs" "--disable-js-of-ocaml" "--disable-re" "--enable-ocamlfind" "--disable-zarith" {!zarith:installed} "--enable-zarith" {zarith:installed} "--disable-mpfr" {!mlmpfr:installed} "--enable-mpfr" {mlmpfr:installed} "--disable-zip" {!camlzip:installed} "--enable-zip" {camlzip:installed} "--disable-hypothesis-selection" {!ocamlgraph:installed} "--enable-hypothesis-selection" {ocamlgraph:installed} "--disable-stackify" {!ocamlgraph:installed} "--enable-stackify" {ocamlgraph:installed} "--disable-ide"] [make "-j%{jobs}%" "all" "opt" "byte"] [make "doc" "stdlibdoc" "apidoc"] {with-doc} ] install: [ [make "install" "install-lib"] [make "DOCDIR=%{_:doc}%" "install-doc"] {with-doc} ] depends: [ "conf-autoconf" {build | dev} "ocaml" {>= "4.08.0"} "ocamlfind" {build} "menhir" {>= "20170418"} "num" ] depopts: [ "zarith" "camlzip" "ocamlgraph" "sexplib" "ppx_deriving" {build} "ppx_sexp_conv" {build} "mlmpfr" ] conflicts: [ "why3-base" "ocamlgraph" {< "1.8.2"} "mlmpfr" {< "4.0.0"} "ocaml-variants" {= "4.12.0+domains+effects" | = "5.1.1+effect-syntax"} "ocaml-compiler" {= "5.3.0~alpha1"} "ocaml-option-bytecode-only" ] patches: [ "cygwin.patch" { os-family = "windows" } ] synopsis: "Why3 environment for deductive program verification" description: """ Why3 provides a rich language for specification and programming, called WhyML, and relies on external theorem provers, both automated and interactive, to discharge verification conditions. Why3 comes with a standard library of logical theories (integer and real arithmetic, Boolean operations, sets and maps, etc.) and basic programming data structures (arrays, queues, hash tables, etc.). A user can write WhyML programs directly and get correct-by-construction OCaml programs through an automated extraction mechanism. WhyML is also used as an intermediate language for the verification of C, Java, or Ada programs. Why3 is a complete reimplementation of the former Why platform. Among the new features are: numerous extensions to the input language, a new architecture for calling external provers, and a well-designed API, allowing to use Why3 as a software library. An important emphasis is put on modularity and genericity, giving the end user a possibility to easily reuse Why3 formalizations or to add support for a new external prover if wanted.""" url { src: "https://why3.gitlabpages.inria.fr/releases/why3-1.6.0.tar.gz" checksum: [ "sha256=845bccea41d271a0ad70709ce957b397d091ec115b88a3e84c487b923d19271c" "md5=6b449abe1e485d6f3c12f81c59fc186c" ] } extra-source "cygwin.patch" { src: "https://raw.githubusercontent.com/ocaml/opam-source-archives/main/patches/why3/cygwin.patch" checksum: [ "sha256=5af1e5c0d1a07a8f4c25c8868702cca67264521363459f93f331d9741974724b" "md5=5881d999e32a57b9d9f234139be4144e" ] }