Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/pkg/classicpres/lib/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 8.10.2021 mit Größe 14 kB image not shown  

Quelle  plus.gi   Sprache: unbekannt

 
Spracherkennung für: .gi vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

BindGlobal("OmegaPlus4@",function(q)
local F,Projective,S,T,Y,d,d1,gens,rels,s,s1,t,t1,v,x,y;
  Projective:=ValueOption("Projective");
  if Projective=fail then
    Projective:=false;
  fi;
  F:=FreeGroup("d","s","S","t","T","d","D","v");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  d:=4;
  s:=F.1;
  s1:=F.4;
  t:=F.2;
  t1:=F.5;
  d:=F.3;
  d1:=F.6;
  v:=F.8;
  #   one of the standard generators is the identity
  rels:=[F.7];
  #   sl2 presentation on s, t, d
  S:=ClassicalStandardPresentation("SL",2,q:Projective:=false,
    PresentationGenerators:=false);
  Y:=FreeGeneratorsOfFpGroup(S);
  S:=RelatorsOfFpGroup(S);
  gens:=[s,s,t,d,s^0,s^0,s^0,s^0];
  # was "T:=Evaluate(S,gens);"
  T:=List(S, w -> MappedWord(w, Y, gens));
  rels:=Concatenation(rels,T);
  #   sl2 presentation on s1, t1, d1
  gens:=[s1,s1,t1,d1,s1^0,s1^0,s1^0,s1^0];
  # was "T:=Evaluate(S,gens);"
  T:=List(S, w -> MappedWord(w, Y, gens));
  rels:=Concatenation(rels,T);
  for x in [s,t,d] do
    for y in [s1,t1,d1] do
      Add(rels,Comm(x,y));
    od;
  od;
  Add(rels,v/s1);
  Add(rels,s^2/s1^2);
  if Projective and IsOddInt(q) then
    Add(rels,F.3^(QuoInt((q-1),2)));
  fi;
  return F/rels;
end);

BindGlobal("OddPlusGenerators@",function(d,q)
local lvarDelta,varE,F,U,V,varZ,gens,sigma,w,one;
  F:=GF(q);
  one:=One(F);
  varZ:=IdentityMat(d,F);
  varZ[1][1]:=0*one;
  varZ[1][2]:=one;
  varZ[2][1]:=one;
  varZ[2][2]:=0*one;
  varZ[3][4]:=one;
  varZ[4][3]:=one;
  varZ[3][3]:=0*one;
  varZ[4][4]:=0*one;
  w:=PrimitiveElement(F);
  lvarDelta:=IdentityMat(d,F);
  lvarDelta[1][1]:=w^-1;
  lvarDelta[2][2]:=w;
  lvarDelta[3][3]:=w^1;
  lvarDelta[4][4]:=w^-1;
  varE:=ClassicalStandardGenerators("Omega+",d,q:
    PresentationGenerators:=false,Projective:=false);
  U:=varE[4];
  sigma:=varE[5];
  V:=varE[8];
  gens:=[lvarDelta,sigma,varZ,U,V];
  return gens;
end);

#   infrastructure for OmegaPlus (2n, q) where q is even
BindGlobal("EvenPlus_PresentationForN1@",function(n,q)
local F,R,R1,Rels,S,U,V,varZ,e,f,p,phi;
  e := Factors(q);
    if Size(Unique(e)) > 1 then
        f := false;
    else
        f := true;
        p := e[1];
        e := Size(e);
    fi;
  F:=FreeGroup("U","V","Z");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  U:=F.1;
  V:=F.2;
  varZ:=F.3;
  R1:=PresentationForSn@(n);
  S:=FreeGroupOfFpGroup(R1);
  R1:=RelatorsOfFpGroup(R1);
  phi:=GroupHomomorphismByImages(S,F,GeneratorsOfGroup(S),[U,V]);
  R1:=List(R1,r->ImagesRepresentative(phi,r));
  R:=[];
  if n > 3 then
    Add(R,Comm(varZ,U^(V^2)));
    Add(R,Comm(varZ,varZ^(V^2)));
  fi;
  if n > 4 then
    Add(R,Comm(varZ,V*U*U^V));
  fi;
  Add(R,Comm(varZ,varZ^V));
  Add(R,varZ*varZ^V/varZ^(U^V));
  Add(R,varZ^2);
  Add(R,Comm(varZ,U));
  Rels:=Concatenation(R,R1);
  return F/Rels;
end);

#   infrastructure for OmegaPlus (2n, q) where q is even
BindGlobal("EvenPlus_PresentationForN@",function(n,q)
local F,R,R1,Rels,S,U,V,varZ,delta,e,f,p,phi;
  e := Factors(q);
  if Size(DuplicateFreeList(e)) > 1 then
      f := false;
  else
      f := true;
      p := e[1];
      e := Size(e);
  fi;

  F:=FreeGroup("U","V","Z","delta");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  U:=F.1;
  V:=F.2;
  varZ:=F.3;
  delta:=F.4;
  R1:=EvenPlus_PresentationForN1@(n,q);
  S:=FreeGroupOfFpGroup(R1);
  R1:=RelatorsOfFpGroup(R1);
  phi:=GroupHomomorphismByImages(S,F,GeneratorsOfGroup(S),[U,V,varZ]);
  R1:=List(R1,r->ImagesRepresentative(phi,r));
  R:=[];
  Add(R,Comm(delta,U^V));
  if n > 3 then
    Add(R,Comm(delta,V*U));
  fi;
  Add(R,Comm(delta,delta^U));
  Add(R,delta^(q-1));
  Add(R,delta^varZ/delta^-1);
  Add(R,Comm(delta,varZ^V));
  Rels:=Concatenation(R,R1);
  return F/Rels;
end);

#EvenPlus_OrderN:=function(n,q)
#return QuoInt((2*(q-1))^n*Factorial(n),2);
#end;

#   presentation for OmegaPlus (2n, q) where q is even
BindGlobal("EvenPlus@",function(d,q)
local lvarDelta,F,R1,R2,R3,R4,Rels,S,U,V,W,varZ,delta,e,f,n,p,phi,sigma,w;
  Assert(1,IsEvenInt(d));
  Assert(1,IsEvenInt(q));
  n:=QuoInt(d,2);
  Assert(1,n > 2);
  F:=GF(q);
  w:=PrimitiveElement(F);
  e := Factors(q);
  if Size(DuplicateFreeList(e)) > 1 then
      f := false;
  else
      f := true;
      p := e[1];
      e := Size(e);
  fi;
  F:=FreeGroup("delta","sigma","Z","U","V");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  delta:=F.1;
  sigma:=F.2;
  varZ:=F.3;
  U:=F.4;
  V:=F.5;
  if e=1 then
    R1:=EvenPlus_PresentationForN1@(n,q);
    S:=FreeGroupOfFpGroup(R1);
    R1:=RelatorsOfFpGroup(R1);
    phi:=GroupHomomorphismByImages(S,F, GeneratorsOfGroup(S), [U,V,varZ]);
  else
    R1:=EvenPlus_PresentationForN@(n,q);
    S:=FreeGroupOfFpGroup(R1);
    R1:=RelatorsOfFpGroup(R1);
    phi:=GroupHomomorphismByImages(S,F, GeneratorsOfGroup(S), [U,V,varZ,delta]);
  fi;
  R1:=List(R1,r->ImagesRepresentative(phi,r));
  Rels:=[];
  R2:=PresentationForSL2@(p,e);
  S:=FreeGroupOfFpGroup(R2);
  R2:=RelatorsOfFpGroup(R2);
  if e=1 then
    phi:=GroupHomomorphismByImages(S,F, GeneratorsOfGroup(S), [sigma,U]);
    Add(Rels,delta);
  else
    lvarDelta:=delta*(delta^-1)^U;
    phi:=GroupHomomorphismByImages(S,F,GeneratorsOfGroup(S),
      [lvarDelta,sigma,U]);
  fi;
  R2:=List(R2,r->ImagesRepresentative(phi,r));
  #   centraliser of sigma
  R3:=[];
  if e > 1 then
    Add(R3,Comm(sigma,delta*delta^U));
    Add(R3,Comm(sigma,delta^(V^2)));
  fi;
  Add(R3,Comm(sigma,varZ*U));
  if n > 3 then
    Add(R3,Comm(sigma,U^(V^2)));
  fi;
  if n > 4 then
    Add(R3,Comm(sigma,V*U*U^V));
  fi;
  if n > 3 then
    Add(R3,Comm(sigma,varZ^(V^2)));
  fi;
  #   Steinberg relations
  R4:=[];
  Add(R4,Comm(sigma,sigma^V)/sigma^(V*U));
  Add(R4,Comm(sigma,sigma^(V*U)));
  W:=U^(V*U);
  Add(R4,Comm(sigma,sigma^W));
  if n > 3 then
    Add(R4,Comm(sigma,sigma^(V^2)));
  fi;
  Add(R4,Comm(sigma,sigma^(varZ^V)));
  if n=4 then
    Add(R4,Comm(sigma,sigma^(varZ^V*V^2)));
  fi;
  Rels:=Concatenation(Rels,R1,R2, R3, R4);
  return F/Rels;
end);

#   infrastructure for OmegaPlus (2n, q) where q is odd
BindGlobal("OddPlus_PresentationForN1@",function(n,q)
local F,R,R1,Rels,S,U,V,varZ,e,f,p,phi,w;
  F:=GF(q);
  w:=PrimitiveElement(F);
  e := Factors(q);
  if Size(DuplicateFreeList(e)) > 1 then
      f := false;
  else
      f := true;
      p := e[1];
      e := Size(e);
  fi;
  F:=FreeGroup("Z","U","V");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  varZ:=F.1;
  U:=F.2;
  V:=F.3;
  R:=SignedPermutations@(n);
  S:=FreeGroupOfFpGroup(R);
  R:=RelatorsOfFpGroup(R);
  phi:=GroupHomomorphismByImages(S,F, GeneratorsOfGroup(S), [U,V]);
  R:=List(R,r->ImagesRepresentative(phi,r));
  R1:=[];
  if n > 3 then
    Add(R1,Comm(varZ,U^(V^2)));
    Add(R1,Comm(varZ,varZ^(V^2)));
  fi;
  if n > 4 then
    Add(R1,Comm(varZ,V*U*U^V));
  fi;
  Add(R1,varZ^2);
  Add(R1,Comm(varZ,(U^2)^V));
  if n > 2 then
    Add(R1,varZ*varZ^V/varZ^(V*U));
  fi;
  Add(R1,Comm(varZ,U));
  Add(R1,Comm(varZ,varZ^V));
  Rels:=Concatenation(R1,R);
  return F/Rels;
end);

#OddPlus_OrderN1:=function(n)
#return 2^(2*n-2)*Factorial(n);
#end;

#   infrastructure for OmegaPlus (2n, q) where q is odd
OddPlus_PresentationForN@:=function(n,q)
local lvarDelta,F,OMIT,R,R1,Rels,S,U,V,varZ,phi;
  Assert(1,n > 2);
  F:=FreeGroup("Delta","Z","V","U");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  lvarDelta:=F.1;
  varZ:=F.2;
  V:=F.4;
  U:=F.3;
  R:=OddPlus_PresentationForN1@(n,q);
  S:=FreeGroupOfFpGroup(R);
  R:=RelatorsOfFpGroup(R);
  phi:=GroupHomomorphismByImages(S,F,
    GeneratorsOfGroup(S),
    [varZ,U,V]);
  R:=List(R,r->ImagesRepresentative(phi,r));
  R1:=[];
  if n > 3 then
    Add(R1,Comm(lvarDelta,U^(V^2)));
    Add(R1,Comm(lvarDelta,varZ^(V^2)));
    Add(R1,Comm(lvarDelta,lvarDelta^(V^2)));
  fi;
  if n > 4 then
    Add(R1,Comm(lvarDelta,V*U*U^V));
  fi;
  #   June 2018 change  -- replace by following
  #   Append (~R1, (Delta, Z * U) = 1);
  Add(R1,lvarDelta^U/lvarDelta^-1);
  Add(R1,Comm(lvarDelta,(U^2)^V));
  OMIT:=true;
  if not OMIT then
    Add(R1,(lvarDelta^(QuoInt((q-1),2)))/U^2);
  fi;
  Add(R1,lvarDelta*lvarDelta^(V)/lvarDelta^(V*U));
  Add(R1,Comm(lvarDelta,lvarDelta^V));
  Add(R1,lvarDelta^varZ/lvarDelta^-1);
  Rels:=Concatenation(R1,R);
  return F/Rels;
end;

#OddPlus_OrderN:=function(n,q)
#return (q-1)^n*2^(n-2)*Factorial(n);
#end;

#   presentation for OmegaPlus (2n, q) where q is odd
BindGlobal("OddPlus@",function(d,q)
local lvarDelta,F,I,R1,R2,R3,R4,Rels,S,U,V,W,varZ,b,e,f,n,p,phi,sigma,w;
  Assert(1,IsEvenInt(d));
  Assert(1,IsOddInt(q));
  n:=QuoInt(d,2);
  Assert(1,n > 2);
  F:=GF(q);
  w:=PrimitiveElement(F);
  e := Factors(q);
  if Size(DuplicateFreeList(e)) > 1 then
      f := false;
  else
      f := true;
      p := e[1];
      e := Size(e);
  fi;
  F:=FreeGroup("Delta","sigma","Z","V","U");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  lvarDelta:=F.1;
  sigma:=F.2;
  varZ:=F.3;
  V:=F.5;
  U:=F.4;
  Rels:=[];
  #   additional relation needed for q = p to express Delta as word in sigma
  #  and U
  if IsPrimeInt(q) then
    b:=Int(1/w);
    w:=Int(w);
    Add(Rels,lvarDelta/((sigma^U)^(w-w^2)*sigma^(b)*(sigma^U)^((w-1))
     *sigma^-1));
  fi;
  if e=1 then
    R1:=OddPlus_PresentationForN1@(n,q);
    S:=FreeGroupOfFpGroup(R1);
    R1:=RelatorsOfFpGroup(R1);
    phi:=GroupHomomorphismByImages(S,F, GeneratorsOfGroup(S), [varZ,U,V]);
  else
    R1:=OddPlus_PresentationForN@(n,q);
    S:=FreeGroupOfFpGroup(R1);
    R1:=RelatorsOfFpGroup(R1);
    phi:=GroupHomomorphismByImages(S,F,
      GeneratorsOfGroup(S), [lvarDelta,varZ,U,V]);
  fi;
  R1:=List(R1,r->ImagesRepresentative(phi,r));
  R2:=PresentationForSL2@(p,e:Projective:=false);
  S:=FreeGroupOfFpGroup(R2);
  R2:=RelatorsOfFpGroup(R2);
  if e=1 then
    phi:=GroupHomomorphismByImages(S,F, GeneratorsOfGroup(S), [sigma,U]);
  else
    phi:=GroupHomomorphismByImages(S,F,GeneratorsOfGroup(S),
      [lvarDelta,sigma,U]);
  fi;
  R2:=List(R2,r->ImagesRepresentative(phi,r));
  #   centraliser of sigma
  R3:=[];
  if n > 3 then
    Add(R3,Comm(sigma,U^(V^2)));
  fi;
  if n > 4 then
    Add(R3,Comm(sigma,V*U^-1*(U^-1)^V));
  fi;
  if n > 3 then
    Add(R3,Comm(sigma,varZ^(V^2)));
  fi;
  if e > 1 then
    if n > 3 then
      Add(R3,Comm(sigma,lvarDelta^(V^2)));
    fi;
    Add(R3,Comm(sigma,lvarDelta^(varZ^V)));
    if n in Set([3,4]) then
      Add(R3,Comm(sigma,lvarDelta^(U^V)*lvarDelta^V));
    fi;
  fi;
  Add(R3,Comm(sigma,varZ*U));
  #   Steinberg relations
  R4:=[];
  Add(R4,Comm(sigma,sigma^V)/sigma^(V*U^-1));
  Add(R4,Comm(sigma,sigma^(V*U^-1)));
  W:=U^(V*U^-1);
  Add(R4,Comm(sigma,sigma^W));
  if n > 3 then
    Add(R4,Comm(sigma,sigma^(V^2)));
  fi;
  Add(R4,Comm(sigma,sigma^(varZ^V)));
  if n=4 then
    Add(R4,Comm(sigma,sigma^(varZ^V*V^2)));
  fi;
  Rels:=Concatenation(Rels, R3, R4,R1,R2);
  return F/Rels;
end);

#   express presentation generators as words in standard generators
BindGlobal("PlusStandardToPresentation@",
function(d,q)
local F,delta,delta1,s,s1,t,t1,u,v;
  Assert(1,IsEvenInt(d) and d > 4);
  F:=FreeGroup("s","so","t","delta","to","deltao","u","v");
  F:=Group(StraightLineProgGens(GeneratorsOfGroup(F)));
  s:=F.1;
  s1:=F.4;
  t:=F.2;
  delta:=F.3;
  t1:=F.5;
  delta1:=F.6;
  u:=F.7;
  v:=F.8;
  #   return presentation generators = [delta, sigma, Z, U, V]
  if IsOddInt(q) then
    return [delta1^-1,t1,s*s1,s1,v];
  else
    return [(delta*delta1)^(QuoInt((q-2),2)),t1,s*s1,s1,v];
  fi;
end);

#   express standard generators as words in presentation generators
BindGlobal("PlusPresentationToStandard@",
function(d,q)
local U,V,W,varZ,delta,sigma,w1,w3,w6;
  Assert(1,IsEvenInt(d) and d > 4);
  W:=FreeGroup("delta","sigma","Z","U","V");
  W:=Group(StraightLineProgGens(GeneratorsOfGroup(W)));
  delta:=W.1;
  sigma:=W.2;
  varZ:=W.3;
  U:=W.4;
  V:=W.5;
  # rewritten select statement
  if IsEvenInt(q) then
    w1:=varZ*U;
  else
    w1:=varZ*U^-1;
  fi;
  # rewritten select statement
  if IsEvenInt(q) then
    w3:=delta^-1*(delta^-1)^U;
  else
    w3:=delta^(varZ^(V^-1));
  fi;
  # rewritten select statement
  if IsEvenInt(q) then
    w6:=(delta*(delta^varZ)^U)^-1;
  else
    w6:=delta^-1;
  fi;
  #   return standard generators = [s, t, delta, s', t', delta', u, v]
  return [w1,(sigma^-1)^(varZ^V),w3,W.4,W.2,w6,One(W),W.5];
end);


#   relations are on presentation generators;
#  convert to relations on standard generators
BindGlobal("PlusConvertToStandard@",
function(d,q,Rels)
local A,B,C,T,U,W,tau,gens;
  A:=PlusStandardToPresentation@(d,q);
  # was "Rels:=Evaluate(Rels,A);"
  gens:=GeneratorsOfGroup(FamilyObj(Rels)!.wholeGroup);
  Rels:=List(Rels, w-> MappedWord(w, gens, A));
  B:=PlusPresentationToStandard@(d,q);
  gens:=GeneratorsOfGroup(FamilyObj(B)!.wholeGroup);
  C:=List(B, w-> MappedWord(w, gens, A));
  U:=FamilyObj(C)!.wholeGroup;
  W:=FamilyObj(Rels)!.wholeGroup;
  tau:=GroupHomomorphismByImages(U,W,GeneratorsOfGroup(U),GeneratorsOfGroup(W));
  T:=List([1..Length(GeneratorsOfGroup(W))],
    i->W.(i)^-1*ImagesRepresentative(tau,C[i]));
  Rels:=Concatenation(Rels,T);
  return W/Rels;
end);

#   generator of centre as word in presentation generators
BindGlobal("PlusGeneratorOfCentre@",
function(d,q,F)
local lvarDelta,V,varZ,n,z;
  Assert(1,IsEvenInt(d) and d > 2);
  n:=QuoInt(d,2);
  if q^n mod 4=1 then
    lvarDelta:=F.1;
    varZ:=F.3;
    V:=F.5;
    if IsEvenInt(n) then
      z:=V^n;
    else
      z:=(V*varZ*lvarDelta)^(QuoInt(n*(q-1),4));
    fi;
  else
    # was "z:=F.0;"
    z:=One(F);
  fi;
  return z;
end);

InstallGlobalFunction(PlusPresentation@,function(d,q)
local P,Presentation,Projective,R,Rels,S,n,z;
  Projective:=ValueOption("Projective");
  if Projective=fail then
    Projective:=false;
  fi;
  Presentation:=ValueOption("Presentation");
  if Presentation=fail then
    Presentation:=false;
  fi;
  if d=4 then
    return OmegaPlus4@(q:Projective:=Projective);
  elif IsEvenInt(q) then
    R:=EvenPlus@(d,q);
    P:=FreeGroupOfFpGroup(R);
    R:=RelatorsOfFpGroup(R);
  else
    R:=OddPlus@(d,q);
    P:=FreeGroupOfFpGroup(R);
    R:=RelatorsOfFpGroup(R);
  fi;
  n:=QuoInt(d,2);
  if Projective and q^n mod 4=1 then
    z:=PlusGeneratorOfCentre@(d,q,P);
    R:=Concatenation(R,[z]);
  fi;
  if Presentation then
    return P/R;
  fi;
  Rels:=PlusConvertToStandard@(d,q,R);
  S:=FreeGroupOfFpGroup(Rels);
  Rels:=RelatorsOfFpGroup(Rels);
  Rels:=Filtered(Rels,w->w<>w^0);
  return S/Rels;
end);

InstallGlobalFunction(PlusGenerators@,function(d,q)
local varE,F,MA,U,V,varZ,delta,gens,sigma,w;
  if d=4 then
    return ClassicalStandardGenerators("Omega+",d,q:
      PresentationGenerators:=false,Projective:=false);
  fi;
  if IsOddInt(q) then
    return OddPlusGenerators@(d,q);
  fi;
  F:=GF(q);
  w:=PrimitiveElement(F);
  delta:=IdentityMat(d, F);
  delta[1][1]:=w^-1;
  delta[2][2]:=w;
  varE:=ClassicalStandardGenerators("Omega+",d,q:PresentationGenerators:=false);
  sigma:=varE[5];
  U:=varE[4];
  V:=varE[8];
  varZ:=IdentityMat(d,F);
  varZ[1][1]:=0;
  varZ[1][2]:=1;
  varZ[2][1]:=1;
  varZ[2][2]:=0;
  varZ:=varZ*w^0;
  varZ:=varZ*varZ^U;
  gens:=[delta,sigma,varZ,U,V];
  return gens;
end);

[ Dauer der Verarbeitung: 0.40 Sekunden  ]