66 \isadelimvisible |
66 \isadelimvisible |
67 % |
67 % |
68 \endisadelimvisible |
68 \endisadelimvisible |
69 % |
69 % |
70 \begin{isamarkuptext}% |
70 \begin{isamarkuptext}% |
71 The inner interpretation does not require an |
71 The inner interpretation does not require an elaborate new |
72 elaborate new proof, it is immediate from the preceeding fact and |
72 proof, it is immediate from the preceding fact and proved with |
73 proved with ``.''. Strict qualifiers are normally not necessary for |
73 ``.''. It enriches the local proof context by the very theorems |
74 interpretations inside proofs, since these have only limited scope. |
74 also obtained in the interpretation from Section~\ref{sec:po-first}, |
75 |
75 and \isa{nat{\isachardot}less{\isacharunderscore}def} may directly be used to unfold the |
76 The above interpretation enriches the local proof context by |
76 definition. Theorems from the local interpretation disappear after |
77 the very theorems also obtained in the interpretation from |
77 leaving the proof context --- that is, after the closing |
78 Section~\ref{sec:po-first}, and \isa{nat{\isachardot}less{\isacharunderscore}def} may directly be |
78 \isakeyword{qed} --- and are then replaced by those with the desired |
79 used to unfold the definition. Theorems from the local |
79 substitutions of the strict order.% |
80 interpretation disappear after leaving the proof context --- that |
|
81 is, after the closing \isakeyword{qed} --- and are |
|
82 then replaced by those with the desired substitutions of the strict |
|
83 order.% |
|
84 \end{isamarkuptext}% |
80 \end{isamarkuptext}% |
85 \isamarkuptrue% |
81 \isamarkuptrue% |
86 % |
82 % |
87 \isamarkupsubsection{Further Interpretations% |
83 \isamarkupsubsection{Further Interpretations% |
88 } |
84 } |
137 \isamarkuptrue% |
133 \isamarkuptrue% |
138 \ \ \ \ \isacommand{by}\isamarkupfalse% |
134 \ \ \ \ \isacommand{by}\isamarkupfalse% |
139 \ arith{\isacharplus}% |
135 \ arith{\isacharplus}% |
140 \begin{isamarkuptxt}% |
136 \begin{isamarkuptxt}% |
141 For the first of the equations, we refer to the theorem |
137 For the first of the equations, we refer to the theorem |
142 generated in the previous interpretation.% |
138 shown in the previous interpretation.% |
143 \end{isamarkuptxt}% |
139 \end{isamarkuptxt}% |
144 \isamarkuptrue% |
140 \isamarkuptrue% |
145 \ \ \isacommand{show}\isamarkupfalse% |
141 \ \ \isacommand{show}\isamarkupfalse% |
146 \ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline |
142 \ {\isachardoublequoteopen}partial{\isacharunderscore}order{\isachardot}less\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ {\isacharparenleft}x\ {\isacharless}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline |
147 \ \ \ \ \isacommand{by}\isamarkupfalse% |
143 \ \ \ \ \isacommand{by}\isamarkupfalse% |
189 \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline |
184 \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}meet\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ min\ x\ y{\isachardoublequoteclose}\isanewline |
190 \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline |
185 \ \ \ \ \isakeyword{and}\ {\isachardoublequoteopen}lattice{\isachardot}join\ op\ {\isasymle}\ {\isacharparenleft}x{\isacharcolon}{\isacharcolon}nat{\isacharparenright}\ y\ {\isacharequal}\ max\ x\ y{\isachardoublequoteclose}\isanewline |
191 \isacommand{proof}\isamarkupfalse% |
186 \isacommand{proof}\isamarkupfalse% |
192 \ {\isacharminus}\isanewline |
187 \ {\isacharminus}\isanewline |
193 \ \ \isacommand{show}\isamarkupfalse% |
188 \ \ \isacommand{show}\isamarkupfalse% |
194 \ {\isachardoublequoteopen}total{\isacharunderscore}order\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% |
189 \ {\isachardoublequoteopen}total{\isacharunderscore}order\ {\isacharparenleft}op\ {\isasymle}\ {\isacharcolon}{\isacharcolon}\ nat\ {\isasymRightarrow}\ nat\ {\isasymRightarrow}\ bool{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
190 \ \ \ \ \isacommand{by}\isamarkupfalse% |
195 \ unfold{\isacharunderscore}locales\ arith\isanewline |
191 \ unfold{\isacharunderscore}locales\ arith\isanewline |
196 \isacommand{qed}\isamarkupfalse% |
192 \isacommand{qed}\isamarkupfalse% |
197 \ {\isacharparenleft}rule\ nat{\isacharunderscore}less{\isacharunderscore}eq\ nat{\isacharunderscore}meet{\isacharunderscore}eq\ nat{\isacharunderscore}join{\isacharunderscore}eq{\isacharparenright}{\isacharplus}% |
193 \ {\isacharparenleft}rule\ nat{\isacharunderscore}less{\isacharunderscore}eq\ nat{\isacharunderscore}meet{\isacharunderscore}eq\ nat{\isacharunderscore}join{\isacharunderscore}eq{\isacharparenright}{\isacharplus}% |
198 \endisatagvisible |
194 \endisatagvisible |
199 {\isafoldvisible}% |
195 {\isafoldvisible}% |
491 existing locale for both. |
488 existing locale for both. |
492 |
489 |
493 Inspecting the grammar of locale commands in |
490 Inspecting the grammar of locale commands in |
494 Table~\ref{tab:commands} reveals that the import of a locale can be |
491 Table~\ref{tab:commands} reveals that the import of a locale can be |
495 more than just a single locale. In general, the import is a |
492 more than just a single locale. In general, the import is a |
496 \emph{locale expression}. These enable to combine locales |
493 \emph{locale expression}, which enables to combine locales |
497 and instantiate parameters. A locale expression is a sequence of |
494 and instantiate parameters. A locale expression is a sequence of |
498 locale \emph{instances} followed by an optional \isakeyword{for} |
495 locale \emph{instances} followed by an optional \isakeyword{for} |
499 clause. Each instance consists of a locale reference, which may be |
496 clause. Each instance consists of a locale reference, which may be |
500 preceded by a qualifer and succeeded by instantiations of the |
497 preceded by a qualifer and succeeded by instantiations of the |
501 parameters of that locale. Instantiations may be either positional |
498 parameters of that locale. Instantiations may be either positional |
502 or through explicit parameter argument pairs. |
499 or through explicit mappings of parameters to arguments. |
503 |
500 |
504 Using a locale expression, a locale for order |
501 Using a locale expression, a locale for order |
505 preserving maps can be declared in the following way.% |
502 preserving maps can be declared in the following way.% |
506 \end{isamarkuptext}% |
503 \end{isamarkuptext}% |
507 \isamarkuptrue% |
504 \isamarkuptrue% |
511 \ \ \ \ \ \ \isakeyword{for}\ le\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqsubseteq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{and}\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline |
508 \ \ \ \ \ \ \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 |
512 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b{\isachardoublequoteclose}\isanewline |
509 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\ {\isacharcolon}{\isacharcolon}\ {\isachardoublequoteopen}{\isacharprime}a\ {\isasymRightarrow}\ {\isacharprime}b{\isachardoublequoteclose}\isanewline |
513 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}le{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y\ {\isasymLongrightarrow}\ {\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}% |
510 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}le{\isacharcolon}\ {\isachardoublequoteopen}x\ {\isasymsqsubseteq}\ y\ {\isasymLongrightarrow}\ {\isasymphi}\ x\ {\isasympreceq}\ {\isasymphi}\ y{\isachardoublequoteclose}% |
514 \begin{isamarkuptext}% |
511 \begin{isamarkuptext}% |
515 The second and third line contain the expression --- two |
512 The second and third line contain the expression --- two |
516 instances of the partial order locale with instantiations \isa{le} |
513 instances of the partial order locale where the parameter is |
|
514 instantiated to \isa{le} |
517 and \isa{le{\isacharprime}}, respectively. The \isakeyword{for} clause consists |
515 and \isa{le{\isacharprime}}, respectively. The \isakeyword{for} clause consists |
518 of parameter declarations and is similar to the context element |
516 of parameter declarations and is similar to the context element |
519 \isakeyword{fixes}. The notable difference is that the |
517 \isakeyword{fixes}. The notable difference is that the |
520 \isakeyword{for} clause is part of the expression, and only |
518 \isakeyword{for} clause is part of the expression, and only |
521 parameters defined in the expression may occur in its instances. |
519 parameters defined in the expression may occur in its instances. |
522 |
520 |
523 Instances are \emph{morphisms} on locales. Their effect on the |
521 Instances define \emph{morphisms} on locales. Their effect on the |
524 parameters is naturally lifted to terms, propositions and theorems, |
522 parameters is lifted to terms, propositions and theorems in the |
|
523 canonical way, |
525 and thus to the assumptions and conclusions of a locale. The |
524 and thus to the assumptions and conclusions of a locale. The |
526 assumption of a locale expression is the conjunction of the |
525 assumption of a locale expression is the conjunction of the |
527 assumptions of the instances. The conclusions of a sequence of |
526 assumptions of the instances. The conclusions of a sequence of |
528 instances are obtained by appending the conclusions of the |
527 instances are obtained by appending the conclusions of the |
529 instances in the order of the sequence. |
528 instances in the order of the sequence. |
582 \isadeliminvisible |
581 \isadeliminvisible |
583 % |
582 % |
584 \endisadeliminvisible |
583 \endisadeliminvisible |
585 % |
584 % |
586 \begin{isamarkuptext}% |
585 \begin{isamarkuptext}% |
587 This example reveals that there is no infix syntax for the strict |
586 This example reveals that there is no infix syntax for the |
588 version of \isa{{\isasympreceq}}! This can be declared through an abbreviation.% |
587 strict operation associated with \isa{{\isasympreceq}}. This can be declared |
|
588 through an abbreviation.% |
589 \end{isamarkuptext}% |
589 \end{isamarkuptext}% |
590 \isamarkuptrue% |
590 \isamarkuptrue% |
591 \ \ \isacommand{abbreviation}\isamarkupfalse% |
591 \ \ \isacommand{abbreviation}\isamarkupfalse% |
592 \ {\isacharparenleft}\isakeyword{in}\ order{\isacharunderscore}preserving{\isacharparenright}\isanewline |
592 \ {\isacharparenleft}\isakeyword{in}\ order{\isacharunderscore}preserving{\isacharparenright}\isanewline |
593 \ \ \ \ less{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymprec}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}less{\isacharprime}\ {\isasymequiv}\ partial{\isacharunderscore}order{\isachardot}less\ le{\isacharprime}{\isachardoublequoteclose}% |
593 \ \ \ \ less{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymprec}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}less{\isacharprime}\ {\isasymequiv}\ partial{\isacharunderscore}order{\isachardot}less\ le{\isacharprime}{\isachardoublequoteclose}% |
594 \begin{isamarkuptext}% |
594 \begin{isamarkuptext}% |
595 Now the theorem is displayed nicely as |
595 Now the theorem is displayed nicely as |
596 \isa{{\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z}.% |
596 \isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}: |
|
597 \begin{isabelle}% |
|
598 \ \ {\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z% |
|
599 \end{isabelle}% |
597 \end{isamarkuptext}% |
600 \end{isamarkuptext}% |
598 \isamarkuptrue% |
601 \isamarkuptrue% |
599 % |
602 % |
600 \begin{isamarkuptext}% |
603 \begin{isamarkuptext}% |
601 Qualifiers not only apply to theorem names, but also to names |
604 Qualifiers not only apply to theorem names, but also to names |
602 introduced by definitions and abbreviations. In locale |
605 introduced by definitions and abbreviations. For example, in \isa{partial{\isacharunderscore}order} the name \isa{less} abbreviates \isa{op\ {\isasymsqsubset}}. Therefore, in \isa{order{\isacharunderscore}preserving} |
603 \isa{partial{\isacharunderscore}order} the full name of the strict order of \isa{{\isasymsqsubseteq}} is |
606 the qualified name \isa{le{\isachardot}less} abbreviates \isa{op\ {\isasymsqsubset}} and \isa{le{\isacharprime}{\isachardot}less} abbreviates \isa{op\ {\isasymprec}}. Hence, the equation in the abbreviation |
604 \isa{le{\isachardot}less} and therefore \isa{le{\isacharprime}{\isachardot}less} is the full name of |
607 above could have been written more concisely as \isa{less{\isacharprime}\ {\isasymequiv}\ le{\isacharprime}{\isachardot}less}.% |
605 the strict order of \isa{{\isasympreceq}}. Hence, the equation in the |
|
606 abbreviation above could have been also written as \isa{less{\isacharprime}\ {\isasymequiv}\ le{\isacharprime}{\isachardot}less}.% |
|
607 \end{isamarkuptext}% |
608 \end{isamarkuptext}% |
608 \isamarkuptrue% |
609 \isamarkuptrue% |
609 % |
610 % |
610 \begin{isamarkuptext}% |
611 \begin{isamarkuptext}% |
611 Readers may find the declaration of locale \isa{order{\isacharunderscore}preserving} a little awkward, because the declaration and |
612 Readers may find the declaration of locale \isa{order{\isacharunderscore}preserving} a little awkward, because the declaration and |
616 provided for it. In positional instantiations, a parameter position |
617 provided for it. In positional instantiations, a parameter position |
617 may be skipped with an underscore, and it is allowed to give fewer |
618 may be skipped with an underscore, and it is allowed to give fewer |
618 instantiation terms than the instantiated locale's number of |
619 instantiation terms than the instantiated locale's number of |
619 parameters. In named instantiations, instantiation pairs for |
620 parameters. In named instantiations, instantiation pairs for |
620 certain parameters may simply be omitted. Untouched parameters are |
621 certain parameters may simply be omitted. Untouched parameters are |
621 declared by the locale expression and with their concrete syntax by |
622 implicitly declared by the locale expression and with their concrete |
622 implicitly adding them to the beginning of the \isakeyword{for} |
623 syntax. In the sequence of parameters, they appear before the |
623 clause. |
624 parameters from the \isakeyword{for} clause. |
624 |
625 |
625 The following locales illustrate this. A map \isa{{\isasymphi}} is a |
626 The following locales illustrate this. A map \isa{{\isasymphi}} is a |
626 lattice homomorphism if it preserves meet and join.% |
627 lattice homomorphism if it preserves meet and join.% |
627 \end{isamarkuptext}% |
628 \end{isamarkuptext}% |
628 \isamarkuptrue% |
629 \isamarkuptrue% |
629 \ \ \isacommand{locale}\isamarkupfalse% |
630 \ \ \isacommand{locale}\isamarkupfalse% |
630 \ lattice{\isacharunderscore}hom\ {\isacharequal}\isanewline |
631 \ lattice{\isacharunderscore}hom\ {\isacharequal}\isanewline |
631 \ \ \ \ le{\isacharcolon}\ lattice\ {\isacharplus}\ le{\isacharprime}{\isacharcolon}\ lattice\ le{\isacharprime}\ \isakeyword{for}\ le{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasympreceq}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ {\isacharplus}\isanewline |
632 \ \ \ \ 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 |
632 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\isanewline |
633 \ \ \ \ \isakeyword{fixes}\ {\isasymphi}\isanewline |
633 \ \ \ \ \isakeyword{assumes}\ hom{\isacharunderscore}meet{\isacharcolon}\isanewline |
634 \ \ \ \ \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 |
634 \ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}x\ {\isasymsqinter}\ y{\isacharparenright}\ {\isacharequal}\ le{\isacharprime}{\isachardot}meet\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline |
635 \ \ \ \ \ \ \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}\isanewline |
635 \ \ \ \ \ \ \isakeyword{and}\ hom{\isacharunderscore}join{\isacharcolon}\isanewline |
|
636 \ \ \ \ \ \ \ \ {\isachardoublequoteopen}{\isasymphi}\ {\isacharparenleft}x\ {\isasymsqunion}\ y{\isacharparenright}\ {\isacharequal}\ le{\isacharprime}{\isachardot}join\ {\isacharparenleft}{\isasymphi}\ x{\isacharparenright}\ {\isacharparenleft}{\isasymphi}\ y{\isacharparenright}{\isachardoublequoteclose}\isanewline |
|
637 \isanewline |
636 \isanewline |
638 \ \ \isacommand{abbreviation}\isamarkupfalse% |
637 \ \ \isacommand{abbreviation}\isamarkupfalse% |
639 \ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline |
638 \ {\isacharparenleft}\isakeyword{in}\ lattice{\isacharunderscore}hom{\isacharparenright}\isanewline |
640 \ \ \ \ meet{\isacharprime}\ {\isacharparenleft}\isakeyword{infixl}\ {\isachardoublequoteopen}{\isasymsqinter}{\isacharprime}{\isacharprime}{\isachardoublequoteclose}\ {\isadigit{5}}{\isadigit{0}}{\isacharparenright}\ \isakeyword{where}\ {\isachardoublequoteopen}meet{\isacharprime}\ {\isasymequiv}\ le{\isacharprime}{\isachardot}meet{\isachardoublequoteclose}\isanewline |
639 \ \ \ \ 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 |
641 \ \ \isacommand{abbreviation}\isamarkupfalse% |
640 \ \ \isacommand{abbreviation}\isamarkupfalse% |
646 \end{isamarkuptext}% |
645 \end{isamarkuptext}% |
647 \isamarkuptrue% |
646 \isamarkuptrue% |
648 \ \ \isacommand{locale}\isamarkupfalse% |
647 \ \ \isacommand{locale}\isamarkupfalse% |
649 \ lattice{\isacharunderscore}end\ {\isacharequal}\ lattice{\isacharunderscore}hom\ {\isacharunderscore}\ le% |
648 \ lattice{\isacharunderscore}end\ {\isacharequal}\ lattice{\isacharunderscore}hom\ {\isacharunderscore}\ le% |
650 \begin{isamarkuptext}% |
649 \begin{isamarkuptext}% |
651 In this declaration, the first parameter of \isa{lattice{\isacharunderscore}hom}, \isa{le}, is untouched and then used to instantiate |
650 In this declaration, the first parameter of \isa{lattice{\isacharunderscore}hom}, \isa{le}, is untouched and is then used to instantiate |
652 the second parameter. Its concrete syntax is preserved.% |
651 the second parameter. Its concrete syntax is preserved.% |
653 \end{isamarkuptext}% |
652 \end{isamarkuptext}% |
654 \isamarkuptrue% |
653 \isamarkuptrue% |
655 % |
654 % |
656 \begin{isamarkuptext}% |
655 \begin{isamarkuptext}% |
738 \endisadelimproof |
737 \endisadelimproof |
739 % |
738 % |
740 \begin{isamarkuptext}% |
739 \begin{isamarkuptext}% |
741 Theorems and other declarations --- syntax, in particular --- from |
740 Theorems and other declarations --- syntax, in particular --- from |
742 the locale \isa{order{\isacharunderscore}preserving} are now active in \isa{lattice{\isacharunderscore}hom}, for example |
741 the locale \isa{order{\isacharunderscore}preserving} are now active in \isa{lattice{\isacharunderscore}hom}, for example |
743 |
742 \isa{hom{\isacharunderscore}le}: |
744 \isa{le{\isacharprime}{\isachardot}less{\isacharunderscore}le{\isacharunderscore}trans}: |
743 \begin{isabelle}% |
745 \isa{{\isasymlbrakk}{\isacharquery}x\ {\isasymprec}\ {\isacharquery}y{\isacharsemicolon}\ {\isacharquery}y\ {\isasympreceq}\ {\isacharquery}z{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharquery}x\ {\isasymprec}\ {\isacharquery}z}% |
744 \ \ {\isacharquery}x\ {\isasymsqsubseteq}\ {\isacharquery}y\ {\isasymLongrightarrow}\ {\isasymphi}\ {\isacharquery}x\ {\isasympreceq}\ {\isasymphi}\ {\isacharquery}y% |
|
745 \end{isabelle}% |
746 \end{isamarkuptext}% |
746 \end{isamarkuptext}% |
747 \isamarkuptrue% |
747 \isamarkuptrue% |
748 % |
748 % |
749 \isamarkupsection{Further Reading% |
749 \isamarkupsection{Further Reading% |
750 } |
750 } |