doc-src/Locales/Locales/document/Examples3.tex
changeset 40406 313a24b66a8d
parent 37206 7f2a6f3143ad
child 43543 eb8b4851b039
equal deleted inserted replaced
40405:42671298f037 40406:313a24b66a8d
    27   \label{sec:local-interpretation}%
    27   \label{sec:local-interpretation}%
    28 }
    28 }
    29 \isamarkuptrue%
    29 \isamarkuptrue%
    30 %
    30 %
    31 \begin{isamarkuptext}%
    31 \begin{isamarkuptext}%
    32 In the above example, the fact that \isa{op\ {\isasymle}} is a partial
    32 In the above example, the fact that \isa{op\ {\isaliteral{5C3C6C653E}{\isasymle}}} is a partial
    33   order for the integers was used in the second goal to
    33   order for the integers was used in the second goal to
    34   discharge the premise in the definition of \isa{op\ {\isasymsqsubset}}.  In
    34   discharge the premise in the definition of \isa{op\ {\isaliteral{5C3C73717375627365743E}{\isasymsqsubset}}}.  In
    35   general, proofs of the equations not only may involve definitions
    35   general, proofs of the equations not only may involve definitions
    36   from the interpreted locale but arbitrarily complex arguments in the
    36   from the interpreted locale but arbitrarily complex arguments in the
    37   context of the locale.  Therefore is would be convenient to have the
    37   context of the locale.  Therefore is would be convenient to have the
    38   interpreted locale conclusions temporary available in the proof.
    38   interpreted locale conclusions temporary available in the proof.
    39   This can be achieved by a locale interpretation in the proof body.
    39   This can be achieved by a locale interpretation in the proof body.
    46 \ \ %
    46 \ \ %
    47 \endisadelimvisible
    47 \endisadelimvisible
    48 %
    48 %
    49 \isatagvisible
    49 \isatagvisible
    50 \isacommand{interpretation}\isamarkupfalse%
    50 \isacommand{interpretation}\isamarkupfalse%
    51 \ int{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ int\ {\isasymRightarrow}\ int\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
    51 \ int{\isaliteral{3A}{\isacharcolon}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
    52 \ \ \ \ \isakeyword{where}\ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}int{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
    52 \ \ \ \ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}less\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}int{\isaliteral{29}{\isacharparenright}}\ y\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{3C}{\isacharless}}\ y{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
    53 \ \ \isacommand{proof}\isamarkupfalse%
    53 \ \ \isacommand{proof}\isamarkupfalse%
    54 \ {\isacharminus}\isanewline
    54 \ {\isaliteral{2D}{\isacharminus}}\isanewline
    55 \ \ \ \ \isacommand{show}\isamarkupfalse%
    55 \ \ \ \ \isacommand{show}\isamarkupfalse%
    56 \ {\isachardoublequoteopen}partial{\isacharunderscore}order\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ int\ {\isasymRightarrow}\ int\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline
    56 \ {\isaliteral{22}{\isachardoublequoteopen}}partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{28}{\isacharparenleft}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
    57 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
    57 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
    58 \ unfold{\isacharunderscore}locales\ auto\isanewline
    58 \ unfold{\isaliteral{5F}{\isacharunderscore}}locales\ auto\isanewline
    59 \ \ \ \ \isacommand{then}\isamarkupfalse%
    59 \ \ \ \ \isacommand{then}\isamarkupfalse%
    60 \ \isacommand{interpret}\isamarkupfalse%
    60 \ \isacommand{interpret}\isamarkupfalse%
    61 \ int{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ {\isacharbrackleft}int{\isacharcomma}\ int{\isacharbrackright}\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
    61 \ int{\isaliteral{3A}{\isacharcolon}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{5B}{\isacharbrackleft}}int{\isaliteral{2C}{\isacharcomma}}\ int{\isaliteral{5D}{\isacharbrackright}}\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
    62 \isanewline
    62 \isanewline
    63 \ \ \ \ \isacommand{show}\isamarkupfalse%
    63 \ \ \ \ \isacommand{show}\isamarkupfalse%
    64 \ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}int{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
    64 \ {\isaliteral{22}{\isachardoublequoteopen}}partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}less\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}int{\isaliteral{29}{\isacharparenright}}\ y\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{3C}{\isacharless}}\ y{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
    65 \ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse%
    65 \ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse%
    66 \ int{\isachardot}less{\isacharunderscore}def\ \isacommand{by}\isamarkupfalse%
    66 \ int{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}def\ \isacommand{by}\isamarkupfalse%
    67 \ auto\isanewline
    67 \ auto\isanewline
    68 \ \ \isacommand{qed}\isamarkupfalse%
    68 \ \ \isacommand{qed}\isamarkupfalse%
    69 %
    69 %
    70 \endisatagvisible
    70 \endisatagvisible
    71 {\isafoldvisible}%
    71 {\isafoldvisible}%
    77 \begin{isamarkuptext}%
    77 \begin{isamarkuptext}%
    78 The inner interpretation is immediate from the preceding fact
    78 The inner interpretation is immediate from the preceding fact
    79   and proved by assumption (Isar short hand ``.'').  It enriches the
    79   and proved by assumption (Isar short hand ``.'').  It enriches the
    80   local proof context by the theorems
    80   local proof context by the theorems
    81   also obtained in the interpretation from Section~\ref{sec:po-first},
    81   also obtained in the interpretation from Section~\ref{sec:po-first},
    82   and \isa{int{\isachardot}less{\isacharunderscore}def} may directly be used to unfold the
    82   and \isa{int{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}def} may directly be used to unfold the
    83   definition.  Theorems from the local interpretation disappear after
    83   definition.  Theorems from the local interpretation disappear after
    84   leaving the proof context --- that is, after the succeeding
    84   leaving the proof context --- that is, after the succeeding
    85   \isakeyword{next} or \isakeyword{qed} statement.%
    85   \isakeyword{next} or \isakeyword{qed} statement.%
    86 \end{isamarkuptext}%
    86 \end{isamarkuptext}%
    87 \isamarkuptrue%
    87 \isamarkuptrue%
    90 }
    90 }
    91 \isamarkuptrue%
    91 \isamarkuptrue%
    92 %
    92 %
    93 \begin{isamarkuptext}%
    93 \begin{isamarkuptext}%
    94 Further interpretations are necessary for
    94 Further interpretations are necessary for
    95   the other locales.  In \isa{lattice} the operations~\isa{{\isasymsqinter}}
    95   the other locales.  In \isa{lattice} the operations~\isa{{\isaliteral{5C3C7371696E7465723E}{\isasymsqinter}}}
    96   and~\isa{{\isasymsqunion}} are substituted by \isa{min}
    96   and~\isa{{\isaliteral{5C3C7371756E696F6E3E}{\isasymsqunion}}} are substituted by \isa{min}
    97   and \isa{max}.  The entire proof for the
    97   and \isa{max}.  The entire proof for the
    98   interpretation is reproduced to give an example of a more
    98   interpretation is reproduced to give an example of a more
    99   elaborate interpretation proof.  Note that the equations are named
    99   elaborate interpretation proof.  Note that the equations are named
   100   so they can be used in a later example.%
   100   so they can be used in a later example.%
   101 \end{isamarkuptext}%
   101 \end{isamarkuptext}%
   105 \ \ %
   105 \ \ %
   106 \endisadelimvisible
   106 \endisadelimvisible
   107 %
   107 %
   108 \isatagvisible
   108 \isatagvisible
   109 \isacommand{interpretation}\isamarkupfalse%
   109 \isacommand{interpretation}\isamarkupfalse%
   110 \ int{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ int\ {\isasymRightarrow}\ int\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
   110 \ int{\isaliteral{3A}{\isacharcolon}}\ lattice\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   111 \ \ \ \ \isakeyword{where}\ int{\isacharunderscore}min{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}int{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
   111 \ \ \ \ \isakeyword{where}\ int{\isaliteral{5F}{\isacharunderscore}}min{\isaliteral{5F}{\isacharunderscore}}eq{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}lattice{\isaliteral{2E}{\isachardot}}meet\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}int{\isaliteral{29}{\isacharparenright}}\ y\ {\isaliteral{3D}{\isacharequal}}\ min\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   112 \ \ \ \ \ \ \isakeyword{and}\ int{\isacharunderscore}max{\isacharunderscore}eq{\isacharcolon}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}int{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
   112 \ \ \ \ \ \ \isakeyword{and}\ int{\isaliteral{5F}{\isacharunderscore}}max{\isaliteral{5F}{\isacharunderscore}}eq{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}lattice{\isaliteral{2E}{\isachardot}}join\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}int{\isaliteral{29}{\isacharparenright}}\ y\ {\isaliteral{3D}{\isacharequal}}\ max\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   113 \ \ \isacommand{proof}\isamarkupfalse%
   113 \ \ \isacommand{proof}\isamarkupfalse%
   114 \ {\isacharminus}\isanewline
   114 \ {\isaliteral{2D}{\isacharminus}}\isanewline
   115 \ \ \ \ \isacommand{show}\isamarkupfalse%
   115 \ \ \ \ \isacommand{show}\isamarkupfalse%
   116 \ {\isachardoublequoteopen}lattice\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ int\ {\isasymRightarrow}\ int\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}%
   116 \ {\isaliteral{22}{\isachardoublequoteopen}}lattice\ {\isaliteral{28}{\isacharparenleft}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}%
   117 \begin{isamarkuptxt}%
   117 \begin{isamarkuptxt}%
   118 \normalsize We have already shown that this is a partial
   118 \normalsize We have already shown that this is a partial
   119 	order,%
   119 	order,%
   120 \end{isamarkuptxt}%
   120 \end{isamarkuptxt}%
   121 \isamarkuptrue%
   121 \isamarkuptrue%
   122 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   122 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   123 \ unfold{\isacharunderscore}locales%
   123 \ unfold{\isaliteral{5F}{\isacharunderscore}}locales%
   124 \begin{isamarkuptxt}%
   124 \begin{isamarkuptxt}%
   125 \normalsize hence only the lattice axioms remain to be
   125 \normalsize hence only the lattice axioms remain to be
   126 	shown.
   126 	shown.
   127         \begin{isabelle}%
   127         \begin{isabelle}%
   128 \ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ {\isasymexists}inf{\isachardot}\ partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}inf\ op\ {\isasymle}\ x\ y\ inf\isanewline
   128 \ {\isadigit{1}}{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}inf{\isaliteral{2E}{\isachardot}}\ partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}inf\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ x\ y\ inf\isanewline
   129 \ {\isadigit{2}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ {\isasymexists}sup{\isachardot}\ partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}sup\ op\ {\isasymle}\ x\ y\ sup%
   129 \ {\isadigit{2}}{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}sup{\isaliteral{2E}{\isachardot}}\ partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}sup\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ x\ y\ sup%
   130 \end{isabelle}
   130 \end{isabelle}
   131 	By \isa{is{\isacharunderscore}inf} and \isa{is{\isacharunderscore}sup},%
   131 	By \isa{is{\isaliteral{5F}{\isacharunderscore}}inf} and \isa{is{\isaliteral{5F}{\isacharunderscore}}sup},%
   132 \end{isamarkuptxt}%
   132 \end{isamarkuptxt}%
   133 \isamarkuptrue%
   133 \isamarkuptrue%
   134 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   134 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   135 \ {\isacharparenleft}unfold\ int{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def\ int{\isachardot}is{\isacharunderscore}sup{\isacharunderscore}def{\isacharparenright}%
   135 \ {\isaliteral{28}{\isacharparenleft}}unfold\ int{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}inf{\isaliteral{5F}{\isacharunderscore}}def\ int{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}sup{\isaliteral{5F}{\isacharunderscore}}def{\isaliteral{29}{\isacharparenright}}%
   136 \begin{isamarkuptxt}%
   136 \begin{isamarkuptxt}%
   137 \normalsize the goals are transformed to these
   137 \normalsize the goals are transformed to these
   138 	statements:
   138 	statements:
   139 	\begin{isabelle}%
   139 	\begin{isabelle}%
   140 \ {\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
   140 \ {\isadigit{1}}{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}inf{\isaliteral{5C3C6C653E}{\isasymle}}x{\isaliteral{2E}{\isachardot}}\ inf\ {\isaliteral{5C3C6C653E}{\isasymle}}\ y\ {\isaliteral{5C3C616E643E}{\isasymand}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}z{\isaliteral{2E}{\isachardot}}\ z\ {\isaliteral{5C3C6C653E}{\isasymle}}\ x\ {\isaliteral{5C3C616E643E}{\isasymand}}\ z\ {\isaliteral{5C3C6C653E}{\isasymle}}\ y\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ z\ {\isaliteral{5C3C6C653E}{\isasymle}}\ inf{\isaliteral{29}{\isacharparenright}}\isanewline
   141 \ {\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}%
   141 \ {\isadigit{2}}{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C6578697374733E}{\isasymexists}}sup{\isaliteral{5C3C67653E}{\isasymge}}x{\isaliteral{2E}{\isachardot}}\ y\ {\isaliteral{5C3C6C653E}{\isasymle}}\ sup\ {\isaliteral{5C3C616E643E}{\isasymand}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}z{\isaliteral{2E}{\isachardot}}\ x\ {\isaliteral{5C3C6C653E}{\isasymle}}\ z\ {\isaliteral{5C3C616E643E}{\isasymand}}\ y\ {\isaliteral{5C3C6C653E}{\isasymle}}\ z\ {\isaliteral{5C3C6C6F6E6772696768746172726F773E}{\isasymlongrightarrow}}\ sup\ {\isaliteral{5C3C6C653E}{\isasymle}}\ z{\isaliteral{29}{\isacharparenright}}%
   142 \end{isabelle}
   142 \end{isabelle}
   143 	This is Presburger arithmetic, which can be solved by the
   143 	This is Presburger arithmetic, which can be solved by the
   144         method \isa{arith}.%
   144         method \isa{arith}.%
   145 \end{isamarkuptxt}%
   145 \end{isamarkuptxt}%
   146 \isamarkuptrue%
   146 \isamarkuptrue%
   147 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   147 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   148 \ arith{\isacharplus}%
   148 \ arith{\isaliteral{2B}{\isacharplus}}%
   149 \begin{isamarkuptxt}%
   149 \begin{isamarkuptxt}%
   150 \normalsize In order to show the equations, we put ourselves
   150 \normalsize In order to show the equations, we put ourselves
   151       in a situation where the lattice theorems can be used in a
   151       in a situation where the lattice theorems can be used in a
   152       convenient way.%
   152       convenient way.%
   153 \end{isamarkuptxt}%
   153 \end{isamarkuptxt}%
   154 \isamarkuptrue%
   154 \isamarkuptrue%
   155 \ \ \ \ \isacommand{then}\isamarkupfalse%
   155 \ \ \ \ \isacommand{then}\isamarkupfalse%
   156 \ \isacommand{interpret}\isamarkupfalse%
   156 \ \isacommand{interpret}\isamarkupfalse%
   157 \ int{\isacharcolon}\ lattice\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ int\ {\isasymRightarrow}\ int\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isacommand{{\isachardot}}\isamarkupfalse%
   157 \ int{\isaliteral{3A}{\isacharcolon}}\ lattice\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{{\isaliteral{2E}{\isachardot}}}\isamarkupfalse%
   158 \isanewline
   158 \isanewline
   159 \ \ \ \ \isacommand{show}\isamarkupfalse%
   159 \ \ \ \ \isacommand{show}\isamarkupfalse%
   160 \ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}int{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline
   160 \ {\isaliteral{22}{\isachardoublequoteopen}}lattice{\isaliteral{2E}{\isachardot}}meet\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}int{\isaliteral{29}{\isacharparenright}}\ y\ {\isaliteral{3D}{\isacharequal}}\ min\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   161 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   161 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   162 \ {\isacharparenleft}bestsimp\ simp{\isacharcolon}\ int{\isachardot}meet{\isacharunderscore}def\ int{\isachardot}is{\isacharunderscore}inf{\isacharunderscore}def{\isacharparenright}\isanewline
   162 \ {\isaliteral{28}{\isacharparenleft}}bestsimp\ simp{\isaliteral{3A}{\isacharcolon}}\ int{\isaliteral{2E}{\isachardot}}meet{\isaliteral{5F}{\isacharunderscore}}def\ int{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}inf{\isaliteral{5F}{\isacharunderscore}}def{\isaliteral{29}{\isacharparenright}}\isanewline
   163 \ \ \ \ \isacommand{show}\isamarkupfalse%
   163 \ \ \ \ \isacommand{show}\isamarkupfalse%
   164 \ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}int{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline
   164 \ {\isaliteral{22}{\isachardoublequoteopen}}lattice{\isaliteral{2E}{\isachardot}}join\ op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{28}{\isacharparenleft}}x{\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}int{\isaliteral{29}{\isacharparenright}}\ y\ {\isaliteral{3D}{\isacharequal}}\ max\ x\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   165 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   165 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   166 \ {\isacharparenleft}bestsimp\ simp{\isacharcolon}\ int{\isachardot}join{\isacharunderscore}def\ int{\isachardot}is{\isacharunderscore}sup{\isacharunderscore}def{\isacharparenright}\isanewline
   166 \ {\isaliteral{28}{\isacharparenleft}}bestsimp\ simp{\isaliteral{3A}{\isacharcolon}}\ int{\isaliteral{2E}{\isachardot}}join{\isaliteral{5F}{\isacharunderscore}}def\ int{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}sup{\isaliteral{5F}{\isacharunderscore}}def{\isaliteral{29}{\isacharparenright}}\isanewline
   167 \ \ \isacommand{qed}\isamarkupfalse%
   167 \ \ \isacommand{qed}\isamarkupfalse%
   168 %
   168 %
   169 \endisatagvisible
   169 \endisatagvisible
   170 {\isafoldvisible}%
   170 {\isafoldvisible}%
   171 %
   171 %
   172 \isadelimvisible
   172 \isadelimvisible
   173 %
   173 %
   174 \endisadelimvisible
   174 \endisadelimvisible
   175 %
   175 %
   176 \begin{isamarkuptext}%
   176 \begin{isamarkuptext}%
   177 Next follows that \isa{op\ {\isasymle}} is a total order, again for
   177 Next follows that \isa{op\ {\isaliteral{5C3C6C653E}{\isasymle}}} is a total order, again for
   178   the integers.%
   178   the integers.%
   179 \end{isamarkuptext}%
   179 \end{isamarkuptext}%
   180 \isamarkuptrue%
   180 \isamarkuptrue%
   181 %
   181 %
   182 \isadelimvisible
   182 \isadelimvisible
   183 \ \ %
   183 \ \ %
   184 \endisadelimvisible
   184 \endisadelimvisible
   185 %
   185 %
   186 \isatagvisible
   186 \isatagvisible
   187 \isacommand{interpretation}\isamarkupfalse%
   187 \isacommand{interpretation}\isamarkupfalse%
   188 \ int{\isacharcolon}\ total{\isacharunderscore}order\ {\isachardoublequoteopen}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ int\ {\isasymRightarrow}\ int\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
   188 \ int{\isaliteral{3A}{\isacharcolon}}\ total{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ int\ {\isaliteral{5C3C52696768746172726F773E}{\isasymRightarrow}}\ bool{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   189 \ \ \ \ \isacommand{by}\isamarkupfalse%
   189 \ \ \ \ \isacommand{by}\isamarkupfalse%
   190 \ unfold{\isacharunderscore}locales\ arith%
   190 \ unfold{\isaliteral{5F}{\isacharunderscore}}locales\ arith%
   191 \endisatagvisible
   191 \endisatagvisible
   192 {\isafoldvisible}%
   192 {\isafoldvisible}%
   193 %
   193 %
   194 \isadelimvisible
   194 \isadelimvisible
   195 %
   195 %
   202 \begin{table}
   202 \begin{table}
   203 \hrule
   203 \hrule
   204 \vspace{2ex}
   204 \vspace{2ex}
   205 \begin{center}
   205 \begin{center}
   206 \begin{tabular}{l}
   206 \begin{tabular}{l}
   207   \isa{int{\isachardot}less{\isacharunderscore}def} from locale \isa{partial{\isacharunderscore}order}: \\
   207   \isa{int{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}def} from locale \isa{partial{\isaliteral{5F}{\isacharunderscore}}order}: \\
   208   \quad \isa{{\isacharparenleft}{\isacharquery}x\ {\isacharless}\ {\isacharquery}y{\isacharparenright}\ {\isacharequal}\ {\isacharparenleft}{\isacharquery}x\ {\isasymle}\ {\isacharquery}y\ {\isasymand}\ {\isacharquery}x\ {\isasymnoteq}\ {\isacharquery}y{\isacharparenright}} \\
   208   \quad \isa{{\isaliteral{28}{\isacharparenleft}}{\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3C}{\isacharless}}\ {\isaliteral{3F}{\isacharquery}}y{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C616E643E}{\isasymand}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C6E6F7465713E}{\isasymnoteq}}\ {\isaliteral{3F}{\isacharquery}}y{\isaliteral{29}{\isacharparenright}}} \\
   209   \isa{int{\isachardot}meet{\isacharunderscore}left} from locale \isa{lattice}: \\
   209   \isa{int{\isaliteral{2E}{\isachardot}}meet{\isaliteral{5F}{\isacharunderscore}}left} from locale \isa{lattice}: \\
   210   \quad \isa{min\ {\isacharquery}x\ {\isacharquery}y\ {\isasymle}\ {\isacharquery}x} \\
   210   \quad \isa{min\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C6C653E}{\isasymle}}\ {\isaliteral{3F}{\isacharquery}}x} \\
   211   \isa{int{\isachardot}join{\isacharunderscore}distr} from locale \isa{distrib{\isacharunderscore}lattice}: \\
   211   \isa{int{\isaliteral{2E}{\isachardot}}join{\isaliteral{5F}{\isacharunderscore}}distr} from locale \isa{distrib{\isaliteral{5F}{\isacharunderscore}}lattice}: \\
   212   \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}} \\
   212   \quad \isa{max\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{28}{\isacharparenleft}}min\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{3F}{\isacharquery}}z{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{3D}{\isacharequal}}\ min\ {\isaliteral{28}{\isacharparenleft}}max\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3F}{\isacharquery}}y{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{28}{\isacharparenleft}}max\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3F}{\isacharquery}}z{\isaliteral{29}{\isacharparenright}}} \\
   213   \isa{int{\isachardot}less{\isacharunderscore}total} from locale \isa{total{\isacharunderscore}order}: \\
   213   \isa{int{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}total} from locale \isa{total{\isaliteral{5F}{\isacharunderscore}}order}: \\
   214   \quad \isa{{\isacharquery}x\ {\isacharless}\ {\isacharquery}y\ {\isasymor}\ {\isacharquery}x\ {\isacharequal}\ {\isacharquery}y\ {\isasymor}\ {\isacharquery}y\ {\isacharless}\ {\isacharquery}x}
   214   \quad \isa{{\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3C}{\isacharless}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C6F723E}{\isasymor}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{3C}{\isacharless}}\ {\isaliteral{3F}{\isacharquery}}x}
   215 \end{tabular}
   215 \end{tabular}
   216 \end{center}
   216 \end{center}
   217 \hrule
   217 \hrule
   218 \caption{Interpreted theorems for~\isa{{\isasymle}} on the integers.}
   218 \caption{Interpreted theorems for~\isa{{\isaliteral{5C3C6C653E}{\isasymle}}} on the integers.}
   219 \label{tab:int-lattice}
   219 \label{tab:int-lattice}
   220 \end{table}
   220 \end{table}
   221 
   221 
   222 \begin{itemize}
   222 \begin{itemize}
   223 \item
   223 \item
   224   Locale \isa{distrib{\isacharunderscore}lattice} was also interpreted.  Since the
   224   Locale \isa{distrib{\isaliteral{5F}{\isacharunderscore}}lattice} was also interpreted.  Since the
   225   locale hierarchy reflects that total orders are distributive
   225   locale hierarchy reflects that total orders are distributive
   226   lattices, the interpretation of the latter was inserted
   226   lattices, the interpretation of the latter was inserted
   227   automatically with the interpretation of the former.  In general,
   227   automatically with the interpretation of the former.  In general,
   228   interpretation traverses the locale hierarchy upwards and interprets
   228   interpretation traverses the locale hierarchy upwards and interprets
   229   all encountered locales, regardless whether imported or proved via
   229   all encountered locales, regardless whether imported or proved via
   230   the \isakeyword{sublocale} command.  Existing interpretations are
   230   the \isakeyword{sublocale} command.  Existing interpretations are
   231   skipped avoiding duplicate work.
   231   skipped avoiding duplicate work.
   232 \item
   232 \item
   233   The predicate \isa{op\ {\isacharless}} appears in theorem \isa{int{\isachardot}less{\isacharunderscore}total}
   233   The predicate \isa{op\ {\isaliteral{3C}{\isacharless}}} appears in theorem \isa{int{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}total}
   234   although an equation for the replacement of \isa{op\ {\isasymsqsubset}} was only
   234   although an equation for the replacement of \isa{op\ {\isaliteral{5C3C73717375627365743E}{\isasymsqsubset}}} was only
   235   given in the interpretation of \isa{partial{\isacharunderscore}order}.  The
   235   given in the interpretation of \isa{partial{\isaliteral{5F}{\isacharunderscore}}order}.  The
   236   interpretation equations are pushed downwards the hierarchy for
   236   interpretation equations are pushed downwards the hierarchy for
   237   related interpretations --- that is, for interpretations that share
   237   related interpretations --- that is, for interpretations that share
   238   the instances of parameters they have in common.
   238   the instances of parameters they have in common.
   239 \end{itemize}%
   239 \end{itemize}%
   240 \end{isamarkuptext}%
   240 \end{isamarkuptext}%
   242 %
   242 %
   243 \begin{isamarkuptext}%
   243 \begin{isamarkuptext}%
   244 The interpretations for a locale $n$ within the current
   244 The interpretations for a locale $n$ within the current
   245   theory may be inspected with \isakeyword{print\_interps}~$n$.  This
   245   theory may be inspected with \isakeyword{print\_interps}~$n$.  This
   246   prints the list of instances of $n$, for which interpretations exist.
   246   prints the list of instances of $n$, for which interpretations exist.
   247   For example, \isakeyword{print\_interps} \isa{partial{\isacharunderscore}order}
   247   For example, \isakeyword{print\_interps} \isa{partial{\isaliteral{5F}{\isacharunderscore}}order}
   248   outputs the following:
   248   outputs the following:
   249 \begin{small}
   249 \begin{small}
   250 \begin{alltt}
   250 \begin{alltt}
   251   int! : partial_order "op \(\le\)"
   251   int! : partial_order "op \(\le\)"
   252 \end{alltt}
   252 \end{alltt}
   266 \isamarkupsection{Locale Expressions \label{sec:expressions}%
   266 \isamarkupsection{Locale Expressions \label{sec:expressions}%
   267 }
   267 }
   268 \isamarkuptrue%
   268 \isamarkuptrue%
   269 %
   269 %
   270 \begin{isamarkuptext}%
   270 \begin{isamarkuptext}%
   271 A map~\isa{{\isasymphi}} between partial orders~\isa{{\isasymsqsubseteq}} and~\isa{{\isasympreceq}}
   271 A map~\isa{{\isaliteral{5C3C7068693E}{\isasymphi}}} between partial orders~\isa{{\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}} and~\isa{{\isaliteral{5C3C7072656365713E}{\isasympreceq}}}
   272   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
   272   is called order preserving if \isa{x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ y} implies \isa{{\isaliteral{5C3C7068693E}{\isasymphi}}\ x\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ y}.  This situation is more complex than those encountered so
   273   far: it involves two partial orders, and it is desirable to use the
   273   far: it involves two partial orders, and it is desirable to use the
   274   existing locale for both.
   274   existing locale for both.
   275 
   275 
   276   A locale for order preserving maps requires three parameters: \isa{le}~(\isakeyword{infixl}~\isa{{\isasymsqsubseteq}}) and \isa{le{\isacharprime}}~(\isakeyword{infixl}~\isa{{\isasympreceq}}) for the orders and~\isa{{\isasymphi}}
   276   A locale for order preserving maps requires three parameters: \isa{le}~(\isakeyword{infixl}~\isa{{\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}}) and \isa{le{\isaliteral{27}{\isacharprime}}}~(\isakeyword{infixl}~\isa{{\isaliteral{5C3C7072656365713E}{\isasympreceq}}}) for the orders and~\isa{{\isaliteral{5C3C7068693E}{\isasymphi}}}
   277   for the map.
   277   for the map.
   278 
   278 
   279   In order to reuse the existing locale for partial orders, which has
   279   In order to reuse the existing locale for partial orders, which has
   280   the single parameter~\isa{le}, it must be imported twice, once
   280   the single parameter~\isa{le}, it must be imported twice, once
   281   mapping its parameter to~\isa{le} from the new locale and once
   281   mapping its parameter to~\isa{le} from the new locale and once
   282   to~\isa{le{\isacharprime}}.  This can be achieved with a compound locale
   282   to~\isa{le{\isaliteral{27}{\isacharprime}}}.  This can be achieved with a compound locale
   283   expression.
   283   expression.
   284 
   284 
   285   In general, a locale expression is a sequence of \emph{locale instances}
   285   In general, a locale expression is a sequence of \emph{locale instances}
   286   separated by~``$\textbf{+}$'' and followed by a \isakeyword{for}
   286   separated by~``$\textbf{+}$'' and followed by a \isakeyword{for}
   287   clause.
   287   clause.
   296   different instances of the same locale.  While in
   296   different instances of the same locale.  While in
   297   \isakeyword{interpretation} qualifiers default to mandatory, in
   297   \isakeyword{interpretation} qualifiers default to mandatory, in
   298   import and in the \isakeyword{sublocale} command, they default to
   298   import and in the \isakeyword{sublocale} command, they default to
   299   optional.
   299   optional.
   300 
   300 
   301   Since the parameters~\isa{le} and~\isa{le{\isacharprime}} are to be partial
   301   Since the parameters~\isa{le} and~\isa{le{\isaliteral{27}{\isacharprime}}} are to be partial
   302   orders, our locale for order preserving maps will import the these
   302   orders, our locale for order preserving maps will import the these
   303   instances:
   303   instances:
   304 \begin{small}
   304 \begin{small}
   305 \begin{alltt}
   305 \begin{alltt}
   306   le: partial_order le
   306   le: partial_order le
   317   only occur after the import section, and therefore the parameters
   317   only occur after the import section, and therefore the parameters
   318   referred to in the instances must be declared in the \isakeyword{for}
   318   referred to in the instances must be declared in the \isakeyword{for}
   319   clause.  The \isakeyword{for} clause is also where the syntax of these
   319   clause.  The \isakeyword{for} clause is also where the syntax of these
   320   parameters is declared.
   320   parameters is declared.
   321 
   321 
   322   Two context elements for the map parameter~\isa{{\isasymphi}} and the
   322   Two context elements for the map parameter~\isa{{\isaliteral{5C3C7068693E}{\isasymphi}}} and the
   323   assumptions that it is order preserving complete the locale
   323   assumptions that it is order preserving complete the locale
   324   declaration.%
   324   declaration.%
   325 \end{isamarkuptext}%
   325 \end{isamarkuptext}%
   326 \isamarkuptrue%
   326 \isamarkuptrue%
   327 \ \ \isacommand{locale}\isamarkupfalse%
   327 \ \ \isacommand{locale}\isamarkupfalse%
   328 \ order{\isacharunderscore}preserving\ {\isacharequal}\isanewline
   328 \ order{\isaliteral{5F}{\isacharunderscore}}preserving\ {\isaliteral{3D}{\isacharequal}}\isanewline
   329 \ \ \ \ le{\isacharcolon}\ partial{\isacharunderscore}order\ le\ {\isacharplus}\ le{\isacharprime}{\isacharcolon}\ partial{\isacharunderscore}order\ le{\isacharprime}\isanewline
   329 \ \ \ \ le{\isaliteral{3A}{\isacharcolon}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\ le\ {\isaliteral{2B}{\isacharplus}}\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{3A}{\isacharcolon}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\ le{\isaliteral{27}{\isacharprime}}\isanewline
   330 \ \ \ \ \ \ \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
   330 \ \ \ \ \ \ \isakeyword{for}\ le\ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixl}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{and}\ le{\isaliteral{27}{\isacharprime}}\ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixl}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7072656365713E}{\isasympreceq}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{2B}{\isacharplus}}\isanewline
   331 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\isanewline
   331 \ \ \ \ \isakeyword{fixes}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\isanewline
   332 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}le{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y\ {\isasymLongrightarrow}\ {\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}%
   332 \ \ \ \ \isakeyword{assumes}\ hom{\isaliteral{5F}{\isacharunderscore}}le{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ x\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ y{\isaliteral{22}{\isachardoublequoteclose}}%
   333 \begin{isamarkuptext}%
   333 \begin{isamarkuptext}%
   334 Here are examples of theorems that are
   334 Here are examples of theorems that are
   335   available in the locale:
   335   available in the locale:
   336 
   336 
   337   \hspace*{1em}\isa{hom{\isacharunderscore}le}: \isa{{\isacharquery}x\ {\isasymsqsubseteq}\ {\isacharquery}y\ {\isasymLongrightarrow}\ {\isasymphi}\ {\isacharquery}x\ {\isasympreceq}\ {\isasymphi}\ {\isacharquery}y}
   337   \hspace*{1em}\isa{hom{\isaliteral{5F}{\isacharunderscore}}le}: \isa{{\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ {\isaliteral{3F}{\isacharquery}}y}
   338 
   338 
   339   \hspace*{1em}\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}
   339   \hspace*{1em}\isa{le{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}le{\isaliteral{5F}{\isacharunderscore}}trans}: \isa{{\isaliteral{5C3C6C6272616B6B3E}{\isasymlbrakk}}{\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C73717375627365743E}{\isasymsqsubset}}\ {\isaliteral{3F}{\isacharquery}}y{\isaliteral{3B}{\isacharsemicolon}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ {\isaliteral{3F}{\isacharquery}}z{\isaliteral{5C3C726272616B6B3E}{\isasymrbrakk}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C73717375627365743E}{\isasymsqsubset}}\ {\isaliteral{3F}{\isacharquery}}z}
   340 
   340 
   341   \hspace*{1em}\isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}:
   341   \hspace*{1em}\isa{le{\isaliteral{27}{\isacharprime}}{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}le{\isaliteral{5F}{\isacharunderscore}}trans}:
   342   \begin{isabelle}%
   342   \begin{isabelle}%
   343 \ \ \ \ {\isasymlbrakk}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\isanewline
   343 \ \ \ \ {\isaliteral{5C3C6C6272616B6B3E}{\isasymlbrakk}}partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}less\ op\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3F}{\isacharquery}}y{\isaliteral{3B}{\isacharsemicolon}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{3F}{\isacharquery}}z{\isaliteral{5C3C726272616B6B3E}{\isasymrbrakk}}\isanewline
   344 \isaindent{\ \ \ \ }{\isasymLongrightarrow}\ partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasympreceq}\ {\isacharquery}x\ {\isacharquery}z%
   344 \isaindent{\ \ \ \ }{\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}less\ op\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{3F}{\isacharquery}}z%
   345 \end{isabelle}
   345 \end{isabelle}
   346   While there is infix syntax for the strict operation associated to
   346   While there is infix syntax for the strict operation associated to
   347   \isa{op\ {\isasymsqsubseteq}}, there is none for the strict version of \isa{op\ {\isasympreceq}}.  The abbreviation \isa{less} with its infix syntax is only
   347   \isa{op\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}}, there is none for the strict version of \isa{op\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}}.  The abbreviation \isa{less} with its infix syntax is only
   348   available for the original instance it was declared for.  We may
   348   available for the original instance it was declared for.  We may
   349   introduce the abbreviation \isa{less{\isacharprime}} with infix syntax~\isa{{\isasymprec}}
   349   introduce the abbreviation \isa{less{\isaliteral{27}{\isacharprime}}} with infix syntax~\isa{{\isaliteral{5C3C707265633E}{\isasymprec}}}
   350   with the following declaration:%
   350   with the following declaration:%
   351 \end{isamarkuptext}%
   351 \end{isamarkuptext}%
   352 \isamarkuptrue%
   352 \isamarkuptrue%
   353 \ \ \isacommand{abbreviation}\isamarkupfalse%
   353 \ \ \isacommand{abbreviation}\isamarkupfalse%
   354 \ {\isacharparenleft}\isakeyword{in}\ order{\isacharunderscore}preserving{\isacharparenright}\isanewline
   354 \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{in}\ order{\isaliteral{5F}{\isacharunderscore}}preserving{\isaliteral{29}{\isacharparenright}}\isanewline
   355 \ \ \ \ 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}%
   355 \ \ \ \ less{\isaliteral{27}{\isacharprime}}\ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixl}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C707265633E}{\isasymprec}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}less{\isaliteral{27}{\isacharprime}}\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}less\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{22}{\isachardoublequoteclose}}%
   356 \begin{isamarkuptext}%
   356 \begin{isamarkuptext}%
   357 Now the theorem is displayed nicely as
   357 Now the theorem is displayed nicely as
   358   \isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}:
   358   \isa{le{\isaliteral{27}{\isacharprime}}{\isaliteral{2E}{\isachardot}}less{\isaliteral{5F}{\isacharunderscore}}le{\isaliteral{5F}{\isacharunderscore}}trans}:
   359   \begin{isabelle}%
   359   \begin{isabelle}%
   360 \ \ {\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z%
   360 \ \ {\isaliteral{5C3C6C6272616B6B3E}{\isasymlbrakk}}{\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C707265633E}{\isasymprec}}\ {\isaliteral{3F}{\isacharquery}}y{\isaliteral{3B}{\isacharsemicolon}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{3F}{\isacharquery}}z{\isaliteral{5C3C726272616B6B3E}{\isasymrbrakk}}\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C707265633E}{\isasymprec}}\ {\isaliteral{3F}{\isacharquery}}z%
   361 \end{isabelle}%
   361 \end{isabelle}%
   362 \end{isamarkuptext}%
   362 \end{isamarkuptext}%
   363 \isamarkuptrue%
   363 \isamarkuptrue%
   364 %
   364 %
   365 \begin{isamarkuptext}%
   365 \begin{isamarkuptext}%
   373 \isamarkuptrue%
   373 \isamarkuptrue%
   374 %
   374 %
   375 \begin{isamarkuptext}%
   375 \begin{isamarkuptext}%
   376 It is possible to omit parameter instantiations.  The
   376 It is possible to omit parameter instantiations.  The
   377   instantiation then defaults to the name of
   377   instantiation then defaults to the name of
   378   the parameter itself.  For example, the locale expression \isa{partial{\isacharunderscore}order} is short for \isa{partial{\isacharunderscore}order\ le}, since the
   378   the parameter itself.  For example, the locale expression \isa{partial{\isaliteral{5F}{\isacharunderscore}}order} is short for \isa{partial{\isaliteral{5F}{\isacharunderscore}}order\ le}, since the
   379   locale's single parameter is~\isa{le}.  We took advantage of this
   379   locale's single parameter is~\isa{le}.  We took advantage of this
   380   in the \isakeyword{sublocale} declarations of
   380   in the \isakeyword{sublocale} declarations of
   381   Section~\ref{sec:changing-the-hierarchy}.%
   381   Section~\ref{sec:changing-the-hierarchy}.%
   382 \end{isamarkuptext}%
   382 \end{isamarkuptext}%
   383 \isamarkuptrue%
   383 \isamarkuptrue%
   403   There is an exception to this rule in locale declarations, where the
   403   There is an exception to this rule in locale declarations, where the
   404   \isakeyword{for} clause serves to declare locale parameters.  Here,
   404   \isakeyword{for} clause serves to declare locale parameters.  Here,
   405   locale parameters for which no parameter instantiation is given are
   405   locale parameters for which no parameter instantiation is given are
   406   implicitly added, with their mixfix syntax, at the beginning of the
   406   implicitly added, with their mixfix syntax, at the beginning of the
   407   \isakeyword{for} clause.  For example, in a locale declaration, the
   407   \isakeyword{for} clause.  For example, in a locale declaration, the
   408   expression \isa{partial{\isacharunderscore}order} is short for
   408   expression \isa{partial{\isaliteral{5F}{\isacharunderscore}}order} is short for
   409 \begin{small}
   409 \begin{small}
   410 \begin{alltt}
   410 \begin{alltt}
   411   partial_order le \isakeyword{for} le (\isakeyword{infixl} "\(\sqsubseteq\)" 50)\textrm{.}
   411   partial_order le \isakeyword{for} le (\isakeyword{infixl} "\(\sqsubseteq\)" 50)\textrm{.}
   412 \end{alltt}
   412 \end{alltt}
   413 \end{small}
   413 \end{small}
   416 \end{isamarkuptext}%
   416 \end{isamarkuptext}%
   417 \isamarkuptrue%
   417 \isamarkuptrue%
   418 %
   418 %
   419 \begin{isamarkuptext}%
   419 \begin{isamarkuptext}%
   420 The following locale declarations provide more examples.  A
   420 The following locale declarations provide more examples.  A
   421   map~\isa{{\isasymphi}} is a lattice homomorphism if it preserves meet and
   421   map~\isa{{\isaliteral{5C3C7068693E}{\isasymphi}}} is a lattice homomorphism if it preserves meet and
   422   join.%
   422   join.%
   423 \end{isamarkuptext}%
   423 \end{isamarkuptext}%
   424 \isamarkuptrue%
   424 \isamarkuptrue%
   425 \ \ \isacommand{locale}\isamarkupfalse%
   425 \ \ \isacommand{locale}\isamarkupfalse%
   426 \ lattice{\isacharunderscore}hom\ {\isacharequal}\isanewline
   426 \ lattice{\isaliteral{5F}{\isacharunderscore}}hom\ {\isaliteral{3D}{\isacharequal}}\isanewline
   427 \ \ \ \ 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
   427 \ \ \ \ le{\isaliteral{3A}{\isacharcolon}}\ lattice\ {\isaliteral{2B}{\isacharplus}}\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{3A}{\isacharcolon}}\ lattice\ le{\isaliteral{27}{\isacharprime}}\ \isakeyword{for}\ le{\isaliteral{27}{\isacharprime}}\ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixl}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7072656365713E}{\isasympreceq}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{2B}{\isacharplus}}\isanewline
   428 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\isanewline
   428 \ \ \ \ \isakeyword{fixes}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\isanewline
   429 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}meet{\isacharcolon}\ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}x\ {\isasymsqinter}\ y{\isacharparenright}\ {\isacharequal}\ le{\isacharprime}{\isachardot}meet\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline
   429 \ \ \ \ \isakeyword{assumes}\ hom{\isaliteral{5F}{\isacharunderscore}}meet{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C7371696E7465723E}{\isasymsqinter}}\ y{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{3D}{\isacharequal}}\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{2E}{\isachardot}}meet\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ y{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   430 \ \ \ \ \ \ \isakeyword{and}\ hom{\isacharunderscore}join{\isacharcolon}\ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}x\ {\isasymsqunion}\ y{\isacharparenright}\ {\isacharequal}\ le{\isacharprime}{\isachardot}join\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}%
   430 \ \ \ \ \ \ \isakeyword{and}\ hom{\isaliteral{5F}{\isacharunderscore}}join{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C7371756E696F6E3E}{\isasymsqunion}}\ y{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{3D}{\isacharequal}}\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{2E}{\isachardot}}join\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ y{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}%
   431 \begin{isamarkuptext}%
   431 \begin{isamarkuptext}%
   432 The parameter instantiation in the first instance of \isa{lattice} is omitted.  This causes the parameter~\isa{le} to be
   432 The parameter instantiation in the first instance of \isa{lattice} is omitted.  This causes the parameter~\isa{le} to be
   433   added to the \isakeyword{for} clause, and the locale has
   433   added to the \isakeyword{for} clause, and the locale has
   434   parameters~\isa{le},~\isa{le{\isacharprime}} and, of course,~\isa{{\isasymphi}}.
   434   parameters~\isa{le},~\isa{le{\isaliteral{27}{\isacharprime}}} and, of course,~\isa{{\isaliteral{5C3C7068693E}{\isasymphi}}}.
   435 
   435 
   436   Before turning to the second example, we complete the locale by
   436   Before turning to the second example, we complete the locale by
   437   providing infix syntax for the meet and join operations of the
   437   providing infix syntax for the meet and join operations of the
   438   second lattice.%
   438   second lattice.%
   439 \end{isamarkuptext}%
   439 \end{isamarkuptext}%
   440 \isamarkuptrue%
   440 \isamarkuptrue%
   441 \ \ \isacommand{context}\isamarkupfalse%
   441 \ \ \isacommand{context}\isamarkupfalse%
   442 \ lattice{\isacharunderscore}hom\ \isakeyword{begin}\isanewline
   442 \ lattice{\isaliteral{5F}{\isacharunderscore}}hom\ \isakeyword{begin}\isanewline
   443 \ \ \isacommand{abbreviation}\isamarkupfalse%
   443 \ \ \isacommand{abbreviation}\isamarkupfalse%
   444 \ 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
   444 \ meet{\isaliteral{27}{\isacharprime}}\ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixl}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7371696E7465723E}{\isasymsqinter}}{\isaliteral{27}{\isacharprime}}{\isaliteral{27}{\isacharprime}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}meet{\isaliteral{27}{\isacharprime}}\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{2E}{\isachardot}}meet{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   445 \ \ \isacommand{abbreviation}\isamarkupfalse%
   445 \ \ \isacommand{abbreviation}\isamarkupfalse%
   446 \ 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}\isanewline
   446 \ join{\isaliteral{27}{\isacharprime}}\ {\isaliteral{28}{\isacharparenleft}}\isakeyword{infixl}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7371756E696F6E3E}{\isasymsqunion}}{\isaliteral{27}{\isacharprime}}{\isaliteral{27}{\isacharprime}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isadigit{5}}{\isadigit{0}}{\isaliteral{29}{\isacharparenright}}\ \isakeyword{where}\ {\isaliteral{22}{\isachardoublequoteopen}}join{\isaliteral{27}{\isacharprime}}\ {\isaliteral{5C3C65717569763E}{\isasymequiv}}\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{2E}{\isachardot}}join{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   447 \ \ \isacommand{end}\isamarkupfalse%
   447 \ \ \isacommand{end}\isamarkupfalse%
   448 %
   448 %
   449 \begin{isamarkuptext}%
   449 \begin{isamarkuptext}%
   450 The next example makes radical use of the short hand
   450 The next example makes radical use of the short hand
   451   facilities.  A homomorphism is an endomorphism if both orders
   451   facilities.  A homomorphism is an endomorphism if both orders
   452   coincide.%
   452   coincide.%
   453 \end{isamarkuptext}%
   453 \end{isamarkuptext}%
   454 \isamarkuptrue%
   454 \isamarkuptrue%
   455 \ \ \isacommand{locale}\isamarkupfalse%
   455 \ \ \isacommand{locale}\isamarkupfalse%
   456 \ lattice{\isacharunderscore}end\ {\isacharequal}\ lattice{\isacharunderscore}hom\ {\isacharunderscore}\ le%
   456 \ lattice{\isaliteral{5F}{\isacharunderscore}}end\ {\isaliteral{3D}{\isacharequal}}\ lattice{\isaliteral{5F}{\isacharunderscore}}hom\ {\isaliteral{5F}{\isacharunderscore}}\ le%
   457 \begin{isamarkuptext}%
   457 \begin{isamarkuptext}%
   458 The notation~\isa{{\isacharunderscore}} enables to omit a parameter in a
   458 The notation~\isa{{\isaliteral{5F}{\isacharunderscore}}} enables to omit a parameter in a
   459   positional instantiation.  The omitted parameter,~\isa{le} becomes
   459   positional instantiation.  The omitted parameter,~\isa{le} becomes
   460   the parameter of the declared locale and is, in the following
   460   the parameter of the declared locale and is, in the following
   461   position, used to instantiate the second parameter of \isa{lattice{\isacharunderscore}hom}.  The effect is that of identifying the first in second
   461   position, used to instantiate the second parameter of \isa{lattice{\isaliteral{5F}{\isacharunderscore}}hom}.  The effect is that of identifying the first in second
   462   parameter of the homomorphism locale.%
   462   parameter of the homomorphism locale.%
   463 \end{isamarkuptext}%
   463 \end{isamarkuptext}%
   464 \isamarkuptrue%
   464 \isamarkuptrue%
   465 %
   465 %
   466 \begin{isamarkuptext}%
   466 \begin{isamarkuptext}%
   467 The inheritance diagram of the situation we have now is shown
   467 The inheritance diagram of the situation we have now is shown
   468   in Figure~\ref{fig:hom}, where the dashed line depicts an
   468   in Figure~\ref{fig:hom}, where the dashed line depicts an
   469   interpretation which is introduced below.  Parameter instantiations
   469   interpretation which is introduced below.  Parameter instantiations
   470   are indicated by $\sqsubseteq \mapsto \preceq$ etc.  By looking at
   470   are indicated by $\sqsubseteq \mapsto \preceq$ etc.  By looking at
   471   the inheritance diagram it would seem
   471   the inheritance diagram it would seem
   472   that two identical copies of each of the locales \isa{partial{\isacharunderscore}order} and \isa{lattice} are imported by \isa{lattice{\isacharunderscore}end}.  This is not the case!  Inheritance paths with
   472   that two identical copies of each of the locales \isa{partial{\isaliteral{5F}{\isacharunderscore}}order} and \isa{lattice} are imported by \isa{lattice{\isaliteral{5F}{\isacharunderscore}}end}.  This is not the case!  Inheritance paths with
   473   identical morphisms are automatically detected and
   473   identical morphisms are automatically detected and
   474   the conclusions of the respective locales appear only once.
   474   the conclusions of the respective locales appear only once.
   475 
   475 
   476 \begin{figure}
   476 \begin{figure}
   477 \hrule \vspace{2ex}
   477 \hrule \vspace{2ex}
   478 \begin{center}
   478 \begin{center}
   479 \begin{tikzpicture}
   479 \begin{tikzpicture}
   480   \node (o) at (0,0) {\isa{partial{\isacharunderscore}order}};
   480   \node (o) at (0,0) {\isa{partial{\isaliteral{5F}{\isacharunderscore}}order}};
   481   \node (oh) at (1.5,-2) {\isa{order{\isacharunderscore}preserving}};
   481   \node (oh) at (1.5,-2) {\isa{order{\isaliteral{5F}{\isacharunderscore}}preserving}};
   482   \node (oh1) at (1.5,-0.7) {$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
   482   \node (oh1) at (1.5,-0.7) {$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
   483   \node (oh2) at (0,-1.3) {$\scriptscriptstyle \sqsubseteq \mapsto \preceq$};
   483   \node (oh2) at (0,-1.3) {$\scriptscriptstyle \sqsubseteq \mapsto \preceq$};
   484   \node (l) at (-1.5,-2) {\isa{lattice}};
   484   \node (l) at (-1.5,-2) {\isa{lattice}};
   485   \node (lh) at (0,-4) {\isa{lattice{\isacharunderscore}hom}};
   485   \node (lh) at (0,-4) {\isa{lattice{\isaliteral{5F}{\isacharunderscore}}hom}};
   486   \node (lh1) at (0,-2.7) {$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
   486   \node (lh1) at (0,-2.7) {$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
   487   \node (lh2) at (-1.5,-3.3) {$\scriptscriptstyle \sqsubseteq \mapsto \preceq$};
   487   \node (lh2) at (-1.5,-3.3) {$\scriptscriptstyle \sqsubseteq \mapsto \preceq$};
   488   \node (le) at (0,-6) {\isa{lattice{\isacharunderscore}end}};
   488   \node (le) at (0,-6) {\isa{lattice{\isaliteral{5F}{\isacharunderscore}}end}};
   489   \node (le1) at (0,-4.8)
   489   \node (le1) at (0,-4.8)
   490     [anchor=west]{$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
   490     [anchor=west]{$\scriptscriptstyle \sqsubseteq \mapsto \sqsubseteq$};
   491   \node (le2) at (0,-5.2)
   491   \node (le2) at (0,-5.2)
   492     [anchor=west]{$\scriptscriptstyle \preceq \mapsto \sqsubseteq$};
   492     [anchor=west]{$\scriptscriptstyle \preceq \mapsto \sqsubseteq$};
   493   \draw (o) -- (l);
   493   \draw (o) -- (l);
   511   preserving.  As the final example of this section, a locale
   511   preserving.  As the final example of this section, a locale
   512   interpretation is used to assert this:%
   512   interpretation is used to assert this:%
   513 \end{isamarkuptext}%
   513 \end{isamarkuptext}%
   514 \isamarkuptrue%
   514 \isamarkuptrue%
   515 \ \ \isacommand{sublocale}\isamarkupfalse%
   515 \ \ \isacommand{sublocale}\isamarkupfalse%
   516 \ lattice{\isacharunderscore}hom\ {\isasymsubseteq}\ order{\isacharunderscore}preserving%
   516 \ lattice{\isaliteral{5F}{\isacharunderscore}}hom\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\ order{\isaliteral{5F}{\isacharunderscore}}preserving%
   517 \isadelimproof
   517 \isadelimproof
   518 \ %
   518 \ %
   519 \endisadelimproof
   519 \endisadelimproof
   520 %
   520 %
   521 \isatagproof
   521 \isatagproof
   522 \isacommand{proof}\isamarkupfalse%
   522 \isacommand{proof}\isamarkupfalse%
   523 \ unfold{\isacharunderscore}locales\isanewline
   523 \ unfold{\isaliteral{5F}{\isacharunderscore}}locales\isanewline
   524 \ \ \ \ \isacommand{fix}\isamarkupfalse%
   524 \ \ \ \ \isacommand{fix}\isamarkupfalse%
   525 \ x\ y\isanewline
   525 \ x\ y\isanewline
   526 \ \ \ \ \isacommand{assume}\isamarkupfalse%
   526 \ \ \ \ \isacommand{assume}\isamarkupfalse%
   527 \ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y{\isachardoublequoteclose}\isanewline
   527 \ {\isaliteral{22}{\isachardoublequoteopen}}x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   528 \ \ \ \ \isacommand{then}\isamarkupfalse%
   528 \ \ \ \ \isacommand{then}\isamarkupfalse%
   529 \ \isacommand{have}\isamarkupfalse%
   529 \ \isacommand{have}\isamarkupfalse%
   530 \ {\isachardoublequoteopen}y\ {\isacharequal}\ {\isacharparenleft}x\ {\isasymsqunion}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   530 \ {\isaliteral{22}{\isachardoublequoteopen}}y\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}x\ {\isaliteral{5C3C7371756E696F6E3E}{\isasymsqunion}}\ y{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
   531 \ {\isacharparenleft}simp\ add{\isacharcolon}\ le{\isachardot}join{\isacharunderscore}connection{\isacharparenright}\isanewline
   531 \ {\isaliteral{28}{\isacharparenleft}}simp\ add{\isaliteral{3A}{\isacharcolon}}\ le{\isaliteral{2E}{\isachardot}}join{\isaliteral{5F}{\isacharunderscore}}connection{\isaliteral{29}{\isacharparenright}}\isanewline
   532 \ \ \ \ \isacommand{then}\isamarkupfalse%
   532 \ \ \ \ \isacommand{then}\isamarkupfalse%
   533 \ \isacommand{have}\isamarkupfalse%
   533 \ \isacommand{have}\isamarkupfalse%
   534 \ {\isachardoublequoteopen}{\isasymphi}\ y\ {\isacharequal}\ {\isacharparenleft}{\isasymphi}\ x\ {\isasymsqunion}{\isacharprime}\ {\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   534 \ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ y\ {\isaliteral{3D}{\isacharequal}}\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ x\ {\isaliteral{5C3C7371756E696F6E3E}{\isasymsqunion}}{\isaliteral{27}{\isacharprime}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ y{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
   535 \ {\isacharparenleft}simp\ add{\isacharcolon}\ hom{\isacharunderscore}join\ {\isacharbrackleft}symmetric{\isacharbrackright}{\isacharparenright}\isanewline
   535 \ {\isaliteral{28}{\isacharparenleft}}simp\ add{\isaliteral{3A}{\isacharcolon}}\ hom{\isaliteral{5F}{\isacharunderscore}}join\ {\isaliteral{5B}{\isacharbrackleft}}symmetric{\isaliteral{5D}{\isacharbrackright}}{\isaliteral{29}{\isacharparenright}}\isanewline
   536 \ \ \ \ \isacommand{then}\isamarkupfalse%
   536 \ \ \ \ \isacommand{then}\isamarkupfalse%
   537 \ \isacommand{show}\isamarkupfalse%
   537 \ \isacommand{show}\isamarkupfalse%
   538 \ {\isachardoublequoteopen}{\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
   538 \ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C7068693E}{\isasymphi}}\ x\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ y{\isaliteral{22}{\isachardoublequoteclose}}\ \isacommand{by}\isamarkupfalse%
   539 \ {\isacharparenleft}simp\ add{\isacharcolon}\ le{\isacharprime}{\isachardot}join{\isacharunderscore}connection{\isacharparenright}\isanewline
   539 \ {\isaliteral{28}{\isacharparenleft}}simp\ add{\isaliteral{3A}{\isacharcolon}}\ le{\isaliteral{27}{\isacharprime}}{\isaliteral{2E}{\isachardot}}join{\isaliteral{5F}{\isacharunderscore}}connection{\isaliteral{29}{\isacharparenright}}\isanewline
   540 \ \ \isacommand{qed}\isamarkupfalse%
   540 \ \ \isacommand{qed}\isamarkupfalse%
   541 %
   541 %
   542 \endisatagproof
   542 \endisatagproof
   543 {\isafoldproof}%
   543 {\isafoldproof}%
   544 %
   544 %
   546 %
   546 %
   547 \endisadelimproof
   547 \endisadelimproof
   548 %
   548 %
   549 \begin{isamarkuptext}%
   549 \begin{isamarkuptext}%
   550 Theorems and other declarations --- syntax, in particular --- from
   550 Theorems and other declarations --- syntax, in particular --- from
   551   the locale \isa{order{\isacharunderscore}preserving} are now active in \isa{lattice{\isacharunderscore}hom}, for example
   551   the locale \isa{order{\isaliteral{5F}{\isacharunderscore}}preserving} are now active in \isa{lattice{\isaliteral{5F}{\isacharunderscore}}hom}, for example
   552   \isa{hom{\isacharunderscore}le}:
   552   \isa{hom{\isaliteral{5F}{\isacharunderscore}}le}:
   553   \begin{isabelle}%
   553   \begin{isabelle}%
   554 \ \ {\isacharquery}x\ {\isasymsqsubseteq}\ {\isacharquery}y\ {\isasymLongrightarrow}\ {\isasymphi}\ {\isacharquery}x\ {\isasympreceq}\ {\isasymphi}\ {\isacharquery}y%
   554 \ \ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ {\isaliteral{3F}{\isacharquery}}y\ {\isaliteral{5C3C4C6F6E6772696768746172726F773E}{\isasymLongrightarrow}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ {\isaliteral{3F}{\isacharquery}}x\ {\isaliteral{5C3C7072656365713E}{\isasympreceq}}\ {\isaliteral{5C3C7068693E}{\isasymphi}}\ {\isaliteral{3F}{\isacharquery}}y%
   555 \end{isabelle}
   555 \end{isabelle}
   556   This theorem will be useful in the following section.%
   556   This theorem will be useful in the following section.%
   557 \end{isamarkuptext}%
   557 \end{isamarkuptext}%
   558 \isamarkuptrue%
   558 \isamarkuptrue%
   559 %
   559 %
   563 %
   563 %
   564 \begin{isamarkuptext}%
   564 \begin{isamarkuptext}%
   565 There are situations where an interpretation is not possible
   565 There are situations where an interpretation is not possible
   566   in the general case since the desired property is only valid if
   566   in the general case since the desired property is only valid if
   567   certain conditions are fulfilled.  Take, for example, the function
   567   certain conditions are fulfilled.  Take, for example, the function
   568   \isa{{\isasymlambda}i{\isachardot}\ n\ {\isacharasterisk}\ i} that scales its argument by a constant factor.
   568   \isa{{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}i{\isaliteral{2E}{\isachardot}}\ n\ {\isaliteral{2A}{\isacharasterisk}}\ i} that scales its argument by a constant factor.
   569   This function is order preserving (and even a lattice endomorphism)
   569   This function is order preserving (and even a lattice endomorphism)
   570   with respect to \isa{op\ {\isasymle}} provided \isa{n\ {\isasymge}\ {\isadigit{0}}}.
   570   with respect to \isa{op\ {\isaliteral{5C3C6C653E}{\isasymle}}} provided \isa{n\ {\isaliteral{5C3C67653E}{\isasymge}}\ {\isadigit{0}}}.
   571 
   571 
   572   It is not possible to express this using a global interpretation,
   572   It is not possible to express this using a global interpretation,
   573   because it is in general unspecified whether~\isa{n} is
   573   because it is in general unspecified whether~\isa{n} is
   574   non-negative, but one may make an interpretation in an inner context
   574   non-negative, but one may make an interpretation in an inner context
   575   of a proof where full information is available.
   575   of a proof where full information is available.
   580   this can be done with the \isakeyword{sublocale} command.  For this
   580   this can be done with the \isakeyword{sublocale} command.  For this
   581   purpose, we introduce a locale for the condition.%
   581   purpose, we introduce a locale for the condition.%
   582 \end{isamarkuptext}%
   582 \end{isamarkuptext}%
   583 \isamarkuptrue%
   583 \isamarkuptrue%
   584 \ \ \isacommand{locale}\isamarkupfalse%
   584 \ \ \isacommand{locale}\isamarkupfalse%
   585 \ non{\isacharunderscore}negative\ {\isacharequal}\isanewline
   585 \ non{\isaliteral{5F}{\isacharunderscore}}negative\ {\isaliteral{3D}{\isacharequal}}\isanewline
   586 \ \ \ \ \isakeyword{fixes}\ n\ {\isacharcolon}{\isacharcolon}\ int\isanewline
   586 \ \ \ \ \isakeyword{fixes}\ n\ {\isaliteral{3A}{\isacharcolon}}{\isaliteral{3A}{\isacharcolon}}\ int\isanewline
   587 \ \ \ \ \isakeyword{assumes}\ non{\isacharunderscore}neg{\isacharcolon}\ {\isachardoublequoteopen}{\isadigit{0}}\ {\isasymle}\ n{\isachardoublequoteclose}%
   587 \ \ \ \ \isakeyword{assumes}\ non{\isaliteral{5F}{\isacharunderscore}}neg{\isaliteral{3A}{\isacharcolon}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isadigit{0}}\ {\isaliteral{5C3C6C653E}{\isasymle}}\ n{\isaliteral{22}{\isachardoublequoteclose}}%
   588 \begin{isamarkuptext}%
   588 \begin{isamarkuptext}%
   589 It is again convenient to make the interpretation in an
   589 It is again convenient to make the interpretation in an
   590   incremental fashion, first for order preserving maps, the for
   590   incremental fashion, first for order preserving maps, the for
   591   lattice endomorphisms.%
   591   lattice endomorphisms.%
   592 \end{isamarkuptext}%
   592 \end{isamarkuptext}%
   593 \isamarkuptrue%
   593 \isamarkuptrue%
   594 \ \ \isacommand{sublocale}\isamarkupfalse%
   594 \ \ \isacommand{sublocale}\isamarkupfalse%
   595 \ non{\isacharunderscore}negative\ {\isasymsubseteq}\isanewline
   595 \ non{\isaliteral{5F}{\isacharunderscore}}negative\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\isanewline
   596 \ \ \ \ \ \ order{\isacharunderscore}preserving\ {\isachardoublequoteopen}op\ {\isasymle}{\isachardoublequoteclose}\ {\isachardoublequoteopen}op\ {\isasymle}{\isachardoublequoteclose}\ {\isachardoublequoteopen}{\isasymlambda}i{\isachardot}\ n\ {\isacharasterisk}\ i{\isachardoublequoteclose}\isanewline
   596 \ \ \ \ \ \ order{\isaliteral{5F}{\isacharunderscore}}preserving\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}i{\isaliteral{2E}{\isachardot}}\ n\ {\isaliteral{2A}{\isacharasterisk}}\ i{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   597 %
   597 %
   598 \isadelimproof
   598 \isadelimproof
   599 \ \ \ \ %
   599 \ \ \ \ %
   600 \endisadelimproof
   600 \endisadelimproof
   601 %
   601 %
   602 \isatagproof
   602 \isatagproof
   603 \isacommand{using}\isamarkupfalse%
   603 \isacommand{using}\isamarkupfalse%
   604 \ non{\isacharunderscore}neg\ \isacommand{by}\isamarkupfalse%
   604 \ non{\isaliteral{5F}{\isacharunderscore}}neg\ \isacommand{by}\isamarkupfalse%
   605 \ unfold{\isacharunderscore}locales\ {\isacharparenleft}rule\ mult{\isacharunderscore}left{\isacharunderscore}mono{\isacharparenright}%
   605 \ unfold{\isaliteral{5F}{\isacharunderscore}}locales\ {\isaliteral{28}{\isacharparenleft}}rule\ mult{\isaliteral{5F}{\isacharunderscore}}left{\isaliteral{5F}{\isacharunderscore}}mono{\isaliteral{29}{\isacharparenright}}%
   606 \endisatagproof
   606 \endisatagproof
   607 {\isafoldproof}%
   607 {\isafoldproof}%
   608 %
   608 %
   609 \isadelimproof
   609 \isadelimproof
   610 %
   610 %
   611 \endisadelimproof
   611 \endisadelimproof
   612 %
   612 %
   613 \begin{isamarkuptext}%
   613 \begin{isamarkuptext}%
   614 While the proof of the previous interpretation
   614 While the proof of the previous interpretation
   615   is straightforward from monotonicity lemmas for~\isa{op\ {\isacharasterisk}}, the
   615   is straightforward from monotonicity lemmas for~\isa{op\ {\isaliteral{2A}{\isacharasterisk}}}, the
   616   second proof follows a useful pattern.%
   616   second proof follows a useful pattern.%
   617 \end{isamarkuptext}%
   617 \end{isamarkuptext}%
   618 \isamarkuptrue%
   618 \isamarkuptrue%
   619 %
   619 %
   620 \isadelimvisible
   620 \isadelimvisible
   621 \ \ %
   621 \ \ %
   622 \endisadelimvisible
   622 \endisadelimvisible
   623 %
   623 %
   624 \isatagvisible
   624 \isatagvisible
   625 \isacommand{sublocale}\isamarkupfalse%
   625 \isacommand{sublocale}\isamarkupfalse%
   626 \ non{\isacharunderscore}negative\ {\isasymsubseteq}\ lattice{\isacharunderscore}end\ {\isachardoublequoteopen}op\ {\isasymle}{\isachardoublequoteclose}\ {\isachardoublequoteopen}{\isasymlambda}i{\isachardot}\ n\ {\isacharasterisk}\ i{\isachardoublequoteclose}\isanewline
   626 \ non{\isaliteral{5F}{\isacharunderscore}}negative\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\ lattice{\isaliteral{5F}{\isacharunderscore}}end\ {\isaliteral{22}{\isachardoublequoteopen}}op\ {\isaliteral{5C3C6C653E}{\isasymle}}{\isaliteral{22}{\isachardoublequoteclose}}\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}i{\isaliteral{2E}{\isachardot}}\ n\ {\isaliteral{2A}{\isacharasterisk}}\ i{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   627 \ \ \isacommand{proof}\isamarkupfalse%
   627 \ \ \isacommand{proof}\isamarkupfalse%
   628 \ {\isacharparenleft}unfold{\isacharunderscore}locales{\isacharcomma}\ unfold\ int{\isacharunderscore}min{\isacharunderscore}eq\ int{\isacharunderscore}max{\isacharunderscore}eq{\isacharparenright}%
   628 \ {\isaliteral{28}{\isacharparenleft}}unfold{\isaliteral{5F}{\isacharunderscore}}locales{\isaliteral{2C}{\isacharcomma}}\ unfold\ int{\isaliteral{5F}{\isacharunderscore}}min{\isaliteral{5F}{\isacharunderscore}}eq\ int{\isaliteral{5F}{\isacharunderscore}}max{\isaliteral{5F}{\isacharunderscore}}eq{\isaliteral{29}{\isacharparenright}}%
   629 \begin{isamarkuptxt}%
   629 \begin{isamarkuptxt}%
   630 \normalsize Unfolding the locale predicates \emph{and} the
   630 \normalsize Unfolding the locale predicates \emph{and} the
   631       interpretation equations immediately yields two subgoals that
   631       interpretation equations immediately yields two subgoals that
   632       reflect the core conjecture.
   632       reflect the core conjecture.
   633       \begin{isabelle}%
   633       \begin{isabelle}%
   634 \ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ n\ {\isacharasterisk}\ min\ x\ y\ {\isacharequal}\ min\ {\isacharparenleft}n\ {\isacharasterisk}\ x{\isacharparenright}\ {\isacharparenleft}n\ {\isacharasterisk}\ y{\isacharparenright}\isanewline
   634 \ {\isadigit{1}}{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ n\ {\isaliteral{2A}{\isacharasterisk}}\ min\ x\ y\ {\isaliteral{3D}{\isacharequal}}\ min\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2A}{\isacharasterisk}}\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2A}{\isacharasterisk}}\ y{\isaliteral{29}{\isacharparenright}}\isanewline
   635 \ {\isadigit{2}}{\isachardot}\ {\isasymAnd}x\ y{\isachardot}\ n\ {\isacharasterisk}\ max\ x\ y\ {\isacharequal}\ max\ {\isacharparenleft}n\ {\isacharasterisk}\ x{\isacharparenright}\ {\isacharparenleft}n\ {\isacharasterisk}\ y{\isacharparenright}%
   635 \ {\isadigit{2}}{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C416E643E}{\isasymAnd}}x\ y{\isaliteral{2E}{\isachardot}}\ n\ {\isaliteral{2A}{\isacharasterisk}}\ max\ x\ y\ {\isaliteral{3D}{\isacharequal}}\ max\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2A}{\isacharasterisk}}\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{28}{\isacharparenleft}}n\ {\isaliteral{2A}{\isacharasterisk}}\ y{\isaliteral{29}{\isacharparenright}}%
   636 \end{isabelle}
   636 \end{isabelle}
   637       It is now necessary to show, in the context of \isa{non{\isacharunderscore}negative}, that multiplication by~\isa{n} commutes with
   637       It is now necessary to show, in the context of \isa{non{\isaliteral{5F}{\isacharunderscore}}negative}, that multiplication by~\isa{n} commutes with
   638       \isa{min} and \isa{max}.%
   638       \isa{min} and \isa{max}.%
   639 \end{isamarkuptxt}%
   639 \end{isamarkuptxt}%
   640 \isamarkuptrue%
   640 \isamarkuptrue%
   641 \ \ \isacommand{qed}\isamarkupfalse%
   641 \ \ \isacommand{qed}\isamarkupfalse%
   642 \ {\isacharparenleft}auto\ simp{\isacharcolon}\ hom{\isacharunderscore}le{\isacharparenright}%
   642 \ {\isaliteral{28}{\isacharparenleft}}auto\ simp{\isaliteral{3A}{\isacharcolon}}\ hom{\isaliteral{5F}{\isacharunderscore}}le{\isaliteral{29}{\isacharparenright}}%
   643 \endisatagvisible
   643 \endisatagvisible
   644 {\isafoldvisible}%
   644 {\isafoldvisible}%
   645 %
   645 %
   646 \isadelimvisible
   646 \isadelimvisible
   647 %
   647 %
   648 \endisadelimvisible
   648 \endisadelimvisible
   649 %
   649 %
   650 \begin{isamarkuptext}%
   650 \begin{isamarkuptext}%
   651 The lemma \isa{hom{\isacharunderscore}le}
   651 The lemma \isa{hom{\isaliteral{5F}{\isacharunderscore}}le}
   652   simplifies a proof that would have otherwise been lengthy and we may
   652   simplifies a proof that would have otherwise been lengthy and we may
   653   consider making it a default rule for the simplifier:%
   653   consider making it a default rule for the simplifier:%
   654 \end{isamarkuptext}%
   654 \end{isamarkuptext}%
   655 \isamarkuptrue%
   655 \isamarkuptrue%
   656 \ \ \isacommand{lemmas}\isamarkupfalse%
   656 \ \ \isacommand{lemmas}\isamarkupfalse%
   657 \ {\isacharparenleft}\isakeyword{in}\ order{\isacharunderscore}preserving{\isacharparenright}\ hom{\isacharunderscore}le\ {\isacharbrackleft}simp{\isacharbrackright}%
   657 \ {\isaliteral{28}{\isacharparenleft}}\isakeyword{in}\ order{\isaliteral{5F}{\isacharunderscore}}preserving{\isaliteral{29}{\isacharparenright}}\ hom{\isaliteral{5F}{\isacharunderscore}}le\ {\isaliteral{5B}{\isacharbrackleft}}simp{\isaliteral{5D}{\isacharbrackright}}%
   658 \isamarkupsubsection{Avoiding Infinite Chains of Interpretations
   658 \isamarkupsubsection{Avoiding Infinite Chains of Interpretations
   659   \label{sec:infinite-chains}%
   659   \label{sec:infinite-chains}%
   660 }
   660 }
   661 \isamarkuptrue%
   661 \isamarkuptrue%
   662 %
   662 %
   676 \ \ %
   676 \ \ %
   677 \endisadelimvisible
   677 \endisadelimvisible
   678 %
   678 %
   679 \isatagvisible
   679 \isatagvisible
   680 \isacommand{sublocale}\isamarkupfalse%
   680 \isacommand{sublocale}\isamarkupfalse%
   681 \ partial{\isacharunderscore}order\ {\isasymsubseteq}\ f{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isachardoublequoteclose}\isanewline
   681 \ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\ f{\isaliteral{3A}{\isacharcolon}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   682 \ \ \ \ \isacommand{oops}\isamarkupfalse%
   682 \ \ \ \ \isacommand{oops}\isamarkupfalse%
   683 %
   683 %
   684 \endisatagvisible
   684 \endisatagvisible
   685 {\isafoldvisible}%
   685 {\isafoldvisible}%
   686 %
   686 %
   690 %
   690 %
   691 \begin{isamarkuptext}%
   691 \begin{isamarkuptext}%
   692 Unfortunately this is a cyclic interpretation that leads to an
   692 Unfortunately this is a cyclic interpretation that leads to an
   693   infinite chain, namely
   693   infinite chain, namely
   694   \begin{isabelle}%
   694   \begin{isabelle}%
   695 \ \ partial{\isacharunderscore}order\ {\isasymsubseteq}\ partial{\isacharunderscore}order\ {\isacharparenleft}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isacharparenright}\ {\isasymsubseteq}\isanewline
   695 \ \ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\isanewline
   696 \isaindent{\ \ }\ \ partial{\isacharunderscore}order\ {\isacharparenleft}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x\ y{\isachardot}\ f\ x\ y\ {\isasymsqsubseteq}\ g\ x\ y{\isacharparenright}\ {\isasymsubseteq}\ \ {\isasymdots}%
   696 \isaindent{\ \ }\ \ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x\ y{\isaliteral{2E}{\isachardot}}\ f\ x\ y\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x\ y{\isaliteral{29}{\isacharparenright}}\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\ \ {\isaliteral{5C3C646F74733E}{\isasymdots}}%
   697 \end{isabelle}
   697 \end{isabelle}
   698   and the interpretation is rejected.
   698   and the interpretation is rejected.
   699 
   699 
   700   Instead it is necessary to declare a locale that is logically
   700   Instead it is necessary to declare a locale that is logically
   701   equivalent to \isa{partial{\isacharunderscore}order} but serves to collect facts
   701   equivalent to \isa{partial{\isaliteral{5F}{\isacharunderscore}}order} but serves to collect facts
   702   about functions spaces where the co-domain is a partial order, and
   702   about functions spaces where the co-domain is a partial order, and
   703   to make the interpretation in its context:%
   703   to make the interpretation in its context:%
   704 \end{isamarkuptext}%
   704 \end{isamarkuptext}%
   705 \isamarkuptrue%
   705 \isamarkuptrue%
   706 \ \ \isacommand{locale}\isamarkupfalse%
   706 \ \ \isacommand{locale}\isamarkupfalse%
   707 \ fun{\isacharunderscore}partial{\isacharunderscore}order\ {\isacharequal}\ partial{\isacharunderscore}order\isanewline
   707 \ fun{\isaliteral{5F}{\isacharunderscore}}partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{3D}{\isacharequal}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\isanewline
   708 \isanewline
   708 \isanewline
   709 \ \ \isacommand{sublocale}\isamarkupfalse%
   709 \ \ \isacommand{sublocale}\isamarkupfalse%
   710 \ fun{\isacharunderscore}partial{\isacharunderscore}order\ {\isasymsubseteq}\isanewline
   710 \ fun{\isaliteral{5F}{\isacharunderscore}}partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\isanewline
   711 \ \ \ \ \ \ f{\isacharcolon}\ partial{\isacharunderscore}order\ {\isachardoublequoteopen}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isachardoublequoteclose}\isanewline
   711 \ \ \ \ \ \ f{\isaliteral{3A}{\isacharcolon}}\ partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   712 %
   712 %
   713 \isadelimproof
   713 \isadelimproof
   714 \ \ \ \ %
   714 \ \ \ \ %
   715 \endisadelimproof
   715 \endisadelimproof
   716 %
   716 %
   717 \isatagproof
   717 \isatagproof
   718 \isacommand{by}\isamarkupfalse%
   718 \isacommand{by}\isamarkupfalse%
   719 \ unfold{\isacharunderscore}locales\ {\isacharparenleft}fast{\isacharcomma}rule{\isacharcomma}fast{\isacharcomma}blast\ intro{\isacharcolon}\ trans{\isacharparenright}%
   719 \ unfold{\isaliteral{5F}{\isacharunderscore}}locales\ {\isaliteral{28}{\isacharparenleft}}fast{\isaliteral{2C}{\isacharcomma}}rule{\isaliteral{2C}{\isacharcomma}}fast{\isaliteral{2C}{\isacharcomma}}blast\ intro{\isaliteral{3A}{\isacharcolon}}\ trans{\isaliteral{29}{\isacharparenright}}%
   720 \endisatagproof
   720 \endisatagproof
   721 {\isafoldproof}%
   721 {\isafoldproof}%
   722 %
   722 %
   723 \isadelimproof
   723 \isadelimproof
   724 %
   724 %
   730   related hierarchy.  By means of the same lifting, a function space
   730   related hierarchy.  By means of the same lifting, a function space
   731   is a lattice if its co-domain is a lattice:%
   731   is a lattice if its co-domain is a lattice:%
   732 \end{isamarkuptext}%
   732 \end{isamarkuptext}%
   733 \isamarkuptrue%
   733 \isamarkuptrue%
   734 \ \ \isacommand{locale}\isamarkupfalse%
   734 \ \ \isacommand{locale}\isamarkupfalse%
   735 \ fun{\isacharunderscore}lattice\ {\isacharequal}\ fun{\isacharunderscore}partial{\isacharunderscore}order\ {\isacharplus}\ lattice\isanewline
   735 \ fun{\isaliteral{5F}{\isacharunderscore}}lattice\ {\isaliteral{3D}{\isacharequal}}\ fun{\isaliteral{5F}{\isacharunderscore}}partial{\isaliteral{5F}{\isacharunderscore}}order\ {\isaliteral{2B}{\isacharplus}}\ lattice\isanewline
   736 \isanewline
   736 \isanewline
   737 \ \ \isacommand{sublocale}\isamarkupfalse%
   737 \ \ \isacommand{sublocale}\isamarkupfalse%
   738 \ fun{\isacharunderscore}lattice\ {\isasymsubseteq}\ f{\isacharcolon}\ lattice\ {\isachardoublequoteopen}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isachardoublequoteclose}\isanewline
   738 \ fun{\isaliteral{5F}{\isacharunderscore}}lattice\ {\isaliteral{5C3C73756273657465713E}{\isasymsubseteq}}\ f{\isaliteral{3A}{\isacharcolon}}\ lattice\ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   739 %
   739 %
   740 \isadelimproof
   740 \isadelimproof
   741 \ \ \ \ %
   741 \ \ \ \ %
   742 \endisadelimproof
   742 \endisadelimproof
   743 %
   743 %
   744 \isatagproof
   744 \isatagproof
   745 \isacommand{proof}\isamarkupfalse%
   745 \isacommand{proof}\isamarkupfalse%
   746 \ unfold{\isacharunderscore}locales\isanewline
   746 \ unfold{\isaliteral{5F}{\isacharunderscore}}locales\isanewline
   747 \ \ \ \ \isacommand{fix}\isamarkupfalse%
   747 \ \ \ \ \isacommand{fix}\isamarkupfalse%
   748 \ f\ g\isanewline
   748 \ f\ g\isanewline
   749 \ \ \ \ \isacommand{have}\isamarkupfalse%
   749 \ \ \ \ \isacommand{have}\isamarkupfalse%
   750 \ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}inf\ {\isacharparenleft}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isacharparenright}\ f\ g\ {\isacharparenleft}{\isasymlambda}x{\isachardot}\ f\ x\ {\isasymsqinter}\ g\ x{\isacharparenright}{\isachardoublequoteclose}\isanewline
   750 \ {\isaliteral{22}{\isachardoublequoteopen}}partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}inf\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{29}{\isacharparenright}}\ f\ g\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C7371696E7465723E}{\isasymsqinter}}\ g\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   751 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   751 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   752 \ {\isacharparenleft}rule\ is{\isacharunderscore}infI{\isacharparenright}\ \isacommand{apply}\isamarkupfalse%
   752 \ {\isaliteral{28}{\isacharparenleft}}rule\ is{\isaliteral{5F}{\isacharunderscore}}infI{\isaliteral{29}{\isacharparenright}}\ \isacommand{apply}\isamarkupfalse%
   753 \ rule{\isacharplus}\ \isacommand{apply}\isamarkupfalse%
   753 \ rule{\isaliteral{2B}{\isacharplus}}\ \isacommand{apply}\isamarkupfalse%
   754 \ {\isacharparenleft}drule\ spec{\isacharcomma}\ assumption{\isacharparenright}{\isacharplus}\ \isacommand{done}\isamarkupfalse%
   754 \ {\isaliteral{28}{\isacharparenleft}}drule\ spec{\isaliteral{2C}{\isacharcomma}}\ assumption{\isaliteral{29}{\isacharparenright}}{\isaliteral{2B}{\isacharplus}}\ \isacommand{done}\isamarkupfalse%
   755 \isanewline
   755 \isanewline
   756 \ \ \ \ \isacommand{then}\isamarkupfalse%
   756 \ \ \ \ \isacommand{then}\isamarkupfalse%
   757 \ \isacommand{show}\isamarkupfalse%
   757 \ \isacommand{show}\isamarkupfalse%
   758 \ {\isachardoublequoteopen}{\isasymexists}inf{\isachardot}\ partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}inf\ {\isacharparenleft}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isacharparenright}\ f\ g\ inf{\isachardoublequoteclose}\isanewline
   758 \ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}inf{\isaliteral{2E}{\isachardot}}\ partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}inf\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{29}{\isacharparenright}}\ f\ g\ inf{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   759 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   759 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   760 \ fast\isanewline
   760 \ fast\isanewline
   761 \ \ \isacommand{next}\isamarkupfalse%
   761 \ \ \isacommand{next}\isamarkupfalse%
   762 \isanewline
   762 \isanewline
   763 \ \ \ \ \isacommand{fix}\isamarkupfalse%
   763 \ \ \ \ \isacommand{fix}\isamarkupfalse%
   764 \ f\ g\isanewline
   764 \ f\ g\isanewline
   765 \ \ \ \ \isacommand{have}\isamarkupfalse%
   765 \ \ \ \ \isacommand{have}\isamarkupfalse%
   766 \ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}sup\ {\isacharparenleft}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isacharparenright}\ f\ g\ {\isacharparenleft}{\isasymlambda}x{\isachardot}\ f\ x\ {\isasymsqunion}\ g\ x{\isacharparenright}{\isachardoublequoteclose}\isanewline
   766 \ {\isaliteral{22}{\isachardoublequoteopen}}partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}sup\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{29}{\isacharparenright}}\ f\ g\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C7371756E696F6E3E}{\isasymsqunion}}\ g\ x{\isaliteral{29}{\isacharparenright}}{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   767 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   767 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
   768 \ {\isacharparenleft}rule\ is{\isacharunderscore}supI{\isacharparenright}\ \isacommand{apply}\isamarkupfalse%
   768 \ {\isaliteral{28}{\isacharparenleft}}rule\ is{\isaliteral{5F}{\isacharunderscore}}supI{\isaliteral{29}{\isacharparenright}}\ \isacommand{apply}\isamarkupfalse%
   769 \ rule{\isacharplus}\ \isacommand{apply}\isamarkupfalse%
   769 \ rule{\isaliteral{2B}{\isacharplus}}\ \isacommand{apply}\isamarkupfalse%
   770 \ {\isacharparenleft}drule\ spec{\isacharcomma}\ assumption{\isacharparenright}{\isacharplus}\ \isacommand{done}\isamarkupfalse%
   770 \ {\isaliteral{28}{\isacharparenleft}}drule\ spec{\isaliteral{2C}{\isacharcomma}}\ assumption{\isaliteral{29}{\isacharparenright}}{\isaliteral{2B}{\isacharplus}}\ \isacommand{done}\isamarkupfalse%
   771 \isanewline
   771 \isanewline
   772 \ \ \ \ \isacommand{then}\isamarkupfalse%
   772 \ \ \ \ \isacommand{then}\isamarkupfalse%
   773 \ \isacommand{show}\isamarkupfalse%
   773 \ \isacommand{show}\isamarkupfalse%
   774 \ {\isachardoublequoteopen}{\isasymexists}sup{\isachardot}\ partial{\isacharunderscore}order{\isachardot}is{\isacharunderscore}sup\ {\isacharparenleft}{\isasymlambda}f\ g{\isachardot}\ {\isasymforall}x{\isachardot}\ f\ x\ {\isasymsqsubseteq}\ g\ x{\isacharparenright}\ f\ g\ sup{\isachardoublequoteclose}\isanewline
   774 \ {\isaliteral{22}{\isachardoublequoteopen}}{\isaliteral{5C3C6578697374733E}{\isasymexists}}sup{\isaliteral{2E}{\isachardot}}\ partial{\isaliteral{5F}{\isacharunderscore}}order{\isaliteral{2E}{\isachardot}}is{\isaliteral{5F}{\isacharunderscore}}sup\ {\isaliteral{28}{\isacharparenleft}}{\isaliteral{5C3C6C616D6264613E}{\isasymlambda}}f\ g{\isaliteral{2E}{\isachardot}}\ {\isaliteral{5C3C666F72616C6C3E}{\isasymforall}}x{\isaliteral{2E}{\isachardot}}\ f\ x\ {\isaliteral{5C3C737173756273657465713E}{\isasymsqsubseteq}}\ g\ x{\isaliteral{29}{\isacharparenright}}\ f\ g\ sup{\isaliteral{22}{\isachardoublequoteclose}}\isanewline
   775 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   775 \ \ \ \ \ \ \isacommand{by}\isamarkupfalse%
   776 \ fast\isanewline
   776 \ fast\isanewline
   777 \ \ \isacommand{qed}\isamarkupfalse%
   777 \ \ \isacommand{qed}\isamarkupfalse%
   778 %
   778 %
   779 \endisatagproof
   779 \endisatagproof