841 subsubsection {* Functorial Theorems |
841 subsubsection {* Functorial Theorems |
842 \label{sssec:functorial-theorems} *} |
842 \label{sssec:functorial-theorems} *} |
843 |
843 |
844 text {* |
844 text {* |
845 The functorial theorems are partitioned in two subgroups. The first subgroup |
845 The functorial theorems are partitioned in two subgroups. The first subgroup |
846 consists of properties involving the constructors and either a set function, the |
846 consists of properties involving the constructors or the destructors and either |
847 map function, or the relator: |
847 a set function, the map function, or the relator: |
848 |
848 |
849 \begin{indentblock} |
849 \begin{indentblock} |
850 \begin{description} |
850 \begin{description} |
851 |
851 |
852 \item[@{text "t."}\hthm{set} @{text "[simp, code]"}\rm:] ~ \\ |
852 \item[@{text "t."}\hthm{set} @{text "[simp, code]"}\rm:] ~ \\ |
853 @{thm list.set(1)[no_vars]} \\ |
853 @{thm list.set(1)[no_vars]} \\ |
854 @{thm list.set(2)[no_vars]} |
854 @{thm list.set(2)[no_vars]} |
855 |
855 |
|
856 \item[@{text "t."}\hthm{set\_empty}\rm:] ~ \\ |
|
857 @{thm list.set_empty[no_vars]} |
|
858 |
856 \item[@{text "t."}\hthm{map} @{text "[simp, code]"}\rm:] ~ \\ |
859 \item[@{text "t."}\hthm{map} @{text "[simp, code]"}\rm:] ~ \\ |
857 @{thm list.map(1)[no_vars]} \\ |
860 @{thm list.map(1)[no_vars]} \\ |
858 @{thm list.map(2)[no_vars]} |
861 @{thm list.map(2)[no_vars]} |
859 |
862 |
|
863 \item[@{text "t."}\hthm{disc\_map\_iff} @{text "[simp]"}\rm:] ~ \\ |
|
864 @{thm list.disc_map_iff[no_vars]} |
|
865 |
860 \item[@{text "t."}\hthm{rel\_inject} @{text "[simp]"}\rm:] ~ \\ |
866 \item[@{text "t."}\hthm{rel\_inject} @{text "[simp]"}\rm:] ~ \\ |
861 @{thm list.rel_inject(1)[no_vars]} \\ |
867 @{thm list.rel_inject(1)[no_vars]} \\ |
862 @{thm list.rel_inject(2)[no_vars]} |
868 @{thm list.rel_inject(2)[no_vars]} |
863 |
869 |
864 \item[@{text "t."}\hthm{rel\_distinct} @{text "[simp]"}\rm:] ~ \\ |
870 \item[@{text "t."}\hthm{rel\_distinct} @{text "[simp]"}\rm:] ~ \\ |
876 the map function, and the relator: |
882 the map function, and the relator: |
877 |
883 |
878 \begin{indentblock} |
884 \begin{indentblock} |
879 \begin{description} |
885 \begin{description} |
880 |
886 |
|
887 \item[@{text "t."}\hthm{set\_map}\rm:] ~ \\ |
|
888 @{thm list.set_map[no_vars]} |
|
889 |
881 \item[@{text "t."}\hthm{map\_comp}\rm:] ~ \\ |
890 \item[@{text "t."}\hthm{map\_comp}\rm:] ~ \\ |
882 @{thm list.map_cong0[no_vars]} |
891 @{thm list.map_cong0[no_vars]} |
883 |
892 |
884 \item[@{text "t."}\hthm{map\_cong} @{text "[fundef_cong]"}\rm:] ~ \\ |
893 \item[@{text "t."}\hthm{map\_cong} @{text "[fundef_cong]"}\rm:] ~ \\ |
885 @{thm list.map_cong[no_vars]} |
894 @{thm list.map_cong[no_vars]} |
905 \item[@{text "t."}\hthm{rel\_flip}\rm:] ~ \\ |
914 \item[@{text "t."}\hthm{rel\_flip}\rm:] ~ \\ |
906 @{thm list.rel_flip[no_vars]} |
915 @{thm list.rel_flip[no_vars]} |
907 |
916 |
908 \item[@{text "t."}\hthm{rel\_mono}\rm:] ~ \\ |
917 \item[@{text "t."}\hthm{rel\_mono}\rm:] ~ \\ |
909 @{thm list.rel_mono[no_vars]} |
918 @{thm list.rel_mono[no_vars]} |
910 |
|
911 \item[@{text "t."}\hthm{set\_empty}\rm:] ~ \\ |
|
912 @{thm list.set_empty[no_vars]} |
|
913 |
|
914 \item[@{text "t."}\hthm{set\_map}\rm:] ~ \\ |
|
915 @{thm list.set_map[no_vars]} |
|
916 |
919 |
917 \end{description} |
920 \end{description} |
918 \end{indentblock} |
921 \end{indentblock} |
919 *} |
922 *} |
920 |
923 |