+
+(define-public nauty
+ (package
+ (name "nauty")
+ (version "2.6r11")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://pallini.di.uniroma1.it/"
+ "nauty" (string-join (string-split version #\.) "")
+ ".tar.gz"))
+ (sha256
+ (base32
+ "05z6mk7c31j70md83396cdjmvzzip1hqb88pfszzc6k4gy8h3m2y"))))
+ (build-system gnu-build-system)
+ (outputs '("out" "lib"))
+ (arguments
+ `(#:test-target "checks"
+ #:phases
+ (modify-phases %standard-phases
+ ;; Default make target does not build all available
+ ;; executables. Create them now.
+ (add-after 'build 'build-extra-programs
+ (lambda _
+ (for-each (lambda (target) (invoke "make" target))
+ '("blisstog" "bliss2dre" "checks6" "sumlines"))
+ #t))
+ ;; Upstream does not provide any install target.
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib-output (assoc-ref outputs "lib"))
+ (bin (string-append out "/bin"))
+ (doc (string-append out "/share/doc/nauty/"))
+ (include (string-append lib-output "/include/nauty"))
+ (lib (string-append lib-output "/lib/nauty")))
+ (for-each (lambda (f) (install-file f bin))
+ '("dreadnaut" "NRswitchg" "addedgeg" "amtog" "biplabg"
+ "blisstog" "bliss2dre" "catg" "checks6" "complg"
+ "converseg" "copyg" "countg" "cubhamg" "deledgeg"
+ "delptg" "directg" "dretodot" "dretog" "genbg"
+ "genbgL" "geng" "genquarticg" "genrang" "genspecialg"
+ "gentourng" "gentreeg" "hamheuristic" "labelg"
+ "linegraphg" "listg" "multig" "newedgeg" "pickg"
+ "planarg" "ranlabg" "shortg" "showg" "subdivideg"
+ "sumlines" "twohamg" "vcolg" "watercluster2"))
+ (for-each (lambda (f) (install-file f include))
+ (find-files "." "\\.h$"))
+ (for-each (lambda (f) (install-file f lib))
+ (find-files "." "\\.a$"))
+ (for-each (lambda (f) (install-file f doc))
+ (append '("formats.txt" "README" "schreier.txt")
+ (find-files "." "\\.pdf$")))))))))
+ (inputs
+ `(("gmp" ,gmp))) ;for sumlines
+ (home-page "https://pallini.di.uniroma1.it/")
+ (synopsis "Library for graph automorphisms")
+ (description "@code{nauty} (No AUTomorphisms, Yes?) is a set of
+procedures for computing automorphism groups of graphs and digraphs.
+
+@code{nauty} computes graph information in the form of a set of
+generators, the size of the group, and the orbits of the group; it can
+also produce a canonical label. The @code{nauty} suite is written in
+C and comes with a command-line interface, a collection of
+command-line tools, and an Application Programming Interface (API).
+
+This package provides the static libraries required to run programs
+compiled against the nauty library.")
+ (license license:asl2.0)))
+
+(define-public ppl
+ (package
+ (name "ppl")
+ (version "1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.bugseng.com/products/ppl/download/"
+ "ftp/releases/" version
+ "/ppl-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1j5aji1g2vmdvc0gqz45n2ll2l2f6czca04wiyfl5g3sm3a6vhvb"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("m4", m4)))
+ (inputs
+ `(("glpk" ,glpk)
+ ("gmp", gmp)))
+ (home-page "https://www.bugseng.com/parma-polyhedra-library")
+ (synopsis
+ "Parma Polyhedra Library for computations with polyhedra")
+ (description
+ "The Parma Polyhedra Library (PPL) provides numerical abstractions
+especially targeted at applications in the field of analysis and
+verification of complex systems. These abstractions include convex
+polyhedra, defined as the intersection of a finite number of (open or
+closed) halfspaces, each described by a linear inequality (strict or
+non-strict) with rational coefficients; some special classes of polyhedra
+shapes that offer interesting complexity/precision tradeoffs; and grids
+which represent regularly spaced points that satisfy a set of linear
+congruence relations. The library also supports finite powersets and
+products of (any kind of) polyhedra and grids, a mixed integer linear
+programming problem solver using an exact-arithmetic version of the simplex
+algorithm, a parametric integer programming solver, and primitives for
+termination analysis via the automatic synthesis of linear ranking
+functions.")
+ (license license:gpl3+)))
+
+(define-public speedcrunch
+ (package
+ (name "speedcrunch")
+ (version "0.12.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://bitbucket.org/heldercorreia/speedcrunch.git")
+ (commit (string-append "release-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0vh7cd1915bjqzkdp3sk25ngy8cq624mkh8c53c5bnzk357kb0fk"))))
+ (build-system cmake-build-system)
+ (inputs `(("qtbase" ,qtbase)))
+ (native-inputs `(("qttools" ,qttools)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir-to-src
+ (lambda _ (chdir "src") #t)))))
+ (synopsis "High-precision scientific calculator")
+ (description
+ "SpeedCrunch is a high-precision scientific calculator. It features a
+syntax-highlighted scrollable display and is designed to be fully used via
+keyboard. Some distinctive features are auto-completion of functions and
+variables, a formula book, and quick insertion of constants from various
+fields of knowledge.")
+ (home-page "http://speedcrunch.org/")
+ (license license:gpl2+)))
+