doc-src/IsarRef/Thy/document/Document_Preparation.tex
changeset 43535 2080fe35abea
parent 43529 8f5d5d71add0
child 43542 04dfffda5671
equal deleted inserted replaced
43534:824d3f1d8de6 43535:2080fe35abea
   101   Note that formal comments (\secref{sec:comments}) are similar to
   101   Note that formal comments (\secref{sec:comments}) are similar to
   102   markup commands, but have a different status within Isabelle/Isar
   102   markup commands, but have a different status within Isabelle/Isar
   103   syntax.
   103   syntax.
   104 
   104 
   105   \begin{railoutput}
   105   \begin{railoutput}
   106 \rail@begin{5}{\isa{}}
   106 \rail@begin{5}{}
   107 \rail@bar
   107 \rail@bar
   108 \rail@term{\hyperlink{command.chapter}{\mbox{\isa{\isacommand{chapter}}}}}[]
   108 \rail@term{\hyperlink{command.chapter}{\mbox{\isa{\isacommand{chapter}}}}}[]
   109 \rail@nextbar{1}
   109 \rail@nextbar{1}
   110 \rail@term{\hyperlink{command.section}{\mbox{\isa{\isacommand{section}}}}}[]
   110 \rail@term{\hyperlink{command.section}{\mbox{\isa{\isacommand{section}}}}}[]
   111 \rail@nextbar{2}
   111 \rail@nextbar{2}
   119 \rail@nextbar{1}
   119 \rail@nextbar{1}
   120 \rail@nont{\hyperlink{syntax.target}{\mbox{\isa{target}}}}[]
   120 \rail@nont{\hyperlink{syntax.target}{\mbox{\isa{target}}}}[]
   121 \rail@endbar
   121 \rail@endbar
   122 \rail@nont{\hyperlink{syntax.text}{\mbox{\isa{text}}}}[]
   122 \rail@nont{\hyperlink{syntax.text}{\mbox{\isa{text}}}}[]
   123 \rail@end
   123 \rail@end
   124 \rail@begin{7}{\isa{}}
   124 \rail@begin{7}{}
   125 \rail@bar
   125 \rail@bar
   126 \rail@term{\hyperlink{command.header}{\mbox{\isa{\isacommand{header}}}}}[]
   126 \rail@term{\hyperlink{command.header}{\mbox{\isa{\isacommand{header}}}}}[]
   127 \rail@nextbar{1}
   127 \rail@nextbar{1}
   128 \rail@term{\hyperlink{command.text-raw}{\mbox{\isa{\isacommand{text{\isaliteral{5F}{\isacharunderscore}}raw}}}}}[]
   128 \rail@term{\hyperlink{command.text-raw}{\mbox{\isa{\isacommand{text{\isaliteral{5F}{\isacharunderscore}}raw}}}}}[]
   129 \rail@nextbar{2}
   129 \rail@nextbar{2}
   228   informal explanation is achieved, since terms and types appearing in
   228   informal explanation is achieved, since terms and types appearing in
   229   antiquotations are checked within the current theory or proof
   229   antiquotations are checked within the current theory or proof
   230   context.
   230   context.
   231 
   231 
   232   \begin{railoutput}
   232   \begin{railoutput}
   233 \rail@begin{1}{\isa{}}
   233 \rail@begin{1}{}
   234 \rail@term{\isa{{\isaliteral{40}{\isacharat}}{\isaliteral{7B}{\isacharbraceleft}}}}[]
   234 \rail@term{\isa{{\isaliteral{40}{\isacharat}}{\isaliteral{7B}{\isacharbraceleft}}}}[]
   235 \rail@nont{\isa{antiquotation}}[]
   235 \rail@nont{\isa{antiquotation}}[]
   236 \rail@term{\isa{{\isaliteral{7D}{\isacharbraceright}}}}[]
   236 \rail@term{\isa{{\isaliteral{7D}{\isacharbraceright}}}}[]
   237 \rail@end
   237 \rail@end
   238 \rail@begin{22}{\indexdef{}{syntax}{antiquotation}\hypertarget{syntax.antiquotation}{\hyperlink{syntax.antiquotation}{\mbox{\isa{antiquotation}}}}}
   238 \rail@begin{22}{\indexdef{}{syntax}{antiquotation}\hypertarget{syntax.antiquotation}{\hyperlink{syntax.antiquotation}{\mbox{\isa{antiquotation}}}}}
   640 \begin{matharray}{rcl}
   640 \begin{matharray}{rcl}
   641     \indexdef{}{antiquotation}{rail}\hypertarget{antiquotation.rail}{\hyperlink{antiquotation.rail}{\mbox{\isa{rail}}}} & : & \isa{antiquotation} \\
   641     \indexdef{}{antiquotation}{rail}\hypertarget{antiquotation.rail}{\hyperlink{antiquotation.rail}{\mbox{\isa{rail}}}} & : & \isa{antiquotation} \\
   642   \end{matharray}
   642   \end{matharray}
   643 
   643 
   644   \begin{railoutput}
   644   \begin{railoutput}
   645 \rail@begin{1}{\isa{}}
   645 \rail@begin{1}{}
   646 \rail@term{\isa{rail}}[]
   646 \rail@term{\isa{rail}}[]
   647 \rail@nont{\isa{string}}[]
   647 \rail@nont{\isa{string}}[]
   648 \rail@end
   648 \rail@end
   649 \end{railoutput}
   649 \end{railoutput}
   650 
   650 
   656   example.
   656   example.
   657 
   657 
   658   The rail specification language is quoted here as Isabelle \hyperlink{syntax.string}{\mbox{\isa{string}}}; it has its own grammar given below.
   658   The rail specification language is quoted here as Isabelle \hyperlink{syntax.string}{\mbox{\isa{string}}}; it has its own grammar given below.
   659 
   659 
   660   \begin{railoutput}
   660   \begin{railoutput}
   661 \rail@begin{3}{\isa{}}
   661 \rail@begin{3}{}
   662 \rail@plus
   662 \rail@plus
   663 \rail@bar
   663 \rail@bar
   664 \rail@nextbar{1}
   664 \rail@nextbar{1}
   665 \rail@nont{\isa{rule}}[]
   665 \rail@nont{\isa{rule}}[]
   666 \rail@endbar
   666 \rail@endbar
   748   \begin{itemize}
   748   \begin{itemize}
   749 
   749 
   750   \item Empty \verb|()|
   750   \item Empty \verb|()|
   751 
   751 
   752   \begin{railoutput}
   752   \begin{railoutput}
   753 \rail@begin{1}{\isa{}}
   753 \rail@begin{1}{}
   754 \rail@end
   754 \rail@end
   755 \end{railoutput}
   755 \end{railoutput}
   756 
   756 
   757 
   757 
   758   \item Nonterminal \verb|A|
   758   \item Nonterminal \verb|A|
   759 
   759 
   760   \begin{railoutput}
   760   \begin{railoutput}
   761 \rail@begin{1}{\isa{}}
   761 \rail@begin{1}{}
   762 \rail@nont{\isa{A}}[]
   762 \rail@nont{\isa{A}}[]
   763 \rail@end
   763 \rail@end
   764 \end{railoutput}
   764 \end{railoutput}
   765 
   765 
   766 
   766 
   767   \item Nonterminal via Isabelle antiquotation
   767   \item Nonterminal via Isabelle antiquotation
   768   \verb|@{syntax method}|
   768   \verb|@{syntax method}|
   769 
   769 
   770   \begin{railoutput}
   770   \begin{railoutput}
   771 \rail@begin{1}{\isa{}}
   771 \rail@begin{1}{}
   772 \rail@nont{\hyperlink{syntax.method}{\mbox{\isa{method}}}}[]
   772 \rail@nont{\hyperlink{syntax.method}{\mbox{\isa{method}}}}[]
   773 \rail@end
   773 \rail@end
   774 \end{railoutput}
   774 \end{railoutput}
   775 
   775 
   776 
   776 
   777   \item Terminal \verb|'xyz'|
   777   \item Terminal \verb|'xyz'|
   778 
   778 
   779   \begin{railoutput}
   779   \begin{railoutput}
   780 \rail@begin{1}{\isa{}}
   780 \rail@begin{1}{}
   781 \rail@term{\isa{xyz}}[]
   781 \rail@term{\isa{xyz}}[]
   782 \rail@end
   782 \rail@end
   783 \end{railoutput}
   783 \end{railoutput}
   784 
   784 
   785 
   785 
   786   \item Terminal in keyword style \verb|@'xyz'|
   786   \item Terminal in keyword style \verb|@'xyz'|
   787 
   787 
   788   \begin{railoutput}
   788   \begin{railoutput}
   789 \rail@begin{1}{\isa{}}
   789 \rail@begin{1}{}
   790 \rail@term{\isa{\isakeyword{xyz}}}[]
   790 \rail@term{\isa{\isakeyword{xyz}}}[]
   791 \rail@end
   791 \rail@end
   792 \end{railoutput}
   792 \end{railoutput}
   793 
   793 
   794 
   794 
   795   \item Terminal via Isabelle antiquotation
   795   \item Terminal via Isabelle antiquotation
   796   \verb|@@{method rule}|
   796   \verb|@@{method rule}|
   797 
   797 
   798   \begin{railoutput}
   798   \begin{railoutput}
   799 \rail@begin{1}{\isa{}}
   799 \rail@begin{1}{}
   800 \rail@term{\hyperlink{method.rule}{\mbox{\isa{rule}}}}[]
   800 \rail@term{\hyperlink{method.rule}{\mbox{\isa{rule}}}}[]
   801 \rail@end
   801 \rail@end
   802 \end{railoutput}
   802 \end{railoutput}
   803 
   803 
   804 
   804 
   805   \item Concatenation \verb|A B C|
   805   \item Concatenation \verb|A B C|
   806 
   806 
   807   \begin{railoutput}
   807   \begin{railoutput}
   808 \rail@begin{1}{\isa{}}
   808 \rail@begin{1}{}
   809 \rail@nont{\isa{A}}[]
   809 \rail@nont{\isa{A}}[]
   810 \rail@nont{\isa{B}}[]
   810 \rail@nont{\isa{B}}[]
   811 \rail@nont{\isa{C}}[]
   811 \rail@nont{\isa{C}}[]
   812 \rail@end
   812 \rail@end
   813 \end{railoutput}
   813 \end{railoutput}
   817   concatenation\footnote{Strictly speaking, this is only a single
   817   concatenation\footnote{Strictly speaking, this is only a single
   818   backslash, but the enclosing \hyperlink{syntax.string}{\mbox{\isa{string}}} syntax requires a
   818   backslash, but the enclosing \hyperlink{syntax.string}{\mbox{\isa{string}}} syntax requires a
   819   second one for escaping.} \verb|A B C \\ D E F|
   819   second one for escaping.} \verb|A B C \\ D E F|
   820 
   820 
   821   \begin{railoutput}
   821   \begin{railoutput}
   822 \rail@begin{3}{\isa{}}
   822 \rail@begin{3}{}
   823 \rail@nont{\isa{A}}[]
   823 \rail@nont{\isa{A}}[]
   824 \rail@nont{\isa{B}}[]
   824 \rail@nont{\isa{B}}[]
   825 \rail@nont{\isa{C}}[]
   825 \rail@nont{\isa{C}}[]
   826 \rail@cr{2}
   826 \rail@cr{2}
   827 \rail@nont{\isa{D}}[]
   827 \rail@nont{\isa{D}}[]
   832 
   832 
   833 
   833 
   834   \item Variants \verb|A |\verb,|,\verb| B |\verb,|,\verb| C|
   834   \item Variants \verb|A |\verb,|,\verb| B |\verb,|,\verb| C|
   835 
   835 
   836   \begin{railoutput}
   836   \begin{railoutput}
   837 \rail@begin{3}{\isa{}}
   837 \rail@begin{3}{}
   838 \rail@bar
   838 \rail@bar
   839 \rail@nont{\isa{A}}[]
   839 \rail@nont{\isa{A}}[]
   840 \rail@nextbar{1}
   840 \rail@nextbar{1}
   841 \rail@nont{\isa{B}}[]
   841 \rail@nont{\isa{B}}[]
   842 \rail@nextbar{2}
   842 \rail@nextbar{2}
   847 
   847 
   848 
   848 
   849   \item Option \verb|A ?|
   849   \item Option \verb|A ?|
   850 
   850 
   851   \begin{railoutput}
   851   \begin{railoutput}
   852 \rail@begin{2}{\isa{}}
   852 \rail@begin{2}{}
   853 \rail@bar
   853 \rail@bar
   854 \rail@nextbar{1}
   854 \rail@nextbar{1}
   855 \rail@nont{\isa{A}}[]
   855 \rail@nont{\isa{A}}[]
   856 \rail@endbar
   856 \rail@endbar
   857 \rail@end
   857 \rail@end
   859 
   859 
   860 
   860 
   861   \item Repetition \verb|A *|
   861   \item Repetition \verb|A *|
   862 
   862 
   863   \begin{railoutput}
   863   \begin{railoutput}
   864 \rail@begin{2}{\isa{}}
   864 \rail@begin{2}{}
   865 \rail@plus
   865 \rail@plus
   866 \rail@nextplus{1}
   866 \rail@nextplus{1}
   867 \rail@cnont{\isa{A}}[]
   867 \rail@cnont{\isa{A}}[]
   868 \rail@endplus
   868 \rail@endplus
   869 \rail@end
   869 \rail@end
   871 
   871 
   872 
   872 
   873   \item Repetition with separator \verb|A * sep|
   873   \item Repetition with separator \verb|A * sep|
   874 
   874 
   875   \begin{railoutput}
   875   \begin{railoutput}
   876 \rail@begin{3}{\isa{}}
   876 \rail@begin{3}{}
   877 \rail@bar
   877 \rail@bar
   878 \rail@nextbar{1}
   878 \rail@nextbar{1}
   879 \rail@plus
   879 \rail@plus
   880 \rail@nont{\isa{A}}[]
   880 \rail@nont{\isa{A}}[]
   881 \rail@nextplus{2}
   881 \rail@nextplus{2}
   887 
   887 
   888 
   888 
   889   \item Strict repetition \verb|A +|
   889   \item Strict repetition \verb|A +|
   890 
   890 
   891   \begin{railoutput}
   891   \begin{railoutput}
   892 \rail@begin{2}{\isa{}}
   892 \rail@begin{2}{}
   893 \rail@plus
   893 \rail@plus
   894 \rail@nont{\isa{A}}[]
   894 \rail@nont{\isa{A}}[]
   895 \rail@nextplus{1}
   895 \rail@nextplus{1}
   896 \rail@endplus
   896 \rail@endplus
   897 \rail@end
   897 \rail@end
   899 
   899 
   900 
   900 
   901   \item Strict repetition with separator \verb|A + sep|
   901   \item Strict repetition with separator \verb|A + sep|
   902 
   902 
   903   \begin{railoutput}
   903   \begin{railoutput}
   904 \rail@begin{2}{\isa{}}
   904 \rail@begin{2}{}
   905 \rail@plus
   905 \rail@plus
   906 \rail@nont{\isa{A}}[]
   906 \rail@nont{\isa{A}}[]
   907 \rail@nextplus{1}
   907 \rail@nextplus{1}
   908 \rail@cnont{\isa{sep}}[]
   908 \rail@cnont{\isa{sep}}[]
   909 \rail@endplus
   909 \rail@endplus
   924     \indexdef{}{command}{display\_drafts}\hypertarget{command.display-drafts}{\hyperlink{command.display-drafts}{\mbox{\isa{\isacommand{display{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}any\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
   924     \indexdef{}{command}{display\_drafts}\hypertarget{command.display-drafts}{\hyperlink{command.display-drafts}{\mbox{\isa{\isacommand{display{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}any\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
   925     \indexdef{}{command}{print\_drafts}\hypertarget{command.print-drafts}{\hyperlink{command.print-drafts}{\mbox{\isa{\isacommand{print{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}any\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
   925     \indexdef{}{command}{print\_drafts}\hypertarget{command.print-drafts}{\hyperlink{command.print-drafts}{\mbox{\isa{\isacommand{print{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}any\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
   926   \end{matharray}
   926   \end{matharray}
   927 
   927 
   928   \begin{railoutput}
   928   \begin{railoutput}
   929 \rail@begin{2}{\isa{}}
   929 \rail@begin{2}{}
   930 \rail@bar
   930 \rail@bar
   931 \rail@term{\hyperlink{command.display-drafts}{\mbox{\isa{\isacommand{display{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}[]
   931 \rail@term{\hyperlink{command.display-drafts}{\mbox{\isa{\isacommand{display{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}[]
   932 \rail@nextbar{1}
   932 \rail@nextbar{1}
   933 \rail@term{\hyperlink{command.print-drafts}{\mbox{\isa{\isacommand{print{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}[]
   933 \rail@term{\hyperlink{command.print-drafts}{\mbox{\isa{\isacommand{print{\isaliteral{5F}{\isacharunderscore}}drafts}}}}}[]
   934 \rail@endbar
   934 \rail@endbar