src/Doc/Implementation/Prelim.thy
changeset 61439 2bf52eec4e8a
parent 61416 b9a3324e4e62
child 61458 987533262fc2
equal deleted inserted replaced
61438:151f894984d8 61439:2bf52eec4e8a
   129   @{index_ML Theory.ancestors_of: "theory -> theory list"} \\
   129   @{index_ML Theory.ancestors_of: "theory -> theory list"} \\
   130   \end{mldecls}
   130   \end{mldecls}
   131 
   131 
   132   \begin{description}
   132   \begin{description}
   133 
   133 
   134   \item Type @{ML_type theory} represents theory contexts.
   134   \<^descr> Type @{ML_type theory} represents theory contexts.
   135 
   135 
   136   \item @{ML "Context.eq_thy"}~@{text "(thy\<^sub>1, thy\<^sub>2)"} check strict
   136   \<^descr> @{ML "Context.eq_thy"}~@{text "(thy\<^sub>1, thy\<^sub>2)"} check strict
   137   identity of two theories.
   137   identity of two theories.
   138 
   138 
   139   \item @{ML "Context.subthy"}~@{text "(thy\<^sub>1, thy\<^sub>2)"} compares theories
   139   \<^descr> @{ML "Context.subthy"}~@{text "(thy\<^sub>1, thy\<^sub>2)"} compares theories
   140   according to the intrinsic graph structure of the construction.
   140   according to the intrinsic graph structure of the construction.
   141   This sub-theory relation is a nominal approximation of inclusion
   141   This sub-theory relation is a nominal approximation of inclusion
   142   (@{text "\<subseteq>"}) of the corresponding content (according to the
   142   (@{text "\<subseteq>"}) of the corresponding content (according to the
   143   semantics of the ML modules that implement the data).
   143   semantics of the ML modules that implement the data).
   144 
   144 
   145   \item @{ML "Theory.begin_theory"}~@{text "name parents"} constructs
   145   \<^descr> @{ML "Theory.begin_theory"}~@{text "name parents"} constructs
   146   a new theory based on the given parents.  This ML function is
   146   a new theory based on the given parents.  This ML function is
   147   normally not invoked directly.
   147   normally not invoked directly.
   148 
   148 
   149   \item @{ML "Theory.parents_of"}~@{text "thy"} returns the direct
   149   \<^descr> @{ML "Theory.parents_of"}~@{text "thy"} returns the direct
   150   ancestors of @{text thy}.
   150   ancestors of @{text thy}.
   151 
   151 
   152   \item @{ML "Theory.ancestors_of"}~@{text "thy"} returns all
   152   \<^descr> @{ML "Theory.ancestors_of"}~@{text "thy"} returns all
   153   ancestors of @{text thy} (not including @{text thy} itself).
   153   ancestors of @{text thy} (not including @{text thy} itself).
   154 
   154 
   155   \end{description}
   155   \end{description}
   156 \<close>
   156 \<close>
   157 
   157 
   167   @@{ML_antiquotation theory_context} nameref
   167   @@{ML_antiquotation theory_context} nameref
   168   \<close>}
   168   \<close>}
   169 
   169 
   170   \begin{description}
   170   \begin{description}
   171 
   171 
   172   \item @{text "@{theory}"} refers to the background theory of the
   172   \<^descr> @{text "@{theory}"} refers to the background theory of the
   173   current context --- as abstract value.
   173   current context --- as abstract value.
   174 
   174 
   175   \item @{text "@{theory A}"} refers to an explicitly named ancestor
   175   \<^descr> @{text "@{theory A}"} refers to an explicitly named ancestor
   176   theory @{text "A"} of the background theory of the current context
   176   theory @{text "A"} of the background theory of the current context
   177   --- as abstract value.
   177   --- as abstract value.
   178 
   178 
   179   \item @{text "@{theory_context A}"} is similar to @{text "@{theory
   179   \<^descr> @{text "@{theory_context A}"} is similar to @{text "@{theory
   180   A}"}, but presents the result as initial @{ML_type Proof.context}
   180   A}"}, but presents the result as initial @{ML_type Proof.context}
   181   (see also @{ML Proof_Context.init_global}).
   181   (see also @{ML Proof_Context.init_global}).
   182 
   182 
   183   \end{description}
   183   \end{description}
   184 \<close>
   184 \<close>
   220   @{index_ML Proof_Context.transfer: "theory -> Proof.context -> Proof.context"} \\
   220   @{index_ML Proof_Context.transfer: "theory -> Proof.context -> Proof.context"} \\
   221   \end{mldecls}
   221   \end{mldecls}
   222 
   222 
   223   \begin{description}
   223   \begin{description}
   224 
   224 
   225   \item Type @{ML_type Proof.context} represents proof contexts.
   225   \<^descr> Type @{ML_type Proof.context} represents proof contexts.
   226 
   226 
   227   \item @{ML Proof_Context.init_global}~@{text "thy"} produces a proof
   227   \<^descr> @{ML Proof_Context.init_global}~@{text "thy"} produces a proof
   228   context derived from @{text "thy"}, initializing all data.
   228   context derived from @{text "thy"}, initializing all data.
   229 
   229 
   230   \item @{ML Proof_Context.theory_of}~@{text "ctxt"} selects the
   230   \<^descr> @{ML Proof_Context.theory_of}~@{text "ctxt"} selects the
   231   background theory from @{text "ctxt"}.
   231   background theory from @{text "ctxt"}.
   232 
   232 
   233   \item @{ML Proof_Context.transfer}~@{text "thy ctxt"} promotes the
   233   \<^descr> @{ML Proof_Context.transfer}~@{text "thy ctxt"} promotes the
   234   background theory of @{text "ctxt"} to the super theory @{text
   234   background theory of @{text "ctxt"} to the super theory @{text
   235   "thy"}.
   235   "thy"}.
   236 
   236 
   237   \end{description}
   237   \end{description}
   238 \<close>
   238 \<close>
   242   @{ML_antiquotation_def "context"} & : & @{text ML_antiquotation} \\
   242   @{ML_antiquotation_def "context"} & : & @{text ML_antiquotation} \\
   243   \end{matharray}
   243   \end{matharray}
   244 
   244 
   245   \begin{description}
   245   \begin{description}
   246 
   246 
   247   \item @{text "@{context}"} refers to \emph{the} context at
   247   \<^descr> @{text "@{context}"} refers to \emph{the} context at
   248   compile-time --- as abstract value.  Independently of (local) theory
   248   compile-time --- as abstract value.  Independently of (local) theory
   249   or proof mode, this always produces a meaningful result.
   249   or proof mode, this always produces a meaningful result.
   250 
   250 
   251   This is probably the most common antiquotation in interactive
   251   This is probably the most common antiquotation in interactive
   252   experimentation with ML inside Isar.
   252   experimentation with ML inside Isar.
   279   @{index_ML Context.proof_of: "Context.generic -> Proof.context"} \\
   279   @{index_ML Context.proof_of: "Context.generic -> Proof.context"} \\
   280   \end{mldecls}
   280   \end{mldecls}
   281 
   281 
   282   \begin{description}
   282   \begin{description}
   283 
   283 
   284   \item Type @{ML_type Context.generic} is the direct sum of @{ML_type
   284   \<^descr> Type @{ML_type Context.generic} is the direct sum of @{ML_type
   285   "theory"} and @{ML_type "Proof.context"}, with the datatype
   285   "theory"} and @{ML_type "Proof.context"}, with the datatype
   286   constructors @{ML "Context.Theory"} and @{ML "Context.Proof"}.
   286   constructors @{ML "Context.Theory"} and @{ML "Context.Proof"}.
   287 
   287 
   288   \item @{ML Context.theory_of}~@{text "context"} always produces a
   288   \<^descr> @{ML Context.theory_of}~@{text "context"} always produces a
   289   theory from the generic @{text "context"}, using @{ML
   289   theory from the generic @{text "context"}, using @{ML
   290   "Proof_Context.theory_of"} as required.
   290   "Proof_Context.theory_of"} as required.
   291 
   291 
   292   \item @{ML Context.proof_of}~@{text "context"} always produces a
   292   \<^descr> @{ML Context.proof_of}~@{text "context"} always produces a
   293   proof context from the generic @{text "context"}, using @{ML
   293   proof context from the generic @{text "context"}, using @{ML
   294   "Proof_Context.init_global"} as required (note that this re-initializes the
   294   "Proof_Context.init_global"} as required (note that this re-initializes the
   295   context data with each invocation).
   295   context data with each invocation).
   296 
   296 
   297   \end{description}
   297   \end{description}
   383   @{index_ML_functor Generic_Data} \\
   383   @{index_ML_functor Generic_Data} \\
   384   \end{mldecls}
   384   \end{mldecls}
   385 
   385 
   386   \begin{description}
   386   \begin{description}
   387 
   387 
   388   \item @{ML_functor Theory_Data}@{text "(spec)"} declares data for
   388   \<^descr> @{ML_functor Theory_Data}@{text "(spec)"} declares data for
   389   type @{ML_type theory} according to the specification provided as
   389   type @{ML_type theory} according to the specification provided as
   390   argument structure.  The resulting structure provides data init and
   390   argument structure.  The resulting structure provides data init and
   391   access operations as described above.
   391   access operations as described above.
   392 
   392 
   393   \item @{ML_functor Proof_Data}@{text "(spec)"} is analogous to
   393   \<^descr> @{ML_functor Proof_Data}@{text "(spec)"} is analogous to
   394   @{ML_functor Theory_Data} for type @{ML_type Proof.context}.
   394   @{ML_functor Theory_Data} for type @{ML_type Proof.context}.
   395 
   395 
   396   \item @{ML_functor Generic_Data}@{text "(spec)"} is analogous to
   396   \<^descr> @{ML_functor Generic_Data}@{text "(spec)"} is analogous to
   397   @{ML_functor Theory_Data} for type @{ML_type Context.generic}.
   397   @{ML_functor Theory_Data} for type @{ML_type Context.generic}.
   398 
   398 
   399   \end{description}
   399   \end{description}
   400 \<close>
   400 \<close>
   401 
   401 
   544   string Config.T"} \\
   544   string Config.T"} \\
   545   \end{mldecls}
   545   \end{mldecls}
   546 
   546 
   547   \begin{description}
   547   \begin{description}
   548 
   548 
   549   \item @{ML Config.get}~@{text "ctxt config"} gets the value of
   549   \<^descr> @{ML Config.get}~@{text "ctxt config"} gets the value of
   550   @{text "config"} in the given context.
   550   @{text "config"} in the given context.
   551 
   551 
   552   \item @{ML Config.map}~@{text "config f ctxt"} updates the context
   552   \<^descr> @{ML Config.map}~@{text "config f ctxt"} updates the context
   553   by updating the value of @{text "config"}.
   553   by updating the value of @{text "config"}.
   554 
   554 
   555   \item @{text "config ="}~@{ML Attrib.setup_config_bool}~@{text "name
   555   \<^descr> @{text "config ="}~@{ML Attrib.setup_config_bool}~@{text "name
   556   default"} creates a named configuration option of type @{ML_type
   556   default"} creates a named configuration option of type @{ML_type
   557   bool}, with the given @{text "default"} depending on the application
   557   bool}, with the given @{text "default"} depending on the application
   558   context.  The resulting @{text "config"} can be used to get/map its
   558   context.  The resulting @{text "config"} can be used to get/map its
   559   value in a given context.  There is an implicit update of the
   559   value in a given context.  There is an implicit update of the
   560   background theory that registers the option as attribute with some
   560   background theory that registers the option as attribute with some
   561   concrete syntax.
   561   concrete syntax.
   562 
   562 
   563   \item @{ML Attrib.config_int}, @{ML Attrib.config_real}, and @{ML
   563   \<^descr> @{ML Attrib.config_int}, @{ML Attrib.config_real}, and @{ML
   564   Attrib.config_string} work like @{ML Attrib.config_bool}, but for
   564   Attrib.config_string} work like @{ML Attrib.config_bool}, but for
   565   types @{ML_type int} and @{ML_type string}, respectively.
   565   types @{ML_type int} and @{ML_type string}, respectively.
   566 
   566 
   567   \end{description}
   567   \end{description}
   568 \<close>
   568 \<close>
   690   @{index_ML Variable.names_of: "Proof.context -> Name.context"} \\
   690   @{index_ML Variable.names_of: "Proof.context -> Name.context"} \\
   691   \end{mldecls}
   691   \end{mldecls}
   692 
   692 
   693   \begin{description}
   693   \begin{description}
   694 
   694 
   695   \item @{ML Name.internal}~@{text "name"} produces an internal name
   695   \<^descr> @{ML Name.internal}~@{text "name"} produces an internal name
   696   by adding one underscore.
   696   by adding one underscore.
   697 
   697 
   698   \item @{ML Name.skolem}~@{text "name"} produces a Skolem name by
   698   \<^descr> @{ML Name.skolem}~@{text "name"} produces a Skolem name by
   699   adding two underscores.
   699   adding two underscores.
   700 
   700 
   701   \item Type @{ML_type Name.context} represents the context of already
   701   \<^descr> Type @{ML_type Name.context} represents the context of already
   702   used names; the initial value is @{ML "Name.context"}.
   702   used names; the initial value is @{ML "Name.context"}.
   703 
   703 
   704   \item @{ML Name.declare}~@{text "name"} enters a used name into the
   704   \<^descr> @{ML Name.declare}~@{text "name"} enters a used name into the
   705   context.
   705   context.
   706 
   706 
   707   \item @{ML Name.invent}~@{text "context name n"} produces @{text
   707   \<^descr> @{ML Name.invent}~@{text "context name n"} produces @{text
   708   "n"} fresh names derived from @{text "name"}.
   708   "n"} fresh names derived from @{text "name"}.
   709 
   709 
   710   \item @{ML Name.variant}~@{text "name context"} produces a fresh
   710   \<^descr> @{ML Name.variant}~@{text "name context"} produces a fresh
   711   variant of @{text "name"}; the result is declared to the context.
   711   variant of @{text "name"}; the result is declared to the context.
   712 
   712 
   713   \item @{ML Variable.names_of}~@{text "ctxt"} retrieves the context
   713   \<^descr> @{ML Variable.names_of}~@{text "ctxt"} retrieves the context
   714   of declared type and term variable names.  Projecting a proof
   714   of declared type and term variable names.  Projecting a proof
   715   context down to a primitive name context is occasionally useful when
   715   context down to a primitive name context is occasionally useful when
   716   invoking lower-level operations.  Regular management of ``fresh
   716   invoking lower-level operations.  Regular management of ``fresh
   717   variables'' is done by suitable operations of structure @{ML_structure
   717   variables'' is done by suitable operations of structure @{ML_structure
   718   Variable}, which is also able to provide an official status of
   718   Variable}, which is also able to provide an official status of
   798   @{index_ML_type indexname: "string * int"} \\
   798   @{index_ML_type indexname: "string * int"} \\
   799   \end{mldecls}
   799   \end{mldecls}
   800 
   800 
   801   \begin{description}
   801   \begin{description}
   802 
   802 
   803   \item Type @{ML_type indexname} represents indexed names.  This is
   803   \<^descr> Type @{ML_type indexname} represents indexed names.  This is
   804   an abbreviation for @{ML_type "string * int"}.  The second component
   804   an abbreviation for @{ML_type "string * int"}.  The second component
   805   is usually non-negative, except for situations where @{text "(x,
   805   is usually non-negative, except for situations where @{text "(x,
   806   -1)"} is used to inject basic names into this type.  Other negative
   806   -1)"} is used to inject basic names into this type.  Other negative
   807   indexes should not be used.
   807   indexes should not be used.
   808 
   808 
   843   @{index_ML Long_Name.explode: "string -> string list"} \\
   843   @{index_ML Long_Name.explode: "string -> string list"} \\
   844   \end{mldecls}
   844   \end{mldecls}
   845 
   845 
   846   \begin{description}
   846   \begin{description}
   847 
   847 
   848   \item @{ML Long_Name.base_name}~@{text "name"} returns the base name
   848   \<^descr> @{ML Long_Name.base_name}~@{text "name"} returns the base name
   849   of a long name.
   849   of a long name.
   850 
   850 
   851   \item @{ML Long_Name.qualifier}~@{text "name"} returns the qualifier
   851   \<^descr> @{ML Long_Name.qualifier}~@{text "name"} returns the qualifier
   852   of a long name.
   852   of a long name.
   853 
   853 
   854   \item @{ML Long_Name.append}~@{text "name\<^sub>1 name\<^sub>2"} appends two long
   854   \<^descr> @{ML Long_Name.append}~@{text "name\<^sub>1 name\<^sub>2"} appends two long
   855   names.
   855   names.
   856 
   856 
   857   \item @{ML Long_Name.implode}~@{text "names"} and @{ML
   857   \<^descr> @{ML Long_Name.implode}~@{text "names"} and @{ML
   858   Long_Name.explode}~@{text "name"} convert between the packed string
   858   Long_Name.explode}~@{text "name"} convert between the packed string
   859   representation and the explicit list form of long names.
   859   representation and the explicit list form of long names.
   860 
   860 
   861   \end{description}
   861   \end{description}
   862 \<close>
   862 \<close>
   947   @{index_ML Name_Space.is_concealed: "Name_Space.T -> string -> bool"}
   947   @{index_ML Name_Space.is_concealed: "Name_Space.T -> string -> bool"}
   948   \end{mldecls}
   948   \end{mldecls}
   949 
   949 
   950   \begin{description}
   950   \begin{description}
   951 
   951 
   952   \item Type @{ML_type binding} represents the abstract concept of
   952   \<^descr> Type @{ML_type binding} represents the abstract concept of
   953   name bindings.
   953   name bindings.
   954 
   954 
   955   \item @{ML Binding.empty} is the empty binding.
   955   \<^descr> @{ML Binding.empty} is the empty binding.
   956 
   956 
   957   \item @{ML Binding.name}~@{text "name"} produces a binding with base
   957   \<^descr> @{ML Binding.name}~@{text "name"} produces a binding with base
   958   name @{text "name"}.  Note that this lacks proper source position
   958   name @{text "name"}.  Note that this lacks proper source position
   959   information; see also the ML antiquotation @{ML_antiquotation
   959   information; see also the ML antiquotation @{ML_antiquotation
   960   binding}.
   960   binding}.
   961 
   961 
   962   \item @{ML Binding.qualify}~@{text "mandatory name binding"}
   962   \<^descr> @{ML Binding.qualify}~@{text "mandatory name binding"}
   963   prefixes qualifier @{text "name"} to @{text "binding"}.  The @{text
   963   prefixes qualifier @{text "name"} to @{text "binding"}.  The @{text
   964   "mandatory"} flag tells if this name component always needs to be
   964   "mandatory"} flag tells if this name component always needs to be
   965   given in name space accesses --- this is mostly @{text "false"} in
   965   given in name space accesses --- this is mostly @{text "false"} in
   966   practice.  Note that this part of qualification is typically used in
   966   practice.  Note that this part of qualification is typically used in
   967   derived specification mechanisms.
   967   derived specification mechanisms.
   968 
   968 
   969   \item @{ML Binding.prefix} is similar to @{ML Binding.qualify}, but
   969   \<^descr> @{ML Binding.prefix} is similar to @{ML Binding.qualify}, but
   970   affects the system prefix.  This part of extra qualification is
   970   affects the system prefix.  This part of extra qualification is
   971   typically used in the infrastructure for modular specifications,
   971   typically used in the infrastructure for modular specifications,
   972   notably ``local theory targets'' (see also \chref{ch:local-theory}).
   972   notably ``local theory targets'' (see also \chref{ch:local-theory}).
   973 
   973 
   974   \item @{ML Binding.concealed}~@{text "binding"} indicates that the
   974   \<^descr> @{ML Binding.concealed}~@{text "binding"} indicates that the
   975   binding shall refer to an entity that serves foundational purposes
   975   binding shall refer to an entity that serves foundational purposes
   976   only.  This flag helps to mark implementation details of
   976   only.  This flag helps to mark implementation details of
   977   specification mechanism etc.  Other tools should not depend on the
   977   specification mechanism etc.  Other tools should not depend on the
   978   particulars of concealed entities (cf.\ @{ML
   978   particulars of concealed entities (cf.\ @{ML
   979   Name_Space.is_concealed}).
   979   Name_Space.is_concealed}).
   980 
   980 
   981   \item @{ML Binding.print}~@{text "binding"} produces a string
   981   \<^descr> @{ML Binding.print}~@{text "binding"} produces a string
   982   representation for human-readable output, together with some formal
   982   representation for human-readable output, together with some formal
   983   markup that might get used in GUI front-ends, for example.
   983   markup that might get used in GUI front-ends, for example.
   984 
   984 
   985   \item Type @{ML_type Name_Space.naming} represents the abstract
   985   \<^descr> Type @{ML_type Name_Space.naming} represents the abstract
   986   concept of a naming policy.
   986   concept of a naming policy.
   987 
   987 
   988   \item @{ML Name_Space.global_naming} is the default naming policy: it is
   988   \<^descr> @{ML Name_Space.global_naming} is the default naming policy: it is
   989   global and lacks any path prefix.  In a regular theory context this is
   989   global and lacks any path prefix.  In a regular theory context this is
   990   augmented by a path prefix consisting of the theory name.
   990   augmented by a path prefix consisting of the theory name.
   991 
   991 
   992   \item @{ML Name_Space.add_path}~@{text "path naming"} augments the
   992   \<^descr> @{ML Name_Space.add_path}~@{text "path naming"} augments the
   993   naming policy by extending its path component.
   993   naming policy by extending its path component.
   994 
   994 
   995   \item @{ML Name_Space.full_name}~@{text "naming binding"} turns a
   995   \<^descr> @{ML Name_Space.full_name}~@{text "naming binding"} turns a
   996   name binding (usually a basic name) into the fully qualified
   996   name binding (usually a basic name) into the fully qualified
   997   internal name, according to the given naming policy.
   997   internal name, according to the given naming policy.
   998 
   998 
   999   \item Type @{ML_type Name_Space.T} represents name spaces.
   999   \<^descr> Type @{ML_type Name_Space.T} represents name spaces.
  1000 
  1000 
  1001   \item @{ML Name_Space.empty}~@{text "kind"} and @{ML Name_Space.merge}~@{text
  1001   \<^descr> @{ML Name_Space.empty}~@{text "kind"} and @{ML Name_Space.merge}~@{text
  1002   "(space\<^sub>1, space\<^sub>2)"} are the canonical operations for
  1002   "(space\<^sub>1, space\<^sub>2)"} are the canonical operations for
  1003   maintaining name spaces according to theory data management
  1003   maintaining name spaces according to theory data management
  1004   (\secref{sec:context-data}); @{text "kind"} is a formal comment
  1004   (\secref{sec:context-data}); @{text "kind"} is a formal comment
  1005   to characterize the purpose of a name space.
  1005   to characterize the purpose of a name space.
  1006 
  1006 
  1007   \item @{ML Name_Space.declare}~@{text "context strict binding
  1007   \<^descr> @{ML Name_Space.declare}~@{text "context strict binding
  1008   space"} enters a name binding as fully qualified internal name into
  1008   space"} enters a name binding as fully qualified internal name into
  1009   the name space, using the naming of the context.
  1009   the name space, using the naming of the context.
  1010 
  1010 
  1011   \item @{ML Name_Space.intern}~@{text "space name"} internalizes a
  1011   \<^descr> @{ML Name_Space.intern}~@{text "space name"} internalizes a
  1012   (partially qualified) external name.
  1012   (partially qualified) external name.
  1013 
  1013 
  1014   This operation is mostly for parsing!  Note that fully qualified
  1014   This operation is mostly for parsing!  Note that fully qualified
  1015   names stemming from declarations are produced via @{ML
  1015   names stemming from declarations are produced via @{ML
  1016   "Name_Space.full_name"} and @{ML "Name_Space.declare"}
  1016   "Name_Space.full_name"} and @{ML "Name_Space.declare"}
  1017   (or their derivatives for @{ML_type theory} and
  1017   (or their derivatives for @{ML_type theory} and
  1018   @{ML_type Proof.context}).
  1018   @{ML_type Proof.context}).
  1019 
  1019 
  1020   \item @{ML Name_Space.extern}~@{text "ctxt space name"} externalizes a
  1020   \<^descr> @{ML Name_Space.extern}~@{text "ctxt space name"} externalizes a
  1021   (fully qualified) internal name.
  1021   (fully qualified) internal name.
  1022 
  1022 
  1023   This operation is mostly for printing!  User code should not rely on
  1023   This operation is mostly for printing!  User code should not rely on
  1024   the precise result too much.
  1024   the precise result too much.
  1025 
  1025 
  1026   \item @{ML Name_Space.is_concealed}~@{text "space name"} indicates
  1026   \<^descr> @{ML Name_Space.is_concealed}~@{text "space name"} indicates
  1027   whether @{text "name"} refers to a strictly private entity that
  1027   whether @{text "name"} refers to a strictly private entity that
  1028   other tools are supposed to ignore!
  1028   other tools are supposed to ignore!
  1029 
  1029 
  1030   \end{description}
  1030   \end{description}
  1031 \<close>
  1031 \<close>
  1039   @@{ML_antiquotation binding} name
  1039   @@{ML_antiquotation binding} name
  1040   \<close>}
  1040   \<close>}
  1041 
  1041 
  1042   \begin{description}
  1042   \begin{description}
  1043 
  1043 
  1044   \item @{text "@{binding name}"} produces a binding with base name
  1044   \<^descr> @{text "@{binding name}"} produces a binding with base name
  1045   @{text "name"} and the source position taken from the concrete
  1045   @{text "name"} and the source position taken from the concrete
  1046   syntax of this antiquotation.  In many situations this is more
  1046   syntax of this antiquotation.  In many situations this is more
  1047   appropriate than the more basic @{ML Binding.name} function.
  1047   appropriate than the more basic @{ML Binding.name} function.
  1048 
  1048 
  1049   \end{description}
  1049   \end{description}