src/Doc/Implementation/Syntax.thy
changeset 58555 7975676c08c0
parent 57846 7cbb28332896
child 58618 782f0b662cae
--- a/src/Doc/Implementation/Syntax.thy	Sun Oct 05 22:46:20 2014 +0200
+++ b/src/Doc/Implementation/Syntax.thy	Sun Oct 05 22:47:07 2014 +0200
@@ -12,13 +12,13 @@
   additional means for reading and printing of terms and types.  This
   important add-on outside the logical core is called \emph{inner
   syntax} in Isabelle jargon, as opposed to the \emph{outer syntax} of
-  the theory and proof language \cite{isabelle-isar-ref}.
+  the theory and proof language @{cite "isabelle-isar-ref"}.
 
-  For example, according to \cite{church40} quantifiers are represented as
+  For example, according to @{cite church40} quantifiers are represented as
   higher-order constants @{text "All :: ('a \<Rightarrow> bool) \<Rightarrow> bool"} such that @{text
   "All (\<lambda>x::'a. B x)"} faithfully represents the idea that is displayed in
   Isabelle as @{text "\<forall>x::'a. B x"} via @{keyword "binder"} notation.
-  Moreover, type-inference in the style of Hindley-Milner \cite{hindleymilner}
+  Moreover, type-inference in the style of Hindley-Milner @{cite hindleymilner}
   (and extensions) enables users to write @{text "\<forall>x. B x"} concisely, when
   the type @{text "'a"} is already clear from the
   context.\footnote{Type-inference taken to the extreme can easily confuse
@@ -133,9 +133,9 @@
 
   \medskip Note that the string values that are passed in and out are
   annotated by the system, to carry further markup that is relevant for the
-  Prover IDE \cite{isabelle-jedit}. User code should neither compose its own
-  input strings, nor try to analyze the output strings. Conceptually this is
-  an abstract datatype, encoded as concrete string for historical reasons.
+  Prover IDE @{cite "isabelle-jedit"}. User code should neither compose its
+  own input strings, nor try to analyze the output strings. Conceptually this
+  is an abstract datatype, encoded as concrete string for historical reasons.
 
   The standard way to provide the required position markup for input works via
   the outer syntax parser wrapper @{ML Parse.inner_syntax}, which is already
@@ -161,9 +161,10 @@
   declaratively via mixfix annotations. Moreover, there are \emph{syntax
   translations} that can be augmented by the user, either declaratively via
   @{command translations} or programmatically via @{command
-  parse_translation}, @{command print_translation} \cite{isabelle-isar-ref}.
-  The final scope-resolution is performed by the system, according to name
-  spaces for types, term variables and constants determined by the context.
+  parse_translation}, @{command print_translation} @{cite
+  "isabelle-isar-ref"}. The final scope-resolution is performed by the system,
+  according to name spaces for types, term variables and constants determined
+  by the context.
 *}
 
 text %mlref {*
@@ -216,7 +217,7 @@
   before pretty printing.
 
   A typical add-on for the check/uncheck syntax layer is the @{command
-  abbreviation} mechanism \cite{isabelle-isar-ref}. Here the user specifies
+  abbreviation} mechanism @{cite "isabelle-isar-ref"}. Here the user specifies
   syntactic definitions that are managed by the system as polymorphic @{text
   "let"} bindings. These are expanded during the @{text "check"} phase, and
   contracted during the @{text "uncheck"} phase, without affecting the
@@ -230,7 +231,7 @@
   constants according to the ``dictionary construction'' of its
   logical foundation.  This involves ``type improvement''
   (specialization of slightly too general types) and replacement by
-  certain locale parameters.  See also \cite{Haftmann-Wenzel:2009}.
+  certain locale parameters.  See also @{cite "Haftmann-Wenzel:2009"}.
 *}
 
 text %mlref {*