:: Lattice of Subgroups of a Group. Frattini Subgroup :: by Wojciech A. Trybulec :: :: Received August 22, 1990 :: Copyright (c) 1990-2021 Association of Mizar Users :: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland). :: This code can be distributed under the GNU General Public Licence :: version 3.0 or later, or the Creative Commons Attribution-ShareAlike :: License version 3.0 or later, subject to the binding interpretation :: detailed in file COPYING.interpretation. :: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these :: licenses, or see http://www.gnu.org/licenses/gpl.html and :: http://creativecommons.org/licenses/by-sa/3.0/. environ vocabularies NUMBERS, XBOOLE_0, FINSEQ_1, ARYTM_1, GROUP_1, STRUCT_0, GROUP_2, SETFAM_1, SUBSET_1, RELAT_1, INT_1, TARSKI, GROUP_3, QC_LANG1, NEWTON, ARYTM_3, CARD_1, XXREAL_0, COMPLEX1, ALGSTR_0, CARD_3, FINSOP_1, BINOP_1, ORDINAL4, SETWISEO, FINSEQ_2, NAT_1, FUNCT_1, PARTFUN1, FUNCT_2, ZFMISC_1, RLSUB_1, BVFUNC_2, EQREL_1, PRE_TOPC, RLSUB_2, LATTICES, GROUP_4; notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, XCMPLX_0, FINSOP_1, ORDINAL1, NUMBERS, INT_1, SETWISEO, SETFAM_1, FUNCT_1, PARTFUN1, FUNCT_2, FINSEQ_1, FINSEQ_2, FINSEQ_3, FINSEQ_4, BINOP_1, STRUCT_0, ALGSTR_0, GROUP_2, GROUP_3, LATTICES, GROUP_1, DOMAIN_1, XXREAL_0, NAT_1, INT_2; constructors PARTFUN1, SETFAM_1, BINOP_1, SETWISEO, XXREAL_0, NAT_1, NAT_D, FINSEQ_3, FINSEQ_4, FINSOP_1, REALSET1, REAL_1, LATTICES, GROUP_3, RELSET_1, FINSEQ_2, BINOP_2; registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, NUMBERS, XREAL_0, INT_1, FINSEQ_1, STRUCT_0, LATTICES, GROUP_1, GROUP_2, GROUP_3, ORDINAL1, CARD_1, FINSEQ_2; requirements NUMERALS, REAL, BOOLE, SUBSET, ARITHM; begin definition let D be non empty set; let F be FinSequence of D; let X be set; redefine func F - X -> FinSequence of D; end; scheme :: GROUP_4:sch 1 MeetSbgEx{G() -> Group, P[set]}: ex H being strict Subgroup of G() st the carrier of H = meet{A where A is Subset of G() : ex K being strict Subgroup of G() st A = the carrier of K & P[K]} provided ex H being strict Subgroup of G() st P[H]; reserve x,y,X,Y for set, k,l,n for Nat, i,i1,i2,i3,j for Integer, G for Group, a,b,c,d for Element of G, A,B,C for Subset of G, H,H1,H2, H3 for Subgroup of G, h for Element of H, F,F1,F2 for FinSequence of the carrier of G, I,I1,I2 for FinSequence of INT; scheme :: GROUP_4:sch 2 SubgrSep{G() -> Group,P[set]}: ex X st X c= Subgroups G() & for H being strict Subgroup of G() holds H in X iff P[H]; definition let i; func @i -> Element of INT equals :: GROUP_4:def 1 i; end; theorem :: GROUP_4:1 a = h implies a |^ n = h |^ n; theorem :: GROUP_4:2 a = h implies a |^ i = h |^ i; theorem :: GROUP_4:3 a in H implies a |^ n in H; theorem :: GROUP_4:4 a in H implies a |^ i in H; definition let G be non empty multMagma; let F be FinSequence of the carrier of G; func Product F -> Element of G equals :: GROUP_4:def 2 (the multF of G) "**" F; end; theorem :: GROUP_4:5 for G being associative unital non empty multMagma, F1,F2 being FinSequence of the carrier of G holds Product(F1 ^ F2) = Product(F1) * Product(F2); theorem :: GROUP_4:6 for G being unital non empty multMagma, F being FinSequence of the carrier of G, a being Element of G holds Product(F ^ <* a *>) = Product(F) * a; theorem :: GROUP_4:7 for G being associative unital non empty multMagma, F being FinSequence of the carrier of G, a being Element of G holds Product(<* a *> ^ F ) = a * Product(F); theorem :: GROUP_4:8 for G being unital non empty multMagma holds Product <*> the carrier of G = 1_G; theorem :: GROUP_4:9 for G being non empty multMagma, a being Element of G holds Product<* a *> = a; theorem :: GROUP_4:10 for G being non empty multMagma, a,b being Element of G holds Product <* a,b *> = a * b; theorem :: GROUP_4:11 Product<* a,b,c *> = a * b * c & Product<* a,b,c *> = a * (b * c); theorem :: GROUP_4:12 Product(n |-> a) = a |^ n; theorem :: GROUP_4:13 Product(F - {1_G}) = Product(F); theorem :: GROUP_4:14 len F1 = len F2 & (for k st k in dom F1 holds F2.(len F1 - k + 1 ) = (F1/.k)") implies Product(F1) = Product(F2)"; theorem :: GROUP_4:15 G is commutative Group implies for P being Permutation of dom F1 st F2 = F1 * P holds Product(F1) = Product(F2); theorem :: GROUP_4:16 G is commutative Group & F1 is one-to-one & F2 is one-to-one & rng F1 = rng F2 implies Product(F1) = Product(F2); theorem :: GROUP_4:17 G is commutative Group & len F = len F1 & len F = len F2 & (for k st k in dom F holds F.k = (F1/.k) * (F2/.k)) implies Product(F) = Product(F1) * Product(F2); theorem :: GROUP_4:18 rng F c= carr H implies Product(F) in H; definition let G,I,F; func F |^ I -> FinSequence of the carrier of G means :: GROUP_4:def 3 len it = len F & for k st k in dom F holds it.k = (F/.k) |^ @(I/.k); end; theorem :: GROUP_4:19 len F1 = len I1 & len F2 = len I2 implies (F1 ^ F2) |^ (I1 ^ I2) = (F1 |^ I1) ^ (F2 |^ I2); theorem :: GROUP_4:20 rng F c= carr H implies Product(F |^ I) in H; theorem :: GROUP_4:21 (<*> the carrier of G) |^ (<*> INT) = {}; theorem :: GROUP_4:22 <* a *> |^ <* @i *> = <* a |^ i *>; theorem :: GROUP_4:23 <* a,b *> |^ <* @i,@j *> = <* a |^ i,b |^ j *>; theorem :: GROUP_4:24 <* a,b,c *> |^ <* @i1,@i2,@i3 *> = <* a |^ i1,b |^ i2,c |^ i3 *>; theorem :: GROUP_4:25 F |^ (len F |-> @(1)) = F; theorem :: GROUP_4:26 F |^ (len F |-> @(0)) = len F |-> 1_G; theorem :: GROUP_4:27 len I = n implies (n |-> 1_G) |^ I = n |-> 1_G; definition let G,A; func gr A -> strict Subgroup of G means :: GROUP_4:def 4 A c= the carrier of it & for H being strict Subgroup of G st A c= the carrier of H holds it is Subgroup of H ; end; theorem :: GROUP_4:28 a in gr A iff ex F,I st len F = len I & rng F c= A & Product(F |^ I) = a; theorem :: GROUP_4:29 a in A implies a in gr A; theorem :: GROUP_4:30 gr {} the carrier of G = (1).G; theorem :: GROUP_4:31 for H being strict Subgroup of G holds gr carr H = H; theorem :: GROUP_4:32 A c= B implies gr A is Subgroup of gr B; theorem :: GROUP_4:33 gr(A /\ B) is Subgroup of gr A /\ gr B; theorem :: GROUP_4:34 the carrier of gr A = meet{B : ex H being strict Subgroup of G st B = the carrier of H & A c= carr H}; theorem :: GROUP_4:35 gr A = gr(A \ {1_G}); definition let G,a; attr a is generating means :: GROUP_4:def 5 not for A st gr A = the multMagma of G holds gr(A \ {a}) = the multMagma of G; end; theorem :: GROUP_4:36 1_G is non generating; definition let G, H; attr H is maximal means :: GROUP_4:def 6 the multMagma of H <> the multMagma of G & for K being strict Subgroup of G st the multMagma of H <> K & H is Subgroup of K holds K = the multMagma of G; end; theorem :: GROUP_4:37 for G being strict Group, H being strict Subgroup of G, a being Element of G holds H is maximal & not a in H implies gr(carr H \/ {a}) = G; :: :: Frattini subgroup. :: definition let G be Group; ::$N Frattini subgroup func Phi(G) -> strict Subgroup of G means :: GROUP_4:def 7 the carrier of it = meet{A where A is Subset of G : ex H being strict Subgroup of G st A = the carrier of H & H is maximal} if ex H being strict Subgroup of G st H is maximal otherwise it = the multMagma of G; end; theorem :: GROUP_4:38 for G being Group holds (ex H being strict Subgroup of G st H is maximal) implies (a in Phi(G) iff for H being strict Subgroup of G st H is maximal holds a in H); theorem :: GROUP_4:39 for G being Group, a being Element of G holds (for H being strict Subgroup of G holds H is not maximal) implies a in Phi(G); theorem :: GROUP_4:40 for G being Group, H being strict Subgroup of G holds H is maximal implies Phi(G) is Subgroup of H; theorem :: GROUP_4:41 for G being strict Group holds the carrier of Phi(G) = {a where a is Element of G: a is non generating}; theorem :: GROUP_4:42 for G being strict Group, a being Element of G holds a in Phi(G) iff a is non generating; definition let G,H1,H2; func H1 * H2 -> Subset of G equals :: GROUP_4:def 8 carr H1 * carr H2; end; theorem :: GROUP_4:43 H1 * H2 = carr H1 * carr H2 & H1 * H2 = H1 * carr H2 & H1 * H2 = carr H1 * H2; theorem :: GROUP_4:44 H1 * H2 * H3 = H1 * (H2 * H3); theorem :: GROUP_4:45 a * H1 * H2 = a * (H1 * H2); theorem :: GROUP_4:46 H1 * H2 * a = H1 * (H2 * a); theorem :: GROUP_4:47 A * H1 * H2 = A * (H1 * H2); theorem :: GROUP_4:48 H1 * H2 * A = H1 * (H2 * A); definition let G,H1,H2; func H1 "\/" H2 -> strict Subgroup of G equals :: GROUP_4:def 9 gr(carr H1 \/ carr H2); end; theorem :: GROUP_4:49 a in H1 "\/" H2 iff ex F,I st len F = len I & rng F c= carr H1 \/ carr H2 & a = Product(F |^ I); theorem :: GROUP_4:50 H1 "\/" H2 = gr(H1 * H2); theorem :: GROUP_4:51 H1 * H2 = H2 * H1 implies the carrier of H1 "\/" H2 = H1 * H2; theorem :: GROUP_4:52 G is commutative Group implies the carrier of H1 "\/" H2 = H1 * H2; theorem :: GROUP_4:53 for N1,N2 being strict normal Subgroup of G holds the carrier of N1 "\/" N2 = N1 * N2; theorem :: GROUP_4:54 for N1,N2 being strict normal Subgroup of G holds N1 "\/" N2 is normal Subgroup of G; theorem :: GROUP_4:55 for H being strict Subgroup of G holds H "\/" H = H; theorem :: GROUP_4:56 H1 "\/" H2 = H2 "\/" H1; theorem :: GROUP_4:57 H1 "\/" H2 "\/" H3 = H1 "\/" (H2 "\/" H3); theorem :: GROUP_4:58 for H being strict Subgroup of G holds (1).G "\/" H = H & H "\/" (1).G = H; theorem :: GROUP_4:59 (Omega).G "\/" H = (Omega).G & H "\/" (Omega).G = (Omega).G; theorem :: GROUP_4:60 H1 is Subgroup of H1 "\/" H2 & H2 is Subgroup of H1 "\/" H2; theorem :: GROUP_4:61 for H2 being strict Subgroup of G holds H1 is Subgroup of H2 iff H1 "\/" H2 = H2; theorem :: GROUP_4:62 H1 is Subgroup of H2 implies H1 is Subgroup of H2 "\/" H3; theorem :: GROUP_4:63 for H3 being strict Subgroup of G holds H1 is Subgroup of H3 & H2 is Subgroup of H3 implies H1 "\/" H2 is Subgroup of H3; theorem :: GROUP_4:64 for H3,H2 being strict Subgroup of G holds H1 is Subgroup of H2 implies H1 "\/" H3 is Subgroup of H2 "\/" H3; theorem :: GROUP_4:65 H1 /\ H2 is Subgroup of H1 "\/" H2; theorem :: GROUP_4:66 for H2 being strict Subgroup of G holds (H1 /\ H2) "\/" H2 = H2; theorem :: GROUP_4:67 for H1 being strict Subgroup of G holds H1 /\ (H1 "\/" H2) = H1; theorem :: GROUP_4:68 for H1,H2 being strict Subgroup of G holds H1 "\/" H2 = H2 iff H1 /\ H2 = H1; reserve S1,S2 for Element of Subgroups G; definition let G; func SubJoin G -> BinOp of Subgroups G means :: GROUP_4:def 10 for H1,H2 being strict Subgroup of G holds it.(H1,H2) = H1 "\/" H2; end; definition let G; func SubMeet G -> BinOp of Subgroups G means :: GROUP_4:def 11 for H1,H2 being strict Subgroup of G holds it.(H1,H2) = H1 /\ H2; end; definition let G be Group; func lattice G -> strict Lattice equals :: GROUP_4:def 12 LattStr (# Subgroups G, SubJoin G, SubMeet G #); end; theorem :: GROUP_4:69 the carrier of lattice G = Subgroups G; theorem :: GROUP_4:70 the L_join of lattice G = SubJoin G; theorem :: GROUP_4:71 the L_meet of lattice G = SubMeet G; registration let G be Group; cluster lattice G -> lower-bounded upper-bounded; end; theorem :: GROUP_4:72 Bottom lattice G = (1).G; theorem :: GROUP_4:73 Top lattice G = (Omega).G;