
=============================
KASH3, released November 2005
=============================

Many changes have been made in the development of KASH3.  We must 
apologize to our old KASH users that code written for KASH 2.x 
will not run under KASH3 without modifications.  There still will be 
bug fixes and at least one more release of KASH 2.x which will be
released in late 2005 or early 2006.

The main new features of KASH3 are

 - modular type system
 - integrated help system with 
    - inline help,
    - reference manual in html format, 
 - local fields
 - database access,
 - overloading of functions,
 - new function names

---------------------------
new functions in KASH 2.5.6
---------------------------

[these functions are not documented in the reference manual yet.]
[see KASH_2.5/lib/qaos.g for a comprehensive description.       ]

QaosNumberField(query)         : Query the KANT database of number 
QaosNumberField(query, limit)    fields.  limit sets an upper bound for
                                 the number of fields returned.
QaosNumberField()              : Return further reults for the previous 
QaosNumberField(limit)           Query

QaosTransitiveGroup(query)     : Query the QaoS database of transitive
QaosTransitiveGroup(query,limit) groups.  imit sets an upper bound for
                                 the number of fields returned.
QaosTransitiveGroup(limit)     : Return further reults for the previous
QaosTransitiveGroup()            Query

---------------------
changes in KASH 2.5.5
---------------------

Diophantine Equations           : limitation to small integers removed 

==================================================================
new functions and new arguments in KASH 2.5 released February 2004
==================================================================

AlffEltApprox                   : Computes an approximating element
([P1..Pn],[v1,..vn], D, [, a])    of an algebraic function field

AlffPlaceToPoint(P)             : Convert a place of degree 1 to a point
AlffPlacesToPoints([P1..Pn])    : Convert a list of places of degree 1 to a 
                                  list of points
WeilPairing(P1,P2,m)            : Calculates the value of the Weil-Pairing on 
                                  given places P1, P2                      
MinVec(HT,o,s)                  : Computes minimal vectors of a Humbert-Tupel 
                                  with entries of the maximal order of a real 
                                  quadratic number field
EutacticCoef(HT,MV,n)           : Computes eutactic coefficients of a Humbert-
                                  Tupel HT with List of minimal vectors MV in 
                                  n-th conjugated field  
DrinfMPhi(f,L)                  : Definition of a Drinfeld modul of rank given
                                  by the length of L and the monomial f        
DrinMProduct(a,z)               : Computes the non-commutativ product az
DrinfMTau(g)                    : The Frobenius map tau(g)

==================================================================
new functions and new arguments in KASH 2.4 released February 2003
==================================================================

Alff...                         : many Alff functions can handle relative 
                                  extensions now
AlffEltToList(a)                : generic, works for relative extensions and
                                  also for number fields
AlffEltIsInIdeal(a, I)          : checks whether a is in the ideal I

a mod m                         : mod for alff elts

AlffIdealNorm(I)                : for relative and fractional ideals
AlffIdealPlace(I)               : the place corresponding to the prime ideal I

AlffIsAbs(K)                    : returns true if is an absolute extensions 

AlffOrderIsFinite(o)            : returns true if o is a finite order 

AlffOrderPolyFactorBounds(g,r)  : returns bounds for the coefficients of
                                  a factor of degree r of an alff order
                                  polynomial
AlffOrderPolyMeasure(g)         : returns a measure of an alff order
                                  polynomial. (Analogon to T2)
AlffOrderPolyReducedFactor(g,P) : returns a factorization in the residue class
                                  field defined by the place of deg one P
ChineseRemainder(M, L)          : chinese remainder theorem for (lists) of
ChineseRemainder(LM)            : polynomials, integers, and ideals/order
ChineseRemainder(m1,m2,a1,a2)   : elements

EltMove(a, Q)                   : elements can be moved to the rationals

IdealGenerators(I)              : generic (also works for alff ideals) 
IdealIsPrincipal(I)             : generic (also works for alff ideals)
IdealBasis(I)                   : generic (also works for alff ideals)

Log(b, a)                       : real and complex logarithm of a with base b

Mat(S, L)                       : matrices over function field orders
Mat(L)                          : finds common coefficient ring of list entries,
                                  also see IsMat
MatCoef(M)                      : coefficient ring of a matrix
MatEchelon(M)                   : triangulization of a matrix
MatHermiteColUpperTrans(M)      : works over local rings now 

OrderBasis                      : generic (also works for alff orders)

PolyAlg(S, "name")              : polynomial algebra over S in the variable 
                                  name

PolyFactor(f,p,prec)            : p-adic approximation of a factorization of f
                                  with precision p^m
PolyRoundFour(f,p)              : p-adic approximation of a factorization of f,
PolyRoundFour(f,p,prec)         : certificates for the irreducibility of f are 
PolyRoundFour(f)                : also returned.  f can be over Z, Q, or Qp.

PolyZeros(f,p)                  : p-adic approximations of the roots of f,
PolyZeros(f,p,prec)             : to precision prec
PolyZeros(f)                    : f in Qp[x]

Valuation([P,] a)               : computes all kinds of exponential valuations

QpPrec(K, prec)                 : changes the precision of a p-adic field.

=============================
Renamed functions in KASH 2.4
=============================

AlffResidueField(place)         -> AlffPlaceResField(place)
AlffEltEval(place, elt)         -> AlffEltToResField(elt, place) 
AlffEltLift(place, elt)         -> ALffResFieldEltLift(elt, place)


===========================================
New functions and new arguments in KASH 2.3
===========================================

  Comp(0,0)^n                   -> works
  cmp for ideals, matrices and order elts -> Set, Collect will work
  cmp for ZIdeals
  IntRoot
  MatHermiteRowReduce
  RelNormEq  
  OrderRelUnits
  OrderShortAbs
  KBessel
  JBessel
  Bernoulli
  BernoulliMagma
  EccNumberOfPoints  (for small prime FF only for now ... )
  EccNumberOfPoints  (for big prime FF as well now ... )
  ImQuadForms        see kash/lib/ImQuad
  ImQuadClassGroup   like above, quadratic forms are used


===========================================
New functions and new arguments in KASH 2.2
===========================================

ColorString                     -> computes a string that can be used for 
                                   colorful printing in kash programs
Bell                            -> sounds the terminal bell
Colors                          -> added possibility to change defaults
_ColorTable                     -> here are the defaults, have a look

IsRecType                       -> IsRecType(r, string) is true iff
                                   r is a record, r.Type is existent and
                                   r.Type = string
RecDump                         -> Outputs a record and all entries,
                                   circumvents the operations.Print
                                   entry

MatHermiteRowUpper              -> stupid, but new
MatHermiteRowUpperTrans         -> sbn
AbelianFieldToRCF               -> starting with an abelian field, we'll
                                   reconstruct an RayClassGroupToAbelianGroup
AbelianGroupEltRandom           -> random element of a finite abelian group
AbelianGroupEnumInit            -> environment for the enumeration of all
AbelianGroupEnumNext               group elements
AbelianGroupHomCreateId         -> trivial homomorphism
AbelianRayClassGroupAutoCreate  -> starting with an automorphism of ideals,
                                   we'll produce an automorphism of groups
FindMaximalCentralField         -> find maximal quotient of 
                                   RayClassGroupToAbelianGroup that will
                                   define an central extension
FindQuotientOfShapeEnumInit     -> environment to find subgroups/ quotients
FindQuotientOfShapeEnumNext        of a certain shape
IdealPrimeCountInit             -> environment to enumerate prime ideals
IdealPrimeCountNext                or their norms
MatIndex                        -> s.th. like the determinant of rectangular
                                   matrices.
RayClassFieldIsCentral          -> tests whether a RayClassField is going to 
                                   be a central extension
RayClassFieldIsNormal           -> same for normal
RayClassFieldSplittingField     -> computes the minimal splitting field
                                   resp. the data neccessary to get a defining
                                   equation via RayClassField
                                   (for more or less normal base fields!!)


RayClassGroupToAbelianGroup     -> changed: ideal, inf, MATRIX, 
                                   Group name added
RayClassField                   -> Group as parameter added,
                                   Group, deg
                                   Group, Matrix
RayConductor                    -> Group as parameter

EltPowerProduct

MatSmith                        -> FFx allowed
MatSmithTrans


# the main new Alff functions:

AlffCanonicalDivisor            -> compute a canonical divisor
AlffClassGroup                  -> compute the group structure of the
                                   group of divisor classes of degree zero
                                   of a global function field
AlffClassGroupGens              -> same, but additionally return generators 
                                   of the divisor class group
AlffClassGroupPRank             -> compute the p-rank of the class group,
                                   p = characteristic of the global function
                                   field
AlffClassGroupGenBound          -> compute a degree bound for the prime 
                                   divisors which generate the divisor class
                                   group together with the supp of a divisor
                                   of degree one of a global function field
AlffClassGroupGenBoundStrong    -> same, but better by inspecting the gff
AlffClassNumberApprox           -> approximate the class number
AlffClassNumberApproxBound      -> compute a certain bound for class number
                                   approximations
AlffDivisorClassRep             -> compute the class representation
                                   of a divisor in the generators of the
                                   divisor class group of a global
                                   function field
AlffDivisorLargeLDim            -> compute the dimension of a divisor
                                   of large degree or with large exponents
AlffDivisorLargeLBasisShort     -> compute the basis of the Riemann-Roch
                                   space of a divisor of large degree or
                                   with large exponents
AlffDivisorReduction            -> compute a divisor reduction
AlffDivisorsSmoothNum           -> compute the number of smooth divisors
AlffDiffCartier                 -> compute the Cartier operator
AlffDiffCartierMatrix           -> return the representation matrix
                                   of the Cartier-operator on a basis
                                   of holomorphic differentials
AlffDifferent                   -> return the different of F / k(x)
AlffDiffSpace                   -> return a space of differentials >= a divisor
AlffDiffFirstKind               -> return a basis of the differentials of first
                                   kind (= holomorphic differentials)
AlffDifferentiation             -> compute higher differentiations a la Hasse
AlffDiff*                       -> more functions for differentials
AlffEltEval                     -> eval an algebraic function at a place
AlffEltLift                     -> compute an algebraic function which
                                   takes a prescribed value at a place
AlffEltPthRoot, QfePthRoot      -> take a p-th root in a global function
                                   field of characteristic p
AlffGapNumbers                  -> return the gap numbers of a place of degree
                                   one
AlffHasseWittInvariant          -> compute the Hasse-Witt invariant of a global
                                   function field
AlffIdealClassGroupUnitsInfty   -> compute units and ideal class group of
                                   the finite maximal order
AlffLinearSeries*               -> 3 functions for the enumeration
                                   of a linear series in a global function
                                   field 
AlffLPoly                       -> compute the L-polynomial
AlffLPolyLift                   -> lift the L-polynomial to constant field
                                   extensions
AlffLPolyRed                    -> compute the L-polynomial mod p via
                                   the Cartier-operator (after Manin, R"uck)
AlffPlaceRandom                 -> return a random place of given degree
                                   for a global function field
AlffPlacesNonSpecial            -> return a system of non-special places
                                   for a global function field
AlffResidueField                -> compute the residue field of a place
AlffSUnits                      -> compute S-units for a set of places
                                   of a global function field
AlffWeierstrassPlaces           -> compute Weierstrass places

PolyPrimeList                   -> return a list of prime polynomials
                                   of given degree over a finite field

===========================================
New functions and new arguments in KASH 2.1
===========================================

GaloisBlocks                     -> second optional parameter 'true' possible:
                                    Is the second parameter used, this 
                                    function computes the Galois groups 
                                    of the subfields and excludes transitive 
                                    groups with other Galois groups of the 
                                    subfields from the list of possible Galois 
                                    groups.

===========================================
New functions and new arguments in KASH 2.0
===========================================

package for AbelianGroups        -> basic functions for Abelian groups

RayConductorTest                 -> support all an aditionally argument
RayConductor                        to specify a subgroup. The fxn's
RayDiscSig                          will operate on the factor group.

ZIdealCreate                     -> generates an ideal in Z
RayClassGroup, RayResidueRing    -> work for ZIdeals

RayClassFieldAuto                -> computes automorphisms of RayClassFields

RayClassFieldArtin               -> the Artin map for RayClassFields

RayClassField                    -> supports subgroups

Alffs                            -> the possible constant fields are
                                    now extended to finite fields,
                                    rational numbers, number fields.
                                    Handling of places, divisors, 
                                    Riemann-Roch spaces,
                                    maximal orders (integral closures)
                                    are now possible over these
                                    constant fields.

AlffInit                         -> now gets the constant field as parameter,
                                    variable names can be specified
                                    optionally (standard is T and y).

AlffVarT                         -> Returns the variable 'T' of the
                                    defining equation of an alff.

AlffVarY                         -> Returns the variable 'y' of the
                                    defining equation of an alff.

StarkUnitsHilbert                -> Determines a defining equation for the 
                                    Hilbert Class Field.

StarkUnitsPolynom                -> Determines the minimal polynomial of the 
                                    Stark-Unit used to compute the Hilbert 
                                    Class Field.             

StarkUnitsRealPolynom            -> Determines a  real approximation of the 
                                    minimal polynomial of a primitive element
                                    generating the Hilbert class field of a 
                                    totally real algebraic number field.

EltCharPoly                      -> Characteristic polynomial of an algebraic 
                                    element over a subfield
CharPoly                         -> Characteristic polynomial of an algebraic 
				    function field element or a matrix

Den                              -> generic function, returns the denominator 
                                    for the following arguments: 
                                    rational, algebraic element, algebraic 
                                    function field order element, quotient 
                                    field or polynomial, ideal 
Num                              -> generic function, returns the nominator 
                                    for the following arguments: 
                                    rational, algebraic element, algebraic 
                                    function field order element, quotient 
                                    field or polynomial, ideal   

GaloisSymb                       -> Unconditional Galois group computation up 
                                    to degree 7 for polynomials in Q, Q(x) 
                                    and simple relative orders. The name of 
                                    the Galois group is returned.
GaloisSymbT                      -> Same as GaloisSymb, but the number of the 
                                    Galois group is returned

Galois, GaloisT, OrderGalois     -> now supported up to degree 15

GaloisMSumPol                    -> Let f be a monic polynomial of degree n 
                                    in Q, Q(x) or a simple relative order.This
                                    function computes a primitive polynomial 
                                    of degree binmoial(n,m). The roots of 
                                    GaloisMSumPol are the sums of m distinct 
                                    roots of f. 
GaloisMSetPol                    -> Let f be a monic polynomial of degree n 
                                    in Q, Q(x) or a simple relative order.This
                                    function computes a primitive polynomial 
                                    of degree binmoial(n,m). The roots of 
                                    GaloisMSetPol are the products of m 
                                    distinct roots of f.
GaloisTwoSequencePol             -> Let f be a monic polynomial of degree n 
                                    in Q, Q(x) or a simple relative order.This
                                    function computes a primitive polynomial 
                                    of degree n*(n-1). The roots of 
                                    GaloisTwoSequencePol are the products of 
                                    of the form xi+2xj, where xi and xj are 
                                    distinct roots of f.

Poly*, Qf*                       -> the handling of univariate polynomials 
                                    and fractions of such is much 
                                    improved resp. generalized.
           
SPrint                           -> Creates a string instead of printing on 
                                    the screen

SScan                            -> Reads kash objects out of a string

=============================
Renamed functions in KASH 2.0
=============================

Alff*                            -> All Gff* functions are renamed as
                                    Alff* functions.

AlffInit(p, q)                   -> AlffInit(FF(p, q)). AlffInit()
                                    gets the constant field as parameter.

                                    
=============================
Renamed functions in KASH 1.9
=============================

IntGcdEx                         -> IntXGcd !! list is now returned
FFEFF                            -> FFEltFF


=========================
New arguments in KASH 1.9
=========================

OrderMaximal                     -> The first argument can now be a list
                                    of arguments defining an order 
                                    just like in the function ORDER.
                                    After that you can specify up to
                                    four strings with control devices:
                                    Round2, R2:    using the round2-algo
                                    Round4, R4:    using the round4-algo
                                    RD:            using reduced discriminant
                                    NoRD:          avoid reduced discriminant
                                    Split:         using algebra-splitting
                                    NoSplit:       avoid algebra-splitting
                                    Dedekind:      using dedekind-test
                                    NoDedekind:    avoid dedekind-test

                                    But only one of these devices in each
                                    string.
      
                 old                           new
                 
      OrderMaximal(o,"rd Round2") -> OrderMaximal(o,"Round2","RD");
      OrderMaximal(o,"rd Round4") -> OrderMaximal(o,"Round4","RD");

      For a detailed description of the new features see the
      KASH-Reference Manual or type ?OrderMaximal in a KASH-session.

OrderPMaximal                     -> You can use the same control devices
                                     as above except of "RD" and "NoRD".
                                     
      For a detailed description of the new features see the
      KASH-Reference Manual or type ?OrderPMaximal in a KASH-session.


MatOrthogonal()                   -> returns now list of orth. Matrix
                                     and transformation matrix

=============================
Renamed functions in KASH 1.8
=============================

CycloField                       -> OrderCyclotomic
CycloUnits                       -> OrderCyclotomicUnits

EltIdealResidueRingRep           -> EltRayResidueRingRep
EltMinPolyAbs(a)                 -> EltMinPoly(a,Zx)
EltMinPolyRel(Px,a)              -> EltMinPoly(a,Px)
EltNormAbs(a)                    -> EltNorm(a,Z)
EltRepMatAbs(a)                  -> EltRepMAt(a,Z)
EltRepMatRel(a,o)                -> EltRepMat(a,o)
EltTraceAbs(a)                   -> EltTrace(a,Z)

IdealIsPrincipalByClassGroup(id) -> IdealIsPrincipal(id,"classgroup")

IdealResidueRing                 -> RayResidueRing
IdealResidueRingCyclicFactors    -> RayResidueRingCyclicFactors
IdealResidueRingRepToElt         -> RayResidueRingRepToElt

OrderClassGroupReg(o)            -> OrderReg(o,"classgroup")
OrderClassGroupSUnits            -> OrderSUnits
OrderClassGroupUnits(o)          -> OrderUnits(o,"classgroup")

MatMinPoly(Zx,M)                 -> MatMinPoly(M)
MatCharPoly(Zx,M)                -> MatCharPoly(M)

========================
New features in KASH 1.5
========================

o   PVM support for KASH
o   more support for matrices and Polynomials over R
o   improved manual
o   accelerations for relative norm equations, classgroup computation,
    subfields
o   a lot of function to access internal structures

========================
New features of KASH 1.1
========================

o   PVM support for many parts of KANT,
o   computation of all subfields of a number field,
o   Help system  (TeX based online help),
o   support of internal structures for programmers,
o   examples for the programming language

=========================
Main features of KASH 1.0 
=========================

o   Computation of maximal orders in number fields,
o   unconditional computation of class groups of number fields
    (no GRH is used),
o   unconditional computation of fundamental units in arbitrary orders
    (no GRH is used),
o   computation of prime ideal decompositions of integral ideals
    in number fields,
o   arithmetic of ideals in number fields,
o   arithmetic in relative extensions of number fields,
o   normal forms of modules in relative extensions,
o   norm equation solver for absolute and relative extensions

At the moment only a few functions (about 220) have been implemented 
in the shell, but we will increase their number steadily, so please mail

o   all your suggestions and comments
o   bug reports 

