(*************************************************************************
 * Copyright (C) 
 *               2019      The University of Exeter 
 *               2018-2019 The University of Paris-Saclay
 *               2018      The University of Sheffield
 *
 * License:
 *   This program can be redistributed and/or modified under the terms
 *   of the 2-clause BSD-style license.
 *
 *   SPDX-License-Identifier: BSD-2-Clause
 *************************************************************************)

(*<*)
theory "01_Introduction"
  imports "00_Frontmatter"
begin
(*>*)

chapter*[intro::introduction]\<open> Introduction \<close>  
text*[introtext::introduction]\<open> 
The linking of the \<^emph>\<open>formal\<close> to the \<^emph>\<open>informal\<close> is perhaps the most pervasive challenge in the
digitization of knowledge and its propagation. This challenge incites numerous research efforts
summarized under the labels ``semantic web,'' ``data mining,'' or any form of advanced ``semantic''
text processing.  A key role in structuring this linking play \<^emph>\<open>document ontologies\<close> (also called
\<^emph>\<open>vocabulary\<close> in the semantic web community~@{cite "w3c:ontologies:2015"}),  \ie, a machine-readable
form of the structure of documents as well as the document discourse.

Such ontologies can be used for the scientific discourse within scholarly articles, mathematical 
libraries, and in the engineering discourse of standardized software certification 
documents~@{cite "boulanger:cenelec-50128:2015" and "cc:cc-part3:2006"}: certification documents 
have to follow a structure.  In practice, large groups of developers have to produce a substantial
set of documents where the consistency is notoriously difficult to maintain. In particular, 
certifications are centered around the \<^emph>\<open>traceability\<close> of requirements throughout the entire 
set of documents. While technical solutions for the traceability problem exists (most notably:
DOORS~\cite{ibm:doors:2019}), they are weak in the treatment of formal entities (such as formulas and their 
logical contexts).

Further applications are the domain-specific discourse in juridical texts or medical reports.  
In general, an ontology is a formal explicit description of \<^emph>\<open>concepts\<close> in a domain of discourse
(called \<^emph>\<open>classes\<close>), properties of each concept describing \<^emph>\<open>attributes\<close> of the concept, as well 
as \<^emph>\<open>links\<close> between them. A particular link between concepts is the \<^emph>\<open>is-a\<close> relation declaring 
the instances of a subclass to be instances of the super-class.

To adress this challenge, we present the Document Ontology Framework (\dof) and an 
implementation of DOF called \isadof. \dof is designed for building scalable and user-friendly 
tools on top of interactive theorem provers. \isadof is a novel framework, implemented as extension of 
Isabelle/HOL, to \<^emph>\<open>model\<close> typed ontologies and to \<^emph>\<open>enforce\<close> them during document evolution. Based 
on Isabelle's infrastructures, ontologies may refer to types, terms, proven theorems, code, or 
established assertions. Based on a novel adaption of the Isabelle IDE, a document is checked to be 
\<^emph>\<open>conform\<close> to a particular ontology---\isadof is designed to give fast user-feedback \<^emph>\<open>during the 
capture of content\<close>. This is particularly valuable in case of document evolution, where the 
\<^emph>\<open>coherence\<close> between the formal and the informal parts of the content can be mechanically checked.

To avoid any misunderstanding: \isadof  is \<^emph>\<open>not a theory in HOL\<close> on ontologies and operations to 
track and trace links in texts, it is an \<^emph>\<open>environment to write structured text\<close> which 
\<^emph>\<open>may contain\<close> Isabelle/HOL definitions and proofs like mathematical articles, tech-reports and
scientific papers---as the present one, which is written in \isadof itself. \isadof is a plugin 
into the Isabelle/Isar framework in the style of~@{cite "wenzel.ea:building:2007"}.\<close>

subsubsection\<open>How to Read This Manual\<close>
(*<*)
declare_reference*[background::text_section]
declare_reference*[isadof_tour::text_section]
declare_reference*[isadof_ontologies::text_section]
declare_reference*[isadof_developers::text_section]
(*>*)
text\<open>
This manual can be read in different ways, depending on what you want to accomplish. We see three
different main user groups: 
\<^enum> \<^emph>\<open>\isadof users\<close>, \ie, users that just want to edit a core document, be it for a paper or a 
  technical report, using a given ontology. These users should focus on 
  @{docitem_ref (unchecked) \<open>isadof_tour\<close>} and, depending on their knowledge of Isabelle/HOL, also
  @{docitem_ref (unchecked) \<open>background\<close>}. 
\<^enum> \<^emph>\<open>Ontology developers\<close>, \ie,  users that want to develop new ontologies or modify existing 
  document ontologies. These users should, after having gained acquaintance as a user, focus 
  on @{docitem_ref (unchecked) \<open>isadof_ontologies\<close>}. 
\<^enum> \<^emph>\<open>\isadof developers\<close>, \ie, users that want to extend or modify \isadof, \eg, by adding new 
  text-elements. These users should read @{docitem_ref (unchecked) \<open>isadof_developers\<close>}
\<close>

subsubsection\<open>Typographical Conventions\<close>
text\<open>
  We acknowledge that understanding \isadof and its implementation in all details requires
  separating multiple technological layers or languages. To help the reader with this, we 
  will type-set the different languages in different styles. In particular, we will use 
  \<^item> a light-blue background for input written in Isabelle's Isar language, \eg:
    \begin{isar}
    lemma refl: "x = x" 
      by simp
    \end{isar}
  \<^item> a green background for examples of generated document fragments (\ie, PDF output):
    \begin{out}
    The axiom refl
    \end{out}
  \<^item> a red background for For (S)ML-code:
    \begin{sml}
    fun id x = x
    \end{sml}
  \<^item> a yellow background for \LaTeX-code:
    \begin{ltx}
    \newcommand{\refl}{$x = x$}
    \end{ltx}
  \<^item> a grey background for shell scripts and interactive shell sessions:
    \begin{bash}
    ë\prompt{}ë ls
    CHANGELOG.md  CITATION  examples  install  LICENSE  README.md  ROOTS  src
   \end{bash}
\<close>

subsubsection\<open>How to Cite \isadof\<close>
text\<open>
  If you use or extend \isadof in your publications, please use 
  \<^item> for the \isadof system~@{cite "brucker.ea:isabelle-ontologies:2018"}:
    \begin{quote}\small
      A.~D. Brucker, I.~Ait-Sadoune, P.~Crisafulli, and B.~Wolff. Using the {Isabelle} ontology 
      framework: Linking the formal with the informal. In \<^emph>\<open>Conference on Intelligent Computer 
      Mathematics (CICM)\<close>, number 11006 in Lecture Notes in Computer Science. Springer-Verlag,
      Heidelberg, 2018. \href{https://doi.org/10.1007/978-3-319-96812-4\_3}
      {10.1007/978-3-319-96812-4\_3}.
    \end{quote}
    A \BibTeX-entry is available at: 
    \url{https://www.brucker.ch/bibliography/abstract/brucker.ea-isabelle-ontologies-2018}. 
  \<^item> for the implementation of \isadof~@{cite "brucker.ea:isabelledof:2019"}:
    \begin{quote}\small
      A.~D. Brucker and B.~Wolff. \isadof: Design and implementation. In P.C.~{\"O}lveczky and 
      G.~Sala{\"u}n, editors, \<^emph>\<open>Software Engineering and Formal Methods (SEFM)\<close>, number 11724 in
      Lecture Notes in Computer Science. Springer-Verlag, Heidelberg, 2019.
      \href{https://doi.org/10.1007/978-3-030-30446-1_15}{10.1007/978-3-030-30446-1\_15}.

    \end{quote}
    A \BibTeX-entry is available at: 
    \url{https://www.brucker.ch/bibliography/abstract/brucker.ea-isabelledof-2019}.
\<close>
subsubsection\<open>Availability\<close>
text\<open>
  The implementation of the framework is available at 
  \url{\dofurl}. The website also provides links to the latest releases. \isadof is licensed 
  under a 2-clause BSD license (SPDX-License-Identifier: BSD-2-Clause).
\<close>

(*<*) 
end
(*>*) 
  
