6 theory Coset imports Group begin |
6 theory Coset imports Group begin |
7 |
7 |
8 |
8 |
9 section {*Cosets and Quotient Groups*} |
9 section {*Cosets and Quotient Groups*} |
10 |
10 |
11 constdefs (structure G) |
11 definition |
12 r_coset :: "[_, 'a set, 'a] \<Rightarrow> 'a set" (infixl "#>\<index>" 60) |
12 r_coset :: "[_, 'a set, 'a] \<Rightarrow> 'a set" (infixl "#>\<index>" 60) |
13 "H #> a \<equiv> \<Union>h\<in>H. {h \<otimes> a}" |
13 where "H #>\<^bsub>G\<^esub> a \<equiv> \<Union>h\<in>H. {h \<otimes>\<^bsub>G\<^esub> a}" |
14 |
14 |
|
15 definition |
15 l_coset :: "[_, 'a, 'a set] \<Rightarrow> 'a set" (infixl "<#\<index>" 60) |
16 l_coset :: "[_, 'a, 'a set] \<Rightarrow> 'a set" (infixl "<#\<index>" 60) |
16 "a <# H \<equiv> \<Union>h\<in>H. {a \<otimes> h}" |
17 where "a <#\<^bsub>G\<^esub> H \<equiv> \<Union>h\<in>H. {a \<otimes>\<^bsub>G\<^esub> h}" |
17 |
18 |
|
19 definition |
18 RCOSETS :: "[_, 'a set] \<Rightarrow> ('a set)set" ("rcosets\<index> _" [81] 80) |
20 RCOSETS :: "[_, 'a set] \<Rightarrow> ('a set)set" ("rcosets\<index> _" [81] 80) |
19 "rcosets H \<equiv> \<Union>a\<in>carrier G. {H #> a}" |
21 where "rcosets\<^bsub>G\<^esub> H \<equiv> \<Union>a\<in>carrier G. {H #>\<^bsub>G\<^esub> a}" |
20 |
22 |
|
23 definition |
21 set_mult :: "[_, 'a set ,'a set] \<Rightarrow> 'a set" (infixl "<#>\<index>" 60) |
24 set_mult :: "[_, 'a set ,'a set] \<Rightarrow> 'a set" (infixl "<#>\<index>" 60) |
22 "H <#> K \<equiv> \<Union>h\<in>H. \<Union>k\<in>K. {h \<otimes> k}" |
25 where "H <#>\<^bsub>G\<^esub> K \<equiv> \<Union>h\<in>H. \<Union>k\<in>K. {h \<otimes>\<^bsub>G\<^esub> k}" |
23 |
26 |
|
27 definition |
24 SET_INV :: "[_,'a set] \<Rightarrow> 'a set" ("set'_inv\<index> _" [81] 80) |
28 SET_INV :: "[_,'a set] \<Rightarrow> 'a set" ("set'_inv\<index> _" [81] 80) |
25 "set_inv H \<equiv> \<Union>h\<in>H. {inv h}" |
29 where "set_inv\<^bsub>G\<^esub> H \<equiv> \<Union>h\<in>H. {inv\<^bsub>G\<^esub> h}" |
26 |
30 |
27 |
31 |
28 locale normal = subgroup + group + |
32 locale normal = subgroup + group + |
29 assumes coset_eq: "(\<forall>x \<in> carrier G. H #> x = x <# H)" |
33 assumes coset_eq: "(\<forall>x \<in> carrier G. H #> x = x <# H)" |
30 |
34 |
587 setmult_rcos_assoc subgroup_mult_id normal.axioms prems) |
591 setmult_rcos_assoc subgroup_mult_id normal.axioms prems) |
588 |
592 |
589 |
593 |
590 subsubsection{*An Equivalence Relation*} |
594 subsubsection{*An Equivalence Relation*} |
591 |
595 |
592 constdefs (structure G) |
596 definition |
593 r_congruent :: "[('a,'b)monoid_scheme, 'a set] \<Rightarrow> ('a*'a)set" |
597 r_congruent :: "[('a,'b)monoid_scheme, 'a set] \<Rightarrow> ('a*'a)set" ("rcong\<index> _") |
594 ("rcong\<index> _") |
598 where "rcong\<^bsub>G\<^esub> H \<equiv> {(x,y). x \<in> carrier G & y \<in> carrier G & inv\<^bsub>G\<^esub> x \<otimes>\<^bsub>G\<^esub> y \<in> H}" |
595 "rcong H \<equiv> {(x,y). x \<in> carrier G & y \<in> carrier G & inv x \<otimes> y \<in> H}" |
|
596 |
599 |
597 |
600 |
598 lemma (in subgroup) equiv_rcong: |
601 lemma (in subgroup) equiv_rcong: |
599 assumes "group G" |
602 assumes "group G" |
600 shows "equiv (carrier G) (rcong H)" |
603 shows "equiv (carrier G) (rcong H)" |