anchor.diff:      mlgmpidl
       num
       ocamlgraph
  +    ppx_deriving
  +    ppx_import
       stdlib-shims
       why3
       re
  +    result
       seq
       sexplib
       sexplib0
  
positive.code: , ocamlPackages, ltl2ba, coq, why3
  , gdk-pixbuf, wrapGAppsHook
  }:
  
  let why3_1_5 = why3; in
  let why3 = why3_1_5.overrideAttrs (o: rec {
    version = "1.4.1";
    src = fetchurl {
      url = "https://why3.gitlabpages.inria.fr/releases/${o.pname}-${version}.tar.gz";
      sha256 = "sha256:1rqyypzlvagrn43ykl0c5wxyvnry5fl1ykn3xcvlzgghk96yq3jq";
    };
  }); in
  
  let
    mkocamlpath = p: "${p}/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib";
  
negative.code: 
  stdenv.mkDerivation rec {
    pname = "frama-c";
    version = "25.0";
    slang   = "Manganese";
  
    src = fetchurl {
      url    = "https://frama-c.com/download/frama-c-${version}-${slang}.tar.gz";
      sha256 = "sha256-Ii3O/NJyBTVAv1ts/zae/Ee4HCjzYOthZmnD8wqLwp8=";
    };
  
    preConfigure = lib.optionalString stdenv.cc.isClang "configureFlagsArray=(\"--with-cpp=clang -E -C\")";
  
    postConfigure = "patchShebangs src/plugins/value/gen-api.sh";
  
    nativeBuildInputs = [ autoconf wrapGAppsHook ];
  
    buildInputs = with ocamlPackages; [
      ncurses ocaml findlib ltl2ba ocamlgraph yojson menhirLib camlzip
      lablgtk3 lablgtk3-sourceview3 coq graphviz zarith apron why3 mlgmpidl doxygen
      ppx_deriving ppx_import
      gdk-pixbuf
    ];
  
  