| author | huffman | 
| Sat, 03 Sep 2011 16:00:09 -0700 | |
| changeset 44695 | 075327b8e841 | 
| parent 42704 | 3f19e324ff59 | 
| permissions | -rw-r--r-- | 
| 26840 | 1 | % | 
| 2 | \begin{isabellebody}%
 | |
| 40406 | 3 | \def\isabellecontext{HOLCF{\isaliteral{5F}{\isacharunderscore}}Specific}%
 | 
| 26840 | 4 | % | 
| 5 | \isadelimtheory | |
| 6 | % | |
| 7 | \endisadelimtheory | |
| 8 | % | |
| 9 | \isatagtheory | |
| 10 | \isacommand{theory}\isamarkupfalse%
 | |
| 40406 | 11 | \ HOLCF{\isaliteral{5F}{\isacharunderscore}}Specific\isanewline
 | 
| 42651 | 12 | \isakeyword{imports}\ Base\ HOLCF\isanewline
 | 
| 26842 | 13 | \isakeyword{begin}%
 | 
| 14 | \endisatagtheory | |
| 15 | {\isafoldtheory}%
 | |
| 16 | % | |
| 17 | \isadelimtheory | |
| 18 | % | |
| 19 | \endisadelimtheory | |
| 20 | % | |
| 26852 | 21 | \isamarkupchapter{Isabelle/HOLCF \label{ch:holcf}%
 | 
| 26842 | 22 | } | 
| 23 | \isamarkuptrue% | |
| 24 | % | |
| 25 | \isamarkupsection{Mixfix syntax for continuous operations%
 | |
| 26 | } | |
| 27 | \isamarkuptrue% | |
| 28 | % | |
| 29 | \begin{isamarkuptext}%
 | |
| 30 | \begin{matharray}{rcl}
 | |
| 40406 | 31 |     \indexdef{HOLCF}{command}{consts}\hypertarget{command.HOLCF.consts}{\hyperlink{command.HOLCF.consts}{\mbox{\isa{\isacommand{consts}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
 | 
| 26842 | 32 |   \end{matharray}
 | 
| 33 | ||
| 40406 | 34 |   HOLCF provides a separate type for continuous functions \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ {\isaliteral{5C3C626574613E}{\isasymbeta}}{\isaliteral{22}{\isachardoublequote}}}, with an explicit application operator \isa{{\isaliteral{22}{\isachardoublequote}}f\ {\isaliteral{5C3C63646F743E}{\isasymcdot}}\ x{\isaliteral{22}{\isachardoublequote}}}.
 | 
| 26842 | 35 | Isabelle mixfix syntax normally refers directly to the pure | 
| 40406 | 36 |   meta-level function type \isa{{\isaliteral{22}{\isachardoublequote}}{\isaliteral{5C3C616C7068613E}{\isasymalpha}}\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ {\isaliteral{5C3C626574613E}{\isasymbeta}}{\isaliteral{22}{\isachardoublequote}}}, with application \isa{{\isaliteral{22}{\isachardoublequote}}f\ x{\isaliteral{22}{\isachardoublequote}}}.
 | 
| 26842 | 37 | |
| 26902 | 38 |   The HOLCF variant of \hyperlink{command.HOLCF.consts}{\mbox{\isa{\isacommand{consts}}}} modifies that of
 | 
| 26842 | 39 |   Pure Isabelle (cf.\ \secref{sec:consts}) such that declarations
 | 
| 40 | involving continuous function types are treated specifically. Any | |
| 41 | given syntax template is transformed internally, generating | |
| 42 | translation rules for the abstract and concrete representation of | |
| 43 | continuous application. Note that mixing of HOLCF and Pure | |
| 44 |   application is \emph{not} supported!%
 | |
| 45 | \end{isamarkuptext}%
 | |
| 46 | \isamarkuptrue% | |
| 47 | % | |
| 48 | \isamarkupsection{Recursive domains%
 | |
| 49 | } | |
| 50 | \isamarkuptrue% | |
| 51 | % | |
| 52 | \begin{isamarkuptext}%
 | |
| 53 | \begin{matharray}{rcl}
 | |
| 40406 | 54 |     \indexdef{HOLCF}{command}{domain}\hypertarget{command.HOLCF.domain}{\hyperlink{command.HOLCF.domain}{\mbox{\isa{\isacommand{domain}}}}} & : & \isa{{\isaliteral{22}{\isachardoublequote}}theory\ {\isaliteral{5C3C72696768746172726F773E}{\isasymrightarrow}}\ theory{\isaliteral{22}{\isachardoublequote}}} \\
 | 
| 26842 | 55 |   \end{matharray}
 | 
| 56 | ||
| 42596 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 57 |   \begin{railoutput}
 | 
| 42662 | 58 | \rail@begin{2}{}
 | 
| 42596 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 59 | \rail@term{\hyperlink{command.HOLCF.domain}{\mbox{\isa{\isacommand{domain}}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 60 | \rail@bar | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 61 | \rail@nextbar{1}
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 62 | \rail@nont{\hyperlink{syntax.parname}{\mbox{\isa{parname}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 63 | \rail@endbar | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 64 | \rail@plus | 
| 42704 | 65 | \rail@nont{\isa{spec}}[]
 | 
| 42596 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 66 | \rail@nextplus{1}
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 67 | \rail@cterm{\isa{\isakeyword{and}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 68 | \rail@endplus | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 69 | \rail@end | 
| 42704 | 70 | \rail@begin{2}{\isa{spec}}
 | 
| 42596 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 71 | \rail@nont{\hyperlink{syntax.typespec}{\mbox{\isa{typespec}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 72 | \rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 73 | \rail@plus | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 74 | \rail@nont{\isa{cons}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 75 | \rail@nextplus{1}
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 76 | \rail@cterm{\isa{{\isaliteral{7C}{\isacharbar}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 77 | \rail@endplus | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 78 | \rail@end | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 79 | \rail@begin{2}{\isa{cons}}
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 80 | \rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 81 | \rail@plus | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 82 | \rail@nextplus{1}
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 83 | \rail@cnont{\hyperlink{syntax.type}{\mbox{\isa{type}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 84 | \rail@endplus | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 85 | \rail@bar | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 86 | \rail@nextbar{1}
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 87 | \rail@nont{\hyperlink{syntax.mixfix}{\mbox{\isa{mixfix}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 88 | \rail@endbar | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 89 | \rail@end | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 90 | \rail@begin{1}{\isa{dtrules}}
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 91 | \rail@term{\isa{\isakeyword{distinct}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 92 | \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 93 | \rail@term{\isa{\isakeyword{inject}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 94 | \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 95 | \rail@term{\isa{\isakeyword{induction}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 96 | \rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[]
 | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 97 | \rail@end | 
| 
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
 wenzelm parents: 
40406diff
changeset | 98 | \end{railoutput}
 | 
| 26842 | 99 | |
| 100 | ||
| 101 | Recursive domains in HOLCF are analogous to datatypes in classical | |
| 102 |   HOL (cf.\ \secref{sec:hol-datatype}).  Mutual recursion is
 | |
| 103 | supported, but no nesting nor arbitrary branching. Domain | |
| 104 | constructors may be strict (default) or lazy, the latter admits to | |
| 105 | introduce infinitary objects in the typical LCF manner (e.g.\ lazy | |
| 106 |   lists).  See also \cite{MuellerNvOS99} for a general discussion of
 | |
| 107 | HOLCF domains.% | |
| 108 | \end{isamarkuptext}%
 | |
| 109 | \isamarkuptrue% | |
| 110 | % | |
| 111 | \isadelimtheory | |
| 112 | % | |
| 113 | \endisadelimtheory | |
| 114 | % | |
| 115 | \isatagtheory | |
| 26840 | 116 | \isacommand{end}\isamarkupfalse%
 | 
| 117 | % | |
| 118 | \endisatagtheory | |
| 119 | {\isafoldtheory}%
 | |
| 120 | % | |
| 121 | \isadelimtheory | |
| 122 | % | |
| 123 | \endisadelimtheory | |
| 26842 | 124 | \isanewline | 
| 26840 | 125 | \end{isabellebody}%
 | 
| 126 | %%% Local Variables: | |
| 127 | %%% mode: latex | |
| 128 | %%% TeX-master: "root" | |
| 129 | %%% End: |