diff --git a/examples/technical_report/IsaDof_Manual/04_RefMan.thy b/examples/technical_report/IsaDof_Manual/04_RefMan.thy index e6b8a978..6645396e 100644 --- a/examples/technical_report/IsaDof_Manual/04_RefMan.thy +++ b/examples/technical_report/IsaDof_Manual/04_RefMan.thy @@ -1,6 +1,7 @@ (*<*) theory "04_RefMan" - imports "03_GuidedTour" + imports "03_GuidedTour" (* apparently inaccessible; for railroads "Isar_Ref.Base" *) + begin (*>*) @@ -130,7 +131,9 @@ themselves in a HOL-types in order to allow \<^emph>\links\ to and between ontological concepts. \ +text\ +\ subsection\Annotating with Ontology Meta-Data: Outer Syntax\ @@ -272,10 +275,51 @@ required in a \inlineisar|summary|. section*["odl-manual"::technical]\The ODL Manual\ +subsection*["odl-manual0"::technical]\The Isabelle/HOL Specification Language\ +text\The \isadof ontology definition language (ODL) is an extension of Isabelle/HOL; +document class definitions can therefore be arbitrarily mixed with standard HOL +specification constructs. In order to spare the user of ODL a lenghty analysis of +@{cite "isaisarrefman19" and "datarefman19" and "functions19"}, we present +syntax and semantics of the specification constructs that are most likely relevant for +the developer of ontologies. Note that our presentation is actually a simplification +of the original sources following the needs of our target audience here; for a full- +blown account, the reader is referred to the original descriptions.\ + text\ - - +\<^item> \tyargs\ : + \<^rail>\ typefree | ('(' (typefree * ',') ')')\ + \typefree\ denotes fixed type variable(\'a\, \'b\, ...) @{cite "isaisarrefman19"} +\<^item> \dt_name\ : + \<^rail>\ (tyargs?) name (mixfix?)\ + The syntactic entity \name\ denotes an identifier, \mixfix\ denotes the usual + parenthesized mixfix notation (see @{cite "isaisarrefman19"}). + The \name\'s referred here are type names such as \<^verbatim>\int\, \<^verbatim>\string\, \<^verbatim>\list\, \<^verbatim>\set\, etc. +\<^item> \type_spec\ : + \<^rail>\ (tyargs?) name\ + The \name\'s referred here are type names such as \<^verbatim>\int\, \<^verbatim>\string\, \<^verbatim>\list\, \<^verbatim>\set\, etc. +\<^item> \type\ : + \<^rail>\ ( '(' ((typefree | type) * ',') ')' )? name \ +\<^item> \dt_ctor\ : + \<^rail>\ name (type*) (mixfix?)\ +\<^item> \datatype_specification\ : + \<^rail>\ @@{command "datatype"} dt_name '=' (dt_ctor * '|' )\ +\<^item> \type_synonym_specification\ : + \<^rail>\ @@{command "type_synonym"} type_spec '=' type\ +\<^item> \constant_definition\ : + \<^rail>\ @@{command "definition"} name '::' type 'where' '"' name '=' expr '"'\ + where the syntactic category \expr\ is the very rich language of mathematical + notations for $\lambda$-terms in Isabelle/HOL. Examples of expressions are: + \inlineisar|1+2| (arithmetics), \inlineisar|[1,2,3]| (lists), \inlineisar|''ab c''| (strings), + \inlineisar|{1,2,3}| (sets), \inlineisar|(1,2,3)| (tuples), + \inlineisar|\ x. P(x) \ Q x = C| (formulas), etc. + For a comprehensive overview, consult the text ``What's in Main'' + @{cite "nipkowMain19"} \ +text\Other specification constructs, which are potentially relevant for an (advanced) ontology +developer, might be recursive function definitions with pattern-matching @{cite "functions19"}, +extensible record specifications, @{cite "isaisarrefman19"} and abstract type declarations.\ + + subsection*["odl-manual1"::technical]\The ODL Command Syntax\ section*["odl-design"::technical]\The Design of ODL\ diff --git a/examples/technical_report/IsaDof_Manual/document/root.bib b/examples/technical_report/IsaDof_Manual/document/root.bib index e1ca096e..7ff379ac 100644 --- a/examples/technical_report/IsaDof_Manual/document/root.bib +++ b/examples/technical_report/IsaDof_Manual/document/root.bib @@ -289,6 +289,38 @@ year = {2018} } +@MISC{isaisarrefman19, + title = {The Isabelle/Isar Reference Manual}, + author = {Makarius Wenzel}, + note={\url{https://isabelle. in.tum.de/doc/isar-ref.pdf}}, + year = {2019} +} + +@MISC{datarefman19, + title = {Defining (Co)datatypes and Primitively (Co)recursive Functions in Isabelle/HOL}, + author = {Julian Biendarra and Jasmin Christian Blanchette and Martin Desharnais and Lorenz Panny + and Andrei Popescu and Dmitriy Traytel}, + note={\url{https://isabelle.in.tum.de/doc/datatypes.pdf}}, + year = {2019} +} + +@MISC{functions19, + title = {Defining Recursive Functions in Isabelle/HOL}, + author = {Alexander Kraus}, + note={\url{https://isabelle.in.tum.de/doc/functions.pdf}}, + year = {2019} +} + +@MISC{nipkowMain19, + title = {What's in Main}, + author = {Tobias Nipkow}, + note={\url{https://isabelle.in.tum.de/doc/main.pdf}}, + year = {2019} +} + + + + @InProceedings{ DBLP:conf/itp/Wenzel14, author = {Makarius Wenzel}, title = {Asynchronous User Interaction and Tool Integration in