d2a6106be5
- Fix the generation of the record associated with a class and used for the logic. The old implementation generated a new attribute for each attribute defined by a subclass, even the ones that were overriding ones of the superclass. The new implementation generates the attributes of the subclass which are not overriding ones. Warning: It implies that overridden attributes in a subclass are not new attributes added to the theory context. So the base name of an attribute will refer to the attribute of the last declared class where it is defined. If ones wants to refer to atttributes, one should use long names, even in the invariants of a subclass definition which overrides the attribute used in the invariant. For example, in ~~/src/ontologies/scholarly_paper/scholarly_paper.thy: doc_class technical = text_section + definition_list :: "string list" <= "[]" status :: status <= "description" formal_results :: "thm list" invariant L1 :: "λσ::technical. the (level σ) > 0" type_synonym tc = technical (* technical content *) doc_class example = text_section + referentiable :: bool <= True status :: status <= "description" short_name :: string <= "''''" doc_class math_content = tc + referentiable :: bool <= True short_name :: string <= "''''" status :: status <= "semiformal" mcc :: "math_content_class" <= "thm" invariant s1 :: "λ σ::math_content. ¬referentiable σ ⟶ short_name σ = ''''" invariant s2 :: "λ σ::math_content. technical.status σ = semiformal" The class math_content overrride the attribute status of the class technical, by using the type synonym tc, but the base name of this attribute refers to the attribute of the class example where it is last defined and not just overridden. So in the invariant s2 of the class math_content, we must use the long name of the attribute, i.e. the base name "status" with its qualifier which refers to the superclass where it is defined, the class technical. Type synonyms as qualifiers are not yet supported. - Qualify classes that only override attributes of their superclass as vitual classes by adding a virtual attribute. This attribute is used to discriminate virtual classes and generate an adequate make function to initialize their associated record. The implementation uses an hidden attribute (the tag_attribute) to force the virtual class to be concrete or the logic by having a full new record definition associated with it. For example: doc_class W = a::"int" <= "1" doc_class X = W + a::"int" <= "2" The class X is tagged as a virtual class and the record make functions of the classes W and X are: W.make W_tag_attribute W_a X.make X_tag_attribute X_a X_tag_attribute So a record definition is added to the theory context for each class, even though a virtual class only overrides attributes of its superclass. This behavior allows us to support definitions of new default values for attributes in the subclass, as shown in the example. - Factorize make name components - Use Record name components instead of strings to refer to Record components - Fix typos |
||
---|---|---|
.ci | ||
examples | ||
src | ||
.config | ||
.gitattributes | ||
.gitignore | ||
CHANGELOG.md | ||
CITATION | ||
LICENSE | ||
README.md | ||
ROOTS | ||
install |
README.md
Isabelle/DOF: Document Preparation Setup
Isabelle/DOF is a novel Document Ontology Framework on top of Isabelle. Isabelle/DOF allows for both conventional typesetting as well as formal development. The manual for Isabelle/DOF 1.1.0/Isabelle2021 is available online.
Running Isabelle/DOF using Docker
As an alternative to installing Isabelle/DOF locally, the latest official release Isabelle/DOF is also available on Docker Hub. Thus, if you have Docker installed and your installation of Docker supports X11 application, you can start Isabelle/DOF as follows:
foo@bar:~$ docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix \
logicalhacking/isabelle_dof-1.1.0_isabelle2021 isabelle jedit
Pre-requisites
Isabelle/DOF has two major pre-requisites:
- Isabelle: Isabelle/DOF requires Isabelle 2021. Please download the Isabelle 2021 distribution for your operating system from the Isabelle website.
- LaTeX: Isabelle/DOF requires a modern LaTeX installation, i.e., at least TeX Live 2021 with all available updates applied.
Installation
In most case, the DOF-plugin can be installed as follows:
foo@bar:~$ ./install
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:
foo@bar:~$ ./install --isabelle /usr/local/Isabelle2021/bin/isabelle
For further command line options of the installer, please use the built-in help:
foo@bar:~$ ./install --help
A final step for the installation is:
foo@bar:~$ isabelle build -D .
This will compile Isabelle/DOF and run the example suite.
Usage
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:
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:
isabelle jedit -d . -l HOL examples/scholarly_paper/2018_cicm/IsaDofApplications.thy
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
The DOF-plugin provides an alternative to Isabelle's mkroot
command.
Isabelle projects that use DOF need to be created using
foo@bar:~$ isabelle mkroot_DOF
The mkroot_DOF
command takes the same parameter as the standard
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. For example,
foo@bar:~$ isabelle mkroot_DOF -o scholarly_paper -t scrartcl
creates a setup using the scholarly_paper ontology and the article class from the KOMA-Script bundle.
The help (option -h
) show a list of all supported ontologies and
document templates:
foo@bar:~$ isabelle mkroot_DOF -h
Usage: isabelle mkroot_DOF [OPTIONS] [DIR]
Options are:
-h print this help text and exit
-n NAME alternative session name (default: DIR base name)
-o ONTOLOGY (default: scholarly_paper)
Available ontologies:
* cenelec_50128
* mathex
* scholarly_paper
-t TEMPLATE (default: scrartcl)
Available document templates:
* lncs
* scrartcl
* scrreprt
* scrreprt-modern
Prepare session root DIR (default: current directory).
Releases
For releases, signed archives including a PDF version of the Isabelle/DOF manual are are available:
- Isabelle/DOF 1.1.0/Isabelle2021
- Isabelle/DOF 1.1.0/Isabelle2020
- Isabelle/DOF 1.0.0/Isabelle2019
Team
Main contacts:
Contributors
- Idir Ait-Sadoune
- Paolo Crisafulli
- Chantal Keller
- Nicolas Méric
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 Wolff. Using The Isabelle Ontology Framework: Linking the Formal with the Informal. In Conference on Intelligent Computer Mathematics (CICM). Lecture Notes in Computer Science (11006), Springer-Verlag, 2018. doi:10.1007/978-3-319-96812-4_3.
-
Achim D. Brucker and Burkhart Wolff. Isabelle/DOF: Design and Implementation. In Software Engineering and Formal Methods (SEFM). Lecture Notes in Computer Science (11724), Springer-Verlag, 2019. doi:10.1007/978-3-030-30446-1_15.
-
Achim D. Brucker, Burkhart Wolff. Using Ontologies in Formal Developments Targeting Certification. In Integrated Formal Methods (IFM). Lecture Notes in Computer Science (11918). Springer-Verlag 2019. doi:10.1007/978-3-030-34968-4_4
-
Sergio Bezzecchi, Paolo Crisafulli, Charlotte Pichot, and Burkhart Wolff. Making Agile Development Processes fit for V-style Certification Procedures. In ERTS 2018. https://hal.archives-ouvertes.fr/hal-01702815
Master Repository
The master git repository for this project is hosted https://git.logicalhacking.com/Isabelle_DOF/Isabelle_DOF.