ocaml.scm
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> |
3 | ;;; |
4 | ;;; This file is part of GNU Guix. |
5 | ;;; |
6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
7 | ;;; under the terms of the GNU General Public License as published by |
8 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
9 | ;;; your option) any later version. |
10 | ;;; |
11 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | ;;; GNU General Public License for more details. |
15 | ;;; |
16 | ;;; You should have received a copy of the GNU General Public License |
17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
18 | |
19 | (define-module (more packages ocaml) |
20 | #:use-module (guix packages) |
21 | #:use-module (guix download) |
22 | #:use-module (guix utils) |
23 | #:use-module (guix build-system gnu) |
24 | #:use-module (guix build-system ocaml) |
25 | #:use-module ((guix licenses) #:prefix license:) |
26 | #:use-module (gnu packages) |
27 | #:use-module (gnu packages base) |
28 | #:use-module (gnu packages bison) |
29 | #:use-module (gnu packages boost) |
30 | #:use-module (gnu packages emacs) |
31 | #:use-module (gnu packages flex) |
32 | #:use-module (gnu packages llvm) |
33 | #:use-module (gnu packages maths) |
34 | #:use-module (gnu packages multiprecision) |
35 | #:use-module (gnu packages ocaml) |
36 | #:use-module (gnu packages perl) |
37 | #:use-module (gnu packages protobuf) |
38 | #:use-module (gnu packages texinfo) |
39 | #:use-module (more packages smt)) |
40 | |
41 | ;; Janestreet packages are found in a similar way and all need the same patch. |
42 | (define (janestreet-origin name version hash) |
43 | (origin (method url-fetch) |
44 | (uri (string-append "https://ocaml.janestreet.com/ocaml-core/" |
45 | (version-major+minor version) "/files/" |
46 | name "-" version ".tar.gz")) |
47 | (sha256 (base32 hash)) |
48 | (modules '((guix build utils))) |
49 | (snippet |
50 | (let ((pattern (string-append "lib/" name))) |
51 | `(begin |
52 | ;; install.ml contains an invalid reference to the ppx file and |
53 | ;; propagates this error to the generated META file. It |
54 | ;; looks for it in the "lib" directory, but it is installed in |
55 | ;; "lib/ocaml/site-lib/package". This substitute does not change |
56 | ;; this file for non ppx packages. |
57 | (substitute* "install.ml" |
58 | ((,pattern) (string-append "lib/ocaml/site-lib/" ,name))) |
59 | ;; The standard Makefile would try to install janestreet modules |
60 | ;; in OCaml's directory in the store, which is read-only. |
61 | (substitute* "Makefile" |
62 | (("--prefix") |
63 | "--libdir $(LIBDIR) --prefix"))))))) |
64 | |
65 | ;; They also require almost the same set of arguments |
66 | (define janestreet-arguments |
67 | `(#:use-make? #t |
68 | #:make-flags |
69 | (list (string-append "CONFIGUREFLAGS=--prefix " |
70 | (assoc-ref %outputs "out") |
71 | " --enable-tests") |
72 | (string-append "LIBDIR=" |
73 | (assoc-ref %outputs "out") |
74 | "/lib/ocaml/site-lib") |
75 | ;; for ocaml-bin-prot, otherwise ignored |
76 | (string-append "OCAML_TOPLEVEL_PATH=" |
77 | (assoc-ref %build-inputs "findlib") |
78 | "/lib/ocaml/site-lib")) |
79 | #:phases (modify-phases %standard-phases (delete 'configure)))) |
80 | |
81 | (define-public ocaml-zed |
82 | (package |
83 | (name "ocaml-zed") |
84 | (version "1.4") |
85 | (source (origin |
86 | (method url-fetch) |
87 | (uri (string-append "https://github.com/diml/zed/archive/" |
88 | version ".tar.gz")) |
89 | (sha256 |
90 | (base32 |
91 | "0pvfq9ikhbkv4ksn3k3vzs6wiwkihjav3n81lhxm54z9931gfwnz")))) |
92 | (build-system ocaml-build-system) |
93 | (propagated-inputs |
94 | `(("camomile" ,ocaml-camomile) |
95 | ("react" ,ocaml-react))) |
96 | (home-page "https://github.com/diml/zed") |
97 | (synopsis "Abstract engine for text edition in OCaml") |
98 | (description "Zed is an abstract engine for text edition. It can be used to |
99 | write text editors, edition widgets, readlines, ... |
100 | |
101 | Zed uses Camomile to fully support the Unicode specification, and implements an |
102 | UTF-8 encoded string type with validation, and a rope datastructure to achieve |
103 | efficient operations on large Unicode buffers. Zed also features a regular |
104 | expression search on ropes. |
105 | |
106 | To support efficient text edition capabilities, Zed provides macro recording |
107 | and cursor management facilities.") |
108 | (license license:bsd-3))) |
109 | |
110 | (define-public ocaml-lambda-term |
111 | (package |
112 | (name "ocaml-lambda-term") |
113 | (version "1.10.1") |
114 | (home-page "https://github.com/diml/lambda-term") |
115 | (source (origin |
116 | (method url-fetch) |
117 | (uri (string-append home-page "/archive/" version ".tar.gz")) |
118 | (sha256 |
119 | (base32 |
120 | "1449glcsavcwbcsxbd7wcjz50y8vvin4zwpmkhq8i6jca3f3sknj")))) |
121 | (build-system ocaml-build-system) |
122 | (propagated-inputs |
123 | `(("zed" ,ocaml-zed) |
124 | ("lwt" ,ocaml-lwt) |
125 | ("react" ,ocaml-react))) |
126 | (arguments |
127 | `(#:phases |
128 | (modify-phases %standard-phases |
129 | (add-after 'install 'link-stubs |
130 | (lambda* (#:key outputs #:allow-other-keys) |
131 | (let* ((out (assoc-ref outputs "out")) |
132 | (stubs (string-append out "/lib/ocaml/site-lib/stubslibs")) |
133 | (lib (string-append out "/lib/ocaml/site-lib/lambda-term"))) |
134 | (mkdir-p stubs) |
135 | (symlink (string-append lib "/dlllambda-term_stubs.so") |
136 | (string-append stubs "/dlllambda-term_stubs.so")))))))) |
137 | (synopsis "Terminal manipulation library for OCaml") |
138 | (description "Lambda-term is a cross-platform library for manipulating the |
139 | terminal. It provides an abstraction for keys, mouse events, colors, as well as |
140 | a set of widgets to write curses-like applications. |
141 | |
142 | The main objective of lambda-term is to provide a higher level functional |
143 | interface to terminal manipulation than, for example, ncurses, by providing a |
144 | native OCaml interface instead of bindings to a C library. |
145 | |
146 | Lambda-term integrates with zed to provide text edition facilities in console |
147 | applications.") |
148 | (license license:bsd-3))) |
149 | |
150 | (define-public ocaml-utop |
151 | (package |
152 | (name "ocaml-utop") |
153 | (version "1.19.3") |
154 | (source (origin |
155 | (method url-fetch) |
156 | (uri (string-append "https://github.com/diml/utop/archive/" |
157 | version ".tar.gz")) |
158 | (file-name (string-append name "-" version ".tar.gz")) |
159 | (sha256 |
160 | (base32 |
161 | "16z02vp9n97iax4fqpbi7v86r75vbabxvnd1rirh8w2miixs1g4x")))) |
162 | (build-system ocaml-build-system) |
163 | (native-inputs |
164 | `(("cppo" ,ocaml-cppo))) |
165 | (propagated-inputs |
166 | `(("lambda-term" ,ocaml-lambda-term) |
167 | ("lwt" ,ocaml-lwt) |
168 | ("react" ,ocaml-react))) |
169 | (home-page "https://github.com/diml/utop") |
170 | (synopsis "Universal toplevel for OCaml") |
171 | (description "utop is an improved toplevel for OCaml. It can run in a |
172 | terminal or in Emacs. It supports line edition, history, real-time and context |
173 | sensitive completion, colors, and more. |
174 | |
175 | It integrates with the tuareg mode in Emacs.") |
176 | (license license:bsd-3))) |
177 | |
178 | (define-public proof-general2 |
179 | (package |
180 | (name "proof-general2") |
181 | (version "4.4") |
182 | (source (origin |
183 | (method url-fetch) |
184 | (uri (string-append |
185 | "https://github.com/ProofGeneral/PG/archive/v" |
186 | version ".tar.gz")) |
187 | (file-name (string-append name "-" version ".tar.gz")) |
188 | (sha256 |
189 | (base32 |
190 | "0zif2fv6mm4pv75nh10q3p37n293495rvx470bx7ma382zc3d8hv")))) |
191 | (build-system gnu-build-system) |
192 | (native-inputs |
193 | `(("which" ,which) |
194 | ("emacs" ,emacs-minimal) |
195 | ("texinfo" ,texinfo))) |
196 | (inputs |
197 | `(("host-emacs" ,emacs) |
198 | ("perl" ,perl) |
199 | ("coq" ,coq))) |
200 | (arguments |
201 | `(#:tests? #f ; no check target |
202 | #:make-flags (list (string-append "PREFIX=" %output) |
203 | (string-append "DEST_PREFIX=" %output) |
204 | "-j1") |
205 | #:modules ((guix build gnu-build-system) |
206 | (guix build utils) |
207 | (guix build emacs-utils)) |
208 | #:imported-modules (,@%gnu-build-system-modules |
209 | (guix build emacs-utils)) |
210 | #:phases |
211 | (modify-phases %standard-phases |
212 | (delete 'configure) |
213 | (add-after 'unpack 'disable-byte-compile-error-on-warn |
214 | (lambda _ |
215 | (substitute* "Makefile" |
216 | (("\\(setq byte-compile-error-on-warn t\\)") |
217 | "(setq byte-compile-error-on-warn nil)")) |
218 | #t)) |
219 | (add-after 'unpack 'patch-hardcoded-paths |
220 | (lambda* (#:key inputs outputs #:allow-other-keys) |
221 | (let ((out (assoc-ref outputs "out")) |
222 | (coq (assoc-ref inputs "coq")) |
223 | (emacs (assoc-ref inputs "host-emacs"))) |
224 | (define (coq-prog name) |
225 | (string-append coq "/bin/" name)) |
226 | (substitute* "pgshell/pgshell.el" |
227 | (("/bin/sh") (which "sh"))) |
228 | ;(emacs-substitute-variables "coq/coq.el" |
229 | ; ("coq-prog-name" (coq-prog "coqtop")) |
230 | ; ("coq-compiler" (coq-prog "coqc")) |
231 | ; ("coq-dependency-analyzer" (coq-prog "coqdep"))) |
232 | (substitute* "Makefile" |
233 | (("/sbin/install-info") "install-info")) |
234 | (substitute* "bin/proofgeneral" |
235 | (("^PGHOMEDEFAULT=.*" all) |
236 | (string-append all |
237 | "PGHOME=$PGHOMEDEFAULT\n" |
238 | "EMACS=" emacs "/bin/emacs"))) |
239 | #t)))))) |
240 | ;(add-after 'unpack 'clean |
241 | ; (lambda _ |
242 | ; ;; Delete the pre-compiled elc files for Emacs 23. |
243 | ; (zero? (system* "make" "clean")))) |
244 | ;(add-after 'install 'install-doc |
245 | ; (lambda* (#:key make-flags #:allow-other-keys) |
246 | ; ;; XXX FIXME avoid building/installing pdf files, |
247 | ; ;; due to unresolved errors building them. |
248 | ; (substitute* "Makefile" |
249 | ; ((" [^ ]*\\.pdf") "")) |
250 | ; (zero? (apply system* "make" "install-doc" |
251 | ; make-flags))))))) |
252 | (home-page "http://proofgeneral.inf.ed.ac.uk/") |
253 | (synopsis "Generic front-end for proof assistants based on Emacs") |
254 | (description |
255 | "Proof General is a major mode to turn Emacs into an interactive proof |
256 | assistant to write formal mathematical proofs using a variety of theorem |
257 | provers.") |
258 | (license license:gpl2+))) |
259 | |
260 | (define-public ocaml-menhir-fix |
261 | (package |
262 | (inherit ocaml-menhir) |
263 | (version "20170607") |
264 | (name "ocaml-menhir-fix") |
265 | (source (origin |
266 | (method url-fetch) |
267 | (uri (string-append |
268 | "http://gallium.inria.fr/~fpottier/menhir/" |
269 | "menhir-" version ".tar.gz")) |
270 | (sha256 |
271 | (base32 |
272 | "0qffci9qxgfabzyalx851q994yykl4n9ylr4vbplsm6is1padjh0")))))) |
273 | |
274 | (define-public compcert |
275 | (package |
276 | (name "compcert") |
277 | (version "3.0.1") |
278 | (source (origin |
279 | (method url-fetch) |
280 | (uri (string-append "http://compcert.inria.fr/release/compcert-" |
281 | version ".tgz")) |
282 | (sha256 |
283 | (base32 |
284 | "0dgrj26dzdy4n3s9b5hwc6lm54vans1v4qx9hdp1q8w1qqcdriq9")))) |
285 | (build-system gnu-build-system) |
286 | (arguments |
287 | `(#:phases |
288 | (modify-phases %standard-phases |
289 | (replace 'configure |
290 | (lambda* (#:key outputs #:allow-other-keys) |
291 | (zero? (system* "./configure" "x86_64-linux" "-prefix" |
292 | (assoc-ref outputs "out")))))) |
293 | #:tests? #f)) |
294 | (native-inputs |
295 | `(("ocaml" ,ocaml) |
296 | ("coq" ,coq-fix))) |
297 | (inputs |
298 | `(("menhir" ,ocaml-menhir-fix))) |
299 | (home-page "http://compcert.inria.fr") |
300 | (synopsis "Certified C compiler") |
301 | (description "CompCert is a certified (with coq) C compiler. Warning: this |
302 | package is not free software!") |
303 | ;; actually the "INRIA Non-Commercial License Agreement" |
304 | ;; a non-free license. |
305 | (license (license:non-copyleft "file:///LICENSE")))) |
306 | |
307 | ;; yet another build system <3 |
308 | ;; In this one, the autoconf-generated configure script configures the build and |
309 | ;; builds remake from source, a make-like system specific to this package. |
310 | (define-public coq-flocq |
311 | (package |
312 | (name "coq-flocq") |
313 | (version "2.5.2") |
314 | (source (origin |
315 | (method url-fetch) |
316 | (uri (string-append "https://gforge.inria.fr/frs/download.php/file/36199/flocq-" |
317 | version ".tar.gz")) |
318 | (sha256 |
319 | (base32 |
320 | "0h5mlasirfzc0wwn2isg4kahk384n73145akkpinrxq5jsn5d22h")))) |
321 | (build-system gnu-build-system) |
322 | (native-inputs |
323 | `(("ocaml" ,ocaml) |
324 | ("which" ,which) |
325 | ("coq" ,coq-fix))) |
326 | (arguments |
327 | `(#:configure-flags |
328 | (list (string-append "--libdir=" (assoc-ref %outputs "out") |
329 | "/lib/coq/user-contrib/Flocq")) |
330 | #:phases |
331 | (modify-phases %standard-phases |
332 | (add-before 'configure 'fix-remake |
333 | (lambda _ |
334 | (substitute* "remake.cpp" |
335 | (("/bin/sh") (which "sh"))))) |
336 | (replace 'build |
337 | (lambda _ |
338 | (zero? (system* "./remake")))) |
339 | (replace 'check |
340 | (lambda _ |
341 | (zero? (system* "./remake" "check")))) |
342 | ;; TODO: requires coq-gappa and coq-interval. |
343 | ;(zero? (system* "./remake" "check-more")))) |
344 | (replace 'install |
345 | (lambda _ |
346 | (zero? (system* "./remake" "install"))))))) |
347 | (home-page "http://flocq.gforge.inria.fr/") |
348 | (synopsis "Floating-point formalization for the Coq system") |
349 | (description "Flocq (Floats for Coq) is a floating-point formalization for |
350 | the Coq system. It provides a comprehensive library of theorems on a multi-radix |
351 | multi-precision arithmetic. It also supports efficient numerical computations |
352 | inside Coq.") |
353 | (license license:lgpl3+))) |
354 | |
355 | (define-public coq-gappa |
356 | (package |
357 | (name "coq-gappa") |
358 | (version "1.3.1") |
359 | (source (origin |
360 | (method url-fetch) |
361 | (uri (string-append "https://gforge.inria.fr/frs/download.php/file/36351/gappa-" |
362 | version ".tar.gz")) |
363 | (sha256 |
364 | (base32 |
365 | "0924jr6f15fx22qfsvim5vc0qxqg30ivg9zxj34lf6slbgdl3j39")))) |
366 | (build-system gnu-build-system) |
367 | (native-inputs |
368 | `(("ocaml" ,ocaml) |
369 | ("which" ,which) |
370 | ("coq" ,coq-fix) |
371 | ("bison" ,bison) |
372 | ("flex" ,flex))) |
373 | (inputs |
374 | `(("gmp" ,gmp) |
375 | ("mpfr" ,mpfr) |
376 | ("boost" ,boost))) |
377 | (arguments |
378 | `(#:configure-flags |
379 | (list (string-append "--libdir=" (assoc-ref %outputs "out") |
380 | "/lib/coq/user-contrib/Gappa")) |
381 | #:phases |
382 | (modify-phases %standard-phases |
383 | (add-before 'configure 'fix-remake |
384 | (lambda _ |
385 | (substitute* "remake.cpp" |
386 | (("/bin/sh") (which "sh"))))) |
387 | (replace 'build |
388 | (lambda _ |
389 | (zero? (system* "./remake")))) |
390 | (replace 'check |
391 | (lambda _ |
392 | (zero? (system* "./remake" "check")))) |
393 | (replace 'install |
394 | (lambda _ |
395 | (zero? (system* "./remake" "install"))))))) |
396 | (home-page "http://gappa.gforge.inria.fr/") |
397 | (synopsis "Verify and formally prove properties on numerical programs") |
398 | (description "Gappa is a tool intended to help verifying and formally proving |
399 | properties on numerical programs dealing with floating-point or fixed-point |
400 | arithmetic. It has been used to write robust floating-point filters for CGAL |
401 | and it is used to certify elementary functions in CRlibm. While Gappa is |
402 | intended to be used directly, it can also act as a backend prover for the Why3 |
403 | software verification plateform or as an automatic tactic for the Coq proof |
404 | assistant.") |
405 | (license (list license:gpl2 license:cecill)))) |
406 | |
407 | (define-public coq-mathcomp |
408 | (package |
409 | (name "coq-mathcomp") |
410 | (version "1.6.1") |
411 | (source (origin |
412 | (method url-fetch) |
413 | (uri (string-append "https://github.com/math-comp/math-comp/archive/mathcomp-" |
414 | version ".tar.gz")) |
415 | (sha256 |
416 | (base32 |
417 | "1j9ylggjzrxz1i2hdl2yhsvmvy5z6l4rprwx7604401080p5sgjw")))) |
418 | (build-system gnu-build-system) |
419 | (native-inputs |
420 | `(("ocaml" ,ocaml) |
421 | ("which" ,which) |
422 | ("coq" ,coq-fix))) |
423 | (arguments |
424 | `(#:tests? #f; No need to test formally-verified programs :) |
425 | #:phases |
426 | (modify-phases %standard-phases |
427 | (delete 'configure) |
428 | (add-before 'build 'chdir |
429 | (lambda _ |
430 | (chdir "mathcomp"))) |
431 | (replace 'install |
432 | (lambda* (#:key outputs #:allow-other-keys) |
433 | (setenv "COQLIB" (string-append (assoc-ref outputs "out") "/lib/coq/")) |
434 | (zero? (system* "make" "-f" "Makefile.coq" |
435 | (string-append "COQLIB=" (assoc-ref outputs "out") |
436 | "/lib/coq/") |
437 | "install"))))))) |
438 | (home-page "https://math-comp.github.io/math-comp/") |
439 | (synopsis "Mathematical Components for Coq") |
440 | (description "Mathematical Components for Coq has its origins in the formal |
441 | proof of the Four Colour Theorem. Since then it has grown to cover many areas |
442 | of mathematics and has been used for large scale projects like the formal proof |
443 | of the Odd Order Theorem. |
444 | |
445 | The library is written using the Ssreflect proof language that is an integral |
446 | part of the distribution.") |
447 | (license license:cecill-b))) |
448 | |
449 | (define-public coq-coquelicot |
450 | (package |
451 | (name "coq-coquelicot") |
452 | (version "3.0.0") |
453 | (source (origin |
454 | (method url-fetch) |
455 | (uri (string-append "https://gforge.inria.fr/frs/download.php/" |
456 | "file/36537/coquelicot-" version ".tar.gz")) |
457 | (sha256 |
458 | (base32 |
459 | "0fx99bvsbdizj00gx2im8939y4wwl05f4qhw184j90kcx5vjxxv9")))) |
460 | (build-system gnu-build-system) |
461 | (native-inputs |
462 | `(("ocaml" ,ocaml) |
463 | ("which" ,which) |
464 | ("coq" ,coq-fix))) |
465 | (propagated-inputs |
466 | `(("mathcomp" ,coq-mathcomp))) |
467 | (arguments |
468 | `(#:configure-flags |
469 | (list (string-append "--libdir=" (assoc-ref %outputs "out") |
470 | "/lib/coq/user-contrib/Coquelicot")) |
471 | #:phases |
472 | (modify-phases %standard-phases |
473 | (add-before 'configure 'fix-remake |
474 | (lambda _ |
475 | (substitute* "remake.cpp" |
476 | (("/bin/sh") (which "sh"))))) |
477 | (replace 'build |
478 | (lambda _ |
479 | (zero? (system* "./remake")))) |
480 | (replace 'check |
481 | (lambda _ |
482 | (zero? (system* "./remake" "check")))) |
483 | (replace 'install |
484 | (lambda _ |
485 | (zero? (system* "./remake" "install"))))))) |
486 | (home-page "http://coquelicot.saclay.inria.fr/index.html") |
487 | (synopsis "Coq library for Reals") |
488 | (description "Coquelicot is an easier way of writing formulas and theorem |
489 | statements, achieved by relying on total functions in place of dependent types |
490 | for limits, derivatives, integrals, power series, and so on. To help with the |
491 | proof process, the library comes with a comprehensive set of theorems that cover |
492 | not only these notions, but also some extensions such as parametric integrals, |
493 | two-dimensional differentiability, asymptotic behaviors. It also offers some |
494 | automations for performing differentiability proofs. Moreover, Coquelicot is a |
495 | conservative extension of Coq's standard library and provides correspondence |
496 | theorems between the two libraries.") |
497 | (license license:lgpl3+))) |
498 | |
499 | (define-public coq-interval |
500 | (package |
501 | (name "coq-interval") |
502 | (version "3.2.0") |
503 | (source (origin |
504 | (method url-fetch) |
505 | (uri (string-append "https://gforge.inria.fr/frs/download.php/" |
506 | "file/36538/interval-" version ".tar.gz")) |
507 | (sha256 |
508 | (base32 |
509 | "16ir7mizl18kwa1ls8fwjih6r87894bvc1r6lh85cd43la7nriq3")))) |
510 | (build-system gnu-build-system) |
511 | (native-inputs |
512 | `(("ocaml" ,ocaml) |
513 | ("which" ,which) |
514 | ("coq" ,coq-fix))) |
515 | (propagated-inputs |
516 | `(("flocq" ,coq-flocq) |
517 | ("coquelicot" ,coq-coquelicot) |
518 | ("mathcomp" ,coq-mathcomp))) |
519 | (arguments |
520 | `(#:configure-flags |
521 | (list (string-append "--libdir=" (assoc-ref %outputs "out") |
522 | "/lib/coq/user-contrib/Gappa")) |
523 | #:phases |
524 | (modify-phases %standard-phases |
525 | (add-before 'configure 'fix-remake |
526 | (lambda _ |
527 | (substitute* "remake.cpp" |
528 | (("/bin/sh") (which "sh"))))) |
529 | (replace 'build |
530 | (lambda _ |
531 | (zero? (system* "./remake")))) |
532 | (replace 'check |
533 | (lambda _ |
534 | (zero? (system* "./remake" "check")))) |
535 | (replace 'install |
536 | (lambda _ |
537 | (zero? (system* "./remake" "install"))))))) |
538 | (home-page "http://coq-interval.gforge.inria.fr/") |
539 | (synopsis "Coq tactics to simplify inequality proofs") |
540 | (description "Interval provides vernacular files containing tactics for |
541 | simplifying the proofs of inequalities on expressions of real numbers for the |
542 | Coq proof assistant.") |
543 | (license license:cecill-c))) |
544 | |
545 | (define-public coq-fix |
546 | (package |
547 | (inherit coq) |
548 | (name "coq-fix") |
549 | (version "8.6") |
550 | (source (origin |
551 | (method url-fetch) |
552 | (uri (string-append "https://coq.inria.fr/distrib/V" version |
553 | "/files/coq-" version ".tar.gz")) |
554 | (sha256 |
555 | (base32 |
556 | "1pw1xvy1657l1k69wrb911iqqflzhhp8wwsjvihbgc72r3skqg3f")))) |
557 | (native-search-paths |
558 | (list (search-path-specification |
559 | (variable "COQPATH") |
560 | (files (list "lib/coq/user-contrib"))))))) |
561 | |
562 | (define-public cubicle |
563 | (package |
564 | (name "cubicle") |
565 | (version "1.1.1") |
566 | (source (origin |
567 | (method url-fetch) |
568 | (uri (string-append "http://cubicle.lri.fr/cubicle-" |
569 | version ".tar.gz")) |
570 | (sha256 |
571 | (base32 |
572 | "1sny9c4fm14k014pk62ibpwbrjjirkx8xmhs9jg7q1hk7y7x3q2h")))) |
573 | (build-system gnu-build-system) |
574 | (native-inputs |
575 | `(("ocaml" ,ocaml) |
576 | ("which" ,which))) |
577 | (propagated-inputs |
578 | `(("z3" ,z3))) |
579 | (arguments |
580 | `(#:configure-flags (list "--with-z3") |
581 | #:tests? #f |
582 | #:phases |
583 | (modify-phases %standard-phases |
584 | (add-before 'configure 'configure-for-release |
585 | (lambda _ |
586 | (substitute* "Makefile.in" |
587 | (("SVNREV=") "#SVNREV=")))) |
588 | (add-before 'configure 'fix-/bin/sh |
589 | (lambda _ |
590 | (substitute* "configure" |
591 | (("/bin/sh") (which "sh"))))) |
592 | (add-before 'configure 'fix-smt-z3wrapper.ml |
593 | (lambda _ |
594 | (substitute* "Makefile.in" |
595 | (("\\\\n") ""))))))) |
596 | (home-page "http://cubicle.lri.fr/") |
597 | (synopsis "Model checker for array-based systems") |
598 | (description "Cubicle is an open source model checker for verifying safety |
599 | properties of array-based systems. This is a syntactically restricted class of |
600 | parametrized transition systems with states represented as arrays indexed by an |
601 | arbitrary number of processes. Cache coherence protocols and mutual exclusion |
602 | algorithms are typical examples of such systems.") |
603 | (license license:asl2.0))) |
604 |