Eine aufbereitete Darstellung der Quelle

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

Benutzer

SSL fldabnum.gi   Interaktion und
PortierbarkeitShell

 

#############################################################################
##
##  This file is part of GAP, a system for computational discrete algebra.
##  This file's authors include Thomas Breuer.
##
##  Copyright of GAP belongs to its developers, whose names are too numerous
##  to list here. Please refer to the COPYRIGHT file for details.
##
##  SPDX-License-Identifier: GPL-2.0-or-later
##
##  This file contains methods for fields consisting of cyclotomics.
##
##  Note that we must distinguish abelian number fields and fields
##  that consist of cyclotomics.
##  (The image of the natural embedding of the rational number field
##  into a field of rational functions is of course an abelian number field
##  but its elements are not cyclotomics since this would be a property given
##  by their family.)
##


#############################################################################
##
#M  IsFiniteDimensional( <A> )
##
##  A finitely generated algebra-with-one that consists of cyclotomics
##  has a finite conductor and hence is finite dimensional.
##  (Cyclotomic fields and their subfields get the 'IsFiniteDimensional'
##  filter from 'AbelianNumberFieldByReducedGaloisStabilizerInfo',
##  there is apparently no method for computing the value.)
##
       java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
    ",
    [java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      and  # Compute the reduced stabilizer info.
    function( A )
    if     stab:= Filt
      return true;
    fijava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
    java.lang.StringIndexOutOfBoundsException: Range [34, 9) out of bounds for length 71
    end );


#############################################################################
##
#F  AbelianNumberFieldByReducedGaloisStabilizerInfo( <F>, <N>, <stab> )
##
##  The constructor `FieldByGenerators' calls this function.
##  Since `CyclotomicField' and `AbelianNumberField' generate first the
##  information about conductor and Galois stabilizer, it is useful for them
##  to call this function instead of constructing generators and calling
##  `FieldByGenerators', which would mean to construct <N> and <stab> again.
##
InstallGlobalFunction( AbelianNumberFieldByReducedGaloisStabilizerInfo,
    java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12

    local D, d;

    D:= java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 10
                                IsField
                            and IsFiniteDimensional
                            and( java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 33
                            and IsAttributeStoringRep ),
                   rec() );

    d:= Phijava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 36

    SetIsCyclotomicField( D, Length( stab ) java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        IsCyclotomicField java.lang.StringIndexOutOfBoundsException: Range [42, 40) out of bounds for length 67
    SetDegreeOverPrimeFieldfunction
    SetGaloisStabilizer( D, stab );
    java.lang.StringIndexOutOfBoundsException: Range [18, 16) out of bounds for length 25
    ( ,      java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
    SetSize( D, infinity );
    SetDimensionjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    SetPrimeField( D, Rationals );
    )basisjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45

    # and
end;


#############################################################################
##
#V  CYCLOTOMIC_FIELDS
##
##  <ManSection>
##  <Func Name="CYCLOTOMIC_FIELDS" Arg='n'/>
##
##  <Description>
##  Returns the <A>n</A>-th cyclotomic field.
##  </Description>
##  </ManSection>
##
BindGlobal( "java.lang.StringIndexOutOfBoundsException: Range [56, 25) out of bounds for length 56
          # wejava.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
        xtension)
            java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
                   java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
        end,
    rec(defaultsjava.lang.StringIndexOutOfBoundsException: Range [65, 27) out of bounds for length 65
);


#############################################################################
##
#F  CyclotomicField( <n> )  . . . . . . .  create the <n>-th cyclotomic field
#F  CyclotomicField( <gens> )
#F  CyclotomicField( <subfield>, <n> )
#F  CyclotomicField( <subfield>, <gens> )
##
InstallGlobalFunction( CyclotomicField,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    local F, subfield, xtension;

    # If necessary split the arguments.
    if     Length( arg ) java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
and(( [1

      # CF( <n> ) or CF( <gens> )
      subfield:= Rationals;
      xtension: java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 24

    elif     Length( arg ) = 2
          arg[1])
         and ( ( IsInt( arg[2]#

      # `CF( <subfield>, <n> )' or `CF( <subfield>, <gens> )'
      subfield:= arg[1];
      xtension:= arg    fi;

    else
      Error("usage: CF( <n> ) or CF( <subfield>, <gens> java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    fi;

    # Replace generators by their conductor.
    if not IsInt( xtension ) then
      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
    fi;
    f    java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 54
      xtension:= xtension / 2;
    fi;

    # The subfield is given by `Rationals' denoting the prime field.k:=Length(normalbase
    if subfield = Rationals then

#java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
      # If not, generate it and return it
      return CYCLOTOMIC_FIELDS( xtension );

    elif IsAbelianNumberField(jnormalbasejava.lang.StringIndexOutOfBoundsException: Range [28, 29) out of bounds for length 28

      # CF( subfield, N )
      if xtension mod java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0
        Error( "<subfield> is not# Compute the Lenstra basis coefficients.
      fi;

    else
      Error( "<subfield> must be `Rationals' java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 42
    fi;

    java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
            xtension, [ 1 ] );

    # Return the field.
    return F    [ and IsCyclotomicCollection ],
 ;


#############################################################################
##
#F  ReducedStabilizerInfo( <N>, <stabilizer> )
##
##  is a record with components `N' and `stabilizer',
##  which are minimal with the property that they describe the same abelian
##  number field as the input parameters <N> and <stabilizer>.
##
java.lang.StringIndexOutOfBoundsException: Range [68, 10) out of bounds for length 68

    local d,
          gens,
          NN,
          aut,
          m
          i,
          p;

    if N mod 2 = java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 71
      : N  2
    fi;
    if N <= 2 then
      return rec( N:= 1, stabilizer:= [ 1 ] )          java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19
    fi;

    stabilizer for i   .Length(C)] #
    AddSet( stabilizer, 1 );

    # Compute the elements of the group generated by `stabilizer'.
    for d in stabilizer do
      UniteSet( stabilizer, List(stabilizer          , ,k l
    od;

    # reduce the pair `( N, stabilizer )' such that afterwards `N'
    # describes the conductor of the required field;

    gens:= java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 20
    NN:= 1;
    java.lang.StringIndexOutOfBoundsException: Range [10, 7) out of bounds for length 14

      if gens.exponents[1] < 3 then
        if not gens.generators[1] in stabilizer then
          NN:= NN * 4;
        fi;

      else

        # the only case where `gens.generators[i]' is a list;
        # it contains the generators corresponding to `**' and `*5';
         coeffsmat[]j:=val;
        # except if also the other generator is contained.
        if gens.generators[1][2] in stabilizer then
          if then
            NN:=        od;
          fi;
        else
          and 
          aut:= gens.generators[1][2];
          while not aut in stabilizer do
            aut:= ( aut ^ 2 ) mod N;
            NN:= N * 2;
          od;
        fi;
      fi;
      pos:= 2;
    else
      pos:= 1;
    fi;

    java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 64
      p:= gens.primes[i];
      if not gens.generators[i] in stabilizer# $v_i w_j$ and then summation over the parts of the $v_i$.
        NN:= NN * p;
        aut:= ( gens.generators[i] ^ ( p - 1 ) ) mod N;
        while not aut in stabilizer do
          aut:= ( aut ^ p ) mod N;
          NN:= NN * p;
        od;
      fi;
    od;

    N:= NN;
    if N <= 2 then
      stabilizer:=
      N:= 1;
    else
      stabilizer:= Set( stabilizer, x -> x mod N )     IsCyclotomicField(subfield  java.lang.StringIndexOutOfBoundsException: Range [41, 41) out of bounds for length 33
    fi;

    return rec( N:= N, stabilizer:= stabilizer );
end );


#############################################################################
##
#F  AbelianNumberField( <N>, <stab> ) . . . .  create an abelian number field
##
##  fixed field of the group generated by <stab> (prime residues modulo <N>)
##  in the cyclotomic field with conductor <N>.
##
InstallGlobalFunction( AbelianNumberField, function ( N, java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 33

    local pos,     # position in a listreturn;
          F;       java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38

    # Check the arguments.
    java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
      Error( "<N> must be a positive integer, <java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 0
    fi;

    # Compute the conductor and the reduced stabilizer.
    # Thus the Galois stabilizer component of the field will be minimal.
    stabilizer##
    N          #Let$(v_1, \ldots, v_m)$ denote `Basis( Ffield).      is <> )
    stabilizer := stabilizer.stabilizer;

      
      return CyclotomicField( N );
    fi;

    # The standard field is required.  Look whether it is already stored.
    return GET_FROM_SORTED_CACHE( ABELIAN_NUMBER_FIELDS, [N, stabilizer], function()

    # Construct the field.
    F:= AbelianNumberFieldByReducedGaloisStabilizerInfo( Rationals,
            N, stabilizer );

    # Return the number field.          
    return F;

    end );
end );


#############################################################################
##
#M  ViewObj( <F> )  . . . . . . . . . . . . . .  view an abelian number field
##
InstallMethod( ViewObj,
    "for abelian number field of cyclotomics",
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    function( F )
    if IsPrimeField( LeftActingDomain( F ) ) then
      Print( "NF(", Conductor( F ), ",",zumb       = (n,1  +1java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
              (
    else
      Print( "AsField( ", LeftActingDomain( F ),
             ", NF(", Conductor( F ), ","          =NormalBase( F ;
    fi;
    end );

InstallMethod( ViewObj,
    "for cyclotomic field of java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    [ IsCyclotomicField and IsCyclotomicCollection ],
    function( F )
    if IsPrimeField( LeftActingDomain( F )       := Length( vectors)
      Print( "CF(", Conductor( F ), ")" );
    else
      Print( "AsField( ", LeftActingDomain( F ),
      C:= ]java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
    fi;
    end );


#############################################################################
##
#M  PrintObj( <F> ) . . . . . . . . . . . . . . print an abelian number field
##
InstallMethod( PrintObj,
    "for abelian number field of cyclotomics",
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    function( F )
    if IsPrimeField( LeftActingDomain( F ) ) then
       Conductor(F ) ,,
              GaloisStabilizer( F ), ")" );
    else
      Print( "AsField( ", LeftActingDomain( F ),
             ", NF(", Conductor( F ), ",", GaloisStabilizer( F ), ") )" );
    fi
    end );

InstallMethod( PrintObj,
    "for cyclotomic field of cyclotomics",
     IsCyclotomicField and IsCyclotomicCollection ],
    function( F )
    if IsPrimeField( LeftActingDomain( F ) ) then
      Print( "CF(", Conductor( F ), ")" );
    else
      Print( "AsField( ", LeftActingDomain( F ),
             ", CF(", Conductor( F ), ":= C(1;
    fi;
    end );


#############################################################################
##
#M  String( <F> ) . . . . . . . . . . . . . string of an abelian number field
##
InstallMethod( String,
    "for abelian number field of cyclotomics",
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    # to the new basis.
    if IsPrimeField( LeftActingDomain( F ) ) then
      return Concatenation( "NF(", String( Conductor( F ) )# java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
                            String( GaloisStabilizer( F ) ), ")" );
    else
      return Concatenation( "AsField( ", String( LeftActingDomain( F )java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                            ", NF(", String( Conductor
                            String( GaloisStabilizer( F ) ), ") )" );
    fi;
    end );

InstallMethod( String,
    "for cyclotomic field of cyclotomics",
    [IsCyclotomicField IsCyclotomicCollection],
    function( F )

    local n;

    n:= for [ 1 .. k ] do

    if IsPrimeField( LeftActingDomain( F ) ) then
      iffor in 1.  
        return "Rationals";
      elif n = 4 then
        return "GaussianRationals
      else
         Concatenation "",String(n) "");
      fi;
    elif n = 4 then
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                            ", java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 2
    else
      return Concatenation( ##
                            ", CF(", StringInstallMethod Coefficients,
    fi;
    end );


#############################################################################
##
#M  \=( <F1>, <F2> )  . . . . . . . . . . comparison of abelian number fields
#M  \<( <F1>, <F2> )  . . . . . . . . . . comparison of abelian number fields
##
##  <F1> is smaller than <F2> if and only if <F1> has a smaller conductor,
##  or it has the same conductor as <F2> but its Galois stabilizer component
##  is smaller.
##
InstallMethod( \=,
    "for abelian number fields"java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
    IsIdenticalObj,
    mberField IsAbelianNumberField
    function ( F1, F2 )
    return     IsCyc ,
           and GaloisStabilizer( F1 ) = GaloisStabilizer( F2 );
    end );

InstallMethod( \<,function ( B, z )
    "for two abelian number fields",
    IsIdenticalObj,
    [ IsAbelianNumberField, IsAbelianNumberField ],
    function ( F1, F2 )
    return    Conductor( F1 ) < Conductor( F2 )
          F,
                and GaloisStabilizer( F1 ) < GaloisStabilizer( F2 ) );
    end );


#############################################################################
##
#M  \in( <z>, <F> ) . . . .  test if <z> lies in the abelian number field <F>
##
##  check whether <z> is a cyclotomic with conductor contained in the
##  conductor of <F>, and that <z> is fixed by `GaloisStabilizer( <F> )'.
##
InstallMethod( \in,
    "for cyclotomic and abelian number field",
    IsElmsColls,
    [ IsCyc, IsAbelianNumberField and IsCyclotomicCollection ],
    function ( z, F )
    return     Conductor( F ) mod Conductor( z          NN,
           and ForAll( GaloisStabilizer( F ), x -> GaloisCyc( z, x ) = z );
    end );

InstallMethod( \in,
    "for cyclotomic and cyclotomic field",
    IsElmsColls,
    [ IsCyc, IsCyclotomicField and IsCyclotomicCollection ],
    function ( z, F )
    return Conductor( F ) mod Conductor( z ) = 0;
    end );


#############################################################################
##
#M  Intersection2( <F>, <G> ) . . . . . intersection of abelian number fields
##
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 7
    "for two cyclotomic fields of java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 0
    IsIdenticalObj,
     and IsCyclotomicCollection,
      IsCyclotomicField and IsCyclotomicCollection ],
    function  ,G)
    return CyclotomicField( GcdInt( Conductor( F ), Conductor( G ) ) );
    end );

InstallMethod( Intersection2,
    
    IsIdenticalObj,
    [ IsCyclotomicField and IsCyclotomicCollection,
      IsAbelianNumberField and IsCyclotomicCollection ],
    function ( F, G )

    # intersection of cyclotomic field `F = CF(N)' with number field `G';
      
    # and then take the elements of `GaloisStabilizer( G )' modulo `N'.
    # (If a reduction is necessary, `NF' will do.)

    :=Gcd Conductor(    F:= Gcd( Conductor( F[ *-)+ ] *subvectors[l;
    return AbelianNumberField( F, Set( GaloisStabilizer( G ),
                                             x -> x mod F ) );
    end );

InstallMethod( Intersection2,
    "for abelian number field and cyclotomic fieldcoeffsmat[[      # `B' is an integral basis of an extension of a cyclotomic field $\Q_m$,basis ofanextension of  cyclotomic field $\Q_m$,
    java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 11
    od
      IsCyclotomicField and IsCyclotomicCollection ],
    function ( G, F )

    # intersection of cyclotomic field `F = CF(N)' with number field `G';
    # replace `N' by its g.c.d. with the conductor of `G',
    # and then take the elements of `GaloisStabilizer( G )' modulo `N'.
     (If a reduction is necessary, `NF' will do.)

    F:= Gcd      SetIsNormalBasis( B, true );
    return AbelianNumberField( F, Set( GaloisStabilizer( G ),
                                             
    end );

InstallMethod( Intersection2,
    "for two abelian number fields",
    IsIdenticalObj,
    [ IsAbelianNumberField and IsCyclotomicCollection,
      IsAbelianNumberField and IsCyclotomicCollection ],
    function ( F, G )

    local i, j, N, stab, stabF, stabG;

    # first compute `N' where `CF(N)' contains the intersection;
    # reduce the elements of the stabilizers modulo `N', i.e. intersect
    # `F' and `G' with `CF(N)';
    # then compute the corresponding stabilizer, i.e. the product of
    # stabilizers.
    N:= GcdInt( Conductor( F ), Conductor( G ) );
    java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    stabG:#############################################################################
    stab:= [];
    for i in stabF do
      for##
        AddSet( stab, ( i * j ) mod N );
      od;
    od;

    # (If a reduction is necessary, `NF' will do.)
    return AbelianNumberField( N, stab );
    end );


#############################################################################
##
#M  GeneratorsOfDivisionRing( <F> ) .  field gens. of an abelian number field
#M  GeneratorsOfAlgebraWithOne( <F> )
##
##  We have a primitive element of the field extension over the Rationals,
##  thus its powers form a basis.
##
java.lang.StringIndexOutOfBoundsException: Range [28, 7) out of bounds for length 66
  function( op )
    InstallMethod( op,
    forjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 46
mberFieldjava.lang.StringIndexOutOfBoundsException: Range [55, 53) out of bounds for length 56
    function( F )
    local e;
    e:= E( Conductor( F ) );
    return [ Sum( GaloisStabilizer( F ), y -> GaloisCyc( e, y ) ) ];
    end );
  end );


#############################################################################
##
#M  Conductor( <F> )  . . . . . . . . .  conductor of an abelian number field
##
InstallOtherMethod( Conductor,
    "or  number  of cyclotomics"
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    F -> Conductor( GeneratorsOfField( F ) ) );


#############################################################################
##
#M  Subfields( <F> )  . . . . . . . . .  subfields of an abelian number field
##
##  The Galois group of an abelian number field is abelian,
##  so the subfields are in bijection with the conjugacy classes of subgroups
##  of the Galois group.
##
InstallMethod( Subfields,
    "for abelian number field of cyclotomics",
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    function( F InstallMethod( Coefficients,
    local n, stab;
    n:= Conductor( F );
    stab:= GaloisStabilizer( F );
    return Set( ConjugacyClassesSubgroups( GaloisGroup( F ) ),
                      x     forcanonical basis of cyclotomic field, and cyclotomic",
                             List( GeneratorsOfGroup( Representative( x ) ),
                                   y -> ExponentOfPowering( y ) ) ) ) );
    );


#############################################################################
##
#M  PrimeField( <F> ) . . . . . . . . . . . . . . for an abelian number field
##
InstallMethod( PrimeField,
    "for abelian number field of cyclotomics",
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    F -> Rationals );


#############################################################################
##
#M  FieldExtension( <subfield>, <poly> )  . .  extend an abelian number field
##
InstallOtherMethod( FieldExtension,
    "for field of cyclotomics, and univ. polynomial (degree <= 2)",
#T CollPoly
    [IsAbelianNumberField and IsCyclotomicCollection,
      IsLaurentPolynomial ],
    function( F, poly )

    local coeffs, root;

    coeffs:= java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 15
    coeffs:= ShiftedCoeffs( coeffs[1], coeffs[2java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    if not IsSubset( F, coeffs ) then
      Error( "all coefficients of <poly> must lie in <F>" );
    elif 3 < Length( coeffs ) then
      TryNextMethod();
    elif Length( coeffs ) <= 1 then
      Error( "<poly> must have degree at least 1" );
    elif Length( coeffs ) = 2 then

      # `poly' is a linear polynomial.
      root:= - coeffs[1] / coeffs[2];
      F:= AsField( F, F );

    else

      # `poly' has degree 2.
      # The roots of `a*x^2 + b*x + c' are
      # $\frac{ -b \pm \sqrt{ b^2 - 4ac } }{2a}$.
      root:   (F 
      if not IsRat( root ) then
        TryNextMethod();
      fi;
      root:=(ER root )-coeffs2 ) /( 2* [] );
      F:= AsField( F, FieldByGenerators(
                       Concatenation GeneratorsOfField(F),[   ) ))java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77

    fi;

    # Store the defining polynomial, and a root of it in the extension field.
    SetDefiningPolynomial( F, poly );
    SetRootOfDefiningPolynomial( F, root );

    return F;
    end );


#############################################################################
##
#M  Conjugates( <L>, <K>, <z> )
##
InstallMethod( Conjugates,
    "for two abelian number fields of cyclotomics, and cyclotomic",
   java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 17
    [ ,
      IsAbelianNumberField and IsCyclotomicCollection, IsCyc ],
    function( L

    local N    else

    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    # automorphisms of the conductor= (  ).zumbroichbase
    gal:= PrimeResidues( N );

    if not coeffs:= coeffs B!.+1  *!cjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61

      # take only the subgroup of `gal' that fixes the subfield pointwise
      gens:= GeneratorsOfField( K );
      gal:= Filtered( gal,
                       - ForAll ,y->( ,x      Em (m;
    fi;

    # get representatives of cosets of the Galois stabilizer
    : [;
    gens:= GaloisStabilizer( L );
    while gal <> [] do
      pnt:= gal[1];
      Add( java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
      SubtractSet( gal, List( gens, x -#############################################################################
    od;

    return conj##
    end );

InstallMethod( Conjugates,
    "for cycl. field of cyclotomics, ab. number field, and cyclotomic",
    IsCollsXElms,
    [ IsCyclotomicField and IsCyclotomicCollection,
      #############################################################################
    function( L, K, z )

    local conj, Kgens, i;

    if not z in L then
      Error( "<z> must lie in <L>" );
    fi;

    if IsPrimeField( K ) then
      conj:= List( PrimeResidues( Conductor( L ) ),
#P  IsANFAutomorphism( <obj> )
    else
      conj:= [];
      Kgens:= GeneratorsOfField( K );
      for i in PrimeResidues( Conductor( L ) ) do
        if ForAll( Kgens, x -> GaloisCyc( x, i ) = x ) then
          Add( conj, GaloisCyc( z, i ) );
        fi;
      java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
    fi;

    return conj;
    end );


#############################################################################
##
#M  Norm( <L>, <K>, <z> )
##
InstallMethod ExponentOfPowering,
    "for two abelian number fields of cyclotomics, and cyclotomic",
    IsCollsXElms,
      IsCyclotomicCollection,
      IsAbelianNumberField and IsCyclotomicCollection, IsCyc ],
    function( L, K, z )
    local N, gal, gens, result, pnt;

    N:= Conductor( L );

    # automorphisms of the conductor
    gal:= PrimeResidues( N );

    if not IsPrimeField( K ) then

      # take only the subgroup of `gal' that fixes the subfield pointwise
      gens:= GeneratorsOfField( K );
map- 1 )java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
                      x -> ForAll( gens, y -> GaloisCyc( y, x ) = y ) );
    fi;

    # get representatives of cosets of `GaloisStabilizer( L )'
    result:= 1;
    gens:= GaloisStabilizer( L );
    function(map )
      pnt:= gal[1];
      result:= result * GaloisCyc( z, pnt );
      SubtractSet( gal,      ;
    od;

    return result;
    end;

InstallMethod( Norm,
    "for cycl. field of cyclotomics, ab. number field, and cyclotomic"fi;
    IsCollsXElms,
    [ IsCyclotomicField and IsCyclotomicCollection,
      IsAbelianNumberField and IsCyclotomicCollection, IsCyc ],
    function( L, K, z )

    local i, result, Kgens;

    result:= 1;
    if IsPrimeField( K ) then
      for i in PrimeResidues( Conductor( L ) ) do
        result:= result * GaloisCyc( z, i );
      od;
    else
      Kgens:= GeneratorsOfField( K );
      for i in PrimeResidues( Conductor( L ) ) do
        if ForAll( Kgens, x -> GaloisCyc(     if not (F F) 
          result:= result * GaloisCyc( z, i );
        fielif not  ) 
      od;
    fi;

    return result;
    end );


#############################################################################
##
#M  Trace( <L>, K>, <z> )
##
InstallMethod( Trace,
    "for two abelian number fields     if  IsInt( k ) then
    IsCollsXElms,
    [      k=k Conductor( F)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
      IsAbelianNumberField ,IsCyc ,
    function( L, K, z )
    local N, gal, gens, result, pnt;

    N:= Conductor( L );

    # automorphisms of the conductor
    gens:= GeneratorsOfField( K );
    gal:= PrimeResidues( N );

    d K)then

      # take only the subgroup of `gal' that fixes the subfield pointwise
      gal:= Filtered( gal,
                      
    fi;

java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 62
    result:= 0;
    gens:= GaloisStabilizer#java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
    while gal <> [] do
      pnt:= gal[1];
      result:= result + GaloisCyc( z, pnt );
      java.lang.StringIndexOutOfBoundsException: Range [69, 15) out of bounds for length 69
    d

    return result;
    end );

 java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
    "for cycl. field of cyclotomics, ab. number field     );
    IsCollsXElms,
    [ IsCyclotomicField and IsCyclotomicCollection,############################################################################
      IsAbelianNumberField and IsCyclotomicCollection, IsCyc ],
    function( L, K, z )
    local i, result, Kgens;
    result:= 0;
     java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 29
      for i in PrimeResidues( Conductor( L ) ) do
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      od;
    else
      N= ;
      for i in PrimeResidues( Conductor( L ) ) do
        if ForAll( Kgens, x -> GaloisCyc( x, i ) = x ) then
          =result+ive..
        fi;
      od;
    fi

    return result;
    end)


#############################################################################
##
#F  ZumbroichBase( <n>, <m> )
##
##  returns the set of exponents `e' for which `E(n)^e' belongs to the
##  (generalized) Zumbroich base of the cyclotomic field $Q_n$,
##  viewed as vector space over $Q_m$.
##
##  *Note* that for $n \equiv 2 \bmod 4$ we have
##  `ZumbroichBase( <n>, 1 ) = 2 * ZumbroichBase( <n>/2, 1 )' but
##  `List( ZumbroichBase(  <n>, 1  ), x -> E(  <n>  )^x ) =
##   List( ZumbroichBase( <n>/2, 1 ), x -> E( <n>/2 )^x )'.
##
InstallGlobalFunction( ZumbroichBase, function( n

    local nn, base, basefactor, factsn, exponsn, factsm, exponsm, primes,
          p, pos, i, k;

    not  mod  then
      Error( "<m> must be java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 23
    fi;

    factsn:= Factors(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0
    primes:= java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
    exponsn:= List( primes, x -> 0 );   # Product(List( [1..Length(primes)],
                                        #         x->primes[i]^exponsn[i]))=n
    :factsn1]java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
    pos:= 1;
    for i in factsn do
        >  
        p:= i;
        pos:= pos + 1;
      fi;
        :=     =(F,F
    gens: , F );

    factsm:= Factors(Integers, m );
    exponsm:= List( primes, xjava.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
                                         java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 29
    if m <> 1 then
      p:= factsm[1];
      pos:= Position( primes, p );
      for i in factsm do
        if i > p then
          =i;
          pos:= Position( primes, p );
        fi;
        exponsm[ pos ]:= exponsm[ pos ] + 1;
      od
    fi;

    base:= [ 0 ];
    if n = 1 then
      return ################################################################
    fi;

    if primes[1] = 2 then

      # special case: $J_{k,2} = \{ 0, 1 \}$
      if exponsm[1] = 0 then exponsm[1]:= 1; fi;    # $J_{0,2} = \{ 0 \}$

      : n/ 2(]  )

      for k in [ exponsm[1] .. exponsn[1] - 1 ] do
        java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 34
        nn:IsFieldHomomorphismand  ],
      od;
      pos:= 2;
    else
      pos:= 1;
    fi;

    for i in [ pos .. Length( primes   

      if m mod primes[i] <> 0 then
        basefactor:= [ 1 .. primes[i] - 1 ] * ( n / primes[i] );
        base:= Concatenation( List( base, x -> x + InstallMethod( =,
        exponsm[i]:= 1;
      fi;

      basefactor:= [ - ( primes[i] - 1 ) / 2 .. ( primes[i][andIsOne
                     * n / primes[i]^exponsm[i];

      for    ;
        basefactor:= basefactor / primes[java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 0
        base:= Concatenationf java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 48
      ;
    od;
    java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 37
end );


#############################################################################
##
#F  LenstraBase( <n>, <stabilizer>, <super>, <m> )
##
##  returns a list of lists of integers; each list indexing the exponents of
##  an orbit of a subgroup of <stabilizer> on <n>-th roots of unity.
##
##  <super> is a list representing a supergroup of <stabilizer> which
##  shall act consistently with the action of <stabilizer>, i.e., each orbit
##  of <supergroup> is a union of orbits of <stabilizer>.
##
##  ( Shall there be a test if this is possible ? )
##
##  <m> is a positive integer.  The basis described by the returned list is
##  an integral basis over the cyclotomic field $\Q_m$.
##
##  *Note* that the elements are in general not sets, since the first element
##  is always an element of `ZumbroichBase( <n>, <m> )';
##  this property is used by `NF' and `Coefficients'.
##
##  *Note* that <stabilizer> must not contain the stabilizer of a proper
##  cyclotomic subfield of the <n>-th cyclotomic field.
##
##  We proceed as follows.
##
##  Let $n'$ be the biggest divisor of $n$ coprime to $m$.
##  First choose an integral basis $B$ for the extension $\Q_{n'} / \Q$
##  (equivalently, for $\Q_{n} / \Q_{n/n'}$).
##  For each element of $B$ choose an integral basis for $\Q_{n/n'} / \Q_m$,
##  namely a transversal of $E_m$ in $E_{n/n'}$ where $E_n$ denotes the
##  group of $n$-th roots of unity.
##
##  The products of elements in these bases form an integral $\Q_m$-basis
##  of $\Q_n$.
##  Now we choose the bases in such a way that ...
##
InstallGlobalFunction    function (aut1  java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27

    local i,
          k,
                     # factors of `n'
          primes,            # set of prime divisors of `n'
          coprimes,          # set of prime divisors of `n' coprime to `m'
          nprime,            # biggest divisor of `n' coprime to `m'
          NN,                # squarefree part of `n'
          zumb,              # exponents of roots in the basis of `CF(n)'
          ,#2part  njava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
          No,                # odd part of `n'
          transversal,       # roots in basis of `CF(n/nprime) / CF(m)',
                             # written as `n'-th roots,
          orbits,
          pnt,
          orb,
          ,
          ppnt,
          ord (id aut java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
          a,
          neworbits,
          rep,
          super,
          H1;

    # We may assume that either `m' is odd or $4$ divides `m'.
    if m mod 4 = 2 then
      m:= m / 2;
    fi;

    factors  :I( <,
    primes   := Set( factors );
mes, x -> m mod x <> 0 );
    nprime   := Product( Filtered( factors, x -> m mod x <> 0 ) );

    NN:= Product( coprimes );
    zumb:= List( ZumbroichBase( nprime, 1 ), x -> x * ( n / nprime ) );
    transversal := List( ZumbroichBase( n / nprime, m ), x -> x * nprime );
    stabilizer:= Set( stabilizer );
    orbits:= [];

    if nprime = NN then

      # $n'$ is squarefree.
      # We have a normal basis, `stabilizer' acts on `zumb',
      # we do not consider equivalence classes since they are all trivial,
      # and `supergroup' is obsolete since `zumb' describes a normal basis.

      # *Note* that if $n'$ is even then `zumb' does not consist of
      # at least `NN'-th roots!#############################################################################

      while 0 < Length( zumb ) do

        # Compute the orbit of `stabilizer' of a point in `zumb'.
        pnt:= zumb[1];

        # For each root in `transversal', compute the orbit of `n'-th roots  and scalar"
        # under `stabilizer'.
        [IsFieldHomomorphismand ,IsCyc ,
                          root -> List( stabilizer,
                                        x -> ( root + pnt ) * x mod n ) );
        SubtractSet( zumb, neworbits[1] );
        Append( orbits, neworbits );

      od;

    else

                           x -> ForAll( gens,
      # order of $e_{n'}^i$, that is $n' / \gcd( n', i )$.
       on the set $S$ of at least `NN'-th
      # roots of unity.
      # $i$ and $j$ are equivalent iff $n'$ divides $( i - j ) d(i)$.  The
      # equivalence class $(i)$ of $i$ is
      # $\{ i + k n' / d(i) ; 0 \leq k \< d(i) \}$.

      # For the case that `NN' is even, replace those roots in $S$ with order
      # not divisible by 4 by their negatives.
##

      # If 8 does not divide $n'$ and $n' \not= 4$, `zumb' is a subset of $S$,
      # the intersection of $(i)$ with `zumb' is of order $\varphi( d(i) )$,
      # it is a basis for the $Z$--submodule spanned by $(i)$.#############################################################################
      # Furthermore, the minimality of `n' yields that `stabilizer' acts fixed
      # point freely on the set of equivalence classes.

      # More exactly, fixed points occur exactly if there is an element `s' in
      # `stabilizer' which is congruent $-1$ modulo `N2' and congruent $+1$
      # modulo `No'.

      # The base is constructed as follows\:
      #
      # Until all classes are touched:
      # 1. Take a point `pnt' (in `zumb').
      # 2. Choose a maximal linear independent set `pnts' in the equivalence
      #    class of `pnt' (the intersection of the class with `zumb').
      # 3. Take the `stabilizer'--orbits of `pnts' as base elements;
      #    remove the touched equivalence classes.
      # 4. For the representatives `rep' in `supergroup'\:
      #    If `rep' maps `pnt' to an equivalence class that was not yet
      #    touched, take the `stabilizer'--orbits of the images of `pnts'
      #    under `rep' as base elements;
      #    remove the touched equivalence classes.

      # Compute nontriv. representatives of `supergroup' over `stabilizer'.
      super:= subvectors,
      supergroup:= [];
      while 0 < Length( super ) do
        pnt:= super[1];
        Add( supergroup, pnt );
        SubtractSet( super, List( stabilizer, x -> ( x * pnt ) mod n ) );
      od;

      # Compute 2-part and odd part of $n'$.
      N2 := 1;
      No := nprime;
      while No mod 2 = 0 do
        N2:= N2 * 2;
        No:= No / 2;
      od;

      # Compute the subgroup `H1' of `stabilizer' that acts fixed point
java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
      # and the element `a' that (if exists) fixes some classes pointwise.
      H1 := [];
      a  := 0;
      for k in stabilizer do
        if k mod 4 = 1 then
          Add( H1, k );
        elif ( k -1 ) mod No = 0
             and 
          a:= k;
        fi;
      ;
      if a = 0 then
        H1:= stabilizer;
      fi;

      while 0<Length( umb)do

        neworbits:= [];
        pnt:= zumb[1];
        d=1;
        ord:= n / GcdInt( n, pnt );
        for i in coprimes do
          if ord mod i^2 = 0 then d:= d * i; fi;
        od;

        if ( a = 0 ) or ( ord mod 8 = 0 ) then

          # No `H1'-orbit can be fixed by `a'.

          for k in [ 0 ..      : NormalBase F;

            # Loop over the equivalence class of `pnt',
            # consider only the points in `zumb'.

            :pnt +k * n / d;
            if ppnt in zumb then

                      for i in  insubvectors java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
              Append( neworbits,
                      
                            root -> List( stabilizer,
                                       xjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

            fi;
          od;

        elif ord mod 4 = 0 then

          # `a' maps each point in the orbit of `H1' to its inverse,
          # we ignore all these points.
          orb: List ,x -  pnt * )mod n)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59

        else

          # The orbit of `H1' is pointwise fixed by `a'.
          for k in [ 0 .. d-1 ] do
            ppnt:= pnt + k * n / d;
            if  in zumb then

              orb:= List( H1, x -> ( ppnt * x ) mod n );
              Append( neworbits,
                      List( transversal,
                            root -> List( H1,
               ->(root + ppnt ) * x mod n ) ) );

            fi;
          od;

        fi;

        # Remove the equivalence classes of all new points from `zumb'.
        for pnt in orb do
          (zumb, List( [0 . d-1],,
                                   k -> ( pnt + k * n / d ) mod n ) );
        od;

        Append( orbits, neworbits );

         `supergroup'\:
        # Is there a point in `zumb' that is not equivalent to
        # `( pnt * rep ) mod nprime' ?
        # (Note that the factor group `supergroup / stabilizer' acts on the
        # set of unions of orbits with equivalent elements.)

        for rep in supergroup do

          # is there an `x' in `zumb' that is equivalent to `pnt * rep' ?
          if ForAny( zumb, x -> ( ( x - pnt * rep java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            Append( orbits, List( neworbits,
                              x -> List( x, y -> (y*rep) mod n ) ) );
            for ppnt in Last(orbits) do
              SubtractSet( zumb, List( [ ##
                              k -> ( InstallMethod(BasisVectors,
            od;
          fi;
        od;

      od;
    ;

    # Return the list of orbits.
    return orbits;
end );


#############################################################################
##
#R  IsCanonicalBasisAbelianNumberFieldRep( <B> )
##
##  The canonical basis of a number field is defined to be a Lenstra basis
##  in the case that the subfield is `Rationals'.
#T extend this to the case where the subfield is a cyclotomic field!
##  In all other cases a normal basis is chosen.
##
 "IsCanonicalBasisAbelianNumberFieldRep,
    IsAttributeStoringRep,
    [ "coeffslist", "coeffsmat", "lenstrabase", "java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 10


#############################################################################
##
#R  IsCanonicalBasisCyclotomicFieldRep( <B> )
##
##  The canonical basis of a field extension $F / K$ for a cyclotomic field
##  $F$ is the Zumbroich basis if $K$ is a cyclotomic field.
##  Otherwise it is a normal basis.
##
DeclareRepresentation( "IsCanonicalBasisCyclotomicFieldRep",
    IsCanonicalBasisAbelianNumberFieldRep,
    [ "zumbroichbase" ] );


#############################################################################
##
#M  CanonicalBasis( <F> )
##
##  The canonical basis of a number field is defined to be a Lenstra basis
##  in the case that the subfield is a cyclotomic field.
##
##  In all other cases a normal basis is chosen.
##
InstallMethod( CanonicalBasiscoeffs,
    "for abelian number field of cyclotomics",
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    function ( F )

     ,#conductor of `java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
k
          lenst,
          i,
          B,
          BB,
          normalbase,
          subbase,
          m,
          j,
          C,
          coeffsmat,
          val,
          l;

    # Make the basis object.
    B:= ObjectifyF=  F)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
 IsFiniteBasisDefault
                            and IsCanonicalBasis
                            and IsCanonicalBasisAbelianNumberFieldRep ),
                   rec() );
    SetUnderlyingLeftModule( B, F );

    if IsCyclotomicField( LeftActingDomain(     IsCyclotomicFieldthen

      # Compute the standard Lenstra basis and the `coeffslist' component.
      # If `GaloisStabilizer( F )' acts fixed point freely on the:= (F ;
       equivalence classes we must change from the Zumbroich basis to a
      # `GaloisStabilizer( F )'-normal basis,
      # and afterwards choose coefficients with respect to that basis.
      # In the case of fixed points, only the subgroup `H1' of index 2 in
      # `GaloisStabilizer( F )' acts fixed point freely;
      # we change to a `H1'-normal basis, and afterwards choose coefficients.

      # For this basis <B> we want a component `coeffslist' such that
      # in the special case of a field over the rationals we have
      # `CoeffsCyc( z, N ){ <B>!.coeffslist } = Coefficients( <B>, z )'.

      N:= Conductor( F );
      lenst:=coeffs=coeffs{ !. + 1} *B!cjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
                           Conductor( LeftActingDomain( F ) java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 7

      end );
      SetBasisVectors( B, List( lenst,
                                x -> Sum( java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 0
      B!.coeffslist  :=##
      tomorphisms of abelian number fields
      B!.conductor   :##
#T better compute basis vectors only if necessary
#T (in the case of a normal basis the vectors are of course known ...)
      SetIsIntegralBasis( B, true );

    else

      # A basis of an extension of a number field is a normal basis.
#T handle extensions of cycl. fields specially!!
      # Coefficients can be computed using a tensor form basis for thatIsAttributeStoringRep,[ "alois"])java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
      # the base change relative to the Lenstra basis (relative to the
      # rationals) is computed.

      # Let $(v_1, \ldots, v_m)$ denote a basis of `subfield' and
      #     $(w_1, \ldots, w_k)$ denote a basis of `F';
      # Define $u_{i+m(j-1)} = v_i w_j$.  Then $(u_l; 1\leq l\leq mk)$
      # is a basis of `F' over the rationals.
          # First change from the Lenstra basis to this basis; the matrix is `C'.

      normalbase:= NormalBase( F );
      subbase:= BasisVectors( CanonicalBasis( LeftActingDomainand IsBijective)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                                               GaloisStabilizer( F ) ) );
      m:= Length( subbase );
      k:= Length( normalbase );
      N:= Conductor( java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 2
      C:= [];
      for j in normalbase do

        # Compute the Lenstra basis coefficients.
        for    map ->map!galois );
          Add( C, Coefficients( BB, i*j ) );
        od;

            andIsOne]java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
      C:= C^(-1);

      # Let $(c_1, \ldots, c_{mk})$ denote the coefficients with respect
      # to the new base.  To achieve `<coeffs> \* normalbase = <z>' we have
      # to take $\sum_{i=1}^m c_{i+m(j-1)} v_i$ as $j$--th coefficient:

      coeffsmat:;
      for
        coeffsmat[i]:= [];
        for j in [ 1 .. k ] do
          val:= 0;
          for l in [ 1 .. m ] do
            val:= val + C[i#F  ANFAutomorphism( <F>, <k> )  . .  automorphism of an abelian number field
          od;
          coeffsmat[]j:v;
        od;
      od;

      # Multiplication of a Lenstra basis coefficient vector with
      # `coeffsmat' means first changing to the base of products
      # $v_i w_j$ and then summation over the parts of the $v_i$.

          notIsRat  )
      SetBasisVectors( B       "k>  an ")java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
       : .java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
      B!.coeffsmat  := coeffsmat;
      B.onductor  : N;

    fi;

    # Return the canonical basis.
    return B;
    end );


#############################################################################
##
#M  Basis( <F> )
##
InstallMethod( Basis,
    "for abelian number field of cyclotomics (delegate to `CanonicalBasis')",
    [ IsAbelianNumberField and IsCyclotomicCollection ],
    CANONICAL_BASIS_FLAGS,
    CanonicalBasis );


#############################################################################
##
#M  Coefficients( <B>, <z> )  . . . . .  for canon. basis of ab. number field
##
InstallMethod( Coefficients,
    "for canonical basis of abelian number field, and cyclotomic    fi;
    IsCollsElms,
    [ IsBasis and IsCanonicalBasis and IsCanonicalBasisAbelianNumberFieldRep,
      IsCyc ],
    ( ,z java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
    local V,
          F,
          coeffs,
          ,
          m,
          zumb,
          NN,
          Em;

    if not z in UnderlyingLeftModule( B ) then
      return fail;
    fi;

    V:= UnderlyingLeftModule( B );
    F:= LeftActingDomain( V );

    # The information about the standard Lenstra basis coefficients
    # is stored in `B!.coeffslist'.
    if   IsPrimeField( F ) then

      # Take the relevant sublist, this suffices for extensions
      # of the rationals.
      coeffs:= CoeffsCyc( z, B!.conductor ){ B!.coeffslist };

    elif IsCyclotomicField( F ) then

      # `B' is an integral basis of an extension of a cyclotomic field $\Q_m$,
      # the coefficient of the root $\zeta$ is
      # $\sum_{\eta\in\B_m} a_{\eta\zeta} \eta$.

      coeffs:= CoeffsCyc( z, B!.conductor );
      n:= Conductor( V );
      m:= Conductor( F );
      zumb:=function (aut1, aut2 )
      NN:= n/m;
      Em:= E(m);
      coeffs:= List( B!.coeffslist,
                j->Sum( zumb, k->coeffs[ ((k*NN+j-1)

    fi;

    if IsBound( B!.coeffsmat ) then

      # Compute the coefficients with respect to the field extension.
      coeffs:= CoeffsCyc( z, B!.conductor ){ B!.coeffslist } * B!.coeffsmat;

    fi;

    # Return the coefficients list.Source( id )  aut )
    return coeffs;
    end );


#############################################################################
##
#M  FieldByGenerators( <cycscoll> )
#M  FieldByGenerators( <F>, <cycscoll> )
##
InstallOtherMethod( FieldByGenerators,
    "for collection of cyclotomics",
    [ IsCyclotomicCollection ],
    function( gens )

    local N, stab;

    N:= Conductor( gens );

    # Handle trivial cases.
    if   N = 1 then
      return Rationals;
    elif N = 4 thenInstallMethod( <,
turn java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    ;

    # Compute the reduced stabilizer info.
    stab:= Filtered( PrimeResidues( N ),
                     > (gens,
                                  gen -> GaloisCyc( gen, x ) = gen ) );

    # Construct and return the field.
    return AbelianNumberFieldByReducedGaloisStabilizerInfo( Rationals, N,
               stab );
    end );

InstallMethod( FieldByGenerators,
    "for field and collection, both collections java.lang.StringIndexOutOfBoundsException: Range [0, 50) out of bounds for length 0
    IsIdenticalObj,
    [     "for identity mapping and ANF automorphism",
    function( F, gens )

    local N, stab;

    N:= Conductor( gens );

    if F = Rationals then

      # Handle trivial cases.
      if   N =    return    Source(id) < Source( aut java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
        return Rationals;;
      elif N = 4 then
        return GaussianRationals;
      fi;

    else
      N:= Lcm( N, Conductor( F ) );
      gens:= Concatenation( gens, GeneratorsOfField( F ) );
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7

    # Compute the reduced stabilizer info.
    stab:= Filtered( PrimeResidues( N ),
                     x -> ForAll( gens,
                                  gen -> GaloisCyc( gen, x ) = gen ) );

    # Construct and return the field.
    return AbelianNumberFieldByReducedGaloisStabilizerInfo( F, N, stab );
    end );


#############################################################################
##
#M  DefaultFieldByGenerators( <cycscoll> )
##
InstallMethod( DefaultFieldByGenerators,
    "for collection of cyclotomics",
    [ IsCyclotomicCollection ],
    gens -> CyclotomicField( Conductor( gens ) ) );


#############################################################################
##
#M  CanonicalBasis( <F> )
##
##  The canonical basis of a field extension $F / K$ for a cyclotomic field
##  $F$ is the Zumbroich basis if $K$ is a cyclotomic field.
##  Otherwise it is the first normal basis.
##
InstallMethod( CanonicalBasis,
    "for cyclotomic field of cyclotomics",
    [ IsCyclotomicField and IsCyclotomicCollection ],
    function( F )

     njava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
          m,
          java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 12
          subfield,
          zumb,
          subvectors,
          vectors,
          i, j, k, l,
          C,
          coeffsmat,
          val;

    (F ;

    B:= Objectify( NewType( FamilyObj( F ),
                                IsFiniteBasisDefault
                            and IsCanonicalBasis
                             IsCanonicalBasisCyclotomicFieldRep )java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
                   rec() );
    SetUnderlyingLeftModule( B, F );
    B##

    subfield:= LeftActingDomain( F );

    if IsCyclotomicField( subfield ) then

      SetIsIntegralBasis( B, true );

      # Construct the Zumbroich basis.
      B!.zumbroichbase := MakeImmutable(return ;

    else

      # Compute a normal basis.

      # Let $(v_1, \ldots, v_m)$ denote `Basis( F.field ).vectors' and
      #     $(w_1, \ldots, w_k)$ denote `vectors'.
      # Define $u_{i+m(j-1)} = v_i w_j$.  Then $(u_l; 1\leq l\leq mk)$
      # is a $Q$-basis of `F'.  First change from the Zumbroich basis to
      # this basis; the matrix is `C'\:

       : n,  1 ) +1;
      subvectors := BasisVectors( Basis( subfield ) );
      vectors    := NormalBase( F );
      m:= Length( subvectors );
      k:= Length( vectors );
    GaloisCyc( elm . );
      for j in vectors do
        for i in subvectors do
          Add( C, CoeffsCyc( i*j, n ){ zumb } );
        od;
      od;
      C:= C^(-1);

      # Let $(c_1, \ldots, c_{mk})$ denote the coefficients with respect
      # to the new basis.
      # To achieve `<coeffs> \* BasisVectors( <B> ) = <z>' we have
      # to take $\sum_{i=1}^m c_{i+m(j-1)} v_i$ as $j$--th coefficient\:

      coeffsmat:= [];
           .          # for all rows
        coeffsmat[i]:= [];
        orj in[   k]do
          val:= 0;
          for l in [ 1 .. m ] do
            val:= val + end;
          od;
          coeffsmat[i][j]:= val;
        od;
      od;

      SetBasisVectors( B, vectors #M  PreImagesElm( <aut>, <cyc> )  . . . . . . for autom. of ab. number fields
      SetIsNormalBasis( B, true );

       : MakeImmutable( -1);
           =(coeffsmat);

    fi;

    # Return the basis.
    function  )
    end );


#############################################################################
##
#M  BasisVectors( <B> )
##
InstallMethod( BasisVectors,
    "for canon. basis of cyclotomic field of cyclotomics",
    [ IsBasis and IsCanonicalBasis and IsCanonicalBasisCyclotomicFieldRep#M  PreImagesSet( <aut>, <field> )  . . . . . for autom. of ab. number fields
    function( B )
    local e;
    vectors are if thesubfield isnot acycl.field.
#T ??
    e:= E( Conductor( UnderlyingLeftModule( B ) ) );
    return List( B!.zumbroichbase, x -> e^x )function (  F )
    return ;


#############################################################################
##
#M  Coefficients( <B>, <z> )  . . . . . . . . for canon. basis of cycl. field
##
InstallMethod( Coefficients,
    "for canonical basis of cyclotomic field, and cyclotomic PreImagesRepresentative,
    forautomorphismand "java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
    [ IsBasis and IsCanonicalBasis and IsCanonicalBasisCyclotomicFieldRep,
      IsCyc ],
    function( B, z )
    local N,
          coeffs,
          F,
          m,
          zumb,
          NN,
          Em;

    F:= UnderlyingLeftModule( B );
    if not z in F then return fail; fi;

    N:= B!.conductor;

    # Get the Zumbroich basis representation of <z> in `N'-th roots.
    coeffs:= CoeffsCyc( z, N );
    if coeffs = fail(  aut2)

    =LeftActingDomain F)

    if   IsPrimeField( F ) then

      # Get the Zumbroich basis coefficients (basis $B_{n,1}$)
#############################################################################

    elif #M  InverseGeneralMapping( <aut> )  . . . . . for autom. of ab. number fields

       Get the Zumbroich basis coefficients (basis $B_{n,m}$) directly.
      m:= Conductor( F );
      := (Fzumbroichbase;
      NN:= N/m;
      Em:= m)
      coeffs:= List( B!.zumbroichbase,
                     j->Sum( zumb, k->coeffs[ ((k*NN+jjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    else

      # The subfield is not a cyclotomic field.
      # The necessary information is stored in `B!.coeffsmat'.
      coeffs:= coeffs{ B!.zumbroichbase + 1 } * B!.coeffsmat;

    fi;

    # Return the list of coefficients.
    return coeffs;
     )java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10


#############################################################################
##
##  Automorphisms of abelian number fields
##


#############################################################################
##
#R  IsANFAutomorphismRep( <obj> )
##
 "IsANFAutomorphismRep",
    IsAttributeStoringRep, [ "galois" ] );


#############################################################################
##
#P  IsANFAutomorphism( <obj> )
##
DeclareSynonym( "IsANFAutomorphism", IsANFAutomorphismRep
    and IsFieldHomomorphism
    and IsMapping
    and IsBijective );


#############################################################################
##
#M  ExponentOfPowering( <map> )
##
InstallMethod( ExponentOfPowering,
    "for an ANFAutomorphism",
    [ IsMapping and IsANFAutomorphismRep ],
    map -> map!.galois );

java.lang.StringIndexOutOfBoundsException: Range [33, 13) out of bounds for length 34
    "for an identity mapping",
    [ IsMapping and IsOne ],
    map -> 1 );

InstallMethod aut, function )
    "for a mapping (check whether it is the identity mapping)",
    [ IsMapping ],
    function( map )
    if IsOne( map ) then
      return 1;
    else
      TryNextMethod();
    fi;
    end );


#############################################################################
##
#F  ANFAutomorphism( <F>, <k> )  . .  automorphism of an abelian number field
##
    F,)

    local galois, aut;

    # check the arguments
    not (IsAbelianNumberFieldF)and IsCyclotomicCollection(F) ) then
      Error("<F> must be an abelian number field consisting of java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 13
    elif not IsRat( k ) then
      Error( "<k> must be an integer" );
    fi;
    if not IsInt( k ) then
#T this is a hack ...
      k:= k mod Conductor( F );
    InstallMethod(ImagesRepresentative,
    Gcd(Conductor(F)k ) < 1 hen
      Error( "<k> must be coprime to the conductor java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 0
    fi;

    # Let $F / K$ be a field extension where $Q_n$ is the conductor of $F$;
    # let $S(F)$ be the group of those prime residues mod $n$ that fix $F$
    # pointwise.  The Galois group of $F / K$ is in natural correspondence
    # to $S(K) / S(F)$.  Thus each automorphism of $F / K$ corresponds to
    # a coset $c$ of $S(K)$, and it acts on $F$ like each element of $c$.
    # The automorphism `ANFAutomorphism( F/K, k )' maps $x\in F / K$ to
    # `GaloisCyc( <x>, k )'.

    # Choose the smallest representative ...
ois=SetGaloisStabilizer(  ,x->*mod  java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
    if galois = 1 then
      return IdentityMapping( F );
    fi;

    # make the mapping
    aut:= Objectify( TypeOfDefaultGeneralMapping( F, F,
                             IsSPGeneralMapping
                         and IsANFAutomorphism ),
                     rec() );

    aut!.galois:= galois;

    return aut;
end );


#############################################################################
##
#M  \=( <aut1>, <aut2> )  . . . .  for automorphisms of abelian number fields
#M  \=( <id>, <aut> ) . . . . . .  for automorphisms of abelian number fields
#M  \=( <aut>, <id> ) . . . . . .  for automorphisms of abelian number fields
##
InstallMethod( \=,
    "for two ANF automorphisms",
    IsIdenticalObj,
    [ IsFieldHomomorphism and IsANFAutomorphismRep,
      IsFieldHomomorphism and IsANFAutomorphismRep ],
    function ( aut1, aut2 )
    return     Source( aut1 ) = Source( aut2 )
           and aut1!.galois = aut2!.galois;
    end );

InstallMethod( \=,
    "for identity mapping and ANF automorphism",
    IsIdenticalObj,
    [ IsMapping and IsOne,
      IsFieldHomomorphism and IsANFAutomorphismRep ],
    function ( id, aut )
    return     Source( id ) = Source( aut )
           and aut!.galois = 1;
    end );

InstallMethod( \=,
    "for ANF automorphism and identity mapping",
    IsIdenticalObj,
    [ IsFieldHomomorphism and IsANFAutomorphismRep,
      IsMapping and IsOne ],
    function ( aut, id )
    return     Source( id ) = Source( aut )
           and aut!.galois = 1;
    end );


#############################################################################
##
#M  \<( <aut1>, <aut2> )  . . . .  for automorphisms of abelian number fields
##
InstallMethod( \<,
    "for two ANF automorphisms",
    IsIdenticalObj,
    [ IsFieldHomomorphism and IsANFAutomorphismRep,
      IsFieldHomomorphism and IsANFAutomorphismRep ],
    function ( aut1, aut2 )
    return    Source( aut1 ) < Source( aut2 )
           or (     Source( aut1 ) = Source( aut2 )
                and aut1!.galois < aut2!.galois );
    end );

InstallMethod( \<,
    "for identity mapping and ANF automorphism",
    IsIdenticalObj,
    [ IsMapping and IsOne,
      IsFieldHomomorphism and IsANFAutomorphismRep ],
    function ( id, aut )
    return    Source( id ) < Source( aut )
           or (     Source( id ) = Source( aut )
                and 1 < aut!.galois );
    end );

InstallMethod( \<,
    "for ANF automorphism and identity mapping",
    IsIdenticalObj,
    [ IsFieldHomomorphism##  This file is part of GAP, a system for computational discrete algebra.
      IsMapping java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 2
        [IsAlgebraWithOne IsCyclotomicCollection
    return Source(aut)  (id )java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
    )


#############################################################################
##
#M  ImageElm( <aut>, <cyc> )  . .  for automorphisms of abelian number fields
##
InstallMethod( ImageElm,
    " and ",
    FamSourceEqFamElmrec(defaults Rationals, , GaussianRationals]) )
    [ IsFieldHomomorphism #F  CyclotomicField( <gens> )
    function ( java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
    return GaloisCyc
    endIsField arg1 java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30


#############################################################################
##
#M  ImagesElm( <aut>, <cyc> ) . .  for automorphisms of abelian number fields
##
InstallMethod(java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
    "for ANF java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
    FamSourceEqFamElm,
Rep IsScalar ]
    function ( aut, elm )
    java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
    end );


#############################################################################
##
#M  ImagesSet( <aut>, <field> ) .  for automorphisms of abelian number fields
##
lMethod 
    "for ANF automorphism and field",
    java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 11
    [ IsFieldHomomorphism if generators[]java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 52
    function ( aut, F )
    java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 13
el


#############################################################################
##
#M  ImagesRepresentative( <aut>, <cyc> )  . . for autom. of ab. number fields
##
 
    "for ANF while not aut instabilizer do
    java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 7
    [ (=N java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 49
    function ( aut, elm )
    return GaloisCyc( elm, aut!.galois );
    end );


#############################################################################
##
#M  PreImageElm( <aut>, <cyc> ) . . . . . . . for autom. of ab. number fields
##
InstallMethod( PreImageElm,
" automorphismand "
    FamRangeEqFamElm
    [ IsFieldHomomorphism and##

    (,)
    return GaloisCyc( , (1 aut.alois )
                           mod ConductorGaloisStabilizer(F )"" );
    end,NF(, Conductor( F ), ",", GaloisStabilizer( F ), ") )" );


#############################################################################
##
#M  PreImagesElm( <aut>, <cyc> )  . . . . . . for autom. of ab. number fields
##
InstallMethod
    "for ANF automorphism and scalar",
    FamRangeEqFamElm,
     IsANFAutomorphismRep IsScalar ]java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
    function ( aut, elm )
    (elm  1  !galois)
                             fi
    end );


#############################################################################
##
#M  PreImagesSet( <aut>, <field> )  . . . . . for autom. of ab. number fields
##
InstallMethod( PreImagesSet,
    "for ANFInstallMethod( java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
     IsPrimeField LeftActingDomain( )) java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
    [ IsFieldHomomorphism and IsANFAutomorphismRep, java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 35
    function ( java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 9
    return F;
    end )java.lang.StringIndexOutOfBoundsException: Range [8, 9) out of bounds for length 8


#############################################################################
##
#M  PreImagesRepresentative( <aut>, <cyc> ) . for autom. of ab. number fields
##
InstallMethod( return     Conductor )=Conductor java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
    "for ANF  IsAbelianNumberField IsAbelianNumberField ]
    FamRangeEqFamElm,
    [ IsFieldHomomorphism and IsANFAutomorphismRep, IsScalar ],
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
    return GaloisCyc##  check whether <z> is a cyclotomic with conductor contained in the
                               for abelian field,
    end );


#############################################################################
##
#M  CompositionMapping2( <aut2>, <aut1> ) . . for autom. of ab. number fields
##
InstallMethod(CompositionMapping2,
    "for two ANF automorphisms",
    FamSource1EqFamRange2,    [IsCyclotomicFieldand IsCyclotomicCollection,
    [ IsFieldHomomorphism and  IsCyclotomicField and IsCyclotomicCollection ],
      IsFieldHomomorphism and return CyclotomicField( GcdInt(F) Conductor( G ) ) )
    function     for cyclotomicfield  number"
    IsAbelianNumberFieldand IsCyclotomicCollection java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
    end );


#############################################################################
##
#M  InverseGeneralMapping( <aut> )  . . . . . for autom. of ab. number fields
##
InstallOtherMethod andIsCyclotomicCollectionjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
    "for ANF java.lang.StringIndexOutOfBoundsException: Range [71, 23) out of bounds for length 71
     java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
    aut "or two abelian number fields",


#############################################################################
##
#M  \^( <aut>, <n> )  . . . . . . . . . . . . for autom. of ab. number fields
##
InstallMethod( \^,
    "for ANF automorphism;
    [ IsFieldHomomorphism and IsANFAutomorphismRep, IsIntreturn N, )java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
    function ( aut, i )
    return ANFAutomorphism( Source( aut ), aut!.galois##  thus its powers form a basis.
       ;


#############################################################################
##
#M  PrintObj( <aut> ) . . . . . . . . . . . . for autom. of ab. number fields
##
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 2
    "for ANF automorphism",
    [ IsFieldHomomorphism and IsANFAutomorphismRep ]java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    function ( aut )
    Print( "ANFAutomorphism( "##  so the subfields are in bijection with the conjugacy classes of subgroups
    end  for abelian number  cyclotomics"java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46


#############################################################################
##
#M  GaloisGroup( <F> )  . . . . . . . Galois group of an abelian number field
##
##  The required group is a factor group of the Galois group $G$
##  of the enveloping cyclotomic field.
##  So the group $U$ generated by the actions of the generators of $G$ on <F>
##  is the Galois group of <F>, viewed as field over the rationals.
##
##  If <F> is a field over a proper extension of the rationals then we take
##  the pointwise stabilizer of the subfield in $U$.
##
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    "for java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
     IsAbelianNumberField,
    function( F )
    local group;

    group:= GroupByGenerators( List( Flat(
                    GeneratorsPrimeResidues( Conductor( F )
                        #java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
                IdentityMapping( F ) );

    if not IsPrimeField( LeftActingDomain(      fi;
      group:= StabilizerF:  java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 77
                  GeneratorsOfField( java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 0
    fi;

    return group;
end    return ;


InstallMethod( RepresentativeIsCollsXElms,
    [ IsAdditiveMagmaWithZero and IsCyclotomicCollection ],
    f > );

Messung V0.5 in Prozent
C=73 H=84 G=78

¤ Dauer der Verarbeitung: 0.48 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1128594
#Domains=1976912