From 74db38db11a7e107119362983e388cfb5ead3431 Mon Sep 17 00:00:00 2001
From: "B. Wilson" <elaexuotee@wilsonb.com>
Date: Mon, 11 May 2020 20:10:48 +0900
Subject: [PATCH] gnu: Add metamath.
To: guix-patches@gnu.org
* gnu/packages/maths.scm (metamath): New variable.
---
gnu/packages/maths.scm | 97 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
@@ -38,6 +38,7 @@
;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -5686,3 +5687,99 @@ and conversions, physical constants, symbolic calculations (including
integrals and equations), arbitrary precision, uncertainity propagation,
interval arithmetic, plotting.")
(license license:gpl2+)))
+
+(define-public metamath
+ ;; Upstream pushed a commit on top of v0.182 that fixes a bug in Makefile.am.
+ ;; Using this commit lets us avoid directly including the patch here. In the
+ ;; next version bump, we should be able to replace this and directly use the
+ ;; version tag.
+ (let ((commit "5df616efe4119ff88daf77e7041d45b6fa39c578")
+ (revision "0")
+ (book-name "metamath-book")
+ (book-version "second_edition"))
+ (package
+ (name "metamath")
+ (version (git-version "0.182" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/metamath/metamath-exe.git")
+ (commit commit)))
+ (sha256
+ (base32 "0amjdgy42c7jypf6sz98iczlxcyl9bqx67ws1q8w2zdqk2izsyjp"))
+ (file-name (git-file-name name version))))
+ ;; FIXME: Unfortunately, there seems to be a problem with
+ ;; texlive-amsfonts that prevents us from typsetting the "doc" output
+ ;; pdf. Once fixed, this along with the commented out sections below,
+ ;; should be enabled.
+ ; (outputs '("out" "doc"))
+ (build-system gnu-build-system)
+ ;; FIXME: Enable for "doc" output. See previous comment.
+ ; (inputs
+ ; `((,book-name
+ ; ,(origin
+ ; (method git-fetch)
+ ; (uri (git-reference
+ ; (url "https://github.com/metamath/metamath-book.git")
+ ; (commit book-version)))
+ ; (sha256
+ ; (base32
+ ; "1kk9nfhs0h8qccpxp1qh072bpfis7h05rlnz3qn1z641d9i4ryyq"))
+ ; (file-name (git-file-name book-name book-version))))))
+ (native-inputs `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ;; FIXME: Required inputs to build the "doc" output.
+ ;; See above comment.
+ ; ("texlive" ,(texlive-union
+ ; (list texlive-amsfonts
+ ; texlive-bibtex
+ ; texlive-breqn
+ ; texlive-makecell
+ ; texlive-microtype
+ ; texlive-tabu
+ ; texlive-latex-anysize
+ ; texlive-latex-hyperref
+ ; texlive-latex-needspace
+ ; texlive-latex-tools)))
+ ))
+ ;; FIXME: Arguments to build the "doc" output. See above comment.
+ ; (arguments
+ ; `(#:phases
+ ; (let ((book-builddir "metamath-book-second_edition"))
+ ; (modify-phases %standard-phases
+ ; (add-after 'unpack 'unpack-doc
+ ; (lambda* (#:key inputs #:allow-other-keys)
+ ; (let ((book (assoc-ref inputs ,book-name)))
+ ; (mkdir-p book-builddir)
+ ; (copy-recursively book book-builddir))))
+ ; (add-after 'build 'build-doc
+ ; (lambda _
+ ; (with-directory-excursion book-builddir
+ ; (invoke "touch" "metamath.ind")
+ ; (invoke "pdflatex" "metamath")
+ ; (invoke "pdflatex" "metamath")
+ ; (invoke "bibtex" "metamath")
+ ; (invoke "makeindex" "metamath")
+ ; (invoke "pdflatex" "metamath")
+ ; (invoke "pdflatex" "metamath"))))
+ ; (add-after 'build-doc 'install-doc
+ ; (lambda* (#:key outputs #:allow-other-keys)
+ ; (let* ((pkg (strip-store-file-name (assoc-ref outputs "out")))
+ ; (out-doc (assoc-ref outputs "doc")))
+ ; (install-file (string-append book-builddir "/metamath.pdf")
+ ; (string-append out-doc "/share/doc/" pkg))
+ ; #t)))))))
+ (home-page "http://us.metamath.org/")
+ (synopsis "Proof verifier based on a minimalistic formalism")
+ (description "Metamath is a tiny formal language and that can express
+theorems in abstract mathematics, with an accompyaning @code{metamath}
+executable that verifies databases of these proofs. There is a public
+database, @url{https://github.com/metamath/set.mm, set.mm}, implementing
+first-order logic and Zermelo-Frenkel set theory with Choice, along with a
+large swath of associated, high-level theorems, e.g.@: the Fundamental Theorem
+of Arithmetic, the Cauchy-Schwarz Inequality, Striling's Formula, etc. See the
+Metamath book.")
+ ;; FIXME: The "doc" output requires license:cc0. See above comment.
+ ; (license '(,license:gpl2+ ,license:cc0)))))
+ (license license:gpl2+))))
--
2.27.0