The Minlog System

Overview

Minlog is an interactive proof system developed by Helmut Schwichtenberg and members of the logic group at the University of Munich.

Minlog is based on first order natural deduction calculus. It is intended to reason about computable functionals, using minimal rather than classical or intuitionistic logic. The main motivation behind Minlog is to exploit the proofs-as-programs paradigm for program development and program verification. Proofs are in fact treated as first class objects which can be normalized. If a formula is existential then its proof can be used for reading off an instance of it, or changed appropriately for program development by proof transformation. To this end Minlog is equipped with tools to extract functional programs directly from proof terms. This also applies to non-constructive proofs, using a refined A-translation. The system is supported by automatic proof search and normalization by evaluation as an efficient term rewriting device.

The latest version of Minlog is available through Git. Cloning the Git repository of Minlog, you get the source code, case studies, and the following documentation:

• Tutorial, a first introduction to Minlog
• Reference Manual, a more thorough description of Minlog

The case studies contain the materials from the following publications:
Details of the theory of Minlog are found in the following book by Schwichtenberg and Stanley S. Wainer.
• Proofs and Computations, H. Schwichtenberg and S. Wainer, 2012 (Perspectives in Logic, Association for Symbolic Logic and Cambridge University Press)

Minlog is implemented in Scheme and runs under every Scheme version supporting the Revised5 Report on the Algorithmic Language Scheme. Minlog's favorite dialect is Petite Chez Scheme from Cadence Research Systems, which is freely distributed at the address http://www.scheme.com.

Installation

Prerequisite

Minlog runs on Linux, Unix, Mac OS X and Windows. The following software is prerequisite:

• Git

Follow the official installation procedure suitable to your computer.

• Petite Chez Scheme or an R5RS Scheme interpreter

Minlog is fully functional with Petite Chez Scheme 8.4 which is available for free at the official download page.
Make sure that the path is set for shell use.

• Emacs

Emacs is used as the standard user interface of Minlog. Follow the instruction at the official web page to install Emacs.

• pdfLaTeX

The documentation is provided as LaTeX source code, which should be compiled by the setup script which uses pdflatex. One can skip installing pdfLaTeX if the documentation is not necessary.

• Command Line Tools (only for Mac users)

The set up script of Minlog runs with the make command. For Mac, it is freely available via Command Line Tools by Apple.

Minlog through Git

You are going to clone http://www.mathematik.uni-muenchen.de/~minlogit/git/minlog.git using Git into a directory where you have a write permission.

Using Command Line

You open the command line and move to a directory where you want to have Minlog, then issue the following command:

git clone http://www.mathematik.uni-muenchen.de/~minlogit/git/minlog.git
then you will get the Minlog source code in the newly created directory "minlog" at the current directory. We refer to this directory as the Minlog home and also as MINLOG_HOME.

Using Git GUI

You start Git GUI and choose "Clone Existing Repository". In the dialog window, you specify

http://www.math.lmu.de/~minlogit/git/minlog.git
as Source Location and a directory you like to have Minlog as Target Directory. We refer to the Target Directory you gave as the Minlog home and also as MINLOG_HOME.

Setup

Linux/Unix/Mac OS X

Run the make command in the minlog directory.

Windows

You are going to run the setup script, to prepare a shortcut to launch Minlog, and to compile the documentation. Make sure that the path is set for shell use, that has been taken care by the Petite Chez Scheme installer by default.

Make sure that .ss is associated with a Scheme interpreter as Petite Chez Scheme, then double click MINLOG_HOME\winsetup.ss. Note that the process of executing the script has to have a write permission under MINLOG_HOME.

Open Explorer and go to the "bin" directory of your Emacs installation (Eg. C:\Users\maier\Downloads\emacs-24.5\bin). Right click "runemacs.exe" in the "bin" directory and create a short cut. Opening the property of it, you see the path to "runemeacs.exe" as the destination of link. In this text box, you add the text ' -l MINLOG_HOME\util\minlog.el --exec (run-minlog)' (without single quotes and replacing MINLOG_HOME by your Minlog home path) at the end of the existing path. For example, the edited text looks like

C:\Users\maier\emacs-24.5\bin\runemacs.exe -l C:\Users\maier\minlog\util\minlog.el --exec (run-minlog)
Browsing the Minlog home using Explorer, you can also copy the correct full path of the Minlog home via the address bar. In case any of the path contains the space character, see Paths containing spaces on Windows.
When you are done, click "OK" to apply the change, and move the shortcut wherever you prefer.

There are two files MINLOG_HOME\doc\tutor.tex and MINLOG_HOME\doc\ref.tex to compile using pdfLaTeX.

Run Minlog

There is a command line script "minlog" in the Minlog home to launch Minlog with Emacs as a user interface.
Windows users can launch Minlog by double clicking the shortcut, which is described in the previous section. Alternatively, Minlog can be launched by Evaluating the following list in a scheme interpreter:

(load "MINLOG_HOME/init.scm")


Troubleshooting

The rootless mode of Mac OS X 10.11 El Capitan

Due to the rootless mode of Mac OS X 10.11, some folders (e.g., /usr/bin) can be non-writable even for the root. For example in the installation of Petite Chez Scheme, you can take the following way to complete the installation through the tarball. It is necessary for you to be an administrator of the computer.

cd csv8.4/custom
./configure --installprefix=/usr/local
sudo make install
After the third line, you would be asked to input your password.

Manually running winsetup.ss

Opening a Scheme interpreter, you can manually run winsetup.ss by the folling line:

(load "MINLOG_HOME/winsetup.ss")
where you replace MINLOG_HOME by the actuall path with replacing each backslash "\" by a slash "/". It is a way to check error messages from the Scheme interpreter when winsetup.ss seems to have failed. When you double click winsetup.ss, the window of Petite Chez Scheme closes quite soon, hence it is not easy to check the error message from Petite Chez Scheme. You can avoid this problem by manually running winsetup.ss.

Emacs does not work within a multi window system

In particular on Mac, there can be a pre-installed command-line emacs which prevents Minlog from recognizing the emacs with multi-windows you have newly installed. This is managed by setting an environment variable EMACS to be the path to the executable of the right Emacs. You open or create a file ~/.bash_profile and add the following line:

EMACS=/usr/local/bin/emacs
where we assume /usr/local/bin/emacs is the right Emacs. You reopen a terminal, then Minlog should start in the multi-window environment. If you only know the icon to launch Emacs, but no file name of the executable, you type the following in the terminal while Emacs is running.
ps xa | grep macs
It shows some lines containing the path to the executable, which typically starts with /Applications/.

Paths containing spaces on Windows

The path should be quoted by the double quotation (") in case a path contains a space. For example,

"C:\Program Files\emacs-24.5\bin\runemacs.exe" -l "C:\Program Files\minlog\util\minlog.el" --exec (run-minlog)

Further Information

We give further information to work with the source code of Minlog using Git. We assume you are at anywhere under the Minlog home when you issue a git command.

Updating Minlog

New features of Minlog become available as soon as they are ready to be published. In order to update the Minlog source code, issue

git pull
It is recommended to do the setup procedure again.

Beta Version

There are two branches in the repository, master and dev, which stands for development. The former one is the stable version, and the latter is the beta version.

In order to switch to another branch, for example to dev, issue

git checkout dev
It is recommended to do the setup procedure again.

In order to check what the current branch is, issue

git status

Generating Emacs Tags Table

By running the make command at MINLOG_HOME/src the Emacs tags table of Minlog source code can be generated and saved as MINLOG_HOME/src/TAGS. For details see Emacs documentation.

Mailing List and Contact

The development of Minlog can be followed on the Minlog Mailing List. Send an email to

MINLOG-subscribe@lists.mathematik.uni-muenchen.de
in order to join the mailing list.

If you have any problems with the Minlog system or suggestions please feel free to send an email to minlog@mathematik.uni-muenchen.de.

By Kenji Miyamoto
Last update: 04.05.2016