doc-src/Locales/Locales/document/Examples3.tex
author ballarin
Sun, 29 Mar 2009 17:25:06 +0200
changeset 30782 38e477e8524f
parent 30780 c3f1e8a9e0b5
child 30826 a53f4872400e
permissions -rw-r--r--
In interpretation: equations are not propagated through the hierarchy automatically.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     1
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     2
\begin{isabellebody}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     3
\def\isabellecontext{Examples{\isadigit{3}}}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     4
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     5
\isadelimtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     6
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     7
\endisadelimtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     8
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
     9
\isatagtheory
27080
0ee385433247 updated generated file;
wenzelm
parents: 27079
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
0ee385433247 updated generated file;
wenzelm
parents: 27079
diff changeset
    11
\ Examples{\isadigit{3}}\isanewline
0ee385433247 updated generated file;
wenzelm
parents: 27079
diff changeset
    12
\isakeyword{imports}\ Examples\isanewline
0ee385433247 updated generated file;
wenzelm
parents: 27079
diff changeset
    13
\isakeyword{begin}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    14
\endisatagtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    15
{\isafoldtheory}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    16
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    17
\isadelimtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    18
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    19
\endisadelimtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    20
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    21
\isamarkupsubsection{Third Version: Local Interpretation%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    22
}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    23
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    24
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    25
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    26
In the above example, the fact that \isa{{\isasymle}} is a partial
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    27
  order for the natural numbers was used in the proof of the
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    28
  second goal.  In general, proofs of the equations may involve
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    29
  theorems implied by the fact the assumptions of the instantiated
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    30
  locale hold for the instantiating structure.  If these theorems have
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    31
  been shown abstractly in the locale they can be made available
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    32
  conveniently in the context through an auxiliary local interpretation (keyword
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    33
  \isakeyword{interpret}).  This interpretation is inside the proof of the global
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    34
  interpretation.  The third revision of the example illustrates this.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    35
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    36
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    37
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    38
\isadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    39
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    40
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    41
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    42
\isatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    43
\isacommand{interpretation}\isamarkupfalse%
30780
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
    44
\ nat{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
    45
\ \ \isakeyword{where}\ nat{\isacharunderscore}less{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    46
\isacommand{proof}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    47
\ {\isacharminus}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    48
\ \ \isacommand{show}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    49
\ {\isachardoublequoteopen}partial{\isacharunderscore}order\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    50
\ \ \ \ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    51
\ unfold{\isacharunderscore}locales\ auto\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    52
\ \ \isacommand{then}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    53
\ \isacommand{interpret}\isamarkupfalse%
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
    54
\ nat{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ {\isacharbrackleft}nat{\isacharcomma}\ nat{\isacharbrackright}\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    55
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    56
\ \ \isacommand{show}\isamarkupfalse%
30580
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
    57
\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    58
\ \ \ \ \isacommand{unfolding}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    59
\ nat{\isachardot}less{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    60
\ auto\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    61
\isacommand{qed}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    62
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    63
\endisatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    64
{\isafoldvisible}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    65
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    66
\isadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    67
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    68
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    69
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    70
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    71
The inner interpretation does not require an
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    72
  elaborate new proof, it is immediate from the preceeding fact and
30580
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
    73
  proved with ``.''.  Strict qualifiers are normally not necessary for
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
    74
  interpretations inside proofs, since these have only limited scope.
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
    75
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
    76
  The above interpretation enriches the local proof context by
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    77
  the very theorems also obtained in the interpretation from
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    78
  Section~\ref{sec:po-first}, and \isa{nat{\isachardot}less{\isacharunderscore}def} may directly be
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    79
  used to unfold the definition.  Theorems from the local
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    80
  interpretation disappear after leaving the proof context --- that
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    81
  is, after the closing \isakeyword{qed} --- and are
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    82
  then replaced by those with the desired substitutions of the strict
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    83
  order.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    84
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    85
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    86
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    87
\isamarkupsubsection{Further Interpretations%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    88
}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    89
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    90
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    91
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    92
Further interpretations are necessary to reuse theorems from
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    93
  the other locales.  In \isa{lattice} the operations \isa{{\isasymsqinter}} and
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
    94
  \isa{{\isasymsqunion}} are substituted by \isa{min} and
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
    95
  \isa{max}.  The entire proof for the
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    96
  interpretation is reproduced in order to give an example of a more
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    97
  elaborate interpretation proof.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    98
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
    99
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   100
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   101
\isadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   102
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   103
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   104
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   105
\isatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   106
\isacommand{interpretation}\isamarkupfalse%
30780
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   107
\ nat{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   108
\ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   109
\ \ \ \ \isakeyword{and}\ nat{\isacharunderscore}meet{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   110
\ \ \ \ \isakeyword{and}\ nat{\isacharunderscore}join{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   111
\isacommand{proof}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   112
\ {\isacharminus}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   113
\ \ \isacommand{show}\isamarkupfalse%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   114
\ lattice{\isacharcolon}\ {\isachardoublequoteopen}lattice\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   115
\begin{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   116
We have already shown that this is a partial order,%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   117
\end{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   118
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   119
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   120
\ unfold{\isacharunderscore}locales%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   121
\begin{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   122
hence only the lattice axioms remain to be shown: \begin{isabelle}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   123
\ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ {\isasymexists}inf{\isachardot}\ partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}inf\ op\ {\isasymle}\ x\ y\ inf\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   124
\ {\isadigit{2}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ {\isasymexists}sup{\isachardot}\ partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}sup\ op\ {\isasymle}\ x\ y\ sup%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   125
\end{isabelle}  After unfolding \isa{is{\isacharunderscore}inf} and \isa{is{\isacharunderscore}sup},%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   126
\end{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   127
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   128
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   129
\ {\isacharparenleft}unfold\ nat{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def\ nat{\isachardot}is{\isacharunderscore}sup{\isacharunderscore}def{\isacharparenright}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   130
\begin{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   131
the goals become \begin{isabelle}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   132
\ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ {\isasymexists}inf{\isasymle}x{\isachardot}\ inf\ {\isasymle}\ y\ {\isasymand}\ {\isacharparenleft}{\isasymforall}z{\isachardot}\ z\ {\isasymle}\ x\ {\isasymand}\ z\ {\isasymle}\ y\ {\isasymlongrightarrow}\ z\ {\isasymle}\ inf{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   133
\ {\isadigit{2}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ {\isasymexists}sup{\isasymge}x{\isachardot}\ y\ {\isasymle}\ sup\ {\isasymand}\ {\isacharparenleft}{\isasymforall}z{\isachardot}\ x\ {\isasymle}\ z\ {\isasymand}\ y\ {\isasymle}\ z\ {\isasymlongrightarrow}\ sup\ {\isasymle}\ z{\isacharparenright}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   134
\end{isabelle} which can be solved
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   135
      by Presburger arithmetic.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   136
\end{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   137
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   138
\ \ \ \ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   139
\ arith{\isacharplus}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   140
\begin{isamarkuptxt}%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   141
For the first of the equations, we refer to the theorem
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   142
  generated in the previous interpretation.%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   143
\end{isamarkuptxt}%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   144
\isamarkuptrue%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   145
\ \ \isacommand{show}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   146
\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   147
\ \ \ \ \isacommand{by}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   148
\ {\isacharparenleft}rule\ nat{\isacharunderscore}less{\isacharunderscore}eq{\isacharparenright}%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   149
\begin{isamarkuptxt}%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   150
In order to show the remaining equations, we put ourselves in a
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   151
    situation where the lattice theorems can be used in a convenient way.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   152
\end{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   153
\isamarkuptrue%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   154
\ \ \isacommand{from}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   155
\ lattice\ \isacommand{interpret}\isamarkupfalse%
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   156
\ nat{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   157
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   158
\ \ \isacommand{show}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   159
\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   160
\ \ \ \ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   161
\ {\isacharparenleft}bestsimp\ simp{\isacharcolon}\ nat{\isachardot}meet{\isacharunderscore}def\ nat{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   162
\ \ \isacommand{show}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   163
\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   164
\ \ \ \ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   165
\ {\isacharparenleft}bestsimp\ simp{\isacharcolon}\ nat{\isachardot}join{\isacharunderscore}def\ nat{\isachardot}is{\isacharunderscore}sup{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   166
\isacommand{qed}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   167
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   168
\endisatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   169
{\isafoldvisible}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   170
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   171
\isadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   172
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   173
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   174
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   175
\begin{isamarkuptext}%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   176
The interpretation that the relation \isa{{\isasymle}} is a total
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   177
  order follows next.%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   178
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   179
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   180
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   181
\isadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   182
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   183
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   184
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   185
\isatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   186
\isacommand{interpretation}\isamarkupfalse%
30780
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   187
\ nat{\isacharcolon}\ total{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   188
\ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   189
\ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   190
\ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   191
\isacommand{proof}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   192
\ {\isacharminus}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   193
\ \ \isacommand{show}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   194
\ {\isachardoublequoteopen}total{\isacharunderscore}order\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   195
\ unfold{\isacharunderscore}locales\ arith\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   196
\isacommand{qed}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   197
\ {\isacharparenleft}rule\ nat{\isacharunderscore}less{\isacharunderscore}eq\ nat{\isacharunderscore}meet{\isacharunderscore}eq\ nat{\isacharunderscore}join{\isacharunderscore}eq{\isacharparenright}{\isacharplus}%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   198
\endisatagvisible
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   199
{\isafoldvisible}%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   200
%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   201
\isadelimvisible
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   202
%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   203
\endisadelimvisible
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   204
%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   205
\begin{isamarkuptext}%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   206
Note that since the locale hierarchy reflects that total
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   207
  orders are distributive lattices, an explicit interpretation of
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   208
  distributive lattices for the order relation on natural numbers is
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   209
  only necessary for mapping the definitions to the right operators on
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   210
  \isa{nat}.%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   211
\end{isamarkuptext}%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   212
\isamarkuptrue%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   213
%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   214
\isadelimvisible
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   215
%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   216
\endisadelimvisible
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   217
%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   218
\isatagvisible
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   219
\isacommand{interpretation}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   220
\ nat{\isacharcolon}\ distrib{\isacharunderscore}lattice\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   221
\ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   222
\ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   223
\ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   224
\ \ \isacommand{by}\isamarkupfalse%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   225
\ unfold{\isacharunderscore}locales\ {\isacharbrackleft}{\isadigit{1}}{\isacharbrackright}\ {\isacharparenleft}rule\ nat{\isacharunderscore}less{\isacharunderscore}eq\ nat{\isacharunderscore}meet{\isacharunderscore}eq\ nat{\isacharunderscore}join{\isacharunderscore}eq{\isacharparenright}{\isacharplus}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   226
\endisatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   227
{\isafoldvisible}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   228
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   229
\isadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   230
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   231
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   232
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   233
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   234
Theorems that are available in the theory at this point are shown in
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   235
  Table~\ref{tab:nat-lattice}.
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   236
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   237
\begin{table}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   238
\hrule
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   239
\vspace{2ex}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   240
\begin{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   241
\begin{tabular}{l}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   242
  \isa{nat{\isachardot}less{\isacharunderscore}def} from locale \isa{partial{\isacharunderscore}order}: \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   243
  \quad \isa{{\isacharparenleft}{\isacharquery}x\ {\isacharless}\ {\isacharquery}y{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}{\isacharquery}x\ {\isasymle}\ {\isacharquery}y\ {\isasymand}\ {\isacharquery}x\ {\isasymnoteq}\ {\isacharquery}y{\isacharparenright}} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   244
  \isa{nat{\isachardot}meet{\isacharunderscore}left} from locale \isa{lattice}: \\
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   245
  \quad \isa{min\ {\isacharquery}x\ {\isacharquery}y\ {\isasymle}\ {\isacharquery}x} \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   246
  \isa{nat{\isachardot}join{\isacharunderscore}distr} from locale \isa{distrib{\isacharunderscore}lattice}: \\
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   247
  \quad \isa{max\ {\isacharquery}x\ {\isacharparenleft}min\ {\isacharquery}y\ {\isacharquery}z{\isacharparenright}\ {\isacharequal}\ min\ {\isacharparenleft}max\ {\isacharquery}x\ {\isacharquery}y{\isacharparenright}\ {\isacharparenleft}max\ {\isacharquery}x\ {\isacharquery}z{\isacharparenright}} \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   248
  \isa{nat{\isachardot}less{\isacharunderscore}total} from locale \isa{total{\isacharunderscore}order}: \\
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   249
  \quad \isa{{\isacharquery}x\ {\isacharless}\ {\isacharquery}y\ {\isasymor}\ {\isacharquery}x\ {\isacharequal}\ {\isacharquery}y\ {\isasymor}\ {\isacharquery}y\ {\isacharless}\ {\isacharquery}x}
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   250
\end{tabular}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   251
\end{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   252
\hrule
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   253
\caption{Interpreted theorems for \isa{{\isasymle}} on the natural numbers.}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   254
\label{tab:nat-lattice}
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   255
\end{table}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   256
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   257
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   258
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   259
\isamarkupsubsection{Lattice \isa{dvd} on \isa{nat}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   260
}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   261
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   262
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   263
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   264
Divisibility on the natural numbers is a distributive lattice
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   265
  but not a total order.  Interpretation again proceeds
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   266
  incrementally.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   267
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   268
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   269
\isacommand{interpretation}\isamarkupfalse%
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   270
\ nat{\isacharunderscore}dvd{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   271
\ \ \isakeyword{where}\ nat{\isacharunderscore}dvd{\isacharunderscore}less{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ dvd\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   272
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   273
\isadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   274
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   275
\endisadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   276
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   277
\isatagproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   278
\isacommand{proof}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   279
\ {\isacharminus}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   280
\ \ \isacommand{show}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   281
\ {\isachardoublequoteopen}partial{\isacharunderscore}order\ {\isacharparenleft}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   282
\ \ \ \ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   283
\ unfold{\isacharunderscore}locales\ {\isacharparenleft}auto\ simp{\isacharcolon}\ dvd{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   284
\ \ \isacommand{then}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   285
\ \isacommand{interpret}\isamarkupfalse%
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   286
\ nat{\isacharunderscore}dvd{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   287
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   288
\ \ \isacommand{show}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   289
\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ dvd\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   290
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   291
\ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}less{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   292
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   293
\ auto\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   294
\ \ \ \ \isacommand{done}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   295
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   296
\isacommand{qed}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   297
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   298
\endisatagproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   299
{\isafoldproof}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   300
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   301
\isadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   302
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   303
\endisadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   304
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   305
\begin{isamarkuptext}%
30580
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
   306
Note that in Isabelle/HOL there is no symbol for strict
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
   307
  divisibility.  Instead, interpretation substitutes \isa{x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y}.%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   308
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   309
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   310
\isacommand{interpretation}\isamarkupfalse%
30780
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   311
\ nat{\isacharunderscore}dvd{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   312
\ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ dvd\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   313
\ \ \ \ \isakeyword{and}\ nat{\isacharunderscore}dvd{\isacharunderscore}meet{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ dvd\ {\isacharequal}\ gcd{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   314
\ \ \ \ \isakeyword{and}\ nat{\isacharunderscore}dvd{\isacharunderscore}join{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ dvd\ {\isacharequal}\ lcm{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   315
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   316
\isadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   317
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   318
\endisadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   319
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   320
\isatagproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   321
\isacommand{proof}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   322
\ {\isacharminus}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   323
\ \ \isacommand{show}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   324
\ {\isachardoublequoteopen}lattice\ {\isacharparenleft}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   325
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   326
\ unfold{\isacharunderscore}locales\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   327
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   328
\ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def\ nat{\isacharunderscore}dvd{\isachardot}is{\isacharunderscore}sup{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   329
\ \ \ \ \isacommand{apply}\isamarkupfalse%
27595
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   330
\ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}gcd\ x\ y{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharparenright}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   331
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   332
\ auto\ {\isacharbrackleft}{\isadigit{1}}{\isacharbrackright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   333
\ \ \ \ \isacommand{apply}\isamarkupfalse%
27595
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   334
\ {\isacharparenleft}rule{\isacharunderscore}tac\ x\ {\isacharequal}\ {\isachardoublequoteopen}lcm\ x\ y{\isachardoublequoteclose}\ \isakeyword{in}\ exI{\isacharparenright}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   335
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   336
\ {\isacharparenleft}auto\ intro{\isacharcolon}\ lcm{\isacharunderscore}dvd{\isadigit{1}}\ lcm{\isacharunderscore}dvd{\isadigit{2}}\ lcm{\isacharunderscore}least{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   337
\ \ \ \ \isacommand{done}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   338
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   339
\ \ \isacommand{then}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   340
\ \isacommand{interpret}\isamarkupfalse%
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   341
\ nat{\isacharunderscore}dvd{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   342
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   343
\ \ \isacommand{show}\isamarkupfalse%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   344
\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ dvd\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   345
\ \ \ \ \isacommand{by}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   346
\ {\isacharparenleft}rule\ nat{\isacharunderscore}dvd{\isacharunderscore}less{\isacharunderscore}eq{\isacharparenright}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   347
\ \ \isacommand{show}\isamarkupfalse%
27595
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   348
\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ dvd\ {\isacharequal}\ gcd{\isachardoublequoteclose}\isanewline
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   349
\ \ \ \ \isacommand{apply}\isamarkupfalse%
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   350
\ {\isacharparenleft}auto\ simp\ add{\isacharcolon}\ expand{\isacharunderscore}fun{\isacharunderscore}eq{\isacharparenright}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   351
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   352
\ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}meet{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   353
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   354
\ {\isacharparenleft}rule\ the{\isacharunderscore}equality{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   355
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   356
\ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   357
\ \ \ \ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   358
\ auto\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   359
\ \ \isacommand{show}\isamarkupfalse%
27595
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   360
\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ dvd\ {\isacharequal}\ lcm{\isachardoublequoteclose}\isanewline
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   361
\ \ \ \ \isacommand{apply}\isamarkupfalse%
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   362
\ {\isacharparenleft}auto\ simp\ add{\isacharcolon}\ expand{\isacharunderscore}fun{\isacharunderscore}eq{\isacharparenright}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   363
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   364
\ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}join{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   365
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   366
\ {\isacharparenleft}rule\ the{\isacharunderscore}equality{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   367
\ \ \ \ \isacommand{apply}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   368
\ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}is{\isacharunderscore}sup{\isacharunderscore}def{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   369
\ \ \ \ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   370
\ {\isacharparenleft}auto\ intro{\isacharcolon}\ lcm{\isacharunderscore}dvd{\isadigit{1}}\ lcm{\isacharunderscore}dvd{\isadigit{2}}\ lcm{\isacharunderscore}least{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   371
\isacommand{qed}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   372
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   373
\endisatagproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   374
{\isafoldproof}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   375
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   376
\isadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   377
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   378
\endisadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   379
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   380
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   381
Equations \isa{nat{\isacharunderscore}dvd{\isacharunderscore}meet{\isacharunderscore}eq} and \isa{nat{\isacharunderscore}dvd{\isacharunderscore}join{\isacharunderscore}eq} are named since they are handy in the proof of
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   382
  the subsequent interpretation.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   383
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   384
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   385
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   386
\isadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   387
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   388
\endisadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   389
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   390
\isataginvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   391
\isacommand{lemma}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   392
\ gcd{\isacharunderscore}lcm{\isacharunderscore}distr{\isacharcolon}\isanewline
27595
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   393
\ \ {\isachardoublequoteopen}gcd\ x\ {\isacharparenleft}lcm\ y\ z{\isacharparenright}\ {\isacharequal}\ lcm\ {\isacharparenleft}gcd\ x\ y{\isacharparenright}\ {\isacharparenleft}gcd\ x\ z{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{sorry}\isamarkupfalse%
29568
ba144750086d more robust handling of quick_and_dirty;
wenzelm
parents: 29567
diff changeset
   394
%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   395
\endisataginvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   396
{\isafoldinvisible}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   397
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   398
\isadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   399
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   400
\endisadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   401
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   402
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   403
\isadelimvisible
29568
ba144750086d more robust handling of quick_and_dirty;
wenzelm
parents: 29567
diff changeset
   404
\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   405
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   406
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   407
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   408
\isatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   409
\isacommand{interpretation}\isamarkupfalse%
30780
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   410
\ nat{\isacharunderscore}dvd{\isacharcolon}\isanewline
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   411
\ \ distrib{\isacharunderscore}lattice\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   412
\ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ dvd\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   413
\ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ dvd\ {\isacharequal}\ gcd{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   414
\ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ dvd\ {\isacharequal}\ lcm{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   415
\isacommand{proof}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   416
\ {\isacharminus}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   417
\ \ \isacommand{show}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   418
\ {\isachardoublequoteopen}distrib{\isacharunderscore}lattice\ {\isacharparenleft}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   419
\ \ \ \ \isacommand{apply}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   420
\ unfold{\isacharunderscore}locales%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   421
\begin{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   422
\begin{isabelle}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   423
\ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y\ z{\isachardot}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   424
\isaindent{\ {\isadigit{1}}{\isachardot}\ \ \ \ }lattice{\isachardot}meet\ op\ dvd\ x\ {\isacharparenleft}lattice{\isachardot}join\ op\ dvd\ y\ z{\isacharparenright}\ {\isacharequal}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   425
\isaindent{\ {\isadigit{1}}{\isachardot}\ \ \ \ }lattice{\isachardot}join\ op\ dvd\ {\isacharparenleft}lattice{\isachardot}meet\ op\ dvd\ x\ y{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   426
\isaindent{\ {\isadigit{1}}{\isachardot}\ \ \ \ \ }{\isacharparenleft}lattice{\isachardot}meet\ op\ dvd\ x\ z{\isacharparenright}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   427
\end{isabelle}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   428
\end{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   429
\isamarkuptrue%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   430
\ \ \ \ \isacommand{apply}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   431
\ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isacharunderscore}meet{\isacharunderscore}eq\ nat{\isacharunderscore}dvd{\isacharunderscore}join{\isacharunderscore}eq{\isacharparenright}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   432
\begin{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   433
\begin{isabelle}%
27595
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   434
\ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y\ z{\isachardot}\ gcd\ x\ {\isacharparenleft}lcm\ y\ z{\isacharparenright}\ {\isacharequal}\ lcm\ {\isacharparenleft}gcd\ x\ y{\isacharparenright}\ {\isacharparenleft}gcd\ x\ z{\isacharparenright}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   435
\end{isabelle}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   436
\end{isamarkuptxt}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   437
\isamarkuptrue%
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   438
\ \ \ \ \isacommand{apply}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   439
\ {\isacharparenleft}rule\ gcd{\isacharunderscore}lcm{\isacharunderscore}distr{\isacharparenright}\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   440
\ \ \ \ \isacommand{done}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   441
\isanewline
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   442
\isacommand{qed}\isamarkupfalse%
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   443
\ {\isacharparenleft}rule\ nat{\isacharunderscore}dvd{\isacharunderscore}less{\isacharunderscore}eq\ nat{\isacharunderscore}dvd{\isacharunderscore}meet{\isacharunderscore}eq\ nat{\isacharunderscore}dvd{\isacharunderscore}join{\isacharunderscore}eq{\isacharparenright}{\isacharplus}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   444
\endisatagvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   445
{\isafoldvisible}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   446
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   447
\isadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   448
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   449
\endisadelimvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   450
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   451
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   452
Theorems that are available in the theory after these
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   453
  interpretations are shown in Table~\ref{tab:nat-dvd-lattice}.
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   454
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   455
\begin{table}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   456
\hrule
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   457
\vspace{2ex}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   458
\begin{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   459
\begin{tabular}{l}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   460
  \isa{nat{\isacharunderscore}dvd{\isachardot}less{\isacharunderscore}def} from locale \isa{partial{\isacharunderscore}order}: \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   461
  \quad \isa{{\isacharparenleft}{\isacharquery}x\ dvd\ {\isacharquery}y\ {\isasymand}\ {\isacharquery}x\ {\isasymnoteq}\ {\isacharquery}y{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}{\isacharquery}x\ dvd\ {\isacharquery}y\ {\isasymand}\ {\isacharquery}x\ {\isasymnoteq}\ {\isacharquery}y{\isacharparenright}} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   462
  \isa{nat{\isacharunderscore}dvd{\isachardot}meet{\isacharunderscore}left} from locale \isa{lattice}: \\
27595
3ac9e3cd1fa3 curried gcd
haftmann
parents: 27506
diff changeset
   463
  \quad \isa{gcd\ {\isacharquery}x\ {\isacharquery}y\ dvd\ {\isacharquery}x} \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   464
  \isa{nat{\isacharunderscore}dvd{\isachardot}join{\isacharunderscore}distr} from locale \isa{distrib{\isacharunderscore}lattice}: \\
30782
38e477e8524f In interpretation: equations are not propagated through the hierarchy automatically.
ballarin
parents: 30780
diff changeset
   465
  \quad \isa{lcm\ {\isacharquery}x\ {\isacharparenleft}gcd\ {\isacharquery}y\ {\isacharquery}z{\isacharparenright}\ {\isacharequal}\ gcd\ {\isacharparenleft}lcm\ {\isacharquery}x\ {\isacharquery}y{\isacharparenright}\ {\isacharparenleft}lcm\ {\isacharquery}x\ {\isacharquery}z{\isacharparenright}} \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   466
\end{tabular}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   467
\end{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   468
\hrule
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   469
\caption{Interpreted theorems for \isa{dvd} on the natural numbers.}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   470
\label{tab:nat-dvd-lattice}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   471
\end{table}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   472
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   473
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   474
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   475
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   476
The full syntax of the interpretation commands is shown in
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   477
  Table~\ref{tab:commands}.  The grammar refers to
30580
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
   478
  \textit{expression}, which stands for a \emph{locale} expression.
cc5a55d7a5be Updated chapters 1-5 to locale reimplementation.
ballarin
parents: 30393
diff changeset
   479
  Locale expressions are discussed in the following section.%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   480
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   481
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   482
%
27079
61ac01ff0aa9 updated generated file;
wenzelm
parents: 27075
diff changeset
   483
\isamarkupsection{Locale Expressions \label{sec:expressions}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   484
}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   485
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   486
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   487
\begin{isamarkuptext}%
27079
61ac01ff0aa9 updated generated file;
wenzelm
parents: 27075
diff changeset
   488
A map \isa{{\isasymphi}} between partial orders \isa{{\isasymsqsubseteq}} and \isa{{\isasympreceq}}
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   489
  is called order preserving if \isa{x\ {\isasymsqsubseteq}\ y} implies \isa{{\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y}.  This situation is more complex than those encountered so
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   490
  far: it involves two partial orders, and it is desirable to use the
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   491
  existing locale for both.
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   492
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   493
  Inspecting the grammar of locale commands in
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   494
  Table~\ref{tab:commands} reveals that the import of a locale can be
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   495
  more than just a single locale.  In general, the import is a
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   496
  \emph{locale expression}.  These enable to combine locales
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   497
  and instantiate parameters.  A locale expression is a sequence of
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   498
  locale \emph{instances} followed by an optional \isakeyword{for}
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   499
  clause.  Each instance consists of a locale reference, which may be
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   500
  preceded by a qualifer and succeeded by instantiations of the
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   501
  parameters of that locale.  Instantiations may be either positional
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   502
  or through explicit parameter argument pairs.
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   503
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   504
  Using a locale expression, a locale for order
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   505
  preserving maps can be declared in the following way.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   506
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   507
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   508
\ \ \isacommand{locale}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   509
\ order{\isacharunderscore}preserving\ {\isacharequal}\isanewline
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   510
\ \ \ \ le{\isacharcolon}\ partial{\isacharunderscore}order\ le\ {\isacharplus}\ le{\isacharprime}{\isacharcolon}\ partial{\isacharunderscore}order\ le{\isacharprime}\isanewline
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   511
\ \ \ \ \ \ \isakeyword{for}\ le\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqsubseteq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{and}\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   512
\ \ \ \ \isakeyword{fixes}\ {\isasymphi}\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   513
\ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}le{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y\ {\isasymLongrightarrow}\ {\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   514
\begin{isamarkuptext}%
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   515
The second and third line contain the expression --- two
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   516
  instances of the partial order locale with instantiations \isa{le}
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   517
  and \isa{le{\isacharprime}}, respectively.  The \isakeyword{for} clause consists
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   518
  of parameter declarations and is similar to the context element
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   519
  \isakeyword{fixes}.  The notable difference is that the
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   520
  \isakeyword{for} clause is part of the expression, and only
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   521
  parameters defined in the expression may occur in its instances.
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   522
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   523
  Instances are \emph{morphisms} on locales.  Their effect on the
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   524
  parameters is naturally lifted to terms, propositions and theorems,
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   525
  and thus to the assumptions and conclusions of a locale.  The
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   526
  assumption of a locale expression is the conjunction of the
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   527
  assumptions of the instances.  The conclusions of a sequence of
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   528
  instances are obtained by appending the conclusions of the
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   529
  instances in the order of the sequence.
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   530
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   531
  The qualifiers in the expression are already a familiar concept from
30780
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   532
  the \isakeyword{interpretation} command
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   533
  (Section~\ref{sec:po-first}).  Here, they serve to distinguish names
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   534
  (in particular theorem names) for the two partial orders within the
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   535
  locale.  Qualifiers in the \isakeyword{locale} command (and in
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   536
  \isakeyword{sublocale}) default to optional --- that is, they need
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   537
  not occur in references to the qualified names.  Here are examples
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   538
  of theorems in locale \isa{order{\isacharunderscore}preserving}:%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   539
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   540
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   541
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   542
\isadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   543
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   544
\endisadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   545
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   546
\isataginvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   547
\isacommand{context}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   548
\ order{\isacharunderscore}preserving\ \isakeyword{begin}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   549
\endisataginvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   550
{\isafoldinvisible}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   551
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   552
\isadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   553
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   554
\endisadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   555
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   556
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   557
\isa{le{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}: \isa{{\isasymlbrakk}{\isacharquery}x\ {\isasymsqsubset}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasymsqsubseteq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymsqsubset}\ {\isacharquery}z}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   558
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   559
  \isa{hom{\isacharunderscore}le}: \isa{{\isacharquery}x\ {\isasymsqsubseteq}\ {\isacharquery}y\ {\isasymLongrightarrow}\ {\isasymphi}\ {\isacharquery}x\ {\isasympreceq}\ {\isasymphi}\ {\isacharquery}y}%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   560
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   561
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   562
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   563
\begin{isamarkuptext}%
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   564
The theorems for the partial order \isa{{\isasympreceq}}
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   565
  are qualified by \isa{le{\isacharprime}}.  For example, \isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}: \begin{isabelle}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   566
\ \ {\isasymlbrakk}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   567
\isaindent{\ \ }{\isasymLongrightarrow}\ partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}z%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   568
\end{isabelle}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   569
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   570
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   571
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   572
\isadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   573
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   574
\endisadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   575
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   576
\isataginvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   577
\isacommand{end}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   578
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   579
\endisataginvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   580
{\isafoldinvisible}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   581
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   582
\isadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   583
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   584
\endisadeliminvisible
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   585
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   586
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   587
This example reveals that there is no infix syntax for the strict
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   588
  version of \isa{{\isasympreceq}}!  This can be declared through an abbreviation.%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   589
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   590
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   591
\ \ \isacommand{abbreviation}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   592
\ {\isacharparenleft}\isakeyword{in}\ order{\isacharunderscore}preserving{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   593
\ \ \ \ less{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymprec}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}less{\isacharprime}\ {\isasymequiv}\ partial{\isacharunderscore}order{\isachardot}less\ le{\isacharprime}{\isachardoublequoteclose}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   594
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   595
Now the theorem is displayed nicely as
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   596
  \isa{{\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z}.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   597
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   598
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   599
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   600
\begin{isamarkuptext}%
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   601
Qualifiers not only apply to theorem names, but also to names
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   602
  introduced by definitions and abbreviations.  In locale
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   603
  \isa{partial{\isacharunderscore}order} the full name of the strict order of \isa{{\isasymsqsubseteq}} is
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   604
  \isa{le{\isachardot}less} and therefore \isa{le{\isacharprime}{\isachardot}less} is the full name of
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   605
  the strict order of \isa{{\isasympreceq}}.  Hence, the equation in the
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   606
  abbreviation above could have been also written as \isa{less{\isacharprime}\ {\isasymequiv}\ le{\isacharprime}{\isachardot}less}.%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   607
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   608
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   609
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   610
\begin{isamarkuptext}%
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   611
Readers may find the declaration of locale \isa{order{\isacharunderscore}preserving} a little awkward, because the declaration and
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   612
  concrete syntax for \isa{le} from \isa{partial{\isacharunderscore}order} are
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   613
  repeated in the declaration of \isa{order{\isacharunderscore}preserving}.  Locale
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   614
  expressions provide a convenient short hand for this.  A parameter
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   615
  in an instance is \emph{untouched} if no instantiation term is
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   616
  provided for it.  In positional instantiations, a parameter position
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   617
  may be skipped with an underscore, and it is allowed to give fewer
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   618
  instantiation terms than the instantiated locale's number of
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   619
  parameters.  In named instantiations, instantiation pairs for
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   620
  certain parameters may simply be omitted.  Untouched parameters are
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   621
  declared by the locale expression and with their concrete syntax by
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   622
  implicitly adding them to the beginning of the \isakeyword{for}
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   623
  clause.
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   624
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   625
  The following locales illustrate this.  A map \isa{{\isasymphi}} is a
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   626
  lattice homomorphism if it preserves meet and join.%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   627
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   628
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   629
\ \ \isacommand{locale}\isamarkupfalse%
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   630
\ lattice{\isacharunderscore}hom\ {\isacharequal}\isanewline
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   631
\ \ \ \ le{\isacharcolon}\ lattice\ {\isacharplus}\ le{\isacharprime}{\isacharcolon}\ lattice\ le{\isacharprime}\ \isakeyword{for}\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   632
\ \ \ \ \isakeyword{fixes}\ {\isasymphi}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   633
\ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}meet{\isacharcolon}\isanewline
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   634
\ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}x\ {\isasymsqinter}\ y{\isacharparenright}\ {\isacharequal}\ le{\isacharprime}{\isachardot}meet\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   635
\ \ \ \ \ \ \isakeyword{and}\ hom{\isacharunderscore}join{\isacharcolon}\isanewline
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   636
\ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}x\ {\isasymsqunion}\ y{\isacharparenright}\ {\isacharequal}\ le{\isacharprime}{\isachardot}join\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   637
\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   638
\ \ \isacommand{abbreviation}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   639
\ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   640
\ \ \ \ meet{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqinter}{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}meet{\isacharprime}\ {\isasymequiv}\ le{\isacharprime}{\isachardot}meet{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   641
\ \ \isacommand{abbreviation}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   642
\ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   643
\ \ \ \ join{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqunion}{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}join{\isacharprime}\ {\isasymequiv}\ le{\isacharprime}{\isachardot}join{\isachardoublequoteclose}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   644
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   645
A homomorphism is an endomorphism if both orders coincide.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   646
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   647
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   648
\ \ \isacommand{locale}\isamarkupfalse%
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   649
\ lattice{\isacharunderscore}end\ {\isacharequal}\ lattice{\isacharunderscore}hom\ {\isacharunderscore}\ le%
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   650
\begin{isamarkuptext}%
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   651
In this declaration, the first parameter of \isa{lattice{\isacharunderscore}hom}, \isa{le}, is untouched and then used to instantiate
30780
c3f1e8a9e0b5 Default mode of qualifiers in locale commands.
ballarin
parents: 30751
diff changeset
   652
  the second parameter.  Its concrete syntax is preserved.%
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   653
\end{isamarkuptext}%
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   654
\isamarkuptrue%
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   655
%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   656
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   657
The inheritance diagram of the situation we have now is shown
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   658
  in Figure~\ref{fig:hom}, where the dashed line depicts an
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   659
  interpretation which is introduced below.  Renamings are
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   660
  indicated by $\sqsubseteq \mapsto \preceq$ etc.  The expression
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   661
  imported by \isa{lattice{\isacharunderscore}end} identifies the first and second
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   662
  parameter of \isa{lattice{\isacharunderscore}hom}.  By looking at the inheritance diagram it would seem
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   663
  that two identical copies of each of the locales \isa{partial{\isacharunderscore}order} and \isa{lattice} are imported.  This is not the
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   664
  case!  Inheritance paths with identical morphisms are detected and
27506
c99c72458ec5 updated generated file;
wenzelm
parents: 27080
diff changeset
   665
  the conclusions of the respective locales appear only once.
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   666
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   667
\begin{figure}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   668
\hrule \vspace{2ex}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   669
\begin{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   670
\begin{tikzpicture}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   671
  \node (o) at (0,0) {\isa{partial{\isacharunderscore}order}};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   672
  \node (oh) at (1.5,-2) {\isa{order{\isacharunderscore}preserving}};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   673
  \node (oh1) at (1.5,-0.7) {$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   674
  \node (oh2) at (0,-1.3) {$\scriptscriptstyle \sqsubseteq \mapsto \preceq$};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   675
  \node (l) at (-1.5,-2) {\isa{lattice}};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   676
  \node (lh) at (0,-4) {\isa{lattice{\isacharunderscore}hom}};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   677
  \node (lh1) at (0,-2.7) {$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   678
  \node (lh2) at (-1.5,-3.3) {$\scriptscriptstyle \sqsubseteq \mapsto \preceq$};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   679
  \node (le) at (0,-6) {\isa{lattice{\isacharunderscore}end}};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   680
  \node (le1) at (0,-4.8)
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   681
    [anchor=west]{$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   682
  \node (le2) at (0,-5.2)
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   683
    [anchor=west]{$\scriptscriptstyle \preceq \mapsto \sqsubseteq$};
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   684
  \draw (o) -- (l);
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   685
  \draw[dashed] (oh) -- (lh);
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   686
  \draw (lh) -- (le);
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   687
  \draw (o) .. controls (oh1.south west) .. (oh);
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   688
  \draw (o) .. controls (oh2.north east) .. (oh);
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   689
  \draw (l) .. controls (lh1.south west) .. (lh);
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   690
  \draw (l) .. controls (lh2.north east) .. (lh);
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   691
\end{tikzpicture}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   692
\end{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   693
\hrule
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   694
\caption{Hierarchy of Homomorphism Locales.}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   695
\label{fig:hom}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   696
\end{figure}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   697
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   698
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   699
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   700
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   701
It can be shown easily that a lattice homomorphism is order
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   702
  preserving.  As the final example of this section, a locale
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   703
  interpretation is used to assert this:%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   704
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   705
\isamarkuptrue%
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   706
\ \ \isacommand{sublocale}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   707
\ lattice{\isacharunderscore}hom\ {\isasymsubseteq}\ order{\isacharunderscore}preserving%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   708
\isadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   709
\ %
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   710
\endisadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   711
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   712
\isatagproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   713
\isacommand{proof}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   714
\ unfold{\isacharunderscore}locales\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   715
\ \ \ \ \isacommand{fix}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   716
\ x\ y\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   717
\ \ \ \ \isacommand{assume}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   718
\ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y{\isachardoublequoteclose}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   719
\ \ \ \ \isacommand{then}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   720
\ \isacommand{have}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   721
\ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharparenleft}x\ {\isasymsqunion}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   722
\ {\isacharparenleft}simp\ add{\isacharcolon}\ le{\isachardot}join{\isacharunderscore}connection{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   723
\ \ \ \ \isacommand{then}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   724
\ \isacommand{have}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   725
\ {\isachardoublequoteopen}{\isasymphi}\ y\ {\isacharequal}\ {\isacharparenleft}{\isasymphi}\ x\ {\isasymsqunion}{\isacharprime}\ {\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   726
\ {\isacharparenleft}simp\ add{\isacharcolon}\ hom{\isacharunderscore}join\ {\isacharbrackleft}symmetric{\isacharbrackright}{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   727
\ \ \ \ \isacommand{then}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   728
\ \isacommand{show}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   729
\ {\isachardoublequoteopen}{\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   730
\ {\isacharparenleft}simp\ add{\isacharcolon}\ le{\isacharprime}{\isachardot}join{\isacharunderscore}connection{\isacharparenright}\isanewline
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   731
\ \ \isacommand{qed}\isamarkupfalse%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   732
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   733
\endisatagproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   734
{\isafoldproof}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   735
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   736
\isadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   737
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   738
\endisadelimproof
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   739
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   740
\begin{isamarkuptext}%
30393
aa6f42252bf6 replaced old locale option by proper "text (in locale)";
wenzelm
parents: 29568
diff changeset
   741
Theorems and other declarations --- syntax, in particular --- from
aa6f42252bf6 replaced old locale option by proper "text (in locale)";
wenzelm
parents: 29568
diff changeset
   742
  the locale \isa{order{\isacharunderscore}preserving} are now active in \isa{lattice{\isacharunderscore}hom}, for example
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   743
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   744
  \isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}:
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   745
  \isa{{\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   746
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   747
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   748
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   749
\isamarkupsection{Further Reading%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   750
}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   751
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   752
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   753
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   754
More information on locales and their interpretation is
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   755
  available.  For the locale hierarchy of import and interpretation
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   756
  dependencies see \cite{Ballarin2006a}; interpretations in theories
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   757
  and proofs are covered in \cite{Ballarin2006b}.  In the latter, we
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   758
  show how interpretation in proofs enables to reason about families
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   759
  of algebraic structures, which cannot be expressed with locales
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   760
  directly.
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   761
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   762
  Haftmann and Wenzel \cite{HaftmannWenzel2007} overcome a restriction
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   763
  of axiomatic type classes through a combination with locale
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   764
  interpretation.  The result is a Haskell-style class system with a
30750
3779e2158dad Update explanation of locale expressions to locale reimplementation.
ballarin
parents: 30580
diff changeset
   765
  facility to generate ML and Haskell code.  Classes are sufficient for
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   766
  simple specifications with a single type parameter.  The locales for
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   767
  orders and lattices presented in this tutorial fall into this
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   768
  category.  Order preserving maps, homomorphisms and vector spaces,
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   769
  on the other hand, do not.
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   770
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   771
  The original work of Kamm\"uller on locales \cite{KammullerEtAl1999}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   772
  may be of interest from a historical perspective.  The mathematical
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   773
  background on orders and lattices is taken from Jacobson's textbook
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   774
  on algebra \cite[Chapter~8]{Jacobson1985}.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   775
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   776
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   777
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   778
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   779
\begin{table}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   780
\hrule
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   781
\vspace{2ex}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   782
\begin{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   783
\begin{tabular}{l>$c<$l}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   784
  \multicolumn{3}{l}{Miscellaneous} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   785
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   786
  \textit{attr-name} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   787
  & \textit{name} $|$ \textit{attribute} $|$
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   788
    \textit{name} \textit{attribute} \\
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   789
  \textit{qualifier} & ::=
30751
36a255c2e428 Corrections to locale syntax.
ballarin
parents: 30750
diff changeset
   790
  & \textit{name} [``\textbf{?}'' $|$ ``\textbf{!}''] \\[2ex]
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   791
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   792
  \multicolumn{3}{l}{Context Elements} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   793
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   794
  \textit{fixes} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   795
  & \textit{name} [ ``\textbf{::}'' \textit{type} ]
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   796
    [ ``\textbf{(}'' \textbf{structure} ``\textbf{)}'' $|$
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   797
    \textit{mixfix} ] \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   798
\begin{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   799
  \textit{constrains} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   800
  & \textit{name} ``\textbf{::}'' \textit{type} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   801
\end{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   802
  \textit{assumes} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   803
  & [ \textit{attr-name} ``\textbf{:}'' ] \textit{proposition} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   804
\begin{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   805
  \textit{defines} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   806
  & [ \textit{attr-name} ``\textbf{:}'' ] \textit{proposition} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   807
  \textit{notes} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   808
  & [ \textit{attr-name} ``\textbf{=}'' ]
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   809
    ( \textit{qualified-name} [ \textit{attribute} ] )$^+$ \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   810
\end{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   811
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   812
  \textit{element} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   813
  & \textbf{fixes} \textit{fixes} ( \textbf{and} \textit{fixes} )$^*$ \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   814
\begin{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   815
  & |
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   816
  & \textbf{constrains} \textit{constrains}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   817
    ( \textbf{and} \textit{constrains} )$^*$ \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   818
\end{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   819
  & |
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   820
  & \textbf{assumes} \textit{assumes} ( \textbf{and} \textit{assumes} )$^*$ \\[2ex]
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   821
%\begin{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   822
%  & |
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   823
%  & \textbf{defines} \textit{defines} ( \textbf{and} \textit{defines} )$^*$ \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   824
%  & |
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   825
%  & \textbf{notes} \textit{notes} ( \textbf{and} \textit{notes} )$^*$ \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   826
%\end{comment}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   827
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   828
  \multicolumn{3}{l}{Locale Expressions} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   829
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   830
  \textit{pos-insts} & ::=
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   831
  & ( \textit{term} $|$ ``\textbf{\_}'' )$^*$ \\
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   832
  \textit{named-insts} & ::=
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   833
  & \textbf{where} \textit{name} ``\textbf{=}'' \textit{term}
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   834
  ( \textbf{and} \textit{name} ``\textbf{=}'' \textit{term} )$^*$ \\
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   835
  \textit{instance} & ::=
30751
36a255c2e428 Corrections to locale syntax.
ballarin
parents: 30750
diff changeset
   836
  & [ \textit{qualifier} ``\textbf{:}'' ]
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   837
    \textit{qualified-name} ( \textit{pos-insts} $|$ \textit{named-inst} ) \\
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   838
  \textit{expression}  & ::= 
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   839
  & \textit{instance} ( ``\textbf{+}'' \textit{instance} )$^*$
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   840
    [ \textbf{for} \textit{fixes} ( \textbf{and} \textit{fixes} )$^*$ ] \\[2ex]
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   841
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   842
  \multicolumn{3}{l}{Declaration of Locales} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   843
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   844
  \textit{locale} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   845
  & \textit{element}$^+$ \\
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   846
  & | & \textit{expression} [ ``\textbf{+}'' \textit{element}$^+$ ] \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   847
  \textit{toplevel} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   848
  & \textbf{locale} \textit{name} [ ``\textbf{=}''
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   849
    \textit{locale} ] \\[2ex]
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   850
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   851
  \multicolumn{3}{l}{Interpretation} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   852
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   853
  \textit{equation} & ::= & [ \textit{attr-name} ``\textbf{:}'' ]
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   854
    \textit{prop} \\
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   855
  \textit{equations} & ::= &  \textbf{where} \textit{equation} ( \textbf{and}
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   856
    \textit{equation} )$^*$  \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   857
  \textit{toplevel} & ::=
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   858
  & \textbf{sublocale} \textit{name} ( ``$<$'' $|$
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   859
    ``$\subseteq$'' ) \textit{expression} \textit{proof} \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   860
  & |
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   861
  & \textbf{interpretation}
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   862
    \textit{expression} [ \textit{equations} ] \textit{proof} \\
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   863
  & |
29566
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   864
  & \textbf{interpret}
937baa077df2 Fixed tutorial to compile with new locales; grammar of new locale commands.
ballarin
parents: 28259
diff changeset
   865
    \textit{expression} \textit{proof} \\[2ex]
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   866
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   867
  \multicolumn{3}{l}{Diagnostics} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   868
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   869
  \textit{toplevel} & ::=
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   870
  & \textbf{print\_locale} [ ``\textbf{!}'' ] \textit{locale} \\
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   871
  & | & \textbf{print\_locales} 
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   872
\end{tabular}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   873
\end{center}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   874
\hrule
29567
286c01be90cb Merged, overriding earlier fix.
ballarin
parents: 29297 29566
diff changeset
   875
\caption{Syntax of Locale Commands (abridged).}
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   876
\label{tab:commands}
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   877
\end{table}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   878
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   879
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   880
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   881
\begin{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   882
\textbf{Acknowledgements.}  Alexander Krauss, Tobias Nipkow,
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   883
  Christian Sternagel and Makarius Wenzel have made useful comments on
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   884
  a draft of this document.%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   885
\end{isamarkuptext}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   886
\isamarkuptrue%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   887
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   888
\isadelimtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   889
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   890
\endisadelimtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   891
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   892
\isatagtheory
27080
0ee385433247 updated generated file;
wenzelm
parents: 27079
diff changeset
   893
\isacommand{end}\isamarkupfalse%
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   894
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   895
\endisatagtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   896
{\isafoldtheory}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   897
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   898
\isadelimtheory
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   899
%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   900
\endisadelimtheory
27080
0ee385433247 updated generated file;
wenzelm
parents: 27079
diff changeset
   901
\isanewline
27063
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   902
\end{isabellebody}%
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   903
%%% Local Variables:
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   904
%%% mode: latex
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   905
%%% TeX-master: "root"
d1d35284542f New version covering interpretation.
ballarin
parents:
diff changeset
   906
%%% End: