Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/sophus/gap/   (GAP Algebra Version 4.15.1©)  Datei vom 9.7.2022 mit Größe 4 kB image not shown  

Quelle  descendant.gi   Sprache: Shell

 

#############################################################################
##
#W  descendant.gi            Sophus package                   Csaba Schneider 
##
#W The methods in this file are used to compute the descendants of a 
#W nilpotent Lie algebra.
## 


BindGlobal( "SOPHUS_DualBasis", function( base )
  return TriangulizedNullspaceMat( TransposedMat( base ) );
end );


#############################################################################
##
#M  DescendantsOfStep1OfAbelianLieAlgebra( <dim>, <p> )
##  
##  Computes the descendants of the <dim>-dimensional abelian Lie algebra over
##  the field of <p> elements.
##  

InstallMethod( DescendantsOfStep1OfAbelianLieAlgebra,
   "for abelian Lie algebras", true, [ IsPosInt, IsPosInt ], 0,

function( dim, p )
    local L, C, M, B,  els, el, subs, i, V;
    
    L := AbelianLieAlgebra( GF(p), dim );
    C := LieCover( L );
    M := LieMultiplicator( C );
    B := NilpotentBasis( C );
    
    els := [];
    el := Zero( C );
    
    for i in [1..Int( dim/2 )] do
        el := el + B[2*i-1]*B[2*i];
        Add( els, el );
    od;
    
    V := GF(p)^Dimension( M );
    
    subs := List( els, x->Coefficients( Basis( M ), x ));
    subs := List( subs, x->Basis( Subspace( V, [x] )));
    subs := List( subs, x->SOPHUS_DualBasis( x ));
    subs := List( subs, x->List( x, y->LinearCombination( Basis( M ), y )));
    subs := List( subs, x->Ideal( C, x ));
    
    return List( subs, x->C/x );
end );


    

#############################################################################
##
#M  Descendants( <L>, <step> )
##  
##  Computes the <step>-step descendants of the nilpotent Lie algebra <L>.
##  

InstallMethod( Descendants,
   "for nilpotent Lie algebras", true, [ IsLieAlgebra, IsPosInt ], 0,

function( L, step )
    local A, C, M, N, G, orbs, V, T, new_Ts, basN, reps_bas, 
          USE_DUAL, dim, iter, i, reps, algs, p, info, posN, 
          order, mat, gens, newG;

    if not IsLieNilpotentOverFp( L ) then
  TryNextMethod();
    fi;

    Info( LieInfo, 1, "Computing Cover Info" );
  
    if 
      Length( LieLowerCentralSeries( L )) = 
      Length( LieLowerCentralSeries( LieCover( L )))  
      or 
      step > Dimension( LieMultiplicator( LieCover( L ))) then 
        return []; 
    fi;


    A := ShallowCopy( AutomorphismGroupOfNilpotentLieAlgebra( L ));
    L := A.liealg;
    
    C := LieCover( L );
    
    M := LieMultiplicator( C );
    N := LieNucleus( C );
    
 
    
    C := LieCover( L );
    
    Info( LieInfo, 1, "Computing action on multiplier" );
    
    LinearActionpOfGroupOnMultiplier( A );
    
    
    G := Group( Union( List( A.glAutos, x -> x!.mat ), 
                 List( A.agAutos, x -> x!.mat )));
    
    p := Characteristic( LeftActingDomain( L ));
    V := GF( p )^Dimension( M );
    
    dim := Dimension( M ) - step;
    
    Info( LieInfo, 1, "Computing Orbits. Multiplicator has dimension ", 
          Dimension( M ));
    
    if step = Dimension( M ) and Dimension( M ) = Dimension( N ) then
        return [ C ];
    elif step = Dimension( M ) and Dimension( M ) <> Dimension( N ) then
        return [];
    else
        posN := List( Basis( M ), x -> x in N );
        order := [1..Dimension( V )];
        SortParallel( posN, order );
        mat := PermutationMat( PermList( order )^-1, Dimension( V ), GF(p));
        gens := GeneratorsOfGroup( G );
        newG :=  Group( List( gens, x -> x^mat ));
        
        reps := OrbitsOfAllowableSubgroups( Dimension( V ) - dim, 
                        Dimension( V ), Dimension( N ), 
                        p, newG );
        
        reps := List( reps, x -> Basis( x ));
        reps := List( reps, x -> BasisVectors( x )*mat^-1 );
    fi;
    
    Info( LieInfo, 1, "Computing allowable orbits" );
    
    
    Info( LieInfo, 1, "Computing descendants" );
    
    T := StructureConstantsTable( Basis( C ));
    
    reps := List( reps, x-> MutableCopyMat( x ));
    
    for i in reps do
        TriangulizeMat( i );
    od;
    
    new_Ts := List( reps, x -> LieQuotientTable( T, x, Dimension( L )));
    
    algs := List( new_Ts, 
                  x -> LieAlgebraByStructureConstants( 
                          LeftActingDomain( L ), x )); 
    
    for i in algs do 
        Setter( IsLieNilpotent )( i, true );
    od;
        
    return algs;
end );





    
           
    
    
    

    
    

Messung
CHZG
969210095

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.