Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  generators.gi   Sprache: unbekannt

 
# Called as CohomologyGenerators(C,n), the objective
# of this function is to lift ALL of the generators
# n-1 times, discovering the generators of degree > 1 
# in the process. In particular, this means that the
# degree 1 generators will be lifted to maps P_n -> P_{n-1}.

InstallMethod(CohomologyGenerators,
  "Computes cohomology generators to degree n",
  [IsCObject,IsPosInt], 
  function(C,n)
    local G,K,R,L,B,D,P,BB,H,h,j,k,l,m,d,N; 
    ProjectiveResolution(C,n);
    G:=C!.G; K:=C!.K; R:=C!.R; L:=C!.L; B:=C!.B;
    if not IsBound(C!.D) then C!.D:=List([1..B[2]],x->1);fi;
    if not IsBound(C!.P) then C!.P:=[];fi;
    D:=C!.D; P:=C!.P;
    
    # Set up cochains in degree 1.
    if not IsBound(C!.H) then 
      BB:=IdentityMat(B[2],K);
      C!.H:=List(BB,x->FirstLift(C,x));
    fi;
    H:=C!.H;

    for m in [Size(H[1])..n-1] do
      # Size(H[1]) is the number of lifts already computed.
      h:=Size(H); 
      # h is the number of generators there were at the 
      # beginning of round m. We need this information later.
      
      for j in [1..h] do
        d:=D[j];
        LiftChainMap(C,H[j],d,m);
    
        # Digging out the first column of each block column of 
        # the matrix we just computed amounts to multiplying 
        # H[j] by a degree m map, producing a degree d+m map. 
        # We stick them all into P[d+m] for now. 
    
        if not IsBound(P[d+m]) then P[d+m]:=[];fi;
        for k in [1..B[m+1]] do
          Append(P[d+m],[ExtractColumn(H[j][m+1],(k-1)*Size(G)+1)]);
        od;
      od;
    
      # At this point, all products of generators
      # of degree < m+1 which produce maps of degree m+1
      # have been computed put in P[m+1].
    
      N:=BaseSteinitzVectors(
        IdentityMat(B[m+2],K),BaseMat(P[m+1])).factorspace;

      # Voila! The new generators in degree m+1. It only
      # remains to repeat all of the above computations
      # m times for each of the |N| new generators so that
      # all the generators will have the same number m
      # of lifts not including the first map P_d -> P_0.
    
      for j in [1..Size(N)] do
        D[h+j]:=m+1;
        H[h+j]:=FirstLift(C,N[j]);
        ProjectiveResolution(C,2*m+1);
        for k in [1..m] do
          LiftChainMap(C,H[h+j],m+1,k);
          if not IsBound(P[m+k+1]) then P[m+k+1]:=[];fi;
          for l in [1..B[k+1]] do
          Append(P[m+k+1],[ExtractColumn(H[h+j][k+1],(l-1)*Size(G)+1)]);
          od;
        od;
      od;
    od;
    return D;
  end
);

[ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge