Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168699
Image: ubuntu2004
######################################### # Este código calcula un par de grupos isocategoricos # Algunas notaciones: Por Gr me refiero aun grupo, Nr a u subgrupo, # Repre es un conjunto de representantes de las colclases a derecha # de Nr en Gr ################################# ######### # La función base calcula dos generadores que vivan en diferentes coclases # Obs: Estos generadores podrían no existir, por ejemplo para grupo cíclicos ####### bases := function( A )# A es un grupo local ggf, types, g, hh, hhf, kk, i, j, brps, tp; brps := []; g:= Elements(A);; for i in [1..Length( g )-1] do for j in [i+1..Length( g )] do tp := Subgroup( A, [ g[i],g[j] ] );# creando un grupo generado por un par de elementos if tp = A and Order(g[i])= Order(g[j]) and Order(Intersection(Subgroup( A, [ g[i] ] ),Subgroup( A, [g[j]])))=1 then Add( brps, [ g[i] , g[j] ] ); fi; od; od; return( brps ); end; ########## #función auxiliar para la función matriz ####### columna1 := function( Gr, Nr , n,m )# grupo, subgrupo y n-esimo representate de coclase, m-esima base local Ad, b, c, s, Img, Base, ggf, types, g, hh, hhf, kk, i, j, brps, tp, ReprCoclases; brps := []; Base:=bases(Nr)[m];; s:=RightTransversal(Gr, Nr)[n];; Ad:= ConjugatorIsomorphism( Nr, s ); for i in [0..Order( Base[1] )-1] do for j in [0..Order( Base[2] )-1] do if ImageElm( Ad, Base[1] )=Base[1]^i*Base[2]^j then brps:= [ i , j ] ; fi; od; od; return( brps ); end; ########## # Función auxiliar para la función matriz ####### columna2 := function( Gr, Nr, n,m )# grupo, subgrupo y n-esimo representate de coclase, m-esima base local Ad, b, c, s, Img, Base, ggf, types, g, hh, hhf, kk, i, j, brps, tp, ReprCoclases; brps := []; Base:=bases(Nr)[m];; s:=RightTransversal(Gr, Nr)[n];; Ad:= ConjugatorIsomorphism( Nr, s ); for i in [0..Order( Base[1] )-1] do for j in [0..Order( Base[2] )-1] do if ImageElm( Ad, Base[2] )=Base[1]^i*Base[2]^j then brps:= [ i , j ] ; fi; od; od; return( brps ); end; ################# # La función matriz calcula para una base y un representante la matriz 2x2 que # representa el automorfismo por conjugación # Observación importante: Esta función debe mejorarse, al # parecer repite muchos cálculos innecesarios ####### matriz := function( Gr, Nr ,n,m )# grupo, subgrupo y n-esimo representate de coclase, m-esima base local Ad, b, c, s, Img, Base, ggf, types, g, hh, hhf, kk, i, j, brps, tp, ReprCoclases; brps := []; brps:=[columna1(Gr,Nr,n,m),columna2(Gr,Nr,n,m)]; return( brps ); end; ######################## # Coord calcula las coordenadas de un elemento de Nr para una base fija ######################## Coord:=function(a,Base)# a in Nr local tp,i,j; for i in [0..Order( Base[1] )-1] do for j in [0..Order( Base[2] )-1] do if a=Base[1]^i*Base[2]^j then tp:= [ i , j ]; fi; od; od; return(tp); end; ############ # prop calcula para dos elementos de un conjunto de representares de las # Coclases de Nr en Gr el representate del producto ######## prod:=function(Nr,Repr,a,b) local x, tp; for x in Repr do if x in RightCoset(Nr,a*b) then tp:=x; fi; od; return(tp); end; ############## # AltAlf es el alternizador de la forma natural respecto a una base fija ############## AltAlfa:=function(x,y,Base) return( E(4)^( Coord(x,Base)[1]*Coord(y,Base)[2]-Coord(y,Base)[1]*Coord(x,Base)[2] ) ); end;; ############### # Tipica función delta de kronker ############ deltaKr:=function(a,b) local tp; tp:=(); if a=b then tp:=1; else tp:=0; fi; return(tp); end; ######### # Dada una matriz previamente calculada TT calcula la cocadena que # conecta alpha con alpha^Ad(sigma) ############ TT:=function(Mat,Base,x)# Mats las matrices que representan n-esimo representate Gr mod Nr, x in Nr return(E(8)^( (Mat[1][1]*Mat[2][1]*Coord(x,Base)[1]^2+Mat[1][2]*Mat[2][2]*Coord(x,Base)[2]^2+2*Mat[2][1]*Mat[1][2]*Coord(x,Base)[1]*Coord(x,Base)[2]) )); end;
Gr:= Image(IsomorphismPermGroup(SmallGroup(64,232))); ns:= Filtered(NormalSubgroups(Gr), y->IdGroup(y)=[16,2]);; Nr:=ns[3];; Base:=bases(Nr)[1];; Repre:=RightTransversal(Gr, Nr);; Cart:=Cartesian(Elements(Nr), Repre);; TodasMat:=List(IrreducibleRepresentations(Nr), z->List(Cart, x-> List (Cart, y-> Image(z,x[1])[1][1]*deltaKr(x,y))) );;
Determinant(M) mod 4 =1; Fr:=Group(TodasMat); generadoresNr:=bases(Fr)[1];; Mats:=List( [1..Length(Repre)], x->matriz(Gr,Nr,x,1) );;
Matcom:=List([1..Length(Repre)], x-> List( Cart, A-> List( Cart,B-> deltaKr( B[1], Image( ConjugatorIsomorphism(Nr,Repre[x]) ,A[1] ) )* deltaKr(B[2],prod(Nr,Repre,Repre[x],A[2])) *AltAlfa(Image( ConjugatorIsomorphism(Nr,Repre[x]) ,prod(Nr,Repre,Repre[x],A[2])*A[2]^-1*Repre[x]^-1 ) , Image( ConjugatorIsomorphism(Nr,Repre[x]) ,A[1] ),Base)*TT(Mats[x],Base,A[1]) )));;
Add(Matcom, generadoresNr[1]); Add(Matcom, generadoresNr[2]);
FFF:= Image(IsomorphismPermGroup(Group(Matcom)));
<permutation group of size 64 with 8 generators>
IdGroup(FFF);
[ 64, 236 ]