author | wenzelm |
Wed, 25 Jan 2012 15:39:08 +0100 | |
changeset 46256 | bc874d2ee55a |
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:
40406
diff
changeset
|
57 |
\begin{railoutput} |
42662 | 58 |
\rail@begin{2}{} |
42596
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
59 |
\rail@term{\hyperlink{command.HOLCF.domain}{\mbox{\isa{\isacommand{domain}}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
60 |
\rail@bar |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
61 |
\rail@nextbar{1} |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
62 |
\rail@nont{\hyperlink{syntax.parname}{\mbox{\isa{parname}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
63 |
\rail@endbar |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
64 |
\rail@plus |
42704 | 65 |
\rail@nont{\isa{spec}}[] |
42596
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
66 |
\rail@nextplus{1} |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
67 |
\rail@cterm{\isa{\isakeyword{and}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
68 |
\rail@endplus |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
69 |
\rail@end |
42704 | 70 |
\rail@begin{2}{\isa{spec}} |
42596
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
71 |
\rail@nont{\hyperlink{syntax.typespec}{\mbox{\isa{typespec}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
72 |
\rail@term{\isa{{\isaliteral{3D}{\isacharequal}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
73 |
\rail@plus |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
74 |
\rail@nont{\isa{cons}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
75 |
\rail@nextplus{1} |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
76 |
\rail@cterm{\isa{{\isaliteral{7C}{\isacharbar}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
77 |
\rail@endplus |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
78 |
\rail@end |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
79 |
\rail@begin{2}{\isa{cons}} |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
80 |
\rail@nont{\hyperlink{syntax.name}{\mbox{\isa{name}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
81 |
\rail@plus |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
82 |
\rail@nextplus{1} |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
83 |
\rail@cnont{\hyperlink{syntax.type}{\mbox{\isa{type}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
84 |
\rail@endplus |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
85 |
\rail@bar |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
86 |
\rail@nextbar{1} |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
87 |
\rail@nont{\hyperlink{syntax.mixfix}{\mbox{\isa{mixfix}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
88 |
\rail@endbar |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
89 |
\rail@end |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
90 |
\rail@begin{1}{\isa{dtrules}} |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
91 |
\rail@term{\isa{\isakeyword{distinct}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
92 |
\rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
93 |
\rail@term{\isa{\isakeyword{inject}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
94 |
\rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
95 |
\rail@term{\isa{\isakeyword{induction}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
96 |
\rail@nont{\hyperlink{syntax.thmrefs}{\mbox{\isa{thmrefs}}}}[] |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
changeset
|
97 |
\rail@end |
6c621a9d612a
modernized rail diagrams using @{rail} antiquotation;
wenzelm
parents:
40406
diff
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: |