diff -r 1e31ddcab458 -r 4c275405faae src/Doc/Implementation/Syntax.thy --- a/src/Doc/Implementation/Syntax.thy Sun Jan 15 16:28:03 2023 +0100 +++ b/src/Doc/Implementation/Syntax.thy Sun Jan 15 18:30:18 2023 +0100 @@ -12,13 +12,13 @@ abstract syntax\ --- but end-users require 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"}. + syntax\ of 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 \All :: ('a \ bool) \ bool\ such that \All (\x::'a. B x)\ faithfully represents the idea that is displayed in Isabelle as \\x::'a. B x\ via @{keyword "binder"} notation. Moreover, type-inference in the style - of Hindley-Milner @{cite hindleymilner} (and extensions) enables users to + of Hindley-Milner \<^cite>\hindleymilner\ (and extensions) enables users to write \\x. B x\ concisely, when the type \'a\ is already clear from the context.\<^footnote>\Type-inference taken to the extreme can easily confuse users. Beginners often stumble over unexpectedly general types inferred by the @@ -121,8 +121,7 @@ \<^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, + 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. @@ -150,8 +149,7 @@ 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, + 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. \ @@ -200,7 +198,7 @@ dual, it prunes type-information 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 \let\ bindings. These are expanded during the \check\ phase, and contracted during the \uncheck\ phase, without affecting the type-assignment of the given @@ -214,7 +212,7 @@ treats certain type instances of overloaded 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"}. + by certain locale parameters. See also \<^cite>\"Haftmann-Wenzel:2009"\. \ text %mlref \