diff -r 12dce58bcd3f -r 1b5178abaf97 src/HOL/Algebra/Group.thy --- a/src/HOL/Algebra/Group.thy Thu Oct 04 11:18:39 2018 +0200 +++ b/src/HOL/Algebra/Group.thy Thu Oct 04 15:25:47 2018 +0100 @@ -781,6 +781,19 @@ {h. h \ carrier G \ carrier H \ (\x \ carrier G. \y \ carrier G. h (x \\<^bsub>G\<^esub> y) = h x \\<^bsub>H\<^esub> h y)}" + +(* NEW ========================================================================== *) +lemma hom_trans: + "\ f \ hom G H; g \ hom H I \ \ g \ f \ hom G I" + unfolding hom_def by (auto simp add: Pi_iff) +(* ============================================================================== *) + +(* NEW ============================================================================ *) +lemma (in group) hom_restrict: + assumes "h \ hom G H" and "\g. g \ carrier G \ h g = t g" shows "t \ hom G H" + using assms unfolding hom_def by (auto simp add: Pi_iff) +(* ============================================================================== *) + lemma (in group) hom_compose: "[|h \ hom G H; i \ hom H I|] ==> compose (carrier G) i h \ hom G I" by (fastforce simp add: hom_def compose_def) @@ -838,6 +851,12 @@ corollary (in group) iso_trans: "\G \ H ; H \ I\ \ G \ I" using iso_set_trans unfolding is_iso_def by blast +(* NEW ====================================================================== *) +lemma iso_same_card: "G \ H \ card (carrier G) = card (carrier H)" + using bij_betw_same_card unfolding is_iso_def iso_def by auto +(* ========================================================================== *) + + (* Next four lemmas contributed by Paulo. *) lemma (in monoid) hom_imp_img_monoid: