diff -r 1e31ddcab458 -r 4c275405faae src/Doc/Implementation/Logic.thy --- a/src/Doc/Implementation/Logic.thy Sun Jan 15 16:28:03 2023 +0100 +++ b/src/Doc/Implementation/Logic.thy Sun Jan 15 18:30:18 2023 +0100 @@ -8,9 +8,9 @@ text \ The logical foundations of Isabelle/Isar are that of the Pure logic, which - has been introduced as a Natural Deduction framework in @{cite paulson700}. + has been introduced as a Natural Deduction framework in \<^cite>\paulson700\. This is essentially the same logic as ``\\HOL\'' in the more abstract - setting of Pure Type Systems (PTS) @{cite "Barendregt-Geuvers:2001"}, + setting of Pure Type Systems (PTS) \<^cite>\"Barendregt-Geuvers:2001"\, although there are some key differences in the specific treatment of simple types in Isabelle/Pure. @@ -97,7 +97,7 @@ sorts \(s\<^sub>1, \, s\<^sub>k)\ such that a type scheme \(\\<^bsub>s\<^sub>1\<^esub>, \, \\<^bsub>s\<^sub>k\<^esub>)\\ is of sort \s\. Consequently, type unification has most general solutions (modulo equivalence of sorts), so type-inference produces primary types as expected - @{cite "nipkow-prehofer"}. + \<^cite>\"nipkow-prehofer"\. \ text %mlref \ @@ -255,8 +255,7 @@ text \ The language of terms is that of simply-typed \\\-calculus with de-Bruijn - indices for bound variables (cf.\ @{cite debruijn72} or @{cite - "paulson-ml2"}), with the types being determined by the corresponding + indices for bound variables (cf.\ \<^cite>\debruijn72\ or \<^cite>\"paulson-ml2"\), with the types being determined by the corresponding binders. In contrast, free variables and constants have an explicit name and type in each occurrence. @@ -598,15 +597,13 @@ occur within propositions. The system provides a runtime option to record explicit proof terms for primitive inferences, see also \secref{sec:proof-terms}. Thus all three levels of \\\-calculus become - explicit: \\\ for terms, and \\/\\ for proofs (cf.\ @{cite - "Berghofer-Nipkow:2000:TPHOL"}). + explicit: \\\ for terms, and \\/\\ for proofs (cf.\ \<^cite>\"Berghofer-Nipkow:2000:TPHOL"\). Observe that locally fixed parameters (as in \\\intro\) need not be recorded in the hypotheses, because the simple syntactic types of Pure are always inhabitable. ``Assumptions'' \x :: \\ for type-membership are only present as long as some \x\<^sub>\\ occurs in the statement body.\<^footnote>\This is the key - difference to ``\\HOL\'' in the PTS framework @{cite - "Barendregt-Geuvers:2001"}, where hypotheses \x : A\ are treated uniformly + difference to ``\\HOL\'' in the PTS framework \<^cite>\"Barendregt-Geuvers:2001"\, where hypotheses \x : A\ are treated uniformly for propositions and types.\ \<^medskip> @@ -665,8 +662,8 @@ previously defined constants as above, or arbitrary constants \d(\\<^sub>i)\ for some \\\<^sub>i\ projected from \\<^vec>\\. Thus overloaded definitions essentially work by primitive recursion over the syntactic structure of a - single type argument. See also @{cite \\S4.3\ - "Haftmann-Wenzel:2006:classes"}. + single type argument. See also \<^cite>\\\S4.3\ in + "Haftmann-Wenzel:2006:classes"\. \ text %mlref \ @@ -1000,8 +997,8 @@ text \ The idea of object-level rules is to model Natural Deduction inferences in - the style of Gentzen @{cite "Gentzen:1935"}, but we allow arbitrary nesting - similar to @{cite "Schroeder-Heister:1984"}. The most basic rule format is + the style of Gentzen \<^cite>\"Gentzen:1935"\, but we allow arbitrary nesting + similar to \<^cite>\"Schroeder-Heister:1984"\. The most basic rule format is that of a \<^emph>\Horn Clause\: \[ \infer{\A\}{\A\<^sub>1\ & \\\ & \A\<^sub>n\} @@ -1022,7 +1019,7 @@ Nesting of rules means that the positions of \A\<^sub>i\ may again hold compound rules, not just atomic propositions. Propositions of this format are called - \<^emph>\Hereditary Harrop Formulae\ in the literature @{cite "Miller:1991"}. Here + \<^emph>\Hereditary Harrop Formulae\ in the literature \<^cite>\"Miller:1991"\. Here we give an inductive characterization as follows: \<^medskip> @@ -1186,7 +1183,7 @@ \\\-calculus are added, which correspond to \\x :: \. B x\ and \A \ B\ according to the propositions-as-types principle. The resulting 3-level \\\-calculus resembles ``\\HOL\'' in the more abstract setting of Pure Type - Systems (PTS) @{cite "Barendregt-Geuvers:2001"}, if some fine points like + Systems (PTS) \<^cite>\"Barendregt-Geuvers:2001"\, if some fine points like schematic polymorphism and type classes are ignored. \<^medskip> @@ -1243,8 +1240,8 @@ abstractions, and some argument terms of applications \p \ t\ (if possible). There are separate operations to reconstruct the full proof term later on, - using \<^emph>\higher-order pattern unification\ @{cite "nipkow-patterns" and - "Berghofer-Nipkow:2000:TPHOL"}. + using \<^emph>\higher-order pattern unification\ \<^cite>\"nipkow-patterns" and + "Berghofer-Nipkow:2000:TPHOL"\. The \<^emph>\proof checker\ expects a fully reconstructed proof term, and can turn it into a theorem by replaying its primitive inferences within the kernel. @@ -1255,7 +1252,7 @@ text \ The concrete syntax of proof terms is a slight extension of the regular - inner syntax of Isabelle/Pure @{cite "isabelle-isar-ref"}. Its main + inner syntax of Isabelle/Pure \<^cite>\"isabelle-isar-ref"\. Its main syntactic category @{syntax (inner) proof} is defined as follows: \begin{center}