doc-src/Locales/Locales/document/Examples3.tex
changeset 29297 62e0f892e525
parent 28259 5b2af04ec9fb
child 29567 286c01be90cb
equal deleted inserted replaced
29296:96cf8edb6249 29297:62e0f892e525
    41 %
    41 %
    42 \endisadelimvisible
    42 \endisadelimvisible
    43 %
    43 %
    44 \isatagvisible
    44 \isatagvisible
    45 \isacommand{interpretation}\isamarkupfalse%
    45 \isacommand{interpretation}\isamarkupfalse%
    46 \ nat{\isacharcolon}\ partial{\isacharunderscore}order\ {\isacharbrackleft}{\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\isanewline
    46 \ nat{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
    47 \ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ {\isacharparenleft}op\ {\isasymle}{\isacharparenright}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
    47 \ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ {\isacharparenleft}op\ {\isasymle}{\isacharparenright}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
    48 \isacommand{proof}\isamarkupfalse%
    48 \isacommand{proof}\isamarkupfalse%
    49 \ {\isacharminus}\isanewline
    49 \ {\isacharminus}\isanewline
    50 \ \ \isacommand{show}\isamarkupfalse%
    50 \ \ \isacommand{show}\isamarkupfalse%
    51 \ {\isachardoublequoteopen}partial{\isacharunderscore}order\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
    51 \ {\isachardoublequoteopen}partial{\isacharunderscore}order\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
    52 \ \ \ \ \isacommand{by}\isamarkupfalse%
    52 \ \ \ \ \isacommand{by}\isamarkupfalse%
    53 \ unfold{\isacharunderscore}locales\ auto\isanewline
    53 \ unfold{\isacharunderscore}locales\ auto\isanewline
    54 \ \ \isacommand{then}\isamarkupfalse%
    54 \ \ \isacommand{then}\isamarkupfalse%
    55 \ \isacommand{interpret}\isamarkupfalse%
    55 \ \isacommand{interpret}\isamarkupfalse%
    56 \ nat{\isacharcolon}\ partial{\isacharunderscore}order\ {\isacharbrackleft}{\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ {\isacharbrackleft}nat{\isacharcomma}\ nat{\isacharbrackright}\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\ \isacommand{{\isachardot}}\isamarkupfalse%
    56 \ nat{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ {\isacharbrackleft}nat{\isacharcomma}\ nat{\isacharbrackright}\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
    57 \isanewline
    57 \isanewline
    58 \ \ \isacommand{show}\isamarkupfalse%
    58 \ \ \isacommand{show}\isamarkupfalse%
    59 \ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ {\isacharparenleft}op\ {\isasymle}{\isacharparenright}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
    59 \ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ {\isacharparenleft}op\ {\isasymle}{\isacharparenright}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
    60 \ \ \ \ \isacommand{unfolding}\isamarkupfalse%
    60 \ \ \ \ \isacommand{unfolding}\isamarkupfalse%
    61 \ nat{\isachardot}less{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse%
    61 \ nat{\isachardot}less{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse%
    89 \isamarkuptrue%
    89 \isamarkuptrue%
    90 %
    90 %
    91 \begin{isamarkuptext}%
    91 \begin{isamarkuptext}%
    92 Further interpretations are necessary to reuse theorems from
    92 Further interpretations are necessary to reuse theorems from
    93   the other locales.  In \isa{lattice} the operations \isa{{\isasymsqinter}} and
    93   the other locales.  In \isa{lattice} the operations \isa{{\isasymsqinter}} and
    94   \isa{{\isasymsqunion}} are substituted by \isa{ord{\isacharunderscore}class{\isachardot}min} and
    94   \isa{{\isasymsqunion}} are substituted by \isa{min} and
    95   \isa{ord{\isacharunderscore}class{\isachardot}max}.  The entire proof for the
    95   \isa{max}.  The entire proof for the
    96   interpretation is reproduced in order to give an example of a more
    96   interpretation is reproduced in order to give an example of a more
    97   elaborate interpretation proof.%
    97   elaborate interpretation proof.%
    98 \end{isamarkuptext}%
    98 \end{isamarkuptext}%
    99 \isamarkuptrue%
    99 \isamarkuptrue%
   100 %
   100 %
   102 %
   102 %
   103 \endisadelimvisible
   103 \endisadelimvisible
   104 %
   104 %
   105 \isatagvisible
   105 \isatagvisible
   106 \isacommand{interpretation}\isamarkupfalse%
   106 \isacommand{interpretation}\isamarkupfalse%
   107 \ nat{\isacharcolon}\ lattice\ {\isacharbrackleft}{\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\isanewline
   107 \ nat{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
   108 \ \ \isakeyword{where}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
   108 \ \ \isakeyword{where}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
   109 \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
   109 \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
   110 \isacommand{proof}\isamarkupfalse%
   110 \isacommand{proof}\isamarkupfalse%
   111 \ {\isacharminus}\isanewline
   111 \ {\isacharminus}\isanewline
   112 \ \ \isacommand{show}\isamarkupfalse%
   112 \ \ \isacommand{show}\isamarkupfalse%
   141     situation where the lattice theorems can be used in a convenient way.%
   141     situation where the lattice theorems can be used in a convenient way.%
   142 \end{isamarkuptxt}%
   142 \end{isamarkuptxt}%
   143 \isamarkuptrue%
   143 \isamarkuptrue%
   144 \ \ \isacommand{then}\isamarkupfalse%
   144 \ \ \isacommand{then}\isamarkupfalse%
   145 \ \isacommand{interpret}\isamarkupfalse%
   145 \ \isacommand{interpret}\isamarkupfalse%
   146 \ nat{\isacharcolon}\ lattice\ {\isacharbrackleft}{\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\ \isacommand{{\isachardot}}\isamarkupfalse%
   146 \ nat{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
   147 \isanewline
   147 \isanewline
   148 \ \ \isacommand{show}\isamarkupfalse%
   148 \ \ \isacommand{show}\isamarkupfalse%
   149 \ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
   149 \ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
   150 \ \ \ \ \isacommand{by}\isamarkupfalse%
   150 \ \ \ \ \isacommand{by}\isamarkupfalse%
   151 \ {\isacharparenleft}bestsimp\ simp{\isacharcolon}\ nat{\isachardot}meet{\isacharunderscore}def\ nat{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def{\isacharparenright}\isanewline
   151 \ {\isacharparenleft}bestsimp\ simp{\isacharcolon}\ nat{\isachardot}meet{\isacharunderscore}def\ nat{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def{\isacharparenright}\isanewline
   172 %
   172 %
   173 \endisadelimvisible
   173 \endisadelimvisible
   174 %
   174 %
   175 \isatagvisible
   175 \isatagvisible
   176 \isacommand{interpretation}\isamarkupfalse%
   176 \isacommand{interpretation}\isamarkupfalse%
   177 \ nat{\isacharcolon}\ total{\isacharunderscore}order\ {\isacharbrackleft}{\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\isanewline
   177 \ nat{\isacharcolon}\ total{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
   178 \ \ \isacommand{by}\isamarkupfalse%
   178 \ \ \isacommand{by}\isamarkupfalse%
   179 \ unfold{\isacharunderscore}locales\ arith%
   179 \ unfold{\isacharunderscore}locales\ arith%
   180 \endisatagvisible
   180 \endisatagvisible
   181 {\isafoldvisible}%
   181 {\isafoldvisible}%
   182 %
   182 %
   194 \begin{center}
   194 \begin{center}
   195 \begin{tabular}{l}
   195 \begin{tabular}{l}
   196   \isa{nat{\isachardot}less{\isacharunderscore}def} from locale \isa{partial{\isacharunderscore}order}: \\
   196   \isa{nat{\isachardot}less{\isacharunderscore}def} from locale \isa{partial{\isacharunderscore}order}: \\
   197   \quad \isa{{\isacharparenleft}{\isacharquery}x\ {\isacharless}\ {\isacharquery}y{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}{\isacharquery}x\ {\isasymle}\ {\isacharquery}y\ {\isasymand}\ {\isacharquery}x\ {\isasymnoteq}\ {\isacharquery}y{\isacharparenright}} \\
   197   \quad \isa{{\isacharparenleft}{\isacharquery}x\ {\isacharless}\ {\isacharquery}y{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}{\isacharquery}x\ {\isasymle}\ {\isacharquery}y\ {\isasymand}\ {\isacharquery}x\ {\isasymnoteq}\ {\isacharquery}y{\isacharparenright}} \\
   198   \isa{nat{\isachardot}meet{\isacharunderscore}left} from locale \isa{lattice}: \\
   198   \isa{nat{\isachardot}meet{\isacharunderscore}left} from locale \isa{lattice}: \\
   199   \quad \isa{ord{\isacharunderscore}class{\isachardot}min\ {\isacharquery}x\ {\isacharquery}y\ {\isasymle}\ {\isacharquery}x} \\
   199   \quad \isa{min\ {\isacharquery}x\ {\isacharquery}y\ {\isasymle}\ {\isacharquery}x} \\
   200   \isa{nat{\isachardot}join{\isacharunderscore}distr} from locale \isa{distrib{\isacharunderscore}lattice}: \\
   200   \isa{nat{\isachardot}join{\isacharunderscore}distr} from locale \isa{distrib{\isacharunderscore}lattice}: \\
   201   \quad \isa{ord{\isacharunderscore}class{\isachardot}max\ {\isacharquery}x\ {\isacharparenleft}ord{\isacharunderscore}class{\isachardot}min\ {\isacharquery}y\ {\isacharquery}z{\isacharparenright}\ {\isacharequal}\ ord{\isacharunderscore}class{\isachardot}min\ {\isacharparenleft}ord{\isacharunderscore}class{\isachardot}max\ {\isacharquery}x\ {\isacharquery}y{\isacharparenright}\ {\isacharparenleft}ord{\isacharunderscore}class{\isachardot}max\ {\isacharquery}x\ {\isacharquery}z{\isacharparenright}} \\
   201   \quad \isa{lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharquery}x\ {\isacharparenleft}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharquery}y\ {\isacharquery}z{\isacharparenright}\ {\isacharequal}\ lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharquery}x\ {\isacharquery}y{\isacharparenright}\ {\isacharparenleft}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharquery}x\ {\isacharquery}z{\isacharparenright}} \\
   202   \isa{nat{\isachardot}less{\isacharunderscore}total} from locale \isa{total{\isacharunderscore}order}: \\
   202   \isa{nat{\isachardot}less{\isacharunderscore}total} from locale \isa{total{\isacharunderscore}order}: \\
   203   \quad \isa{{\isacharquery}x\ {\isacharless}\ {\isacharquery}y\ {\isasymor}\ {\isacharquery}x\ {\isacharequal}\ {\isacharquery}y\ {\isasymor}\ {\isacharquery}y\ {\isacharless}\ {\isacharquery}x}
   203   \quad \isa{partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharquery}x\ {\isacharquery}y\ {\isasymor}\ {\isacharquery}x\ {\isacharequal}\ {\isacharquery}y\ {\isasymor}\ partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharquery}y\ {\isacharquery}x}
   204 \end{tabular}
   204 \end{tabular}
   205 \end{center}
   205 \end{center}
   206 \hrule
   206 \hrule
   207 \caption{Interpreted theorems for \isa{{\isasymle}} on the natural numbers.}
   207 \caption{Interpreted theorems for \isa{{\isasymle}} on the natural numbers.}
   208 \label{tab:nat-lattice}
   208 \label{tab:nat-lattice}
   242   but not a total order.  Interpretation again proceeds
   242   but not a total order.  Interpretation again proceeds
   243   incrementally.%
   243   incrementally.%
   244 \end{isamarkuptext}%
   244 \end{isamarkuptext}%
   245 \isamarkuptrue%
   245 \isamarkuptrue%
   246 \isacommand{interpretation}\isamarkupfalse%
   246 \isacommand{interpretation}\isamarkupfalse%
   247 \ nat{\isacharunderscore}dvd{\isacharcolon}\ partial{\isacharunderscore}order\ {\isacharbrackleft}{\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\isanewline
   247 \ nat{\isacharunderscore}dvd{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
   248 \ \ \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
   248 \ \ \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
   249 %
   249 %
   250 \isadelimproof
   250 \isadelimproof
   251 %
   251 %
   252 \endisadelimproof
   252 \endisadelimproof
   258 \ {\isachardoublequoteopen}partial{\isacharunderscore}order\ {\isacharparenleft}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
   258 \ {\isachardoublequoteopen}partial{\isacharunderscore}order\ {\isacharparenleft}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
   259 \ \ \ \ \isacommand{by}\isamarkupfalse%
   259 \ \ \ \ \isacommand{by}\isamarkupfalse%
   260 \ unfold{\isacharunderscore}locales\ {\isacharparenleft}auto\ simp{\isacharcolon}\ dvd{\isacharunderscore}def{\isacharparenright}\isanewline
   260 \ unfold{\isacharunderscore}locales\ {\isacharparenleft}auto\ simp{\isacharcolon}\ dvd{\isacharunderscore}def{\isacharparenright}\isanewline
   261 \ \ \isacommand{then}\isamarkupfalse%
   261 \ \ \isacommand{then}\isamarkupfalse%
   262 \ \isacommand{interpret}\isamarkupfalse%
   262 \ \isacommand{interpret}\isamarkupfalse%
   263 \ nat{\isacharunderscore}dvd{\isacharcolon}\ partial{\isacharunderscore}order\ {\isacharbrackleft}{\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\ \isacommand{{\isachardot}}\isamarkupfalse%
   263 \ nat{\isacharunderscore}dvd{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
   264 \isanewline
   264 \isanewline
   265 \ \ \isacommand{show}\isamarkupfalse%
   265 \ \ \isacommand{show}\isamarkupfalse%
   266 \ {\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
   266 \ {\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
   267 \ \ \ \ \isacommand{apply}\isamarkupfalse%
   267 \ \ \ \ \isacommand{apply}\isamarkupfalse%
   268 \ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}less{\isacharunderscore}def{\isacharparenright}\isanewline
   268 \ {\isacharparenleft}unfold\ nat{\isacharunderscore}dvd{\isachardot}less{\isacharunderscore}def{\isacharparenright}\isanewline
   283 Note that there is no symbol for strict divisibility.  Instead,
   283 Note that there is no symbol for strict divisibility.  Instead,
   284   interpretation substitutes \isa{x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y}.%
   284   interpretation substitutes \isa{x\ dvd\ y\ {\isasymand}\ x\ {\isasymnoteq}\ y}.%
   285 \end{isamarkuptext}%
   285 \end{isamarkuptext}%
   286 \isamarkuptrue%
   286 \isamarkuptrue%
   287 \isacommand{interpretation}\isamarkupfalse%
   287 \isacommand{interpretation}\isamarkupfalse%
   288 \ nat{\isacharunderscore}dvd{\isacharcolon}\ lattice\ {\isacharbrackleft}{\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\isanewline
   288 \ nat{\isacharunderscore}dvd{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
   289 \ \ \isakeyword{where}\ nat{\isacharunderscore}dvd{\isacharunderscore}meet{\isacharunderscore}eq{\isacharcolon}\isanewline
   289 \ \ \isakeyword{where}\ nat{\isacharunderscore}dvd{\isacharunderscore}meet{\isacharunderscore}eq{\isacharcolon}\isanewline
   290 \ \ \ \ \ \ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ dvd\ {\isacharequal}\ gcd{\isachardoublequoteclose}\isanewline
   290 \ \ \ \ \ \ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ dvd\ {\isacharequal}\ gcd{\isachardoublequoteclose}\isanewline
   291 \ \ \ \ \isakeyword{and}\ nat{\isacharunderscore}dvd{\isacharunderscore}join{\isacharunderscore}eq{\isacharcolon}\isanewline
   291 \ \ \ \ \isakeyword{and}\ nat{\isacharunderscore}dvd{\isacharunderscore}join{\isacharunderscore}eq{\isacharcolon}\isanewline
   292 \ \ \ \ \ \ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ dvd\ {\isacharequal}\ lcm{\isachardoublequoteclose}\isanewline
   292 \ \ \ \ \ \ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ dvd\ {\isacharequal}\ lcm{\isachardoublequoteclose}\isanewline
   293 %
   293 %
   314 \ {\isacharparenleft}auto\ intro{\isacharcolon}\ lcm{\isacharunderscore}dvd{\isadigit{1}}\ lcm{\isacharunderscore}dvd{\isadigit{2}}\ lcm{\isacharunderscore}least{\isacharparenright}\isanewline
   314 \ {\isacharparenleft}auto\ intro{\isacharcolon}\ lcm{\isacharunderscore}dvd{\isadigit{1}}\ lcm{\isacharunderscore}dvd{\isadigit{2}}\ lcm{\isacharunderscore}least{\isacharparenright}\isanewline
   315 \ \ \ \ \isacommand{done}\isamarkupfalse%
   315 \ \ \ \ \isacommand{done}\isamarkupfalse%
   316 \isanewline
   316 \isanewline
   317 \ \ \isacommand{then}\isamarkupfalse%
   317 \ \ \isacommand{then}\isamarkupfalse%
   318 \ \isacommand{interpret}\isamarkupfalse%
   318 \ \isacommand{interpret}\isamarkupfalse%
   319 \ nat{\isacharunderscore}dvd{\isacharcolon}\ lattice\ {\isacharbrackleft}{\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\ \isacommand{{\isachardot}}\isamarkupfalse%
   319 \ nat{\isacharunderscore}dvd{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
   320 \isanewline
   320 \isanewline
   321 \ \ \isacommand{show}\isamarkupfalse%
   321 \ \ \isacommand{show}\isamarkupfalse%
   322 \ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ dvd\ {\isacharequal}\ gcd{\isachardoublequoteclose}\isanewline
   322 \ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ dvd\ {\isacharequal}\ gcd{\isachardoublequoteclose}\isanewline
   323 \ \ \ \ \isacommand{apply}\isamarkupfalse%
   323 \ \ \ \ \isacommand{apply}\isamarkupfalse%
   324 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}\ expand{\isacharunderscore}fun{\isacharunderscore}eq{\isacharparenright}\isanewline
   324 \ {\isacharparenleft}auto\ simp\ add{\isacharcolon}\ expand{\isacharunderscore}fun{\isacharunderscore}eq{\isacharparenright}\isanewline
   388 \endisadelimvisible
   388 \endisadelimvisible
   389 %
   389 %
   390 \isatagvisible
   390 \isatagvisible
   391 \isacommand{interpretation}\isamarkupfalse%
   391 \isacommand{interpretation}\isamarkupfalse%
   392 \ nat{\isacharunderscore}dvd{\isacharcolon}\isanewline
   392 \ nat{\isacharunderscore}dvd{\isacharcolon}\isanewline
   393 \ \ distrib{\isacharunderscore}lattice\ {\isacharbrackleft}{\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}{\isacharbrackright}\isanewline
   393 \ \ distrib{\isacharunderscore}lattice\ {\isachardoublequoteopen}op\ dvd\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
   394 \ \ \isacommand{apply}\isamarkupfalse%
   394 \ \ \isacommand{apply}\isamarkupfalse%
   395 \ unfold{\isacharunderscore}locales%
   395 \ unfold{\isacharunderscore}locales%
   396 \begin{isamarkuptxt}%
   396 \begin{isamarkuptxt}%
   397 \begin{isabelle}%
   397 \begin{isabelle}%
   398 \ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y\ z{\isachardot}\isanewline
   398 \ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y\ z{\isachardot}\isanewline
   432   \isa{nat{\isacharunderscore}dvd{\isachardot}less{\isacharunderscore}def} from locale \isa{partial{\isacharunderscore}order}: \\
   432   \isa{nat{\isacharunderscore}dvd{\isachardot}less{\isacharunderscore}def} from locale \isa{partial{\isacharunderscore}order}: \\
   433   \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}} \\
   433   \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}} \\
   434   \isa{nat{\isacharunderscore}dvd{\isachardot}meet{\isacharunderscore}left} from locale \isa{lattice}: \\
   434   \isa{nat{\isacharunderscore}dvd{\isachardot}meet{\isacharunderscore}left} from locale \isa{lattice}: \\
   435   \quad \isa{gcd\ {\isacharquery}x\ {\isacharquery}y\ dvd\ {\isacharquery}x} \\
   435   \quad \isa{gcd\ {\isacharquery}x\ {\isacharquery}y\ dvd\ {\isacharquery}x} \\
   436   \isa{nat{\isacharunderscore}dvd{\isachardot}join{\isacharunderscore}distr} from locale \isa{distrib{\isacharunderscore}lattice}: \\
   436   \isa{nat{\isacharunderscore}dvd{\isachardot}join{\isacharunderscore}distr} from locale \isa{distrib{\isacharunderscore}lattice}: \\
   437   \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}} \\
   437   \quad \isa{lattice{\isachardot}join\ op\ dvd\ {\isacharquery}x\ {\isacharparenleft}lattice{\isachardot}meet\ op\ dvd\ {\isacharquery}y\ {\isacharquery}z{\isacharparenright}\ {\isacharequal}\ lattice{\isachardot}meet\ op\ dvd\ {\isacharparenleft}lattice{\isachardot}join\ op\ dvd\ {\isacharquery}x\ {\isacharquery}y{\isacharparenright}\ {\isacharparenleft}lattice{\isachardot}join\ op\ dvd\ {\isacharquery}x\ {\isacharquery}z{\isacharparenright}} \\
   438 \end{tabular}
   438 \end{tabular}
   439 \end{center}
   439 \end{center}
   440 \hrule
   440 \hrule
   441 \caption{Interpreted theorems for \isa{dvd} on the natural numbers.}
   441 \caption{Interpreted theorems for \isa{dvd} on the natural numbers.}
   442 \label{tab:nat-dvd-lattice}
   442 \label{tab:nat-dvd-lattice}
   474   preserving maps can be declared in the following way.%
   474   preserving maps can be declared in the following way.%
   475 \end{isamarkuptext}%
   475 \end{isamarkuptext}%
   476 \isamarkuptrue%
   476 \isamarkuptrue%
   477 \ \ \isacommand{locale}\isamarkupfalse%
   477 \ \ \isacommand{locale}\isamarkupfalse%
   478 \ order{\isacharunderscore}preserving\ {\isacharequal}\isanewline
   478 \ order{\isacharunderscore}preserving\ {\isacharequal}\isanewline
   479 \ \ \ \ partial{\isacharunderscore}order\ {\isacharplus}\ partial{\isacharunderscore}order\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline
   479 \ \ \ \ partial{\isacharunderscore}order\ {\isacharplus}\ po{\isacharprime}{\isacharcolon}\ partial{\isacharunderscore}order\ le{\isacharprime}\ \isakeyword{for}\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline
   480 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b{\isachardoublequoteclose}\isanewline
   480 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b{\isachardoublequoteclose}\isanewline
   481 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}le{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y\ {\isasymLongrightarrow}\ {\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}%
   481 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}le{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y\ {\isasymLongrightarrow}\ {\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}%
   482 \begin{isamarkuptext}%
   482 \begin{isamarkuptext}%
   483 The second line contains the expression, which is the
   483 The second line contains the expression, which is the
   484   merge of two partial order locales.  The parameter of the second one
   484   merge of two partial order locales.  The parameter of the second one
   503   right locale.%
   503   right locale.%
   504 \end{isamarkuptext}%
   504 \end{isamarkuptext}%
   505 \isamarkuptrue%
   505 \isamarkuptrue%
   506 %
   506 %
   507 \begin{isamarkuptext}%
   507 \begin{isamarkuptext}%
   508 The locale \isa{order{\isacharunderscore}preserving} contains theorems for both
   508 % FIXME needs update
       
   509   The locale \isa{order{\isacharunderscore}preserving} contains theorems for both
   509   orders \isa{{\isasymsqsubseteq}} and \isa{{\isasympreceq}}.  How can one refer to a theorem for
   510   orders \isa{{\isasymsqsubseteq}} and \isa{{\isasympreceq}}.  How can one refer to a theorem for
   510   a particular order, \isa{{\isasymsqsubseteq}} or \isa{{\isasympreceq}}?  Names in locales are
   511   a particular order, \isa{{\isasymsqsubseteq}} or \isa{{\isasympreceq}}?  Names in locales are
   511   qualified by the locale parameters.  More precisely, a name is
   512   qualified by the locale parameters.  More precisely, a name is
   512   qualified by the parameters of the locale in which its declaration
   513   qualified by the parameters of the locale in which its declaration
   513   occurs.  Here are examples:%
   514   occurs.  Here are examples:%
   527 \isadeliminvisible
   528 \isadeliminvisible
   528 %
   529 %
   529 \endisadeliminvisible
   530 \endisadeliminvisible
   530 %
   531 %
   531 \begin{isamarkuptext}%
   532 \begin{isamarkuptext}%
   532 \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}
   533 % FIXME needs update?
   533 
   534   \isa{less{\isacharunderscore}le{\isacharunderscore}trans}: \isa{{\isasymlbrakk}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}z}
   534   \isa{le{\isacharunderscore}le{\isacharprime}{\isacharunderscore}{\isasymphi}{\isachardot}hom{\isacharunderscore}le}: \isa{{\isacharquery}x\ {\isasymsqsubseteq}\ {\isacharquery}y\ {\isasymLongrightarrow}\ {\isasymphi}\ {\isacharquery}x\ {\isasympreceq}\ {\isasymphi}\ {\isacharquery}y}%
   535 
       
   536   \isa{hom{\isacharunderscore}le}: \isa{{\isacharquery}x\ {\isasymsqsubseteq}\ {\isacharquery}y\ {\isasymLongrightarrow}\ {\isasymphi}\ {\isacharquery}x\ {\isasympreceq}\ {\isasymphi}\ {\isacharquery}y}%
   535 \end{isamarkuptext}%
   537 \end{isamarkuptext}%
   536 \isamarkuptrue%
   538 \isamarkuptrue%
   537 %
   539 %
   538 \begin{isamarkuptext}%
   540 \begin{isamarkuptext}%
   539 When renaming a locale, the morphism is also applied
   541 When renaming a locale, the morphism is also applied
   540   to the qualifiers.  Hence theorems for the partial order \isa{{\isasympreceq}}
   542   to the qualifiers.  Hence theorems for the partial order \isa{{\isasympreceq}}
   541   are qualified by \isa{le{\isacharprime}}.  For example, \isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}: \begin{isabelle}%
   543   are qualified by \isa{le{\isacharprime}}.  For example, \isa{po{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}: \begin{isabelle}%
   542 \ \ {\isasymlbrakk}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\isanewline
   544 \ \ {\isasymlbrakk}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\isanewline
   543 \isaindent{\ \ }{\isasymLongrightarrow}\ partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}z%
   545 \isaindent{\ \ }{\isasymLongrightarrow}\ partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}z%
   544 \end{isabelle}%
   546 \end{isabelle}%
   545 \end{isamarkuptext}%
   547 \end{isamarkuptext}%
   546 \isamarkuptrue%
   548 \isamarkuptrue%
   558 \isadeliminvisible
   560 \isadeliminvisible
   559 %
   561 %
   560 \endisadeliminvisible
   562 \endisadeliminvisible
   561 %
   563 %
   562 \begin{isamarkuptext}%
   564 \begin{isamarkuptext}%
   563 This example reveals that there is no infix syntax for the strict
   565 % FIXME needs update?
       
   566   This example reveals that there is no infix syntax for the strict
   564   version of \isa{{\isasympreceq}}!  This can, of course, not be introduced
   567   version of \isa{{\isasympreceq}}!  This can, of course, not be introduced
   565   automatically, but it can be declared manually through an abbreviation.%
   568   automatically, but it can be declared manually through an abbreviation.%
   566 \end{isamarkuptext}%
   569 \end{isamarkuptext}%
   567 \isamarkuptrue%
   570 \isamarkuptrue%
   568 \ \ \isacommand{abbreviation}\isamarkupfalse%
   571 \ \ \isacommand{abbreviation}\isamarkupfalse%
   587 Two more locales illustrate working with locale expressions.
   590 Two more locales illustrate working with locale expressions.
   588   A map \isa{{\isasymphi}} is a lattice homomorphism if it preserves meet and join.%
   591   A map \isa{{\isasymphi}} is a lattice homomorphism if it preserves meet and join.%
   589 \end{isamarkuptext}%
   592 \end{isamarkuptext}%
   590 \isamarkuptrue%
   593 \isamarkuptrue%
   591 \ \ \isacommand{locale}\isamarkupfalse%
   594 \ \ \isacommand{locale}\isamarkupfalse%
   592 \ lattice{\isacharunderscore}hom\ {\isacharequal}\ lattice\ {\isacharplus}\ lattice\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline
   595 \ lattice{\isacharunderscore}hom\ {\isacharequal}\ lattice\ {\isacharplus}\ lat{\isacharprime}{\isacharbang}{\isacharcolon}\ lattice\ le{\isacharprime}\ \isakeyword{for}\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline
   593 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\isanewline
   596 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\isanewline
   594 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}meet{\isacharcolon}\isanewline
   597 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}meet{\isacharcolon}\isanewline
   595 \ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}lattice{\isachardot}meet\ le\ x\ y{\isacharparenright}\ {\isacharequal}\ lattice{\isachardot}meet\ le{\isacharprime}\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
   598 \ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}lattice{\isachardot}meet\ le\ x\ y{\isacharparenright}\ {\isacharequal}\ lattice{\isachardot}meet\ le{\isacharprime}\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
   596 \ \ \ \ \ \ \isakeyword{and}\ hom{\isacharunderscore}join{\isacharcolon}\isanewline
   599 \ \ \ \ \ \ \isakeyword{and}\ hom{\isacharunderscore}join{\isacharcolon}\isanewline
   597 \ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}lattice{\isachardot}join\ le\ x\ y{\isacharparenright}\ {\isacharequal}\ lattice{\isachardot}join\ le{\isacharprime}\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
   600 \ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}lattice{\isachardot}join\ le\ x\ y{\isacharparenright}\ {\isacharequal}\ lattice{\isachardot}join\ le{\isacharprime}\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
   598 \isanewline
   601 \isanewline
   599 \ \ \isacommand{abbreviation}\isamarkupfalse%
   602 \ \ \isacommand{abbreviation}\isamarkupfalse%
   600 \ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline
   603 \ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline
   601 \ \ \ \ 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
   604 \ \ \ \ meet{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqinter}{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}meet{\isacharprime}\ {\isasymequiv}\ lat{\isacharprime}{\isachardot}meet{\isachardoublequoteclose}\isanewline
   602 \ \ \isacommand{abbreviation}\isamarkupfalse%
   605 \ \ \isacommand{abbreviation}\isamarkupfalse%
   603 \ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline
   606 \ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline
   604 \ \ \ \ 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}%
   607 \ \ \ \ join{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqunion}{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}join{\isacharprime}\ {\isasymequiv}\ lat{\isacharprime}{\isachardot}join{\isachardoublequoteclose}%
   605 \begin{isamarkuptext}%
   608 \begin{isamarkuptext}%
   606 A homomorphism is an endomorphism if both orders coincide.%
   609 A homomorphism is an endomorphism if both orders coincide.%
   607 \end{isamarkuptext}%
   610 \end{isamarkuptext}%
   608 \isamarkuptrue%
   611 \isamarkuptrue%
   609 \ \ \isacommand{locale}\isamarkupfalse%
   612 \ \ \isacommand{locale}\isamarkupfalse%
   610 \ lattice{\isacharunderscore}end\ {\isacharequal}\isanewline
   613 \ lattice{\isacharunderscore}end\ {\isacharequal}\isanewline
   611 \ \ \ \ lattice{\isacharunderscore}hom\ le\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqsubseteq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ le\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqsubseteq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}%
   614 \ \ \ \ lattice{\isacharunderscore}hom\ le\ le\ \isakeyword{for}\ le\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqsubseteq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}%
   612 \begin{isamarkuptext}%
   615 \begin{isamarkuptext}%
   613 The inheritance diagram of the situation we have now is shown
   616 The inheritance diagram of the situation we have now is shown
   614   in Figure~\ref{fig:hom}, where the dashed line depicts an
   617   in Figure~\ref{fig:hom}, where the dashed line depicts an
   615   interpretation which is introduced below.  Renamings are
   618   interpretation which is introduced below.  Renamings are
   616   indicated by $\sqsubseteq \mapsto \preceq$ etc.  The expression
   619   indicated by $\sqsubseteq \mapsto \preceq$ etc.  The expression
   657 It can be shown easily that a lattice homomorphism is order
   660 It can be shown easily that a lattice homomorphism is order
   658   preserving.  As the final example of this section, a locale
   661   preserving.  As the final example of this section, a locale
   659   interpretation is used to assert this.%
   662   interpretation is used to assert this.%
   660 \end{isamarkuptext}%
   663 \end{isamarkuptext}%
   661 \isamarkuptrue%
   664 \isamarkuptrue%
   662 \ \ \isacommand{interpretation}\isamarkupfalse%
   665 \ \ \isacommand{sublocale}\isamarkupfalse%
   663 \ lattice{\isacharunderscore}hom\ {\isasymsubseteq}\ order{\isacharunderscore}preserving%
   666 \ lattice{\isacharunderscore}hom\ {\isasymsubseteq}\ order{\isacharunderscore}preserving%
   664 \isadelimproof
   667 \isadelimproof
   665 \ %
   668 \ %
   666 \endisadelimproof
   669 \endisadelimproof
   667 %
   670 %
   673 \ \ \ \ \isacommand{assume}\isamarkupfalse%
   676 \ \ \ \ \isacommand{assume}\isamarkupfalse%
   674 \ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y{\isachardoublequoteclose}\isanewline
   677 \ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y{\isachardoublequoteclose}\isanewline
   675 \ \ \ \ \isacommand{then}\isamarkupfalse%
   678 \ \ \ \ \isacommand{then}\isamarkupfalse%
   676 \ \isacommand{have}\isamarkupfalse%
   679 \ \isacommand{have}\isamarkupfalse%
   677 \ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharparenleft}x\ {\isasymsqunion}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   680 \ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharparenleft}x\ {\isasymsqunion}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   678 \ {\isacharparenleft}simp\ add{\isacharcolon}\ le{\isachardot}join{\isacharunderscore}connection{\isacharparenright}\isanewline
   681 \ {\isacharparenleft}simp\ add{\isacharcolon}\ join{\isacharunderscore}connection{\isacharparenright}\isanewline
   679 \ \ \ \ \isacommand{then}\isamarkupfalse%
   682 \ \ \ \ \isacommand{then}\isamarkupfalse%
   680 \ \isacommand{have}\isamarkupfalse%
   683 \ \isacommand{have}\isamarkupfalse%
   681 \ {\isachardoublequoteopen}{\isasymphi}\ y\ {\isacharequal}\ {\isacharparenleft}{\isasymphi}\ x\ {\isasymsqunion}{\isacharprime}\ {\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   684 \ {\isachardoublequoteopen}{\isasymphi}\ y\ {\isacharequal}\ {\isacharparenleft}{\isasymphi}\ x\ {\isasymsqunion}{\isacharprime}\ {\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   682 \ {\isacharparenleft}simp\ add{\isacharcolon}\ hom{\isacharunderscore}join\ {\isacharbrackleft}symmetric{\isacharbrackright}{\isacharparenright}\isanewline
   685 \ {\isacharparenleft}simp\ add{\isacharcolon}\ hom{\isacharunderscore}join\ {\isacharbrackleft}symmetric{\isacharbrackright}{\isacharparenright}\isanewline
   683 \ \ \ \ \isacommand{then}\isamarkupfalse%
   686 \ \ \ \ \isacommand{then}\isamarkupfalse%
   684 \ \isacommand{show}\isamarkupfalse%
   687 \ \isacommand{show}\isamarkupfalse%
   685 \ {\isachardoublequoteopen}{\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   688 \ {\isachardoublequoteopen}{\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   686 \ {\isacharparenleft}simp\ add{\isacharcolon}\ le{\isacharprime}{\isachardot}join{\isacharunderscore}connection{\isacharparenright}\isanewline
   689 \ {\isacharparenleft}simp\ add{\isacharcolon}\ lat{\isacharprime}{\isachardot}join{\isacharunderscore}connection{\isacharparenright}\isanewline
   687 \ \ \isacommand{qed}\isamarkupfalse%
   690 \ \ \isacommand{qed}\isamarkupfalse%
   688 %
   691 %
   689 \endisatagproof
   692 \endisatagproof
   690 {\isafoldproof}%
   693 {\isafoldproof}%
   691 %
   694 %
   695 %
   698 %
   696 \begin{isamarkuptext}%
   699 \begin{isamarkuptext}%
   697 Theorems and other declarations --- syntax, in particular ---
   700 Theorems and other declarations --- syntax, in particular ---
   698   from the locale \isa{order{\isacharunderscore}preserving} are now active in \isa{lattice{\isacharunderscore}hom}, for example
   701   from the locale \isa{order{\isacharunderscore}preserving} are now active in \isa{lattice{\isacharunderscore}hom}, for example
   699 
   702 
   700   \isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}:
   703   \isa{lat{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}:
   701   \isa{{\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z}%
   704   \isa{{\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z}%
   702 \end{isamarkuptext}%
   705 \end{isamarkuptext}%
   703 \isamarkuptrue%
   706 \isamarkuptrue%
   704 %
   707 %
   705 \isamarkupsection{Further Reading%
   708 \isamarkupsection{Further Reading%