src/Doc/Isar_Ref/Inner_Syntax.thy
changeset 67718 17874d43d3b3
parent 67513 731b1ad6759a
child 68249 949d93804740
equal deleted inserted replaced
67717:5a1b299fe4af 67718:17874d43d3b3
   722     & \<open>|\<close> & \<open>type\<^sup>(\<^sup>1\<^sup>)\<close> \<open>\<Rightarrow>\<close> \<open>type\<close> & \<open>(0)\<close> \\
   722     & \<open>|\<close> & \<open>type\<^sup>(\<^sup>1\<^sup>)\<close> \<open>\<Rightarrow>\<close> \<open>type\<close> & \<open>(0)\<close> \\
   723     & \<open>|\<close> & \<^verbatim>\<open>[\<close> \<open>type\<close> \<^verbatim>\<open>,\<close> \<open>\<dots>\<close> \<^verbatim>\<open>,\<close> \<open>type\<close> \<^verbatim>\<open>]\<close> \<^verbatim>\<open>=>\<close> \<open>type\<close> & \<open>(0)\<close> \\
   723     & \<open>|\<close> & \<^verbatim>\<open>[\<close> \<open>type\<close> \<^verbatim>\<open>,\<close> \<open>\<dots>\<close> \<^verbatim>\<open>,\<close> \<open>type\<close> \<^verbatim>\<open>]\<close> \<^verbatim>\<open>=>\<close> \<open>type\<close> & \<open>(0)\<close> \\
   724     & \<open>|\<close> & \<^verbatim>\<open>[\<close> \<open>type\<close> \<^verbatim>\<open>,\<close> \<open>\<dots>\<close> \<^verbatim>\<open>,\<close> \<open>type\<close> \<^verbatim>\<open>]\<close> \<open>\<Rightarrow>\<close> \<open>type\<close> & \<open>(0)\<close> \\
   724     & \<open>|\<close> & \<^verbatim>\<open>[\<close> \<open>type\<close> \<^verbatim>\<open>,\<close> \<open>\<dots>\<close> \<^verbatim>\<open>,\<close> \<open>type\<close> \<^verbatim>\<open>]\<close> \<open>\<Rightarrow>\<close> \<open>type\<close> & \<open>(0)\<close> \\
   725   @{syntax_def (inner) type_name} & = & \<open>id  |  longid\<close> \\\\
   725   @{syntax_def (inner) type_name} & = & \<open>id  |  longid\<close> \\\\
   726 
   726 
   727   @{syntax_def (inner) sort} & = & @{syntax class_name}~~\<open>|\<close>~~\<^verbatim>\<open>{}\<close> \\
   727   @{syntax_def (inner) sort} & = & @{syntax class_name}~~\<open>|\<close>~~\<^verbatim>\<open>_\<close>~~\<open>|\<close>~~\<^verbatim>\<open>{}\<close> \\
   728     & \<open>|\<close> & \<^verbatim>\<open>{\<close> @{syntax class_name} \<^verbatim>\<open>,\<close> \<open>\<dots>\<close> \<^verbatim>\<open>,\<close> @{syntax class_name} \<^verbatim>\<open>}\<close> \\
   728     & \<open>|\<close> & \<^verbatim>\<open>{\<close> @{syntax class_name} \<^verbatim>\<open>,\<close> \<open>\<dots>\<close> \<^verbatim>\<open>,\<close> @{syntax class_name} \<^verbatim>\<open>}\<close> \\
   729   @{syntax_def (inner) class_name} & = & \<open>id  |  longid\<close> \\
   729   @{syntax_def (inner) class_name} & = & \<open>id  |  longid\<close> \\
   730   \end{supertabular}
   730   \end{supertabular}
   731   \end{center}
   731   \end{center}
   732 
   732 
   800   in which case the input is likely to be ambiguous. The correct form is \<open>x <
   800   in which case the input is likely to be ambiguous. The correct form is \<open>x <
   801   (y :: nat)\<close>.
   801   (y :: nat)\<close>.
   802 
   802 
   803   \<^item> Dummy variables (written as underscore) may occur in different
   803   \<^item> Dummy variables (written as underscore) may occur in different
   804   roles.
   804   roles.
       
   805 
       
   806     \<^descr> A sort ``\<open>_\<close>'' refers to a vacuous constraint for type variables, which
       
   807     is effectively ignored in type-inference.
   805 
   808 
   806     \<^descr> A type ``\<open>_\<close>'' or ``\<open>_ :: sort\<close>'' acts like an anonymous inference
   809     \<^descr> A type ``\<open>_\<close>'' or ``\<open>_ :: sort\<close>'' acts like an anonymous inference
   807     parameter, which is filled-in according to the most general type produced
   810     parameter, which is filled-in according to the most general type produced
   808     by the type-checking phase.
   811     by the type-checking phase.
   809 
   812