doc-src/IsarRef/Thy/document/HOL_Specific.tex
changeset 42596 6c621a9d612a
parent 42215 de9d43c427ae
child 42617 77d239840285
equal deleted inserted replaced
42591:f139d0ac2d44 42596:6c621a9d612a
    29 \begin{isamarkuptext}%
    29 \begin{isamarkuptext}%
    30 \begin{matharray}{rcl}
    30 \begin{matharray}{rcl}
    31     \indexdef{HOL}{command}{typedef}\hypertarget{command.HOL.typedef}{\hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
    31     \indexdef{HOL}{command}{typedef}\hypertarget{command.HOL.typedef}{\hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
    32   \end{matharray}
    32   \end{matharray}
    33 
    33 
    34   \begin{rail}
    34   \begin{railoutput}
    35     'typedef' altname? abstype '=' repset
    35 \rail@begin{2}{\isa{}}
    36     ;
    36 \rail@term{\hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}}}[]
    37 
    37 \rail@bar
    38     altname: '(' (name | 'open' | 'open' name) ')'
    38 \rail@nextbar{1}
    39     ;
    39 \rail@nont{\isa{altname}}[]
    40     abstype: typespecsorts mixfix?
    40 \rail@endbar
    41     ;
    41 \rail@nont{\isa{abstype}}[]
    42     repset: term ('morphisms' name name)?
    42 \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
    43     ;
    43 \rail@nont{\isa{repset}}[]
    44   \end{rail}
    44 \rail@end
       
    45 \rail@begin{3}{\isa{altname}}
       
    46 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
    47 \rail@bar
       
    48 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
    49 \rail@nextbar{1}
       
    50 \rail@term{\isa{\isakeyword{open}}}[]
       
    51 \rail@nextbar{2}
       
    52 \rail@term{\isa{\isakeyword{open}}}[]
       
    53 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
    54 \rail@endbar
       
    55 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
    56 \rail@end
       
    57 \rail@begin{2}{\isa{abstype}}
       
    58 \rail@nont{\hyperlink{syntax.typespecsorts}{\mbox{\isa{typespecsorts}}}}[]
       
    59 \rail@bar
       
    60 \rail@nextbar{1}
       
    61 \rail@nont{\hyperlink{syntax.mixfix}{\mbox{\isa{mixfix}}}}[]
       
    62 \rail@endbar
       
    63 \rail@end
       
    64 \rail@begin{2}{\isa{repset}}
       
    65 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
    66 \rail@bar
       
    67 \rail@nextbar{1}
       
    68 \rail@term{\isa{\isakeyword{morphisms}}}[]
       
    69 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
    70 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
    71 \rail@endbar
       
    72 \rail@end
       
    73 \end{railoutput}
       
    74 
    45 
    75 
    46   \begin{description}
    76   \begin{description}
    47 
    77 
    48   \item \hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub n{\isaliteral{29}{\isacharparenright}}\ t\ {\isaliteral{3D}{\isacharequal}}\ A{\isaliteral{22}{\isachardoublequote}}}
    78   \item \hyperlink{command.HOL.typedef}{\mbox{\isa{\isacommand{typedef}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub n{\isaliteral{29}{\isacharparenright}}\ t\ {\isaliteral{3D}{\isacharequal}}\ A{\isaliteral{22}{\isachardoublequote}}}
    49   axiomatizes a Gordon/HOL-style type definition in the background
    79   axiomatizes a Gordon/HOL-style type definition in the background
    87 }
   117 }
    88 \isamarkuptrue%
   118 \isamarkuptrue%
    89 %
   119 %
    90 \begin{isamarkuptext}%
   120 \begin{isamarkuptext}%
    91 \begin{matharray}{rcl}
   121 \begin{matharray}{rcl}
    92     \hyperlink{attribute.HOL.split-format}{\mbox{\isa{split{\isaliteral{5F}{\isacharunderscore}}format}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{attribute} \\
   122     \indexdef{HOL}{attribute}{split\_format}\hypertarget{attribute.HOL.split-format}{\hyperlink{attribute.HOL.split-format}{\mbox{\isa{split{\isaliteral{5F}{\isacharunderscore}}format}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{attribute} \\
    93   \end{matharray}
   123   \end{matharray}
    94 
   124 
    95   \begin{rail}
   125   \begin{railoutput}
    96     'split_format' '(' 'complete' ')'
   126 \rail@begin{2}{\isa{}}
    97     ;
   127 \rail@term{\hyperlink{attribute.HOL.split-format}{\mbox{\isa{split{\isaliteral{5F}{\isacharunderscore}}format}}}}[]
    98   \end{rail}
   128 \rail@bar
       
   129 \rail@nextbar{1}
       
   130 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
   131 \rail@term{\isa{complete}}[]
       
   132 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
   133 \rail@endbar
       
   134 \rail@end
       
   135 \end{railoutput}
       
   136 
    99 
   137 
   100   \begin{description}
   138   \begin{description}
   101 
   139 
   102   \item \hyperlink{attribute.HOL.split-format}{\mbox{\isa{split{\isaliteral{5F}{\isacharunderscore}}format}}}\ \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}complete{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} causes
   140   \item \hyperlink{attribute.HOL.split-format}{\mbox{\isa{split{\isaliteral{5F}{\isacharunderscore}}format}}}\ \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}complete{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} causes
   103   arguments in function applications to be represented canonically
   141   arguments in function applications to be represented canonically
   196 \begin{isamarkuptext}%
   234 \begin{isamarkuptext}%
   197 \begin{matharray}{rcl}
   235 \begin{matharray}{rcl}
   198     \indexdef{HOL}{command}{record}\hypertarget{command.HOL.record}{\hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
   236     \indexdef{HOL}{command}{record}\hypertarget{command.HOL.record}{\hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
   199   \end{matharray}
   237   \end{matharray}
   200 
   238 
   201   \begin{rail}
   239   \begin{railoutput}
   202     'record' typespecsorts '=' (type '+')? (constdecl +)
   240 \rail@begin{2}{\isa{}}
   203     ;
   241 \rail@term{\hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}}}[]
   204   \end{rail}
   242 \rail@nont{\hyperlink{syntax.typespecsorts}{\mbox{\isa{typespecsorts}}}}[]
       
   243 \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
       
   244 \rail@bar
       
   245 \rail@nextbar{1}
       
   246 \rail@nont{\hyperlink{syntax.type}{\mbox{\isa{type}}}}[]
       
   247 \rail@term{\isa{{\isaliteral{2B}{\isacharplus}}}}[]
       
   248 \rail@endbar
       
   249 \rail@plus
       
   250 \rail@nont{\hyperlink{syntax.constdecl}{\mbox{\isa{constdecl}}}}[]
       
   251 \rail@nextplus{1}
       
   252 \rail@endplus
       
   253 \rail@end
       
   254 \end{railoutput}
       
   255 
   205 
   256 
   206   \begin{description}
   257   \begin{description}
   207 
   258 
   208   \item \hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub m{\isaliteral{29}{\isacharparenright}}\ t\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{5C3C7461753E}{\isasymtau}}\ {\isaliteral{2B}{\isacharplus}}\ c\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C7369676D613E}{\isasymsigma}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}\ c\isaliteral{5C3C5E7375623E}{}\isactrlsub n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C7369676D613E}{\isasymsigma}}\isaliteral{5C3C5E7375623E}{}\isactrlsub n{\isaliteral{22}{\isachardoublequote}}} defines extensible record type \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub m{\isaliteral{29}{\isacharparenright}}\ t{\isaliteral{22}{\isachardoublequote}}},
   259   \item \hyperlink{command.HOL.record}{\mbox{\isa{\isacommand{record}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub m{\isaliteral{29}{\isacharparenright}}\ t\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{5C3C7461753E}{\isasymtau}}\ {\isaliteral{2B}{\isacharplus}}\ c\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C7369676D613E}{\isasymsigma}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}\ c\isaliteral{5C3C5E7375623E}{}\isactrlsub n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5C3C7369676D613E}{\isasymsigma}}\isaliteral{5C3C5E7375623E}{}\isactrlsub n{\isaliteral{22}{\isachardoublequote}}} defines extensible record type \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub {\isadigit{1}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C646F74733E}{\isasymdots}}{\isaliteral{2C}{\isacharcomma}}\ {\isaliteral{5C3C616C7068613E}{\isasymalpha}}\isaliteral{5C3C5E7375623E}{}\isactrlsub m{\isaliteral{29}{\isacharparenright}}\ t{\isaliteral{22}{\isachardoublequote}}},
   209   derived from the optional parent record \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C7461753E}{\isasymtau}}{\isaliteral{22}{\isachardoublequote}}} by adding new
   260   derived from the optional parent record \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C7461753E}{\isasymtau}}{\isaliteral{22}{\isachardoublequote}}} by adding new
   356 \begin{matharray}{rcl}
   407 \begin{matharray}{rcl}
   357     \indexdef{HOL}{command}{datatype}\hypertarget{command.HOL.datatype}{\hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
   408     \indexdef{HOL}{command}{datatype}\hypertarget{command.HOL.datatype}{\hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
   358     \indexdef{HOL}{command}{rep\_datatype}\hypertarget{command.HOL.rep-datatype}{\hyperlink{command.HOL.rep-datatype}{\mbox{\isa{\isacommand{rep{\isaliteral{5F}{\isacharunderscore}}datatype}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   409     \indexdef{HOL}{command}{rep\_datatype}\hypertarget{command.HOL.rep-datatype}{\hyperlink{command.HOL.rep-datatype}{\mbox{\isa{\isacommand{rep{\isaliteral{5F}{\isacharunderscore}}datatype}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   359   \end{matharray}
   410   \end{matharray}
   360 
   411 
   361   \begin{rail}
   412   \begin{railoutput}
   362     'datatype' (dtspec + 'and')
   413 \rail@begin{2}{\isa{}}
   363     ;
   414 \rail@term{\hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}}}[]
   364     'rep_datatype' ('(' (name +) ')')? (term +)
   415 \rail@plus
   365     ;
   416 \rail@nont{\isa{dtspec}}[]
   366 
   417 \rail@nextplus{1}
   367     dtspec: parname? typespec mixfix? '=' (cons + '|')
   418 \rail@cterm{\isa{\isakeyword{and}}}[]
   368     ;
   419 \rail@endplus
   369     cons: name ( type * ) mixfix?
   420 \rail@end
   370   \end{rail}
   421 \rail@begin{3}{\isa{}}
       
   422 \rail@term{\hyperlink{command.HOL.rep-datatype}{\mbox{\isa{\isacommand{rep{\isaliteral{5F}{\isacharunderscore}}datatype}}}}}[]
       
   423 \rail@bar
       
   424 \rail@nextbar{1}
       
   425 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
   426 \rail@plus
       
   427 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
   428 \rail@nextplus{2}
       
   429 \rail@endplus
       
   430 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
   431 \rail@endbar
       
   432 \rail@plus
       
   433 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
   434 \rail@nextplus{1}
       
   435 \rail@endplus
       
   436 \rail@end
       
   437 \rail@begin{2}{\isa{dtspec}}
       
   438 \rail@bar
       
   439 \rail@nextbar{1}
       
   440 \rail@nont{\hyperlink{syntax.parname}{\mbox{\isa{parname}}}}[]
       
   441 \rail@endbar
       
   442 \rail@nont{\hyperlink{syntax.typespec}{\mbox{\isa{typespec}}}}[]
       
   443 \rail@bar
       
   444 \rail@nextbar{1}
       
   445 \rail@nont{\hyperlink{syntax.mixfix}{\mbox{\isa{mixfix}}}}[]
       
   446 \rail@endbar
       
   447 \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
       
   448 \rail@plus
       
   449 \rail@nont{\isa{cons}}[]
       
   450 \rail@nextplus{1}
       
   451 \rail@cterm{\isa{{\isaliteral{7C}{\isacharbar}}}}[]
       
   452 \rail@endplus
       
   453 \rail@end
       
   454 \rail@begin{2}{\isa{cons}}
       
   455 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
   456 \rail@plus
       
   457 \rail@nextplus{1}
       
   458 \rail@cnont{\hyperlink{syntax.type}{\mbox{\isa{type}}}}[]
       
   459 \rail@endplus
       
   460 \rail@bar
       
   461 \rail@nextbar{1}
       
   462 \rail@nont{\hyperlink{syntax.mixfix}{\mbox{\isa{mixfix}}}}[]
       
   463 \rail@endbar
       
   464 \rail@end
       
   465 \end{railoutput}
       
   466 
   371 
   467 
   372   \begin{description}
   468   \begin{description}
   373 
   469 
   374   \item \hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}} defines inductive datatypes in
   470   \item \hyperlink{command.HOL.datatype}{\mbox{\isa{\isacommand{datatype}}}} defines inductive datatypes in
   375   HOL.
   471   HOL.
   400 \begin{isamarkuptext}%
   496 \begin{isamarkuptext}%
   401 \begin{matharray}{rcl}
   497 \begin{matharray}{rcl}
   402     \indexdef{HOL}{command}{enriched\_type}\hypertarget{command.HOL.enriched-type}{\hyperlink{command.HOL.enriched-type}{\mbox{\isa{\isacommand{enriched{\isaliteral{5F}{\isacharunderscore}}type}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}}
   498     \indexdef{HOL}{command}{enriched\_type}\hypertarget{command.HOL.enriched-type}{\hyperlink{command.HOL.enriched-type}{\mbox{\isa{\isacommand{enriched{\isaliteral{5F}{\isacharunderscore}}type}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}}
   403   \end{matharray}
   499   \end{matharray}
   404 
   500 
   405   \begin{rail}
   501   \begin{railoutput}
   406     'enriched_type' (prefix ':')? term
   502 \rail@begin{2}{\isa{}}
   407     ;
   503 \rail@term{\hyperlink{command.HOL.enriched-type}{\mbox{\isa{\isacommand{enriched{\isaliteral{5F}{\isacharunderscore}}type}}}}}[]
   408   \end{rail}
   504 \rail@bar
       
   505 \rail@nextbar{1}
       
   506 \rail@nont{\isa{prefix}}[]
       
   507 \rail@term{\isa{{\isaliteral{3A}{\isacharcolon}}}}[]
       
   508 \rail@endbar
       
   509 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
   510 \rail@end
       
   511 \end{railoutput}
       
   512  % FIXME check prefix
   409 
   513 
   410   \begin{description}
   514   \begin{description}
   411 
   515 
   412   \item \hyperlink{command.HOL.enriched-type}{\mbox{\isa{\isacommand{enriched{\isaliteral{5F}{\isacharunderscore}}type}}}} allows to prove and register
   516   \item \hyperlink{command.HOL.enriched-type}{\mbox{\isa{\isacommand{enriched{\isaliteral{5F}{\isacharunderscore}}type}}}} allows to prove and register
   413   properties about the functorial structure of type constructors;
   517   properties about the functorial structure of type constructors;
   445     \indexdef{HOL}{command}{fun}\hypertarget{command.HOL.fun}{\hyperlink{command.HOL.fun}{\mbox{\isa{\isacommand{fun}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
   549     \indexdef{HOL}{command}{fun}\hypertarget{command.HOL.fun}{\hyperlink{command.HOL.fun}{\mbox{\isa{\isacommand{fun}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
   446     \indexdef{HOL}{command}{function}\hypertarget{command.HOL.function}{\hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   550     \indexdef{HOL}{command}{function}\hypertarget{command.HOL.function}{\hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   447     \indexdef{HOL}{command}{termination}\hypertarget{command.HOL.termination}{\hyperlink{command.HOL.termination}{\mbox{\isa{\isacommand{termination}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   551     \indexdef{HOL}{command}{termination}\hypertarget{command.HOL.termination}{\hyperlink{command.HOL.termination}{\mbox{\isa{\isacommand{termination}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   448   \end{matharray}
   552   \end{matharray}
   449 
   553 
   450   \begin{rail}
   554   \begin{railoutput}
   451     'primrec' target? fixes 'where' equations
   555 \rail@begin{2}{\isa{}}
   452     ;
   556 \rail@term{\hyperlink{command.HOL.primrec}{\mbox{\isa{\isacommand{primrec}}}}}[]
   453     ('fun' | 'function') target? functionopts? fixes \\ 'where' equations
   557 \rail@bar
   454     ;
   558 \rail@nextbar{1}
   455     equations: (thmdecl? prop + '|')
   559 \rail@nont{\hyperlink{syntax.target}{\mbox{\isa{target}}}}[]
   456     ;
   560 \rail@endbar
   457     functionopts: '(' (('sequential' | 'domintros') + ',') ')'
   561 \rail@nont{\hyperlink{syntax.fixes}{\mbox{\isa{fixes}}}}[]
   458     ;
   562 \rail@term{\isa{\isakeyword{where}}}[]
   459     'termination' ( term )?
   563 \rail@nont{\isa{equations}}[]
   460   \end{rail}
   564 \rail@end
       
   565 \rail@begin{4}{\isa{}}
       
   566 \rail@bar
       
   567 \rail@term{\hyperlink{command.HOL.fun}{\mbox{\isa{\isacommand{fun}}}}}[]
       
   568 \rail@nextbar{1}
       
   569 \rail@term{\hyperlink{command.HOL.function}{\mbox{\isa{\isacommand{function}}}}}[]
       
   570 \rail@endbar
       
   571 \rail@bar
       
   572 \rail@nextbar{1}
       
   573 \rail@nont{\hyperlink{syntax.target}{\mbox{\isa{target}}}}[]
       
   574 \rail@endbar
       
   575 \rail@bar
       
   576 \rail@nextbar{1}
       
   577 \rail@nont{\isa{functionopts}}[]
       
   578 \rail@endbar
       
   579 \rail@nont{\hyperlink{syntax.fixes}{\mbox{\isa{fixes}}}}[]
       
   580 \rail@cr{3}
       
   581 \rail@term{\isa{\isakeyword{where}}}[]
       
   582 \rail@nont{\isa{equations}}[]
       
   583 \rail@end
       
   584 \rail@begin{3}{\isa{equations}}
       
   585 \rail@plus
       
   586 \rail@bar
       
   587 \rail@nextbar{1}
       
   588 \rail@nont{\hyperlink{syntax.thmdecl}{\mbox{\isa{thmdecl}}}}[]
       
   589 \rail@endbar
       
   590 \rail@nont{\hyperlink{syntax.prop}{\mbox{\isa{prop}}}}[]
       
   591 \rail@nextplus{2}
       
   592 \rail@cterm{\isa{{\isaliteral{7C}{\isacharbar}}}}[]
       
   593 \rail@endplus
       
   594 \rail@end
       
   595 \rail@begin{3}{\isa{functionopts}}
       
   596 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
   597 \rail@plus
       
   598 \rail@bar
       
   599 \rail@term{\isa{sequential}}[]
       
   600 \rail@nextbar{1}
       
   601 \rail@term{\isa{domintros}}[]
       
   602 \rail@endbar
       
   603 \rail@nextplus{2}
       
   604 \rail@cterm{\isa{{\isaliteral{2C}{\isacharcomma}}}}[]
       
   605 \rail@endplus
       
   606 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
   607 \rail@end
       
   608 \rail@begin{2}{\isa{}}
       
   609 \rail@term{\hyperlink{command.HOL.termination}{\mbox{\isa{\isacommand{termination}}}}}[]
       
   610 \rail@bar
       
   611 \rail@nextbar{1}
       
   612 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
   613 \rail@endbar
       
   614 \rail@end
       
   615 \end{railoutput}
       
   616 
   461 
   617 
   462   \begin{description}
   618   \begin{description}
   463 
   619 
   464   \item \hyperlink{command.HOL.primrec}{\mbox{\isa{\isacommand{primrec}}}} defines primitive recursive
   620   \item \hyperlink{command.HOL.primrec}{\mbox{\isa{\isacommand{primrec}}}} defines primitive recursive
   465   functions over datatypes, see also \cite{isabelle-HOL}.
   621   functions over datatypes, see also \cite{isabelle-HOL}.
   537     \indexdef{HOL}{method}{relation}\hypertarget{method.HOL.relation}{\hyperlink{method.HOL.relation}{\mbox{\isa{relation}}}} & : & \isa{method} \\
   693     \indexdef{HOL}{method}{relation}\hypertarget{method.HOL.relation}{\hyperlink{method.HOL.relation}{\mbox{\isa{relation}}}} & : & \isa{method} \\
   538     \indexdef{HOL}{method}{lexicographic\_order}\hypertarget{method.HOL.lexicographic-order}{\hyperlink{method.HOL.lexicographic-order}{\mbox{\isa{lexicographic{\isaliteral{5F}{\isacharunderscore}}order}}}} & : & \isa{method} \\
   694     \indexdef{HOL}{method}{lexicographic\_order}\hypertarget{method.HOL.lexicographic-order}{\hyperlink{method.HOL.lexicographic-order}{\mbox{\isa{lexicographic{\isaliteral{5F}{\isacharunderscore}}order}}}} & : & \isa{method} \\
   539     \indexdef{HOL}{method}{size\_change}\hypertarget{method.HOL.size-change}{\hyperlink{method.HOL.size-change}{\mbox{\isa{size{\isaliteral{5F}{\isacharunderscore}}change}}}} & : & \isa{method} \\
   695     \indexdef{HOL}{method}{size\_change}\hypertarget{method.HOL.size-change}{\hyperlink{method.HOL.size-change}{\mbox{\isa{size{\isaliteral{5F}{\isacharunderscore}}change}}}} & : & \isa{method} \\
   540   \end{matharray}
   696   \end{matharray}
   541 
   697 
   542   \begin{rail}
   698   \begin{railoutput}
   543     'relation' term
   699 \rail@begin{1}{\isa{}}
   544     ;
   700 \rail@term{\hyperlink{method.HOL.relation}{\mbox{\isa{relation}}}}[]
   545     'lexicographic_order' ( clasimpmod * )
   701 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
   546     ;
   702 \rail@end
   547     'size_change' ( orders ( clasimpmod * ) )
   703 \rail@begin{2}{\isa{}}
   548     ;
   704 \rail@term{\hyperlink{method.HOL.lexicographic-order}{\mbox{\isa{lexicographic{\isaliteral{5F}{\isacharunderscore}}order}}}}[]
   549     orders: ( 'max' | 'min' | 'ms' ) *
   705 \rail@plus
   550   \end{rail}
   706 \rail@nextplus{1}
       
   707 \rail@cnont{\hyperlink{syntax.clasimpmod}{\mbox{\isa{clasimpmod}}}}[]
       
   708 \rail@endplus
       
   709 \rail@end
       
   710 \rail@begin{2}{\isa{}}
       
   711 \rail@term{\hyperlink{method.HOL.size-change}{\mbox{\isa{size{\isaliteral{5F}{\isacharunderscore}}change}}}}[]
       
   712 \rail@nont{\isa{orders}}[]
       
   713 \rail@plus
       
   714 \rail@nextplus{1}
       
   715 \rail@cnont{\hyperlink{syntax.clasimpmod}{\mbox{\isa{clasimpmod}}}}[]
       
   716 \rail@endplus
       
   717 \rail@end
       
   718 \rail@begin{4}{\isa{orders}}
       
   719 \rail@plus
       
   720 \rail@nextplus{1}
       
   721 \rail@bar
       
   722 \rail@term{\isa{max}}[]
       
   723 \rail@nextbar{2}
       
   724 \rail@term{\isa{min}}[]
       
   725 \rail@nextbar{3}
       
   726 \rail@term{\isa{ms}}[]
       
   727 \rail@endbar
       
   728 \rail@endplus
       
   729 \rail@end
       
   730 \end{railoutput}
       
   731 
   551 
   732 
   552   \begin{description}
   733   \begin{description}
   553 
   734 
   554   \item \hyperlink{method.HOL.pat-completeness}{\mbox{\isa{pat{\isaliteral{5F}{\isacharunderscore}}completeness}}} is a specialized method to
   735   \item \hyperlink{method.HOL.pat-completeness}{\mbox{\isa{pat{\isaliteral{5F}{\isacharunderscore}}completeness}}} is a specialized method to
   555   solve goals regarding the completeness of pattern matching, as
   736   solve goals regarding the completeness of pattern matching, as
   597 \begin{matharray}{rcl}
   778 \begin{matharray}{rcl}
   598     \indexdef{HOL}{command}{partial\_function}\hypertarget{command.HOL.partial-function}{\hyperlink{command.HOL.partial-function}{\mbox{\isa{\isacommand{partial{\isaliteral{5F}{\isacharunderscore}}function}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
   779     \indexdef{HOL}{command}{partial\_function}\hypertarget{command.HOL.partial-function}{\hyperlink{command.HOL.partial-function}{\mbox{\isa{\isacommand{partial{\isaliteral{5F}{\isacharunderscore}}function}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
   599     \indexdef{HOL}{attribute}{partial\_function\_mono}\hypertarget{attribute.HOL.partial-function-mono}{\hyperlink{attribute.HOL.partial-function-mono}{\mbox{\isa{partial{\isaliteral{5F}{\isacharunderscore}}function{\isaliteral{5F}{\isacharunderscore}}mono}}}} & : & \isa{attribute} \\
   780     \indexdef{HOL}{attribute}{partial\_function\_mono}\hypertarget{attribute.HOL.partial-function-mono}{\hyperlink{attribute.HOL.partial-function-mono}{\mbox{\isa{partial{\isaliteral{5F}{\isacharunderscore}}function{\isaliteral{5F}{\isacharunderscore}}mono}}}} & : & \isa{attribute} \\
   600   \end{matharray}
   781   \end{matharray}
   601 
   782 
   602   \begin{rail}
   783   \begin{railoutput}
   603     'partial_function' target? '(' mode ')' fixes \\ 'where' thmdecl? prop
   784 \rail@begin{5}{\isa{}}
   604   \end{rail}
   785 \rail@term{\hyperlink{command.HOL.partial-function}{\mbox{\isa{\isacommand{partial{\isaliteral{5F}{\isacharunderscore}}function}}}}}[]
       
   786 \rail@bar
       
   787 \rail@nextbar{1}
       
   788 \rail@nont{\hyperlink{syntax.target}{\mbox{\isa{target}}}}[]
       
   789 \rail@endbar
       
   790 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
   791 \rail@nont{\isa{mode}}[]
       
   792 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
   793 \rail@nont{\hyperlink{syntax.fixes}{\mbox{\isa{fixes}}}}[]
       
   794 \rail@cr{3}
       
   795 \rail@term{\isa{\isakeyword{where}}}[]
       
   796 \rail@bar
       
   797 \rail@nextbar{4}
       
   798 \rail@nont{\hyperlink{syntax.thmdecl}{\mbox{\isa{thmdecl}}}}[]
       
   799 \rail@endbar
       
   800 \rail@nont{\hyperlink{syntax.prop}{\mbox{\isa{prop}}}}[]
       
   801 \rail@end
       
   802 \end{railoutput}
       
   803  % FIXME check mode
   605 
   804 
   606   \begin{description}
   805   \begin{description}
   607 
   806 
   608   \item \hyperlink{command.HOL.partial-function}{\mbox{\isa{\isacommand{partial{\isaliteral{5F}{\isacharunderscore}}function}}}} defines recursive
   807   \item \hyperlink{command.HOL.partial-function}{\mbox{\isa{\isacommand{partial{\isaliteral{5F}{\isacharunderscore}}function}}}} defines recursive
   609   functions based on fixpoints in complete partial orders. No
   808   functions based on fixpoints in complete partial orders. No
   664   \begin{matharray}{rcl}
   863   \begin{matharray}{rcl}
   665     \indexdef{HOL}{command}{recdef}\hypertarget{command.HOL.recdef}{\hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   864     \indexdef{HOL}{command}{recdef}\hypertarget{command.HOL.recdef}{\hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   666     \indexdef{HOL}{command}{recdef\_tc}\hypertarget{command.HOL.recdef-tc}{\hyperlink{command.HOL.recdef-tc}{\mbox{\isa{\isacommand{recdef{\isaliteral{5F}{\isacharunderscore}}tc}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   865     \indexdef{HOL}{command}{recdef\_tc}\hypertarget{command.HOL.recdef-tc}{\hyperlink{command.HOL.recdef-tc}{\mbox{\isa{\isacommand{recdef{\isaliteral{5F}{\isacharunderscore}}tc}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
   667   \end{matharray}
   866   \end{matharray}
   668 
   867 
   669   \begin{rail}
   868   \begin{railoutput}
   670     'recdef' ('(' 'permissive' ')')? \\ name term (prop +) hints?
   869 \rail@begin{5}{\isa{}}
   671     ;
   870 \rail@term{\hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}}}[]
   672     recdeftc thmdecl? tc
   871 \rail@bar
   673     ;
   872 \rail@nextbar{1}
   674     hints: '(' 'hints' ( recdefmod * ) ')'
   873 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
   675     ;
   874 \rail@term{\isa{\isakeyword{permissive}}}[]
   676     recdefmod: (('recdef_simp' | 'recdef_cong' | 'recdef_wf') (() | 'add' | 'del') ':' thmrefs) | clasimpmod
   875 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
   677     ;
   876 \rail@endbar
   678     tc: nameref ('(' nat ')')?
   877 \rail@cr{3}
   679     ;
   878 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
   680   \end{rail}
   879 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
   880 \rail@plus
       
   881 \rail@nont{\hyperlink{syntax.prop}{\mbox{\isa{prop}}}}[]
       
   882 \rail@nextplus{4}
       
   883 \rail@endplus
       
   884 \rail@bar
       
   885 \rail@nextbar{4}
       
   886 \rail@nont{\isa{hints}}[]
       
   887 \rail@endbar
       
   888 \rail@end
       
   889 \rail@begin{2}{\isa{}}
       
   890 \rail@nont{\isa{recdeftc}}[]
       
   891 \rail@bar
       
   892 \rail@nextbar{1}
       
   893 \rail@nont{\hyperlink{syntax.thmdecl}{\mbox{\isa{thmdecl}}}}[]
       
   894 \rail@endbar
       
   895 \rail@nont{\isa{tc}}[]
       
   896 \rail@end
       
   897 \rail@begin{2}{\isa{hints}}
       
   898 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
   899 \rail@term{\isa{\isakeyword{hints}}}[]
       
   900 \rail@plus
       
   901 \rail@nextplus{1}
       
   902 \rail@cnont{\isa{recdefmod}}[]
       
   903 \rail@endplus
       
   904 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
   905 \rail@end
       
   906 \rail@begin{4}{\isa{recdefmod}}
       
   907 \rail@bar
       
   908 \rail@bar
       
   909 \rail@term{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}simp}}[]
       
   910 \rail@nextbar{1}
       
   911 \rail@term{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}cong}}[]
       
   912 \rail@nextbar{2}
       
   913 \rail@term{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}wf}}[]
       
   914 \rail@endbar
       
   915 \rail@bar
       
   916 \rail@nextbar{1}
       
   917 \rail@term{\isa{add}}[]
       
   918 \rail@nextbar{2}
       
   919 \rail@term{\isa{del}}[]
       
   920 \rail@endbar
       
   921 \rail@term{\isa{{\isaliteral{3A}{\isacharcolon}}}}[]
       
   922 \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
       
   923 \rail@nextbar{3}
       
   924 \rail@nont{\hyperlink{syntax.clasimpmod}{\mbox{\isa{clasimpmod}}}}[]
       
   925 \rail@endbar
       
   926 \rail@end
       
   927 \rail@begin{2}{\isa{tc}}
       
   928 \rail@nont{\hyperlink{syntax.nameref}{\mbox{\isa{nameref}}}}[]
       
   929 \rail@bar
       
   930 \rail@nextbar{1}
       
   931 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
   932 \rail@nont{\hyperlink{syntax.nat}{\mbox{\isa{nat}}}}[]
       
   933 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
   934 \rail@endbar
       
   935 \rail@end
       
   936 \end{railoutput}
       
   937 
   681 
   938 
   682   \begin{description}
   939   \begin{description}
   683 
   940 
   684   \item \hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}} defines general well-founded
   941   \item \hyperlink{command.HOL.recdef}{\mbox{\isa{\isacommand{recdef}}}} defines general well-founded
   685   recursive functions (using the TFL package), see also
   942   recursive functions (using the TFL package), see also
   708     \indexdef{HOL}{attribute}{recdef\_simp}\hypertarget{attribute.HOL.recdef-simp}{\hyperlink{attribute.HOL.recdef-simp}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}simp}}}} & : & \isa{attribute} \\
   965     \indexdef{HOL}{attribute}{recdef\_simp}\hypertarget{attribute.HOL.recdef-simp}{\hyperlink{attribute.HOL.recdef-simp}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}simp}}}} & : & \isa{attribute} \\
   709     \indexdef{HOL}{attribute}{recdef\_cong}\hypertarget{attribute.HOL.recdef-cong}{\hyperlink{attribute.HOL.recdef-cong}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}cong}}}} & : & \isa{attribute} \\
   966     \indexdef{HOL}{attribute}{recdef\_cong}\hypertarget{attribute.HOL.recdef-cong}{\hyperlink{attribute.HOL.recdef-cong}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}cong}}}} & : & \isa{attribute} \\
   710     \indexdef{HOL}{attribute}{recdef\_wf}\hypertarget{attribute.HOL.recdef-wf}{\hyperlink{attribute.HOL.recdef-wf}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}wf}}}} & : & \isa{attribute} \\
   967     \indexdef{HOL}{attribute}{recdef\_wf}\hypertarget{attribute.HOL.recdef-wf}{\hyperlink{attribute.HOL.recdef-wf}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}wf}}}} & : & \isa{attribute} \\
   711   \end{matharray}
   968   \end{matharray}
   712 
   969 
   713   \begin{rail}
   970   \begin{railoutput}
   714     ('recdef_simp' | 'recdef_cong' | 'recdef_wf') (() | 'add' | 'del')
   971 \rail@begin{3}{\isa{}}
   715     ;
   972 \rail@bar
   716   \end{rail}%
   973 \rail@term{\hyperlink{attribute.HOL.recdef-simp}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}simp}}}}[]
       
   974 \rail@nextbar{1}
       
   975 \rail@term{\hyperlink{attribute.HOL.recdef-cong}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}cong}}}}[]
       
   976 \rail@nextbar{2}
       
   977 \rail@term{\hyperlink{attribute.HOL.recdef-wf}{\mbox{\isa{recdef{\isaliteral{5F}{\isacharunderscore}}wf}}}}[]
       
   978 \rail@endbar
       
   979 \rail@bar
       
   980 \rail@nextbar{1}
       
   981 \rail@term{\isa{add}}[]
       
   982 \rail@nextbar{2}
       
   983 \rail@term{\isa{del}}[]
       
   984 \rail@endbar
       
   985 \rail@end
       
   986 \end{railoutput}%
   717 \end{isamarkuptext}%
   987 \end{isamarkuptext}%
   718 \isamarkuptrue%
   988 \isamarkuptrue%
   719 %
   989 %
   720 \isamarkupsection{Inductive and coinductive definitions \label{sec:hol-inductive}%
   990 \isamarkupsection{Inductive and coinductive definitions \label{sec:hol-inductive}%
   721 }
   991 }
   750     \indexdef{HOL}{command}{coinductive}\hypertarget{command.HOL.coinductive}{\hyperlink{command.HOL.coinductive}{\mbox{\isa{\isacommand{coinductive}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
  1020     \indexdef{HOL}{command}{coinductive}\hypertarget{command.HOL.coinductive}{\hyperlink{command.HOL.coinductive}{\mbox{\isa{\isacommand{coinductive}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
   751     \indexdef{HOL}{command}{coinductive\_set}\hypertarget{command.HOL.coinductive-set}{\hyperlink{command.HOL.coinductive-set}{\mbox{\isa{\isacommand{coinductive{\isaliteral{5F}{\isacharunderscore}}set}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
  1021     \indexdef{HOL}{command}{coinductive\_set}\hypertarget{command.HOL.coinductive-set}{\hyperlink{command.HOL.coinductive-set}{\mbox{\isa{\isacommand{coinductive{\isaliteral{5F}{\isacharunderscore}}set}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
   752     \indexdef{HOL}{attribute}{mono}\hypertarget{attribute.HOL.mono}{\hyperlink{attribute.HOL.mono}{\mbox{\isa{mono}}}} & : & \isa{attribute} \\
  1022     \indexdef{HOL}{attribute}{mono}\hypertarget{attribute.HOL.mono}{\hyperlink{attribute.HOL.mono}{\mbox{\isa{mono}}}} & : & \isa{attribute} \\
   753   \end{matharray}
  1023   \end{matharray}
   754 
  1024 
   755   \begin{rail}
  1025   \begin{railoutput}
   756     ('inductive' | 'inductive_set' | 'coinductive' | 'coinductive_set') target? fixes ('for' fixes)? \\
  1026 \rail@begin{7}{\isa{}}
   757     ('where' clauses)? ('monos' thmrefs)?
  1027 \rail@bar
   758     ;
  1028 \rail@term{\hyperlink{command.HOL.inductive}{\mbox{\isa{\isacommand{inductive}}}}}[]
   759     clauses: (thmdecl? prop + '|')
  1029 \rail@nextbar{1}
   760     ;
  1030 \rail@term{\hyperlink{command.HOL.inductive-set}{\mbox{\isa{\isacommand{inductive{\isaliteral{5F}{\isacharunderscore}}set}}}}}[]
   761     'mono' (() | 'add' | 'del')
  1031 \rail@nextbar{2}
   762     ;
  1032 \rail@term{\hyperlink{command.HOL.coinductive}{\mbox{\isa{\isacommand{coinductive}}}}}[]
   763   \end{rail}
  1033 \rail@nextbar{3}
       
  1034 \rail@term{\hyperlink{command.HOL.coinductive-set}{\mbox{\isa{\isacommand{coinductive{\isaliteral{5F}{\isacharunderscore}}set}}}}}[]
       
  1035 \rail@endbar
       
  1036 \rail@bar
       
  1037 \rail@nextbar{1}
       
  1038 \rail@nont{\hyperlink{syntax.target}{\mbox{\isa{target}}}}[]
       
  1039 \rail@endbar
       
  1040 \rail@nont{\hyperlink{syntax.fixes}{\mbox{\isa{fixes}}}}[]
       
  1041 \rail@bar
       
  1042 \rail@nextbar{1}
       
  1043 \rail@term{\isa{\isakeyword{for}}}[]
       
  1044 \rail@nont{\hyperlink{syntax.fixes}{\mbox{\isa{fixes}}}}[]
       
  1045 \rail@endbar
       
  1046 \rail@cr{5}
       
  1047 \rail@bar
       
  1048 \rail@nextbar{6}
       
  1049 \rail@term{\isa{\isakeyword{where}}}[]
       
  1050 \rail@nont{\isa{clauses}}[]
       
  1051 \rail@endbar
       
  1052 \rail@bar
       
  1053 \rail@nextbar{6}
       
  1054 \rail@term{\isa{\isakeyword{monos}}}[]
       
  1055 \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
       
  1056 \rail@endbar
       
  1057 \rail@end
       
  1058 \rail@begin{3}{\isa{clauses}}
       
  1059 \rail@plus
       
  1060 \rail@bar
       
  1061 \rail@nextbar{1}
       
  1062 \rail@nont{\hyperlink{syntax.thmdecl}{\mbox{\isa{thmdecl}}}}[]
       
  1063 \rail@endbar
       
  1064 \rail@nont{\hyperlink{syntax.prop}{\mbox{\isa{prop}}}}[]
       
  1065 \rail@nextplus{2}
       
  1066 \rail@cterm{\isa{{\isaliteral{7C}{\isacharbar}}}}[]
       
  1067 \rail@endplus
       
  1068 \rail@end
       
  1069 \rail@begin{3}{\isa{}}
       
  1070 \rail@term{\hyperlink{attribute.HOL.mono}{\mbox{\isa{mono}}}}[]
       
  1071 \rail@bar
       
  1072 \rail@nextbar{1}
       
  1073 \rail@term{\isa{add}}[]
       
  1074 \rail@nextbar{2}
       
  1075 \rail@term{\isa{del}}[]
       
  1076 \rail@endbar
       
  1077 \rail@end
       
  1078 \end{railoutput}
       
  1079 
   764 
  1080 
   765   \begin{description}
  1081   \begin{description}
   766 
  1082 
   767   \item \hyperlink{command.HOL.inductive}{\mbox{\isa{\isacommand{inductive}}}} and \hyperlink{command.HOL.coinductive}{\mbox{\isa{\isacommand{coinductive}}}} define (co)inductive predicates from the
  1083   \item \hyperlink{command.HOL.inductive}{\mbox{\isa{\isacommand{inductive}}}} and \hyperlink{command.HOL.coinductive}{\mbox{\isa{\isacommand{coinductive}}}} define (co)inductive predicates from the
   768   introduction rules given in the \hyperlink{keyword.where}{\mbox{\isa{\isakeyword{where}}}} part.  The
  1084   introduction rules given in the \hyperlink{keyword.where}{\mbox{\isa{\isakeyword{where}}}} part.  The
   891 \begin{isamarkuptext}%
  1207 \begin{isamarkuptext}%
   892 \begin{matharray}{rcl}
  1208 \begin{matharray}{rcl}
   893     \indexdef{HOL}{method}{iprover}\hypertarget{method.HOL.iprover}{\hyperlink{method.HOL.iprover}{\mbox{\isa{iprover}}}} & : & \isa{method} \\
  1209     \indexdef{HOL}{method}{iprover}\hypertarget{method.HOL.iprover}{\hyperlink{method.HOL.iprover}{\mbox{\isa{iprover}}}} & : & \isa{method} \\
   894   \end{matharray}
  1210   \end{matharray}
   895 
  1211 
   896   \begin{rail}
  1212   \begin{railoutput}
   897     'iprover' ( rulemod * )
  1213 \rail@begin{2}{\isa{}}
   898     ;
  1214 \rail@term{\hyperlink{method.HOL.iprover}{\mbox{\isa{iprover}}}}[]
   899   \end{rail}
  1215 \rail@plus
       
  1216 \rail@nextplus{1}
       
  1217 \rail@cnont{\hyperlink{syntax.rulemod}{\mbox{\isa{rulemod}}}}[]
       
  1218 \rail@endplus
       
  1219 \rail@end
       
  1220 \end{railoutput}
       
  1221 
   900 
  1222 
   901   The \hyperlink{method.HOL.iprover}{\mbox{\isa{iprover}}} method performs intuitionistic proof
  1223   The \hyperlink{method.HOL.iprover}{\mbox{\isa{iprover}}} method performs intuitionistic proof
   902   search, depending on specifically declared rules from the context,
  1224   search, depending on specifically declared rules from the context,
   903   or given as explicit arguments.  Chained facts are inserted into the
  1225   or given as explicit arguments.  Chained facts are inserted into the
   904   goal before commencing proof search.
  1226   goal before commencing proof search.
   921 \begin{isamarkuptext}%
  1243 \begin{isamarkuptext}%
   922 \begin{matharray}{rcl}
  1244 \begin{matharray}{rcl}
   923     \indexdef{HOL}{method}{coherent}\hypertarget{method.HOL.coherent}{\hyperlink{method.HOL.coherent}{\mbox{\isa{coherent}}}} & : & \isa{method} \\
  1245     \indexdef{HOL}{method}{coherent}\hypertarget{method.HOL.coherent}{\hyperlink{method.HOL.coherent}{\mbox{\isa{coherent}}}} & : & \isa{method} \\
   924   \end{matharray}
  1246   \end{matharray}
   925 
  1247 
   926   \begin{rail}
  1248   \begin{railoutput}
   927     'coherent' thmrefs?
  1249 \rail@begin{2}{\isa{}}
   928     ;
  1250 \rail@term{\hyperlink{method.HOL.coherent}{\mbox{\isa{coherent}}}}[]
   929   \end{rail}
  1251 \rail@bar
       
  1252 \rail@nextbar{1}
       
  1253 \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
       
  1254 \rail@endbar
       
  1255 \rail@end
       
  1256 \end{railoutput}
       
  1257 
   930 
  1258 
   931   The \hyperlink{method.HOL.coherent}{\mbox{\isa{coherent}}} method solves problems of
  1259   The \hyperlink{method.HOL.coherent}{\mbox{\isa{coherent}}} method solves problems of
   932   \emph{Coherent Logic} \cite{Bezem-Coquand:2005}, which covers
  1260   \emph{Coherent Logic} \cite{Bezem-Coquand:2005}, which covers
   933   applications in confluence theory, lattice theory and projective
  1261   applications in confluence theory, lattice theory and projective
   934   geometry.  See \verb|~~/src/HOL/ex/Coherent.thy| for some
  1262   geometry.  See \verb|~~/src/HOL/ex/Coherent.thy| for some
   950     \indexdef{HOL}{command}{try}\hypertarget{command.HOL.try}{\hyperlink{command.HOL.try}{\mbox{\isa{\isacommand{try}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}proof\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
  1278     \indexdef{HOL}{command}{try}\hypertarget{command.HOL.try}{\hyperlink{command.HOL.try}{\mbox{\isa{\isacommand{try}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}proof\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
   951     \indexdef{HOL}{command}{sledgehammer}\hypertarget{command.HOL.sledgehammer}{\hyperlink{command.HOL.sledgehammer}{\mbox{\isa{\isacommand{sledgehammer}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}proof\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
  1279     \indexdef{HOL}{command}{sledgehammer}\hypertarget{command.HOL.sledgehammer}{\hyperlink{command.HOL.sledgehammer}{\mbox{\isa{\isacommand{sledgehammer}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}proof\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}{\isaliteral{22}{\isachardoublequote}}} \\
   952     \indexdef{HOL}{command}{sledgehammer\_params}\hypertarget{command.HOL.sledgehammer-params}{\hyperlink{command.HOL.sledgehammer-params}{\mbox{\isa{\isacommand{sledgehammer{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}}
  1280     \indexdef{HOL}{command}{sledgehammer\_params}\hypertarget{command.HOL.sledgehammer-params}{\hyperlink{command.HOL.sledgehammer-params}{\mbox{\isa{\isacommand{sledgehammer{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}}
   953   \end{matharray}
  1281   \end{matharray}
   954 
  1282 
   955   \begin{rail}
  1283   \begin{railoutput}
   956     'solve_direct'
  1284 \rail@begin{6}{\isa{}}
   957     ;
  1285 \rail@term{\hyperlink{command.HOL.try}{\mbox{\isa{\isacommand{try}}}}}[]
   958 
  1286 \rail@bar
   959     'try' ( ( ( 'simp' | 'intro' | 'elim' | 'dest' ) ':' thmrefs ) + ) ? nat?
  1287 \rail@nextbar{1}
   960     ;
  1288 \rail@plus
   961 
  1289 \rail@bar
   962     'sledgehammer' ( '[' args ']' ) ? facts? nat?
  1290 \rail@term{\isa{simp}}[]
   963     ;
  1291 \rail@nextbar{2}
   964 
  1292 \rail@term{\isa{intro}}[]
   965     'sledgehammer_params' ( ( '[' args ']' ) ? )
  1293 \rail@nextbar{3}
   966     ;
  1294 \rail@term{\isa{elim}}[]
   967 
  1295 \rail@nextbar{4}
   968     args: ( name '=' value + ',' )
  1296 \rail@term{\isa{dest}}[]
   969     ;
  1297 \rail@endbar
   970 
  1298 \rail@term{\isa{{\isaliteral{3A}{\isacharcolon}}}}[]
   971     facts: '(' ( ( ( ( 'add' | 'del' ) ':' ) ? thmrefs ) + ) ? ')'
  1299 \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
   972     ;
  1300 \rail@nextplus{5}
   973   \end{rail}
  1301 \rail@endplus
       
  1302 \rail@endbar
       
  1303 \rail@bar
       
  1304 \rail@nextbar{1}
       
  1305 \rail@nont{\hyperlink{syntax.nat}{\mbox{\isa{nat}}}}[]
       
  1306 \rail@endbar
       
  1307 \rail@end
       
  1308 \rail@begin{2}{\isa{}}
       
  1309 \rail@term{\hyperlink{command.HOL.sledgehammer}{\mbox{\isa{\isacommand{sledgehammer}}}}}[]
       
  1310 \rail@bar
       
  1311 \rail@nextbar{1}
       
  1312 \rail@term{\isa{{\isaliteral{5B}{\isacharbrackleft}}}}[]
       
  1313 \rail@nont{\isa{args}}[]
       
  1314 \rail@term{\isa{{\isaliteral{5D}{\isacharbrackright}}}}[]
       
  1315 \rail@endbar
       
  1316 \rail@bar
       
  1317 \rail@nextbar{1}
       
  1318 \rail@nont{\isa{facts}}[]
       
  1319 \rail@endbar
       
  1320 \rail@bar
       
  1321 \rail@nextbar{1}
       
  1322 \rail@nont{\hyperlink{syntax.nat}{\mbox{\isa{nat}}}}[]
       
  1323 \rail@endbar
       
  1324 \rail@end
       
  1325 \rail@begin{2}{\isa{}}
       
  1326 \rail@term{\hyperlink{command.HOL.sledgehammer-params}{\mbox{\isa{\isacommand{sledgehammer{\isaliteral{5F}{\isacharunderscore}}params}}}}}[]
       
  1327 \rail@bar
       
  1328 \rail@nextbar{1}
       
  1329 \rail@term{\isa{{\isaliteral{5B}{\isacharbrackleft}}}}[]
       
  1330 \rail@nont{\isa{args}}[]
       
  1331 \rail@term{\isa{{\isaliteral{5D}{\isacharbrackright}}}}[]
       
  1332 \rail@endbar
       
  1333 \rail@end
       
  1334 \rail@begin{2}{\isa{args}}
       
  1335 \rail@plus
       
  1336 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  1337 \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
       
  1338 \rail@nont{\isa{value}}[]
       
  1339 \rail@nextplus{1}
       
  1340 \rail@cterm{\isa{{\isaliteral{2C}{\isacharcomma}}}}[]
       
  1341 \rail@endplus
       
  1342 \rail@end
       
  1343 \rail@begin{5}{\isa{facts}}
       
  1344 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  1345 \rail@bar
       
  1346 \rail@nextbar{1}
       
  1347 \rail@plus
       
  1348 \rail@bar
       
  1349 \rail@nextbar{2}
       
  1350 \rail@bar
       
  1351 \rail@term{\isa{add}}[]
       
  1352 \rail@nextbar{3}
       
  1353 \rail@term{\isa{del}}[]
       
  1354 \rail@endbar
       
  1355 \rail@term{\isa{{\isaliteral{3A}{\isacharcolon}}}}[]
       
  1356 \rail@endbar
       
  1357 \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
       
  1358 \rail@nextplus{4}
       
  1359 \rail@endplus
       
  1360 \rail@endbar
       
  1361 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  1362 \rail@end
       
  1363 \end{railoutput}
       
  1364  % FIXME try: proper clasimpmod!?
       
  1365   % FIXME check args "value"
   974 
  1366 
   975   \begin{description}
  1367   \begin{description}
   976 
  1368 
   977   \item \hyperlink{command.HOL.solve-direct}{\mbox{\isa{\isacommand{solve{\isaliteral{5F}{\isacharunderscore}}direct}}}} checks whether the current subgoals can
  1369   \item \hyperlink{command.HOL.solve-direct}{\mbox{\isa{\isacommand{solve{\isaliteral{5F}{\isacharunderscore}}direct}}}} checks whether the current subgoals can
   978     be solved directly by an existing theorem. Duplicate lemmas can be detected
  1370     be solved directly by an existing theorem. Duplicate lemmas can be detected
  1012     \indexdef{HOL}{command}{quickcheck\_params}\hypertarget{command.HOL.quickcheck-params}{\hyperlink{command.HOL.quickcheck-params}{\mbox{\isa{\isacommand{quickcheck{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1404     \indexdef{HOL}{command}{quickcheck\_params}\hypertarget{command.HOL.quickcheck-params}{\hyperlink{command.HOL.quickcheck-params}{\mbox{\isa{\isacommand{quickcheck{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1013     \indexdef{HOL}{command}{refute\_params}\hypertarget{command.HOL.refute-params}{\hyperlink{command.HOL.refute-params}{\mbox{\isa{\isacommand{refute{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1405     \indexdef{HOL}{command}{refute\_params}\hypertarget{command.HOL.refute-params}{\hyperlink{command.HOL.refute-params}{\mbox{\isa{\isacommand{refute{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1014     \indexdef{HOL}{command}{nitpick\_params}\hypertarget{command.HOL.nitpick-params}{\hyperlink{command.HOL.nitpick-params}{\mbox{\isa{\isacommand{nitpick{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}}
  1406     \indexdef{HOL}{command}{nitpick\_params}\hypertarget{command.HOL.nitpick-params}{\hyperlink{command.HOL.nitpick-params}{\mbox{\isa{\isacommand{nitpick{\isaliteral{5F}{\isacharunderscore}}params}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}}
  1015   \end{matharray}
  1407   \end{matharray}
  1016 
  1408 
  1017   \begin{rail}
  1409   \begin{railoutput}
  1018     'value' ( ( '[' name ']' ) ? ) modes? term
  1410 \rail@begin{2}{\isa{}}
  1019     ;
  1411 \rail@term{\hyperlink{command.HOL.value}{\mbox{\isa{\isacommand{value}}}}}[]
  1020 
  1412 \rail@bar
  1021     ('quickcheck' | 'refute' | 'nitpick')  ( ( '[' args ']' ) ? ) nat?
  1413 \rail@nextbar{1}
  1022     ;
  1414 \rail@term{\isa{{\isaliteral{5B}{\isacharbrackleft}}}}[]
  1023 
  1415 \rail@nont{\isa{name}}[]
  1024     ('quickcheck_params' | 'refute_params' | 'nitpick_params') ( ( '[' args ']' ) ? )
  1416 \rail@term{\isa{{\isaliteral{5D}{\isacharbrackright}}}}[]
  1025     ;
  1417 \rail@endbar
  1026 
  1418 \rail@bar
  1027     modes: '(' (name + ) ')'
  1419 \rail@nextbar{1}
  1028     ;
  1420 \rail@nont{\isa{modes}}[]
  1029 
  1421 \rail@endbar
  1030     args: ( name '=' value + ',' )
  1422 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
  1031     ;
  1423 \rail@end
  1032   \end{rail}
  1424 \rail@begin{3}{\isa{}}
       
  1425 \rail@bar
       
  1426 \rail@term{\hyperlink{command.HOL.quickcheck}{\mbox{\isa{\isacommand{quickcheck}}}}}[]
       
  1427 \rail@nextbar{1}
       
  1428 \rail@term{\hyperlink{command.HOL.refute}{\mbox{\isa{\isacommand{refute}}}}}[]
       
  1429 \rail@nextbar{2}
       
  1430 \rail@term{\hyperlink{command.HOL.nitpick}{\mbox{\isa{\isacommand{nitpick}}}}}[]
       
  1431 \rail@endbar
       
  1432 \rail@bar
       
  1433 \rail@nextbar{1}
       
  1434 \rail@term{\isa{{\isaliteral{5B}{\isacharbrackleft}}}}[]
       
  1435 \rail@nont{\isa{args}}[]
       
  1436 \rail@term{\isa{{\isaliteral{5D}{\isacharbrackright}}}}[]
       
  1437 \rail@endbar
       
  1438 \rail@bar
       
  1439 \rail@nextbar{1}
       
  1440 \rail@nont{\hyperlink{syntax.nat}{\mbox{\isa{nat}}}}[]
       
  1441 \rail@endbar
       
  1442 \rail@end
       
  1443 \rail@begin{3}{\isa{}}
       
  1444 \rail@bar
       
  1445 \rail@term{\hyperlink{command.HOL.quickcheck-params}{\mbox{\isa{\isacommand{quickcheck{\isaliteral{5F}{\isacharunderscore}}params}}}}}[]
       
  1446 \rail@nextbar{1}
       
  1447 \rail@term{\hyperlink{command.HOL.refute-params}{\mbox{\isa{\isacommand{refute{\isaliteral{5F}{\isacharunderscore}}params}}}}}[]
       
  1448 \rail@nextbar{2}
       
  1449 \rail@term{\hyperlink{command.HOL.nitpick-params}{\mbox{\isa{\isacommand{nitpick{\isaliteral{5F}{\isacharunderscore}}params}}}}}[]
       
  1450 \rail@endbar
       
  1451 \rail@bar
       
  1452 \rail@nextbar{1}
       
  1453 \rail@term{\isa{{\isaliteral{5B}{\isacharbrackleft}}}}[]
       
  1454 \rail@nont{\isa{args}}[]
       
  1455 \rail@term{\isa{{\isaliteral{5D}{\isacharbrackright}}}}[]
       
  1456 \rail@endbar
       
  1457 \rail@end
       
  1458 \rail@begin{2}{\isa{modes}}
       
  1459 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  1460 \rail@plus
       
  1461 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  1462 \rail@nextplus{1}
       
  1463 \rail@endplus
       
  1464 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  1465 \rail@end
       
  1466 \rail@begin{2}{\isa{args}}
       
  1467 \rail@plus
       
  1468 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  1469 \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
       
  1470 \rail@nont{\isa{value}}[]
       
  1471 \rail@nextplus{1}
       
  1472 \rail@cterm{\isa{{\isaliteral{2C}{\isacharcomma}}}}[]
       
  1473 \rail@endplus
       
  1474 \rail@end
       
  1475 \end{railoutput}
       
  1476  % FIXME check "value"
  1033 
  1477 
  1034   \begin{description}
  1478   \begin{description}
  1035 
  1479 
  1036   \item \hyperlink{command.HOL.value}{\mbox{\isa{\isacommand{value}}}}~\isa{t} evaluates and prints a
  1480   \item \hyperlink{command.HOL.value}{\mbox{\isa{\isacommand{value}}}}~\isa{t} evaluates and prints a
  1037     term; optionally \isa{modes} can be specified, which are
  1481     term; optionally \isa{modes} can be specified, which are
  1152     \indexdef{HOL}{method}{induct\_tac}\hypertarget{method.HOL.induct-tac}{\hyperlink{method.HOL.induct-tac}{\mbox{\isa{induct{\isaliteral{5F}{\isacharunderscore}}tac}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{method} \\
  1596     \indexdef{HOL}{method}{induct\_tac}\hypertarget{method.HOL.induct-tac}{\hyperlink{method.HOL.induct-tac}{\mbox{\isa{induct{\isaliteral{5F}{\isacharunderscore}}tac}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{method} \\
  1153     \indexdef{HOL}{method}{ind\_cases}\hypertarget{method.HOL.ind-cases}{\hyperlink{method.HOL.ind-cases}{\mbox{\isa{ind{\isaliteral{5F}{\isacharunderscore}}cases}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{method} \\
  1597     \indexdef{HOL}{method}{ind\_cases}\hypertarget{method.HOL.ind-cases}{\hyperlink{method.HOL.ind-cases}{\mbox{\isa{ind{\isaliteral{5F}{\isacharunderscore}}cases}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{method} \\
  1154     \indexdef{HOL}{command}{inductive\_cases}\hypertarget{command.HOL.inductive-cases}{\hyperlink{command.HOL.inductive-cases}{\mbox{\isa{\isacommand{inductive{\isaliteral{5F}{\isacharunderscore}}cases}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
  1598     \indexdef{HOL}{command}{inductive\_cases}\hypertarget{command.HOL.inductive-cases}{\hyperlink{command.HOL.inductive-cases}{\mbox{\isa{\isacommand{inductive{\isaliteral{5F}{\isacharunderscore}}cases}}}}}\isa{{\isaliteral{22}{\isachardoublequote}}\isaliteral{5C3C5E7375703E}{}\isactrlsup {\isaliteral{2A}{\isacharasterisk}}{\isaliteral{22}{\isachardoublequote}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}local{\isaliteral{5F}{\isacharunderscore}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ local{\isaliteral{5F}{\isacharunderscore}}theory{\isaliteral{22}{\isachardoublequote}}} \\
  1155   \end{matharray}
  1599   \end{matharray}
  1156 
  1600 
  1157   \begin{rail}
  1601   \begin{railoutput}
  1158     'case_tac' goalspec? term rule?
  1602 \rail@begin{2}{\isa{}}
  1159     ;
  1603 \rail@term{\hyperlink{method.HOL.case-tac}{\mbox{\isa{case{\isaliteral{5F}{\isacharunderscore}}tac}}}}[]
  1160     'induct_tac' goalspec? (insts * 'and') rule?
  1604 \rail@bar
  1161     ;
  1605 \rail@nextbar{1}
  1162     'ind_cases' (prop +) ('for' (name +)) ?
  1606 \rail@nont{\hyperlink{syntax.goalspec}{\mbox{\isa{goalspec}}}}[]
  1163     ;
  1607 \rail@endbar
  1164     'inductive_cases' (thmdecl? (prop +) + 'and')
  1608 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
  1165     ;
  1609 \rail@bar
  1166 
  1610 \rail@nextbar{1}
  1167     rule: ('rule' ':' thmref)
  1611 \rail@nont{\isa{rule}}[]
  1168     ;
  1612 \rail@endbar
  1169   \end{rail}
  1613 \rail@end
       
  1614 \rail@begin{3}{\isa{}}
       
  1615 \rail@term{\hyperlink{method.HOL.induct-tac}{\mbox{\isa{induct{\isaliteral{5F}{\isacharunderscore}}tac}}}}[]
       
  1616 \rail@bar
       
  1617 \rail@nextbar{1}
       
  1618 \rail@nont{\hyperlink{syntax.goalspec}{\mbox{\isa{goalspec}}}}[]
       
  1619 \rail@endbar
       
  1620 \rail@bar
       
  1621 \rail@nextbar{1}
       
  1622 \rail@plus
       
  1623 \rail@nont{\hyperlink{syntax.insts}{\mbox{\isa{insts}}}}[]
       
  1624 \rail@nextplus{2}
       
  1625 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1626 \rail@endplus
       
  1627 \rail@endbar
       
  1628 \rail@bar
       
  1629 \rail@nextbar{1}
       
  1630 \rail@nont{\isa{rule}}[]
       
  1631 \rail@endbar
       
  1632 \rail@end
       
  1633 \rail@begin{3}{\isa{}}
       
  1634 \rail@term{\hyperlink{method.HOL.ind-cases}{\mbox{\isa{ind{\isaliteral{5F}{\isacharunderscore}}cases}}}}[]
       
  1635 \rail@plus
       
  1636 \rail@nont{\hyperlink{syntax.prop}{\mbox{\isa{prop}}}}[]
       
  1637 \rail@nextplus{1}
       
  1638 \rail@endplus
       
  1639 \rail@bar
       
  1640 \rail@nextbar{1}
       
  1641 \rail@term{\isa{\isakeyword{for}}}[]
       
  1642 \rail@plus
       
  1643 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  1644 \rail@nextplus{2}
       
  1645 \rail@endplus
       
  1646 \rail@endbar
       
  1647 \rail@end
       
  1648 \rail@begin{3}{\isa{}}
       
  1649 \rail@term{\hyperlink{command.HOL.inductive-cases}{\mbox{\isa{\isacommand{inductive{\isaliteral{5F}{\isacharunderscore}}cases}}}}}[]
       
  1650 \rail@plus
       
  1651 \rail@bar
       
  1652 \rail@nextbar{1}
       
  1653 \rail@nont{\hyperlink{syntax.thmdecl}{\mbox{\isa{thmdecl}}}}[]
       
  1654 \rail@endbar
       
  1655 \rail@plus
       
  1656 \rail@nont{\hyperlink{syntax.prop}{\mbox{\isa{prop}}}}[]
       
  1657 \rail@nextplus{1}
       
  1658 \rail@endplus
       
  1659 \rail@nextplus{2}
       
  1660 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1661 \rail@endplus
       
  1662 \rail@end
       
  1663 \rail@begin{1}{\isa{rule}}
       
  1664 \rail@term{\isa{rule}}[]
       
  1665 \rail@term{\isa{{\isaliteral{3A}{\isacharcolon}}}}[]
       
  1666 \rail@nont{\hyperlink{syntax.thmref}{\mbox{\isa{thmref}}}}[]
       
  1667 \rail@end
       
  1668 \end{railoutput}
       
  1669 
  1170 
  1670 
  1171   \begin{description}
  1671   \begin{description}
  1172 
  1672 
  1173   \item \hyperlink{method.HOL.case-tac}{\mbox{\isa{case{\isaliteral{5F}{\isacharunderscore}}tac}}} and \hyperlink{method.HOL.induct-tac}{\mbox{\isa{induct{\isaliteral{5F}{\isacharunderscore}}tac}}} admit
  1673   \item \hyperlink{method.HOL.case-tac}{\mbox{\isa{case{\isaliteral{5F}{\isacharunderscore}}tac}}} and \hyperlink{method.HOL.induct-tac}{\mbox{\isa{induct{\isaliteral{5F}{\isacharunderscore}}tac}}} admit
  1174   to reason about inductive types.  Rules are selected according to
  1674   to reason about inductive types.  Rules are selected according to
  1235     \indexdef{HOL}{command}{code\_include}\hypertarget{command.HOL.code-include}{\hyperlink{command.HOL.code-include}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}include}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1735     \indexdef{HOL}{command}{code\_include}\hypertarget{command.HOL.code-include}{\hyperlink{command.HOL.code-include}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}include}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1236     \indexdef{HOL}{command}{code\_modulename}\hypertarget{command.HOL.code-modulename}{\hyperlink{command.HOL.code-modulename}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}modulename}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1736     \indexdef{HOL}{command}{code\_modulename}\hypertarget{command.HOL.code-modulename}{\hyperlink{command.HOL.code-modulename}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}modulename}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1237     \indexdef{HOL}{command}{code\_reflect}\hypertarget{command.HOL.code-reflect}{\hyperlink{command.HOL.code-reflect}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}reflect}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}}
  1737     \indexdef{HOL}{command}{code\_reflect}\hypertarget{command.HOL.code-reflect}{\hyperlink{command.HOL.code-reflect}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}reflect}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}}
  1238   \end{matharray}
  1738   \end{matharray}
  1239 
  1739 
  1240   \begin{rail}
  1740   \begin{railoutput}
  1241      'export_code' ( constexpr + ) \\
  1741 \rail@begin{11}{\isa{}}
  1242        ( ( 'in' target ( 'module_name' string ) ? \\
  1742 \rail@term{\hyperlink{command.HOL.export-code}{\mbox{\isa{\isacommand{export{\isaliteral{5F}{\isacharunderscore}}code}}}}}[]
  1243         ( 'file' ( string | '-' ) ) ? ( '(' args ')' ) ?) + ) ?
  1743 \rail@plus
  1244     ;
  1744 \rail@nont{\isa{constexpr}}[]
  1245 
  1745 \rail@nextplus{1}
  1246     const: term
  1746 \rail@endplus
  1247     ;
  1747 \rail@cr{3}
  1248 
  1748 \rail@bar
  1249     constexpr: ( const | 'name._' | '_' )
  1749 \rail@nextbar{4}
  1250     ;
  1750 \rail@plus
  1251 
  1751 \rail@term{\isa{\isakeyword{in}}}[]
  1252     typeconstructor: nameref
  1752 \rail@nont{\isa{target}}[]
  1253     ;
  1753 \rail@bar
  1254 
  1754 \rail@nextbar{5}
  1255     class: nameref
  1755 \rail@term{\isa{\isakeyword{module{\isaliteral{5F}{\isacharunderscore}}name}}}[]
  1256     ;
  1756 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
  1257 
  1757 \rail@endbar
  1258     target: 'SML' | 'OCaml' | 'Haskell' | 'Scala'
  1758 \rail@cr{7}
  1259     ;
  1759 \rail@bar
  1260 
  1760 \rail@nextbar{8}
  1261     'code' ( 'del' | 'abstype' | 'abstract' ) ?
  1761 \rail@term{\isa{\isakeyword{file}}}[]
  1262     ;
  1762 \rail@bar
  1263 
  1763 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
  1264     'code_abort' ( const + )
  1764 \rail@nextbar{9}
  1265     ;
  1765 \rail@term{\isa{{\isaliteral{2D}{\isacharminus}}}}[]
  1266 
  1766 \rail@endbar
  1267     'code_datatype' ( const + )
  1767 \rail@endbar
  1268     ;
  1768 \rail@bar
  1269 
  1769 \rail@nextbar{8}
  1270     'code_inline' ( 'del' ) ?
  1770 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
  1271     ;
  1771 \rail@nont{\isa{args}}[]
  1272 
  1772 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
  1273     'code_post' ( 'del' ) ?
  1773 \rail@endbar
  1274     ;
  1774 \rail@nextplus{10}
  1275 
  1775 \rail@endplus
  1276     'code_thms' ( constexpr + ) ?
  1776 \rail@endbar
  1277     ;
  1777 \rail@end
  1278 
  1778 \rail@begin{1}{\isa{const}}
  1279     'code_deps' ( constexpr + ) ?
  1779 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
  1280     ;
  1780 \rail@end
  1281 
  1781 \rail@begin{3}{\isa{constexpr}}
  1282     'code_const' (const + 'and') \\
  1782 \rail@bar
  1283       ( ( '(' target ( syntax ? + 'and' ) ')' ) + )
  1783 \rail@nont{\isa{const}}[]
  1284     ;
  1784 \rail@nextbar{1}
  1285 
  1785 \rail@term{\isa{name{\isaliteral{2E}{\isachardot}}{\isaliteral{5F}{\isacharunderscore}}}}[]
  1286     'code_type' (typeconstructor + 'and') \\
  1786 \rail@nextbar{2}
  1287       ( ( '(' target ( syntax ? + 'and' ) ')' ) + )
  1787 \rail@term{\isa{{\isaliteral{5F}{\isacharunderscore}}}}[]
  1288     ;
  1788 \rail@endbar
  1289 
  1789 \rail@end
  1290     'code_class' (class + 'and') \\
  1790 \rail@begin{1}{\isa{typeconstructor}}
  1291       ( ( '(' target \\ ( string ? + 'and' ) ')' ) + )
  1791 \rail@nont{\hyperlink{syntax.nameref}{\mbox{\isa{nameref}}}}[]
  1292     ;
  1792 \rail@end
  1293 
  1793 \rail@begin{1}{\isa{class}}
  1294     'code_instance' (( typeconstructor '::' class ) + 'and') \\
  1794 \rail@nont{\hyperlink{syntax.nameref}{\mbox{\isa{nameref}}}}[]
  1295       ( ( '(' target ( '-' ? + 'and' ) ')' ) + )
  1795 \rail@end
  1296     ;
  1796 \rail@begin{4}{\isa{target}}
  1297 
  1797 \rail@bar
  1298     'code_reserved' target ( string + )
  1798 \rail@term{\isa{SML}}[]
  1299     ;
  1799 \rail@nextbar{1}
  1300 
  1800 \rail@term{\isa{OCaml}}[]
  1301     'code_monad' const const target
  1801 \rail@nextbar{2}
  1302     ;
  1802 \rail@term{\isa{Haskell}}[]
  1303 
  1803 \rail@nextbar{3}
  1304     'code_include' target ( string ( string | '-') )
  1804 \rail@term{\isa{Scala}}[]
  1305     ;
  1805 \rail@endbar
  1306 
  1806 \rail@end
  1307     'code_modulename' target ( ( string string ) + )
  1807 \rail@begin{4}{\isa{}}
  1308     ;
  1808 \rail@term{\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}}[]
  1309 
  1809 \rail@bar
  1310     'code_reflect' string \\
  1810 \rail@nextbar{1}
  1311       ( 'datatypes' ( string '=' ( '_' | ( string + '|' ) + 'and' ) ) ) ? \\
  1811 \rail@bar
  1312       ( 'functions' ( string + ) ) ? ( 'file' string ) ?
  1812 \rail@term{\isa{del}}[]
  1313     ;
  1813 \rail@nextbar{2}
  1314 
  1814 \rail@term{\isa{abstype}}[]
  1315     syntax: string | ( 'infix' | 'infixl' | 'infixr' ) nat string
  1815 \rail@nextbar{3}
  1316     ;
  1816 \rail@term{\isa{abstract}}[]
  1317 
  1817 \rail@endbar
  1318   \end{rail}
  1818 \rail@endbar
       
  1819 \rail@end
       
  1820 \rail@begin{2}{\isa{}}
       
  1821 \rail@term{\hyperlink{command.HOL.code-abort}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}abort}}}}}[]
       
  1822 \rail@plus
       
  1823 \rail@nont{\isa{const}}[]
       
  1824 \rail@nextplus{1}
       
  1825 \rail@endplus
       
  1826 \rail@end
       
  1827 \rail@begin{2}{\isa{}}
       
  1828 \rail@term{\hyperlink{command.HOL.code-datatype}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}datatype}}}}}[]
       
  1829 \rail@plus
       
  1830 \rail@nont{\isa{const}}[]
       
  1831 \rail@nextplus{1}
       
  1832 \rail@endplus
       
  1833 \rail@end
       
  1834 \rail@begin{2}{\isa{}}
       
  1835 \rail@term{\hyperlink{attribute.HOL.code-inline}{\mbox{\isa{code{\isaliteral{5F}{\isacharunderscore}}inline}}}}[]
       
  1836 \rail@bar
       
  1837 \rail@nextbar{1}
       
  1838 \rail@term{\isa{del}}[]
       
  1839 \rail@endbar
       
  1840 \rail@end
       
  1841 \rail@begin{2}{\isa{}}
       
  1842 \rail@term{\hyperlink{attribute.HOL.code-post}{\mbox{\isa{code{\isaliteral{5F}{\isacharunderscore}}post}}}}[]
       
  1843 \rail@bar
       
  1844 \rail@nextbar{1}
       
  1845 \rail@term{\isa{del}}[]
       
  1846 \rail@endbar
       
  1847 \rail@end
       
  1848 \rail@begin{3}{\isa{}}
       
  1849 \rail@term{\hyperlink{command.HOL.code-thms}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}thms}}}}}[]
       
  1850 \rail@bar
       
  1851 \rail@nextbar{1}
       
  1852 \rail@plus
       
  1853 \rail@nont{\isa{constexpr}}[]
       
  1854 \rail@nextplus{2}
       
  1855 \rail@endplus
       
  1856 \rail@endbar
       
  1857 \rail@end
       
  1858 \rail@begin{3}{\isa{}}
       
  1859 \rail@term{\hyperlink{command.HOL.code-deps}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}deps}}}}}[]
       
  1860 \rail@bar
       
  1861 \rail@nextbar{1}
       
  1862 \rail@plus
       
  1863 \rail@nont{\isa{constexpr}}[]
       
  1864 \rail@nextplus{2}
       
  1865 \rail@endplus
       
  1866 \rail@endbar
       
  1867 \rail@end
       
  1868 \rail@begin{7}{\isa{}}
       
  1869 \rail@term{\hyperlink{command.HOL.code-const}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}const}}}}}[]
       
  1870 \rail@plus
       
  1871 \rail@nont{\isa{const}}[]
       
  1872 \rail@nextplus{1}
       
  1873 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1874 \rail@endplus
       
  1875 \rail@cr{3}
       
  1876 \rail@plus
       
  1877 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  1878 \rail@nont{\isa{target}}[]
       
  1879 \rail@plus
       
  1880 \rail@bar
       
  1881 \rail@nextbar{4}
       
  1882 \rail@nont{\isa{syntax}}[]
       
  1883 \rail@endbar
       
  1884 \rail@nextplus{5}
       
  1885 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1886 \rail@endplus
       
  1887 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  1888 \rail@nextplus{6}
       
  1889 \rail@endplus
       
  1890 \rail@end
       
  1891 \rail@begin{7}{\isa{}}
       
  1892 \rail@term{\hyperlink{command.HOL.code-type}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}type}}}}}[]
       
  1893 \rail@plus
       
  1894 \rail@nont{\isa{typeconstructor}}[]
       
  1895 \rail@nextplus{1}
       
  1896 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1897 \rail@endplus
       
  1898 \rail@cr{3}
       
  1899 \rail@plus
       
  1900 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  1901 \rail@nont{\isa{target}}[]
       
  1902 \rail@plus
       
  1903 \rail@bar
       
  1904 \rail@nextbar{4}
       
  1905 \rail@nont{\isa{syntax}}[]
       
  1906 \rail@endbar
       
  1907 \rail@nextplus{5}
       
  1908 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1909 \rail@endplus
       
  1910 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  1911 \rail@nextplus{6}
       
  1912 \rail@endplus
       
  1913 \rail@end
       
  1914 \rail@begin{9}{\isa{}}
       
  1915 \rail@term{\hyperlink{command.HOL.code-class}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}class}}}}}[]
       
  1916 \rail@plus
       
  1917 \rail@nont{\isa{class}}[]
       
  1918 \rail@nextplus{1}
       
  1919 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1920 \rail@endplus
       
  1921 \rail@cr{3}
       
  1922 \rail@plus
       
  1923 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  1924 \rail@nont{\isa{target}}[]
       
  1925 \rail@cr{5}
       
  1926 \rail@plus
       
  1927 \rail@bar
       
  1928 \rail@nextbar{6}
       
  1929 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  1930 \rail@endbar
       
  1931 \rail@nextplus{7}
       
  1932 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1933 \rail@endplus
       
  1934 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  1935 \rail@nextplus{8}
       
  1936 \rail@endplus
       
  1937 \rail@end
       
  1938 \rail@begin{7}{\isa{}}
       
  1939 \rail@term{\hyperlink{command.HOL.code-instance}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}instance}}}}}[]
       
  1940 \rail@plus
       
  1941 \rail@nont{\isa{typeconstructor}}[]
       
  1942 \rail@term{\isa{{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}}}[]
       
  1943 \rail@nont{\isa{class}}[]
       
  1944 \rail@nextplus{1}
       
  1945 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1946 \rail@endplus
       
  1947 \rail@cr{3}
       
  1948 \rail@plus
       
  1949 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  1950 \rail@nont{\isa{target}}[]
       
  1951 \rail@plus
       
  1952 \rail@bar
       
  1953 \rail@nextbar{4}
       
  1954 \rail@term{\isa{{\isaliteral{2D}{\isacharminus}}}}[]
       
  1955 \rail@endbar
       
  1956 \rail@nextplus{5}
       
  1957 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  1958 \rail@endplus
       
  1959 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  1960 \rail@nextplus{6}
       
  1961 \rail@endplus
       
  1962 \rail@end
       
  1963 \rail@begin{2}{\isa{}}
       
  1964 \rail@term{\hyperlink{command.HOL.code-reserved}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}reserved}}}}}[]
       
  1965 \rail@nont{\isa{target}}[]
       
  1966 \rail@plus
       
  1967 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  1968 \rail@nextplus{1}
       
  1969 \rail@endplus
       
  1970 \rail@end
       
  1971 \rail@begin{1}{\isa{}}
       
  1972 \rail@term{\hyperlink{command.HOL.code-monad}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}monad}}}}}[]
       
  1973 \rail@nont{\isa{const}}[]
       
  1974 \rail@nont{\isa{const}}[]
       
  1975 \rail@nont{\isa{target}}[]
       
  1976 \rail@end
       
  1977 \rail@begin{2}{\isa{}}
       
  1978 \rail@term{\hyperlink{command.HOL.code-include}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}include}}}}}[]
       
  1979 \rail@nont{\isa{target}}[]
       
  1980 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  1981 \rail@bar
       
  1982 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  1983 \rail@nextbar{1}
       
  1984 \rail@term{\isa{{\isaliteral{2D}{\isacharminus}}}}[]
       
  1985 \rail@endbar
       
  1986 \rail@end
       
  1987 \rail@begin{2}{\isa{}}
       
  1988 \rail@term{\hyperlink{command.HOL.code-modulename}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}modulename}}}}}[]
       
  1989 \rail@nont{\isa{target}}[]
       
  1990 \rail@plus
       
  1991 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  1992 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  1993 \rail@nextplus{1}
       
  1994 \rail@endplus
       
  1995 \rail@end
       
  1996 \rail@begin{11}{\isa{}}
       
  1997 \rail@term{\hyperlink{command.HOL.code-reflect}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}reflect}}}}}[]
       
  1998 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  1999 \rail@cr{2}
       
  2000 \rail@bar
       
  2001 \rail@nextbar{3}
       
  2002 \rail@term{\isa{\isakeyword{datatypes}}}[]
       
  2003 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  2004 \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
       
  2005 \rail@bar
       
  2006 \rail@term{\isa{{\isaliteral{5F}{\isacharunderscore}}}}[]
       
  2007 \rail@nextbar{4}
       
  2008 \rail@plus
       
  2009 \rail@plus
       
  2010 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  2011 \rail@nextplus{5}
       
  2012 \rail@cterm{\isa{{\isaliteral{7C}{\isacharbar}}}}[]
       
  2013 \rail@endplus
       
  2014 \rail@nextplus{6}
       
  2015 \rail@cterm{\isa{\isakeyword{and}}}[]
       
  2016 \rail@endplus
       
  2017 \rail@endbar
       
  2018 \rail@endbar
       
  2019 \rail@cr{8}
       
  2020 \rail@bar
       
  2021 \rail@nextbar{9}
       
  2022 \rail@term{\isa{\isakeyword{functions}}}[]
       
  2023 \rail@plus
       
  2024 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  2025 \rail@nextplus{10}
       
  2026 \rail@endplus
       
  2027 \rail@endbar
       
  2028 \rail@bar
       
  2029 \rail@nextbar{9}
       
  2030 \rail@term{\isa{\isakeyword{file}}}[]
       
  2031 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  2032 \rail@endbar
       
  2033 \rail@end
       
  2034 \rail@begin{4}{\isa{syntax}}
       
  2035 \rail@bar
       
  2036 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  2037 \rail@nextbar{1}
       
  2038 \rail@bar
       
  2039 \rail@term{\isa{\isakeyword{infix}}}[]
       
  2040 \rail@nextbar{2}
       
  2041 \rail@term{\isa{\isakeyword{infixl}}}[]
       
  2042 \rail@nextbar{3}
       
  2043 \rail@term{\isa{\isakeyword{infixr}}}[]
       
  2044 \rail@endbar
       
  2045 \rail@nont{\hyperlink{syntax.nat}{\mbox{\isa{nat}}}}[]
       
  2046 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  2047 \rail@endbar
       
  2048 \rail@end
       
  2049 \end{railoutput}
       
  2050 
  1319 
  2051 
  1320   \begin{description}
  2052   \begin{description}
  1321 
  2053 
  1322   \item \hyperlink{command.HOL.export-code}{\mbox{\isa{\isacommand{export{\isaliteral{5F}{\isacharunderscore}}code}}}} generates code for a given list
  2054   \item \hyperlink{command.HOL.export-code}{\mbox{\isa{\isacommand{export{\isaliteral{5F}{\isacharunderscore}}code}}}} generates code for a given list
  1323   of constants in the specified target language(s).  If no
  2055   of constants in the specified target language(s).  If no
  1436     \indexdef{HOL}{command}{consts\_code}\hypertarget{command.HOL.consts-code}{\hyperlink{command.HOL.consts-code}{\mbox{\isa{\isacommand{consts{\isaliteral{5F}{\isacharunderscore}}code}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  2168     \indexdef{HOL}{command}{consts\_code}\hypertarget{command.HOL.consts-code}{\hyperlink{command.HOL.consts-code}{\mbox{\isa{\isacommand{consts{\isaliteral{5F}{\isacharunderscore}}code}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1437     \indexdef{HOL}{command}{types\_code}\hypertarget{command.HOL.types-code}{\hyperlink{command.HOL.types-code}{\mbox{\isa{\isacommand{types{\isaliteral{5F}{\isacharunderscore}}code}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  2169     \indexdef{HOL}{command}{types\_code}\hypertarget{command.HOL.types-code}{\hyperlink{command.HOL.types-code}{\mbox{\isa{\isacommand{types{\isaliteral{5F}{\isacharunderscore}}code}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
  1438     \indexdef{HOL}{attribute}{code}\hypertarget{attribute.HOL.code}{\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}} & : & \isa{attribute} \\
  2170     \indexdef{HOL}{attribute}{code}\hypertarget{attribute.HOL.code}{\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}} & : & \isa{attribute} \\
  1439   \end{matharray}
  2171   \end{matharray}
  1440 
  2172 
  1441   \begin{rail}
  2173   \begin{railoutput}
  1442   ( 'code_module' | 'code_library' ) modespec ? name ? \\
  2174 \rail@begin{11}{\isa{}}
  1443     ( 'file' name ) ? ( 'imports' ( name + ) ) ? \\
  2175 \rail@bar
  1444     'contains' ( ( name '=' term ) + | term + )
  2176 \rail@term{\hyperlink{command.HOL.code-module}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}module}}}}}[]
  1445   ;
  2177 \rail@nextbar{1}
  1446 
  2178 \rail@term{\hyperlink{command.HOL.code-library}{\mbox{\isa{\isacommand{code{\isaliteral{5F}{\isacharunderscore}}library}}}}}[]
  1447   modespec: '(' ( name * ) ')'
  2179 \rail@endbar
  1448   ;
  2180 \rail@bar
  1449 
  2181 \rail@nextbar{1}
  1450   'consts_code' (codespec +)
  2182 \rail@nont{\isa{modespec}}[]
  1451   ;
  2183 \rail@endbar
  1452 
  2184 \rail@bar
  1453   codespec: const template attachment ?
  2185 \rail@nextbar{1}
  1454   ;
  2186 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
  1455 
  2187 \rail@endbar
  1456   'types_code' (tycodespec +)
  2188 \rail@cr{3}
  1457   ;
  2189 \rail@bar
  1458 
  2190 \rail@nextbar{4}
  1459   tycodespec: name template attachment ?
  2191 \rail@term{\isa{\isakeyword{file}}}[]
  1460   ;
  2192 \rail@nont{\isa{name}}[]
  1461 
  2193 \rail@endbar
  1462   const: term
  2194 \rail@bar
  1463   ;
  2195 \rail@nextbar{4}
  1464 
  2196 \rail@term{\isa{\isakeyword{imports}}}[]
  1465   template: '(' string ')'
  2197 \rail@plus
  1466   ;
  2198 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
  1467 
  2199 \rail@nextplus{5}
  1468   attachment: 'attach' modespec ? verblbrace text verbrbrace
  2200 \rail@endplus
  1469   ;
  2201 \rail@endbar
  1470 
  2202 \rail@cr{7}
  1471   'code' (name)?
  2203 \rail@term{\isa{\isakeyword{contains}}}[]
  1472   ;
  2204 \rail@bar
  1473   \end{rail}%
  2205 \rail@plus
       
  2206 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  2207 \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
       
  2208 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
  2209 \rail@nextplus{8}
       
  2210 \rail@endplus
       
  2211 \rail@nextbar{9}
       
  2212 \rail@plus
       
  2213 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
  2214 \rail@nextplus{10}
       
  2215 \rail@endplus
       
  2216 \rail@endbar
       
  2217 \rail@end
       
  2218 \rail@begin{2}{\isa{modespec}}
       
  2219 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  2220 \rail@plus
       
  2221 \rail@nextplus{1}
       
  2222 \rail@cnont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  2223 \rail@endplus
       
  2224 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  2225 \rail@end
       
  2226 \rail@begin{2}{\isa{}}
       
  2227 \rail@term{\hyperlink{command.HOL.consts-code}{\mbox{\isa{\isacommand{consts{\isaliteral{5F}{\isacharunderscore}}code}}}}}[]
       
  2228 \rail@plus
       
  2229 \rail@nont{\isa{codespec}}[]
       
  2230 \rail@nextplus{1}
       
  2231 \rail@endplus
       
  2232 \rail@end
       
  2233 \rail@begin{2}{\isa{codespec}}
       
  2234 \rail@nont{\isa{const}}[]
       
  2235 \rail@nont{\isa{template}}[]
       
  2236 \rail@bar
       
  2237 \rail@nextbar{1}
       
  2238 \rail@nont{\isa{attachment}}[]
       
  2239 \rail@endbar
       
  2240 \rail@end
       
  2241 \rail@begin{2}{\isa{}}
       
  2242 \rail@term{\hyperlink{command.HOL.types-code}{\mbox{\isa{\isacommand{types{\isaliteral{5F}{\isacharunderscore}}code}}}}}[]
       
  2243 \rail@plus
       
  2244 \rail@nont{\isa{tycodespec}}[]
       
  2245 \rail@nextplus{1}
       
  2246 \rail@endplus
       
  2247 \rail@end
       
  2248 \rail@begin{2}{\isa{tycodespec}}
       
  2249 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  2250 \rail@nont{\isa{template}}[]
       
  2251 \rail@bar
       
  2252 \rail@nextbar{1}
       
  2253 \rail@nont{\isa{attachment}}[]
       
  2254 \rail@endbar
       
  2255 \rail@end
       
  2256 \rail@begin{1}{\isa{const}}
       
  2257 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
  2258 \rail@end
       
  2259 \rail@begin{1}{\isa{template}}
       
  2260 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  2261 \rail@nont{\hyperlink{syntax.string}{\mbox{\isa{string}}}}[]
       
  2262 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  2263 \rail@end
       
  2264 \rail@begin{2}{\isa{attachment}}
       
  2265 \rail@term{\isa{attach}}[]
       
  2266 \rail@bar
       
  2267 \rail@nextbar{1}
       
  2268 \rail@nont{\isa{modespec}}[]
       
  2269 \rail@endbar
       
  2270 \rail@term{\isa{{\isaliteral{7B}{\isacharbraceleft}}}}[]
       
  2271 \rail@nont{\hyperlink{syntax.text}{\mbox{\isa{text}}}}[]
       
  2272 \rail@term{\isa{{\isaliteral{7D}{\isacharbraceright}}}}[]
       
  2273 \rail@end
       
  2274 \rail@begin{2}{\isa{}}
       
  2275 \rail@term{\hyperlink{attribute.HOL.code}{\mbox{\isa{code}}}}[]
       
  2276 \rail@bar
       
  2277 \rail@nextbar{1}
       
  2278 \rail@nont{\isa{name}}[]
       
  2279 \rail@endbar
       
  2280 \rail@end
       
  2281 \end{railoutput}%
  1474 \end{isamarkuptext}%
  2282 \end{isamarkuptext}%
  1475 \isamarkuptrue%
  2283 \isamarkuptrue%
  1476 %
  2284 %
  1477 \isamarkupsection{Definition by specification \label{sec:hol-specification}%
  2285 \isamarkupsection{Definition by specification \label{sec:hol-specification}%
  1478 }
  2286 }
  1482 \begin{matharray}{rcl}
  2290 \begin{matharray}{rcl}
  1483     \indexdef{HOL}{command}{specification}\hypertarget{command.HOL.specification}{\hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
  2291     \indexdef{HOL}{command}{specification}\hypertarget{command.HOL.specification}{\hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
  1484     \indexdef{HOL}{command}{ax\_specification}\hypertarget{command.HOL.ax-specification}{\hyperlink{command.HOL.ax-specification}{\mbox{\isa{\isacommand{ax{\isaliteral{5F}{\isacharunderscore}}specification}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
  2292     \indexdef{HOL}{command}{ax\_specification}\hypertarget{command.HOL.ax-specification}{\hyperlink{command.HOL.ax-specification}{\mbox{\isa{\isacommand{ax{\isaliteral{5F}{\isacharunderscore}}specification}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ proof{\isaliteral{28}{\isacharparenleft}}prove{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequote}}} \\
  1485   \end{matharray}
  2293   \end{matharray}
  1486 
  2294 
  1487   \begin{rail}
  2295   \begin{railoutput}
  1488   ('specification' | 'ax_specification') '(' (decl +) ')' \\ (thmdecl? prop +)
  2296 \rail@begin{6}{\isa{}}
  1489   ;
  2297 \rail@bar
  1490   decl: ((name ':')? term '(' 'overloaded' ')'?)
  2298 \rail@term{\hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}}[]
  1491   \end{rail}
  2299 \rail@nextbar{1}
       
  2300 \rail@term{\hyperlink{command.HOL.ax-specification}{\mbox{\isa{\isacommand{ax{\isaliteral{5F}{\isacharunderscore}}specification}}}}}[]
       
  2301 \rail@endbar
       
  2302 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  2303 \rail@plus
       
  2304 \rail@nont{\isa{decl}}[]
       
  2305 \rail@nextplus{1}
       
  2306 \rail@endplus
       
  2307 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  2308 \rail@cr{3}
       
  2309 \rail@plus
       
  2310 \rail@bar
       
  2311 \rail@nextbar{4}
       
  2312 \rail@nont{\hyperlink{syntax.thmdecl}{\mbox{\isa{thmdecl}}}}[]
       
  2313 \rail@endbar
       
  2314 \rail@nont{\hyperlink{syntax.prop}{\mbox{\isa{prop}}}}[]
       
  2315 \rail@nextplus{5}
       
  2316 \rail@endplus
       
  2317 \rail@end
       
  2318 \rail@begin{2}{\isa{decl}}
       
  2319 \rail@bar
       
  2320 \rail@nextbar{1}
       
  2321 \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
       
  2322 \rail@term{\isa{{\isaliteral{3A}{\isacharcolon}}}}[]
       
  2323 \rail@endbar
       
  2324 \rail@nont{\hyperlink{syntax.term}{\mbox{\isa{term}}}}[]
       
  2325 \rail@term{\isa{{\isaliteral{28}{\isacharparenleft}}}}[]
       
  2326 \rail@term{\isa{\isakeyword{overloaded}}}[]
       
  2327 \rail@bar
       
  2328 \rail@nextbar{1}
       
  2329 \rail@term{\isa{{\isaliteral{29}{\isacharparenright}}}}[]
       
  2330 \rail@endbar
       
  2331 \rail@end
       
  2332 \end{railoutput}
       
  2333 
  1492 
  2334 
  1493   \begin{description}
  2335   \begin{description}
  1494 
  2336 
  1495   \item \hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}decls\ {\isaliteral{5C3C7068693E}{\isasymphi}}{\isaliteral{22}{\isachardoublequote}}} sets up a
  2337   \item \hyperlink{command.HOL.specification}{\mbox{\isa{\isacommand{specification}}}}~\isa{{\isaliteral{22}{\isachardoublequote}}decls\ {\isaliteral{5C3C7068693E}{\isasymphi}}{\isaliteral{22}{\isachardoublequote}}} sets up a
  1496   goal stating the existence of terms with the properties specified to
  2338   goal stating the existence of terms with the properties specified to