466 |
466 |
467 lemma (in coset) setrcos_inv_mult_group_eq: |
467 lemma (in coset) setrcos_inv_mult_group_eq: |
468 "[|H <| G; M \<in> rcosets G H|] ==> set_inv G M <#> M = H" |
468 "[|H <| G; M \<in> rcosets G H|] ==> set_inv G M <#> M = H" |
469 by (auto simp add: setrcos_eq rcos_inv rcos_sum normal_imp_subgroup |
469 by (auto simp add: setrcos_eq rcos_inv rcos_sum normal_imp_subgroup |
470 subgroup.subset) |
470 subgroup.subset) |
471 |
471 (* |
472 lemma (in group) factorgroup_is_magma: |
472 lemma (in group) factorgroup_is_magma: |
473 "H <| G ==> magma (G Mod H)" |
473 "H <| G ==> magma (G Mod H)" |
474 by rule (simp add: FactGroup_def coset.setmult_closed [OF is_coset]) |
474 by rule (simp add: FactGroup_def coset.setmult_closed [OF is_coset]) |
475 |
475 |
476 lemma (in group) factorgroup_semigroup_axioms: |
476 lemma (in group) factorgroup_semigroup_axioms: |
477 "H <| G ==> semigroup_axioms (G Mod H)" |
477 "H <| G ==> semigroup_axioms (G Mod H)" |
478 by rule (simp add: FactGroup_def coset.setrcos_assoc [OF is_coset] |
478 by rule (simp add: FactGroup_def coset.setrcos_assoc [OF is_coset] |
479 coset.setmult_closed [OF is_coset]) |
479 coset.setmult_closed [OF is_coset]) |
480 |
480 *) |
481 theorem (in group) factorgroup_is_group: |
481 theorem (in group) factorgroup_is_group: |
482 "H <| G ==> group (G Mod H)" |
482 "H <| G ==> group (G Mod H)" |
483 apply (insert is_coset) |
483 apply (insert is_coset) |
484 apply (simp add: FactGroup_def) |
484 apply (simp add: FactGroup_def) |
485 apply (rule groupI) |
485 apply (rule groupI) |