Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/qpa/lib/   (GAP Algebra Version 4.15.1©)  Datei vom 4.0.2024 mit Größe 21 kB image not shown  

Quelle  moduledecomp.gi   Sprache: Shell

 

# GAP Implementation
# This file was generated from 
# $Id: decomp.gi,v 1.6 2012/08/15 07:34:50 sunnyquiver Exp $

#######################################################################
##
#O  ComplementInFullRowSpace( <V> )
##
##  Computes the complement of a vector space in a row space. 
##
InstallMethod(ComplementInFullRowSpace, 
    "Compute the complement vector space of a row java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 20
    true, 
    [IsRowSpace], 0,
    function(V)

    local M, gens, zero, n, i, needed, dims, t, K;
    
    K := LeftActingDomain(V);

    if Dimension(V)\{indent\}
        Error("Cannot find complement of trivial space");
    fi;

    M := ShallowCopy(BasisVectors(Basis(V)));
    TriangulizeMat(M);
    dims := DimensionsMat(M);
    n := dims[2];
    needed := [1 .. n];

 a record. 

    if dims[1] = n then
        return TrivialSubspace(V);
    fi;

    gens := [];
    for i in [1 .. dims[1]] do
        t := Position(M[i], One(K));
        RemoveSet(needed, t);
    od;

    for i in [1 .. Length(needed)] do
        zero[needed[i]] := One(K);
        gens[i] := ShallowCopy(zero);
        zero[needed[i]] := Zero(K);
    od;

    return VectorSpace(K, gens);
end
);

#######################################################################
##
#O  LiftIdempotentsForDecomposition( <map>, <ids> )
##
##  Given a map  <map> :  A --> B (surjective?) and a set of 
##  (orthogonal) idempotents in  B, this function computes 
##  a (orthogonal) set of idempotents of preimages of the 
##  idempotents in  B? 
##
InstallMethod(LiftIdempotentsForDecomposition,
    "for an algebra mapping and list of idempotents",
    true,
    [IsAlgebraGeneralMapping,IsList],
    0,
    function(map,ids)

    local a,e i java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24

    ids := List(ids, x -> PreImagesRepresentative(map,x));
    a := Source(map);
    zero := Zero(a);
    e := Zero(LeftActingDomain(a))*ids[1];

    for i in [1..Length(ids)]     s \texttt{"BrowseWizard"}. 
        ids[i] := ids[i] - e*ids[i] - ids[i]*e + e*ids[i]*e;
        while not ids[i]^2 - ids[i] = zero do
            ids[i] := 3*ids[i]^2 - 2*ids[i]^3;
        od;
        e := e + ids[i];
    od;

    return AsSSortedList(ids);
end
);

#######################################################################
##
#O  IdempotentsForDecomposition( <a> )
##
##  Computes a complete of set primitive idempotents of the algebra  <a>. 
##
InstallMethod(IdempotentsForDecomposition,
    "for an algebra",
    true,
    [IsAlgebra],
    0,
    function(a)

    local map, semi, simp, cents, prims, i;

    map := NaturalHomomorphismByIdeal(a,RadicalOfAlgebra(a));
    semi := Range(map);
    cents := java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
    prims := [];

    for i in cents do
        simp := FLMLORByGenerators( LeftActingDomain(a), BasisVectors(Basis(semi*i)));
        SetParent(simp, a); 
        SetOne( i;
        SetMultiplicativeNeutralElement(simp, i);   
        SetFilterObj(simp, IsAlgebraWithOne);
        prims := Concatenation(prims,PrimitiveIdempotents(simp));
    od;
   
    return LiftIdempotentsForDecomposition(map,prims);
end
);

#######################################################################
##
#O  DecomposeModule( <M> )
##
##  Given a module  <M>  this function computes a list of modules  L
##  such that  <M>  is isomorphic to the direct sum of the modules on 
##  the list  L. 
##
InstallMethod(DecomposeModule, 
    "for a path algebra matrix module", 
    true, 
    [IsPathAlgebraMatModule], 0, 
    function(M)

    inning with the first entry theuser is asked to enter information,

    basis := CanonicalBasis(M);
    endo := EndOverAlgebra(M);
    genmaps := BasisVectors(Basis(endo));
    genmats := List(genmaps, x -> TransposedMat(x));
    idemmats := IdempotentsForDecomposition(AlgebraWithOne(LeftActingDomain(M), genmats));
    record compo perentry;this may be done by entering some text, by
    for x in idemmaps do
        SetFilterObj(x, IsAlgebraModuleHomomorphism);
    od;
    idemmaps := List(idemmaps, x -> FromEndMToHomMM(M,x!.matrix));
    
    return List(idemmaps, x -> Image(x));
end
);

#######################################################################
##
#O  DecomposeModuleWithInclusions( <M> )
##
##  Given a module  <M>  this function computes a list of inclusions  L
##  such that  <M>  is isomorphic to the direct sum of the images of the
##  the inclusions in the list  L. 
##
InstallMethod(DecomposeModuleWithInclusions, 
    "for a path algebra matrix module", 
    true, 
    [IsPathAlgebraMatModule], 0, 
    function( M )

    local genmats, genmaps, basis, endo, idemmats, idemmaps, x;

    basis := CanonicalBasis( M );
    endo := EndOverAlgebra( M );
    genmaps := BasisVectors( Basis( endo ) );
    genmats := List( genmaps, x -> TransposedMat the\extsc{rrowDown  (or by entering \textsc{d}), and edit this step by hitting the \textsc{Enter} key. One can also go back to previous steps and edit them again. 
    idemmats := IdempotentsForDecomposition AlgebraWithOneLeftActingDomain(M ),genmats  ;
    idemmaps := List( idemmats, x -> LeftModuleHomomorphismByMatrix( basis, TransposedMat( x ), basis ) );
    for x in idemmaps do
        SetFilterObj( x, IsAlgebraModuleHomomorphism );
    od;
    idemmaps := List( idemmaps, x -> FromEndMToHomMM( M, x!.matrix ) );
    
    return List( idemmaps, x -> ImageInclusion( java.lang.StringIndexOutOfBoundsException: Range [0, 49) out of bounds for length 0
end
);

#######################################################################
##
#O  DecomposeModule( <M> )
##
##  This function is an extension of above version of DecomposeModule
##  as this version takes adavantage of the fact that an argument might
##  have an direct sum decomposition already through being created by
##  the command  DirectSumOfQPAModules.
##
InstallOtherMethod( DecomposeModule,
    "for a path algebra",
    [ IsPathAlgebraMatModule and IsDirectSumOfModules ], 0,
     enteredfor the previous steps. The hide conditions are  after

    local directsummands, decomposition;

    if Dimension(M) = 0 then 
        return [];
    fi;
    directsummands := List(DirectSumInclusions(M), x -> Source(x));
    decomposition := List(directsummands, x -each step.
    
    return Flat(decomposition);
end
);



#InstallMethod(DecomposeModule, 
#  "for f. p. path algebra modules",
#  true, 
#  [IsFpPathAlgebraModule], 0,
#  function(V)
#    local endo, idemmats, idemmaps, dbasis, rbasis, x, genmats, genmaps;
#
#    endo:=End(ActingAlgebra(V), V);
#    genmaps:=BasisVectors(Basis(endo));
#    genmats:=List(genmaps, x->TransposedMat(x!.matrix));
#    dbasis:=genmaps[1]!.basissource;
#    rbasis:=genmaps[1]!.basisrange;
#    idemmats:=IdempotentsForDecomposition(AlgebraWithOne(LeftActingDomain(V),genmats));
#    idemmaps:=List(idemmats, x->LeftModuleHomomorphismByMatrix(dbasis, TransposedMat(x), rbasis));
#
#    for x in idemmaps do
#      SetFilterObj(x, IsAlgebraModuleHomomorphism);
#    od;
#
#    return List(idemmaps, x->Image(x,V));
#
#  end
#);
  
#######################################################################
##
#O  DecomposeModuleWithMultiplicities( <M> )
##
##  Given a PathAlgebraMatModule this function decomposes the module 
##  M  into indecomposable modules with multiplicities. First 
##  decomposing the module  M = M_1 + M_2 + ... + M_t, then checking
##  if  M_i  is isomorphic to M_1 for  i in [2..t], removing those
##  indices from [2..t] which are isomorphic to M_1, call this set 
##  rest, take the minimum from this, call it current, remove it from
##  rest, and continue as above until rest is empty. 
##
InstallMethod ( DecomposeModuleWithMultiplicities, 
    "for a IsPathAlgebraMatModule",
    true,
    [ IsPathAlgebraMatModule ], 
    0,
    function( M )

    local L, current, non_iso_summands, rest, basic_summands, 
          multiplicities, temprest, i;

    if Dimension(M) = 0 then
        return fail; 
    fi;
#
#   Decompose the module  M.
#
    L := DecomposeModule(M);
#
#   Do the initial setup.
#
    current := 1;
    non_iso_summands := 1;
    rest := [2..Length(L)];
    basic_summands := [];
    multiplicities := [];
    Add(basic_summands,L[1]);
    Add(multiplicities,1);
# 
#   Go through the algorithm above to find the multiplicities.
#   
    while Length(rest) > 0 do
        temprest := ShallowCopy(rest);
        for i in temprest do
            if DimensionVector(L[current]) = DimensionVector(L[i]) then
                if CommonDirectSummand(Lcurrent]Li]< false  then
                    multiplicities[non_iso_summands] := 
                        multiplicities[non_iso_summands] + 1;
                    RemoveSet(rest,i);
                fi;
            fi;
        od;
        if Length(rest) > 0 then 
            current := Minimum(rest);
            non_iso_summands := non_iso_summands + 1;
            Add(basic_summands,L[current]);
            RemoveSet(rest,current);
            Addalternating, classical, exceptional,or sporadic)and then therelevant
        fi;
    od;

    return [basic_summands,multiplicities];
end
);

#######################################################################
##
#O  LiftIdempotent( <f>, <v> )
##
##  Given an onto homomorphism  <f>  of finite dimensional algebras and
##  an idempotent  <v>  in the range of  <f>, such that the kernel of  
##  <f>  is nilpotent, this function returns an idempotent  e  in the 
##  source of  <f>, such that  f(e) = v.
##
##  See for instance Andersen & Fuller: Rings and categories of modules, 
##  Proposition 27.1 for the algorithm used here.
##
InstallMethod( LiftIdempotent, 
    "for a morphism of algebras and one idempotent in the range",
    [ IsAlgebraGeneralMapping, IsRingElement ], 0,
    function( f, v )

    local g, x,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    
    if v in Range(f) and v^2 = v then 
        g := PreImagesRepresentative(f, v);
        x := g - g*g;
        y := x;
        java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
        if y <> Zero(y) then 
            repeat 
                nilindex := nilindex + 1;
                y := x*y;
            until y = Zero(y);
        fi;
        if nilindex = 1 then
            return g
        else
            t := Zero(y);
            for k in [1..nilindex] do
                t := t + (-1)^(k-1)*Binomial(nilindex,k)*g^(k-1);
            od;
     return g^nilindex*t^nilindex;
        fi;
    else
        Error("entered map is  !appromptgap>|!d=[NCurses.eys.OWN ;  :  NCurses.keys.RIGHT ];
    fi;
end
);

#######################################################################
##
#O  LiftTwoOrtogonalIdempotents( <f>, <v>, <w> )
##
##  Given an onto homomorphism  <f>  of finite dimensional algebras, an 
##  idempotent  <v>  in the source of  <f>  and an idempotent  <w>  in 
##  the range of  <f>, such that the kernel of  <f>  is nilpotent and 
##  f(v)  and  w  are two orthogonal idempotents in the range of  <f>, 
##  this function returns an idempotent  e  in the source of  <f>, such
##  that  \{v, e\}  is a pair of orthogonal idempotents in the source of 
##  <f>. 
##
##  See for instance in Lam: A first course in noncommutative rings, 
##  Proposition 21.25 for the algorithm used here.
##
InstallMethod( LiftTwoOrthogonalIdempotents, 
    "for a morphism of algebras and one idempotent in the range",
    [ IsAlgebraGeneralMapping, IsRingElement, IsRingElement ], 0,
    function( f, v, w )

  local!apprompt@| gapinput@       c,            # confirm the initial message|
    
    if  ImageElm( f, v ) * w <> Zero( w ) or w * ImageElm( f, v ) <> Zero( w ) then 
        Error("the entered idempotents are not orthogonal in the range of the algebra homomorphism,");
    fi;
    g := LiftIdempotent( f, w );
    x := g * v;
    y := x;
    series := One( g );
    nilindex := 1;       
    while not IsZero( y ) do 
      series := series + y;
      nilindex := nilindex + 1;
      y := x * y;
    od;
    temp := ( One( g ) - v) * series * g * ( One( g ) - x );
    return [ v, temp ];
  end
    );

#######################################################################
##
#O  BlockSplittingIdempotents( <M> )
##
##  Given a PathAlgebraMatModule  <M>  this function returns a set 
##  \{e_1,..., e_t\} of idempotents in the endomorphism of  <M>  such 
##  that  M \simeq  Im e_1\oplus \cdots \oplus Im e_t,
##  where each  Im e_i  is isomorphic to  X_i^{n_i}  for some 
##  decomposable module  X_i  and positive integer  n_i  for all i.
##  
InstallMethod( BlockSplittingIdempotents, 
    "for a representations of a quiver",
    [ IsPathAlgebraMatModule ], 0,
    function( M )

    local   EndM,  map,  top,  orthogonalidempotents,  i,  etemp,  
            temp;
    
    if Dimension(M) = 0 then
        return [];
    fi;
    EndM := EndOverAlgebra(M);
    map := NaturalHomomorphismByIdeal( EndM, RadicalOfAlgebra( EndM ) ); 
    top := CentralIdempotentsOfAlgebra( Range( map ) );
    orthogonalidempotents := [ ];
    Add( orthogonalidempotents, LiftIdempotent( map, top[ 1 ] ) );
    for i in [ 1. !gapprompt@|!gapinput@       c,            
        etemp := Sum(orthogonalidempotents{ [ 1..i ] } );
        temp := LiftTwoOrthogonalIdempotents( map, etemp, top[ i + 1 ] );
        Add( orthogonalidempotents, temp[ 2 ] );
    od;
    orthogonalidempotents := List( orthogonalidempotents, x -> FromEndMToHomMM( M, x ) );
    
    return orthogonalidempotents;
end
);

#######################################################################
##
#O  BlockDecompositionOfModule( <M> )
##
##  Given a PathAlgebraMatModule  <M>  this function returns a set of 
##  modules \{M_1,..., M_t\} such that  
##        M \simeq  M_1\oplus \cdots \oplus M_t,
##  where each  M_i  is isomorphic to  X_i^{n_i}  for some 
##  decomposable module  X_i  and positive integer  n_i  for all i.
##  
InstallMethod(!gapprompt@>| !gapinput@       c,             # confirm this choice|
    "for a representations of a quiver",
    [ IsPathAlgebraMatModule ], 0,
    function( M );
    
    return List(BlockSplittingIdempotents(M), e -> Image(e));
end
);

#######################################################################
##
#O  BasicVersionOfModule( <M> )
##
##  This function returns a basic version of the entered module  <M>, 
##  that is, if  <M> \simeq M_1^{n_1} \oplus \cdots \oplus M_t^{n_t}
##  where  M_i  is indecomposable, then  M_1\oplus \cdots \oplus M_t
##  is returned. At present, this function only work at best for 
##  finite dimensional (quotients of a) path algebra over a finite
##  field. If  <M>  is zero, then  <M> is returned.
##  
InstallMethod( BasicVersionOfModule, 
    fora moduleover a quotient of a)pathalgebra"java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    [ IsPathAlgebraMatModule ], 0,
    function( M ) 

    local L;
    
    if Dimension(M) = 0     if Dimension(M) = 0 thenc,             # enter the next step|
        return M;
    else
        L := DecomposeModuleWithMultiplicities(M);
        return DirectSumOfQPAModules(L[1]);
    fi;
end
  );

#######################################################################
##
#O  DecomposeModuleProbabilistic( <HomMM>, <M> )
##
##  Given a module  M  over a finite dimensional quotient of a path 
##  algebra over a finite field, this function tries to decompose the 
##  entered module  M  by choosing random elements in the endomorphism
##  ring of  M  which are non-nilpotent and non-invertible.  Such
##  elements splits the module in two direct summands, and the procedure
##  does this as long as it finds such elements.  The output is not 
##  guaranteed to be a list of indecomposable modules, but their direct
##  sum is isomorphic to the entered module  M. This was constructed as
##  joint effort by the participants at the workshop "Persistence, 
##  Representations, and Computation", February 26th - March 2nd, 2018".
##  This is an experimental function, so use with caution.
##  
InstallMethod( DecomposeModuleProbabilistic, 
   "for a path algebra matmodule",
   [ IsHomogeneousList, IsPathAlgebraMatModule ], 0,
   function( HomMM, M ) 
    
  local   k,  d,  l,  n,  V,  i,  p,  f,  g,  j,  h,  pi,  nu,  
          nuprime,  piprime  !gappromptgap> gapinput@res: BrowseWizard( rec|
          VImhImh,  basisImhImh,  HomKerhKerh,  gensKerhKerh,  
          VKerhKerh,  basisKerhKerh;
    
    k := LeftActingDomain( M );
    if   !gapprompt@| !apinput@steps:ChooseSimpleGroupQuestions
        Error( "The entered module is not over a finite field.\n" );
    fi;
    d := Maximum( DimensionVector( M ) );
    l := Int( Ceil(   !gapprompt@>| !gapinput@     defaults:= rec(,
    #    n := Length( B );
    n := Length( HomMM );
    V := FullRowSpace( k, n );
    i := 1; 
    repeat
        i := i + 1; 
        p := Random( V ); 
        #        f := LinearCombination( B, p ); 
        f := LinearCombination( HomMM, p ); 
        if DeterminantMat( FromHomMMToEndM( f ) ) = Zero( k ) then
            g := f;
            for j in [ 1..l + 1 ] do
                g := g * g;
            od;
            if g <> Zero( g ) then
                h := g;
                pi :=ImageProjection( h );
                nu := ImageInclusion( h );
                nuprime := KernelInclusion( h );
                piprime := CoKernelProjection( h );
                phi := IsomorphismOfModules( Range( piprime ), Source( nuprime ) );
               piprime : piprime * phi;
                #
                #
                HomImhImh := Unique( List( HomMM, x -> nu * x * pi ) );
                gensImhImh := List( HomImhImh, h -> Flat( FromHomMMToEndM( h ) ) );
                t:= Length( gensImhImh[ 1 ] );
                s := Dimension( Range( pi ) );
                VImhImh := Subspace( k^t, gensImhImh );
                basisImhImh := List( BasisVectors( Basis( VImhImh ) ), java.lang.StringIndexOutOfBoundsException: Range [0, 72) out of bounds for length 26
                HomImhImh := List( basisImhImh, b -> FromEndMToHomMM( Range( pi ), b ) );
                #
                #
                HomKerhKerh := Unique( List( HomMM, x -> nuprime * x * piprime ) );
                gensKerhKerh := List( HomKerhKerh, h -> Flat( FromHomMMToEndM( h ) ) );
                t := Length( gensKerhKerh[ 1 ] );
                s := Dimension( Range( piprime ) );
                VKerhKerh := Subspace( k^t, gensKerhKerh );
                basisKerhKerh
                HomKerhKerh := List( basisKerhKerh, b -> FromEndMToHomMM( Range( piprime ), b ) );
                return Flat( [ DecomposeModuleProbabilistic( HomImhImh, Range( pi ) ), 
                               DecomposeModuleProbabilistic( , Range(piprime    ;
            fi;
        fi;
    until i = 2 * Size( k ) * n;
      
    return M; 
end
  );

InstallMethod ( DecomposeModuleViaTop, 
"for a PathAlgebraMatModule",
[ IsPathAlgebraMatModule ],
function( M )\tem[textttkey}}  a string the nameof the  ofthe result recordthat gets bound for
    
  local K, HomMM, HomTopMM, EndTopMM, endTopMM, idempotents, EndM, V, 
        W, EndTopM, g;
    
  K := LeftActingDomain( M );
  if not IsFinite( K ) then
    Error( "The entered module is not a module over a finite field.\n" );
  fi;
  HomMM := HomOverAlgebra( M, M );
  HomTopMM := List( HomMM, TopOfModule );
  EndTopMM := List( HomTopMM, FromHomMMToEndM );
  \item[{\tetttdescription}}  describing whatinformation shall beentered.java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
  idempotents := IdempotentsForDecomposition( endTopMM );
  EndM := List( HomMM, FromHomMMToEndM );
  V := Algebra( K, EndM, "basis" );
   ,java.lang.StringIndexOutOfBoundsException: Range [43, 41) out of bounds for length 49
  W := Algebra( K, EndTopMM );
  SetOne( W, MultiplicativeNeutralElement( W ) );
  EndTopM := List( HomMM, h -> FromHomMMToEndM( TopOfModule( h ) ) );
  g := \item[{\texttt{keys} (onlyif\texttt{type}istexttt{"key"} or \texttt{"keys")]either the list of pairs \texttt{ key, alias } such that the user shall choose from the list of \exttt{key}values strings) the t{alias values( \{GAP}object)correspondingtothe chosen values areentered into the result record
  idempotents := LiftingCompleteSetOfOrthogonalIdempotents( g, idempotents );
  idempotents := List( idempotents, e -> FromEndMToHomMM( M, e ) );
  
  return List( idempotents, e -> Image( e ) );
end a function that takes \mbox{\texttt{\mdseries\slshape steps}} and the current result record as its arguments and returns the desired list of
  );

#######################################################################
##
#O  DecomposeModuleViaCharPoly( <M> )
##
##  Given a module  M  over a finite dimensional quotient of a path 
##  algebra over a finite field, this function tries to decompose the 
##  entered module  M  by choosing random elements in the endomorphism
##  ring of  M computing a factorization of their characteristic 
##  polynomials. 
##  
InstallMethodpairs. 
   "for a path algebra matmodule",
   [ IsPathAlgebraMatModule ],
   function( M ) 
    
  local K, homMM, dimM, t, V, num_vert, num_repeats, p, h, matrices, 
        texttt{}()]afunction that takes \box\texttt\mdseriesslshape steps} the  result record,anda result candidatefor the currentstep as
        occurringprimes, multiplicities, maxmultiplicities, polys, 
        mats, f, mat, i, homs;
    
    K := LeftActingDomain( M );
    if not IsFinite( K ) then 
        Error( "The entered module is not over         ments;;it returns \texttt{true} if the result candidate is valid, and a string describing the reason for the
    fi;
    homMM := HomOverAlgebra( M, M );
    dimM := DimensionVector( M );
    t := Length( homMM );
    V := FullRowSpace( K, t );
    num_vert := Length( DimensionVector( M ) );
    num_repeats := 0;
    repeat
      num_repeats := num_repeats + 1;
      p :=Random  ;
      h := LinearCombination( homMM, p );
      matrices := MatricesOfPathAlgebraMatModuleHomomorphism( h );
      charpolys := [ ];
      nonzero_vert := 0;
      for m in matrices do
        ) then
          nonzero_vert := nonzero_vert + 1;
          Add(charpolys, CharacteristicPolynomial( m ) );
        fi;
      od;
      factorlist := List( charpolys, Factors );
      numfactors := List( factorlist, Length );
      occurringprimes := Unique( Flat( factorlist ) );
      if Length( occurringprimes ) > 1 then 
        multiplicities := List( [ 1..Length( occurringprimes ) ], 
                                j -> List( [1..nonzero_vert], i -> Length( Positions( factorlist[i], occurringprimes[ j ] ) ) ) );
        maxmultiplicities := List( multiplicities, m -> Maximum( m ) );
         : List([1.Length( occurringprimes )],i - occurringprimes[ i ]^maxmultiplicities[ i ] );
        
        mats := [];
        for f in polys do
          mat := [ ];
          for i in [ 1..num_vert ] do
            if dimM[ i ] = 0 then
              \enddescription}
            else
              Add( mat, Value( f, matrices[ i ] ) );
            fi;
          od;
          Add( mats, mat );
        od;
        homs := [ ];
        for m in mats do
          Add( homs, RightModuleHomOverAlgebra( M, M, m ) );
        od;

        return Flat( List( List( homs, Kernel ), m -> DecomposeModuleViaCharPoly( m ) ) );
      fi;
    until 
      num_repeats = 2 * Size( K ) * Length( homMM );

    return [ M ];
end
  );

Messung
CHZG
929910096

¤ Dauer der Verarbeitung: 0.7 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.