src/Doc/Datatypes/Datatypes.thy
changeset 58151 414deb2ef328
parent 58121 d7550665da31
child 58190 89034dc40247
equal deleted inserted replaced
58150:2bf3ed0f62cf 58151:414deb2ef328
   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} *}