2018-06-12 22:28:20 +00:00
|
|
|
# Isabelle/DOF: Document Preparation Setup
|
2018-02-07 17:43:15 +00:00
|
|
|
|
2018-06-12 22:28:20 +00:00
|
|
|
Isabelle/DOF is a novel Document Ontology Framework on top of
|
|
|
|
Isabelle. Isabelle/DOF allows for both conventional typesetting as
|
|
|
|
well as formal development.
|
2018-02-07 18:44:27 +00:00
|
|
|
|
2019-08-04 12:46:53 +00:00
|
|
|
## Pre-requisites
|
2019-01-05 22:32:17 +00:00
|
|
|
|
2019-08-04 12:46:53 +00:00
|
|
|
Isabelle/DOF has two major pre-requisites:
|
2019-01-05 22:32:17 +00:00
|
|
|
|
2019-08-04 12:46:53 +00:00
|
|
|
* **Isabelle:** Isabelle/DOF requires [Isabelle 2019](http://isabelle.in.tum.de/website-Isabelle2019/).
|
|
|
|
Please download the Isabelle 2019 distribution for your operating
|
|
|
|
system from the [Isabelle website](http://isabelle.in.tum.de/website-Isabelle2019/).
|
|
|
|
* **LaTeX:** Isabelle/DOF requires a modern pdfTeX-engine supporting the \expanded{}-primitive. This
|
|
|
|
is, for example, included in the [TeXLive 2019](https://www.tug.org/texlive/) (or later)
|
|
|
|
distribution. Please follow the [TeXLive installation instructions](https://www.tug.org/texlive/acquire-netinstall.html)
|
|
|
|
for installing TeXLive.
|
|
|
|
|
|
|
|
## Installation
|
2018-02-07 18:44:27 +00:00
|
|
|
|
2019-04-06 11:49:24 +00:00
|
|
|
### Quick Installation Guide
|
|
|
|
|
2018-06-12 22:28:20 +00:00
|
|
|
In most case, the DOF-plugin can be installed as follows:
|
2019-08-04 12:46:53 +00:00
|
|
|
|
|
|
|
```console
|
2018-06-12 22:28:20 +00:00
|
|
|
foo@bar:~$ ./install
|
|
|
|
```
|
2019-08-04 12:46:53 +00:00
|
|
|
|
|
|
|
If a specific Isabelle version should be used (i.e., not the default
|
|
|
|
one), the full path to the ``isabelle`` command needs to be passed as
|
|
|
|
using the ``--isabelle`` command line argument of the ``install`` script:
|
|
|
|
|
|
|
|
```console
|
|
|
|
foo@bar:~$ ./install --isabelle /usr/local/Isabelle2019/bin/isabelle
|
2018-12-06 17:38:15 +00:00
|
|
|
```
|
2018-06-12 22:28:20 +00:00
|
|
|
|
2019-08-04 12:46:53 +00:00
|
|
|
For further command line options of the installer, please use the
|
2019-04-06 11:49:24 +00:00
|
|
|
built-in help:
|
2019-08-04 12:46:53 +00:00
|
|
|
|
|
|
|
```console
|
|
|
|
foo@bar:~$ ./install --help
|
2019-04-06 11:49:24 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
### What The Installer Actually Does
|
|
|
|
|
2019-08-04 12:46:53 +00:00
|
|
|
The installer will
|
|
|
|
|
|
|
|
* apply a patch to Isabelle that is necessary to use Isabelle/DOF.
|
|
|
|
If this patch installations fails, you need to manually replace
|
2019-06-18 05:33:41 +00:00
|
|
|
the file ``Isabelle2019/src/Pure/Thy/thy_output.ML`` in the Isabelle
|
2019-07-20 20:12:40 +00:00
|
|
|
distribution with the file ``src/patches/thy_output.ML`` from the
|
2019-08-04 12:46:53 +00:00
|
|
|
Isabelle/DOF distribution:
|
2019-07-21 16:05:27 +00:00
|
|
|
|
2019-01-06 11:33:03 +00:00
|
|
|
cp patches/thy_output.ML `isabelle getenv -b ISABELLE_HOME`/src/Pure/Thy/
|
2019-07-21 16:05:27 +00:00
|
|
|
|
2019-01-06 13:23:42 +00:00
|
|
|
* install required entries from the [AFP](https://www.isa-afp.org). If this
|
2019-06-18 05:33:41 +00:00
|
|
|
installations fails, you need to manually install the AFP for Isabelle 2019 as follows:
|
|
|
|
Download the [AFP for Isabelle 2019](https://www.isa-afp.org/release/afp-2019-06-17.tar.gz)
|
2019-01-06 13:23:42 +00:00
|
|
|
and follow the [instructions for installing the AFP as Isabelle
|
|
|
|
component](https://www.isa-afp.org/using.html). If you have extracted
|
|
|
|
the AFP archive into the directory to `/home/myself/afp`, you should
|
|
|
|
run the following command to make the AFP session `ROOTS` available to
|
|
|
|
Isabelle:
|
2019-07-21 16:05:27 +00:00
|
|
|
|
2019-06-18 05:33:41 +00:00
|
|
|
echo "/home/myself/afp/thys" >> ~/.isabelle/Isabelle2019/ROOTS
|
2019-07-21 16:05:27 +00:00
|
|
|
|
2019-01-06 11:33:03 +00:00
|
|
|
* install the Isabelle/DOF-plugin into the Isabelle user directory
|
|
|
|
(the exact location depends on the Isabelle version).
|
|
|
|
* check that the AFP has been installed successfully.
|
2018-06-12 22:28:20 +00:00
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2019-01-06 18:43:23 +00:00
|
|
|
### Opening an Example
|
|
|
|
|
|
|
|
If you want to work with or extend one of the examples, e.g., you can
|
|
|
|
open it similar to any standard Isabelle theory:
|
|
|
|
|
|
|
|
```console
|
|
|
|
isabelle jedit -d . -l Isabelle_DOF examples/scholarly_paper/2018_cicm/IsaDofApplications.thy
|
|
|
|
```
|
|
|
|
|
|
|
|
This will open an example of a scientific paper using the pre-compiled
|
|
|
|
session ``Isabelle_DOF``, i.e., you will not be able to edit the
|
|
|
|
ontology definitions. If you want to edit the ontology definition,
|
|
|
|
just open the theory file with the default HOL session:
|
|
|
|
|
|
|
|
```console
|
2019-01-06 23:09:50 +00:00
|
|
|
isabelle jedit -d . -l HOL examples/scholarly_paper/2018_cicm/IsaDofApplications.thy
|
2019-01-06 18:43:23 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
While this gives you more flexibility, it might "clutter" your editing
|
|
|
|
experience, as a lot of internal theories are loaded into Isabelle's
|
|
|
|
editor.
|
|
|
|
|
|
|
|
### Creating a New Project
|
|
|
|
|
2018-06-12 22:28:20 +00:00
|
|
|
The DOF-plugin provides an alternative to Isabelle's ``mkroot`` command.
|
|
|
|
Isabelle projects that use DOF need to be created using
|
|
|
|
```console
|
2019-08-03 20:36:06 +00:00
|
|
|
foo@bar:~$ isabelle mkroot_DOF
|
2018-06-12 22:28:20 +00:00
|
|
|
```
|
2019-08-03 20:36:06 +00:00
|
|
|
The ``mkroot_DOF`` command takes the same parameter as the standard
|
2018-06-12 22:28:20 +00:00
|
|
|
``mkroot`` command of Isabelle. Thereafter, the normal Isabelle
|
|
|
|
command for building documents can be used.
|
|
|
|
|
|
|
|
Using the ``-o`` option, different ontology setups can be
|
|
|
|
selected and using the ``-t`` option, different LaTeX setups
|
|
|
|
can be selected (use ``-h`` to obtain a list of all installed setups):
|
|
|
|
```console
|
2019-08-03 20:36:06 +00:00
|
|
|
foo@bar:~$ isabelle mkroot_DOF -h
|
2018-06-12 22:28:20 +00:00
|
|
|
|
2019-08-03 20:36:06 +00:00
|
|
|
Usage: isabelle mkroot_DOF [OPTIONS] [DIR]
|
2018-06-12 22:28:20 +00:00
|
|
|
|
|
|
|
Options are:
|
|
|
|
-h print this help text and exit
|
|
|
|
-n NAME alternative session name (default: DIR base name)
|
|
|
|
-o ONTOLOGY (default: core)
|
|
|
|
Available ontologies:
|
2019-02-05 09:42:12 +00:00
|
|
|
* cenelec_50128
|
2018-06-12 22:28:20 +00:00
|
|
|
* core
|
|
|
|
* mathex
|
|
|
|
* scholarly_paper
|
|
|
|
-t TEMPLATE (default: DEFAULT_TEMPLATE)
|
|
|
|
Available document templates:
|
|
|
|
* lncs
|
|
|
|
* scrreprt
|
|
|
|
|
|
|
|
Prepare session root DIR (default: current directory).
|
|
|
|
```
|
|
|
|
For example,
|
|
|
|
```console
|
2019-08-03 20:36:06 +00:00
|
|
|
foo@bar:~$ isabelle mkroot_DOF -o scholarly_paper -t lncs
|
2018-06-12 22:28:20 +00:00
|
|
|
```
|
|
|
|
creates a setup using the scholarly_paper ontology and Springer's
|
|
|
|
LNCS LaTeX class as document class. Note that the generated setup
|
|
|
|
does not include the actual ``llncs.cls`` file. This is due to
|
|
|
|
license restrictions. You need to obtain the file from Springer's
|
|
|
|
website and either copy it in you ``texmf`` directory or the ``root``
|
|
|
|
folder. In the latter case, you also need to add it in the ``ROOT`` file
|
|
|
|
as dependency.
|
|
|
|
|
2019-01-06 18:43:23 +00:00
|
|
|
|
2018-06-12 22:28:20 +00:00
|
|
|
## Team
|
|
|
|
|
|
|
|
Main contacts:
|
|
|
|
* [Achim D. Brucker](http://www.brucker.ch/)
|
|
|
|
* [Burkhart Wolff](https://www.lri.fr/~wolff/)
|
|
|
|
|
|
|
|
|
|
|
|
### Contributors
|
|
|
|
|
|
|
|
* Idir Ait-Sadoune
|
|
|
|
* Paolo Crisafulli
|
|
|
|
* Chantal Keller
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
This project is licensed under a 2-clause BSD license.
|
|
|
|
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
|
|
|
|
## Publications
|
|
|
|
|
|
|
|
* Achim D. Brucker, Idir Ait-Sadoune, Paolo Crisafulli, and Burkhart
|
2019-01-09 10:31:51 +00:00
|
|
|
Wolff. [Using The Isabelle Ontology Framework: Linking the Formal
|
2019-07-05 15:09:34 +00:00
|
|
|
with the Informal](https://www.brucker.ch/bibliography/download/2018/brucker.ea-isabelle-ontologies-2018.pdf).
|
2019-01-09 10:31:51 +00:00
|
|
|
In Conference on Intelligent Computer Mathematics (CICM). Lecture
|
|
|
|
Notes in Computer Science (11006), Springer-Verlag, 2018.
|
2019-06-17 09:32:51 +00:00
|
|
|
|
2019-07-05 15:09:34 +00:00
|
|
|
* Achim D. Brucker and Burkhart Wolff. [Isabelle/DOF: Design and
|
|
|
|
Implementation](https://www.brucker.ch/bibliography/download/2019/brucker.ea-isabelledof-2019.pdf).
|
|
|
|
In Software Engineering and Formal Methods (SEFM). Lecture Notes in
|
|
|
|
Computer Science, Springer-Verlag, 2019.
|
|
|
|
|
2019-06-17 09:32:51 +00:00
|
|
|
## Master Repository
|
|
|
|
|
|
|
|
The master git repository for this project is hosted
|
|
|
|
<https://git.logicalhacking.com/Isabelle_DOF/Isabelle_DOF>.
|
|
|
|
|