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 |
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} |
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 |