equal
deleted
inserted
replaced
805 @{thm list.sel(1)[no_vars]} \\ |
805 @{thm list.sel(1)[no_vars]} \\ |
806 @{thm list.sel(2)[no_vars]} |
806 @{thm list.sel(2)[no_vars]} |
807 |
807 |
808 \item[@{text "t."}\hthm{collapse} @{text "[simp]"}\rm:] ~ \\ |
808 \item[@{text "t."}\hthm{collapse} @{text "[simp]"}\rm:] ~ \\ |
809 @{thm list.collapse(1)[no_vars]} \\ |
809 @{thm list.collapse(1)[no_vars]} \\ |
810 @{thm list.collapse(2)[no_vars]} |
810 @{thm list.collapse(2)[no_vars]} \\ |
|
811 (The @{text "[simp]"} attribute is exceptionally omitted for datatypes equipped |
|
812 with a single nullary constructor, because a property of the form |
|
813 @{prop "x = C"} is not suitable as a simplification rule.) |
811 |
814 |
812 \item[@{text "t."}\hthm{distinct_disc} @{text "[dest]"}\rm:] ~ \\ |
815 \item[@{text "t."}\hthm{distinct_disc} @{text "[dest]"}\rm:] ~ \\ |
813 These properties are missing for @{typ "'a list"} because there is only one |
816 These properties are missing for @{typ "'a list"} because there is only one |
814 proper discriminator. Had the datatype been introduced with a second |
817 proper discriminator. Had the datatype been introduced with a second |
815 discriminator called @{const nonnull}, they would have read thusly: \\[\jot] |
818 discriminator called @{const nonnull}, they would have read thusly: \\[\jot] |
838 |
841 |
839 \end{description} |
842 \end{description} |
840 \end{indentblock} |
843 \end{indentblock} |
841 |
844 |
842 \noindent |
845 \noindent |
843 In addition, equational versions of @{text t.disc} are registered with the @{text "[code]"} |
846 In addition, equational versions of @{text t.disc} are registered with the |
844 attribute. |
847 @{text "[code]"} attribute. |
845 *} |
848 *} |
846 |
849 |
847 |
850 |
848 subsubsection {* Functorial Theorems |
851 subsubsection {* Functorial Theorems |
849 \label{sssec:functorial-theorems} *} |
852 \label{sssec:functorial-theorems} *} |