<Chapter Label="ChangesGAP45toGAP46"> 
<Heading>Changes between &GAP; 4.5 and &GAP; 4.6</Heading>

This chapter lists most important changes between 
&GAP; 4.5.7 and &GAP; 4.6.2 
(i.e. between the last release of &GAP; 4.5 
and the first public release of &GAP; 4.6).
It also contains information 
about subsequent update releases for &GAP; 4.6.

<Section Label="fix462"> 
<Heading>&GAP; 4.6.2 (February 2013)</Heading>

<Subsection Label="Changes in the core GAP46 system"> 
<Heading>Changes in the core &GAP; system introduced in &GAP; 4.6</Heading>

Improved and extended functionality:
<List>  
<Item>
It is now possible to declare a name as an operation with 
two or more arguments (possibly several times) and <E>THEN</E> declare
it as an attribute. Previously this was only possible in 
the other order. This should make the system more independent of 
the order in which packages are loaded.
</Item>
<Item>
Words in fp groups are now printed in factorised form if possible and not
too time-consuming, i.e. <C>a*b*a*b*a*b</C> will be printed as <C>(a*b)^3</C>.
</Item>       
<Item>
Added methods to calculate Hall subgroups in nonsolvable groups.
</Item>
<Item>
Added a generic method for <Ref Prop="IsPSolvable" BookName="ref"/> and 
a better generic method for <Ref Prop="IsPNilpotent" BookName="ref"/> for 
groups. 
</Item>
<Item>
Improvements to action homomorphisms: image of an element can use existing 
stabiliser chain of the image group (to reduce the number of images to 
compute), preimages under linear/projective action homomorphisms use 
linear algebra to avoid factorisation.
</Item>
<Item>
To improve efficiency, additional code was added to make sure that the 
<C>HomePcgs</C> of a permutation group is in <C>IsPcgsPermGroupRep</C> 
representation in more cases.
</Item>
<Item>
Added an operation <Ref Oper="SortBy" BookName="ref"/> with arguments being
a function <A>f</A> of one argument and a list <A>l</A> to be sorted in
such a way that <C><A>l</A>(<A>f</A>[i]) &lt;= <A>l</A>(<A>f</A>[i+1])</C>.
</Item>
<Item>
Added a kernel function <C>MEET_BLIST</C> which returns <K>true</K> if the 
two boolean lists have <K>true</K> in any common position and <K>false</K> 
otherwise. This is useful for representing subsets of a fixed set by boolean
lists.
</Item>
<Item>
When assigning to a position in a compressed FFE vector &GAP; now checks to 
see if the value being assigned can be converted into an internal FFE 
element if it isn't one already. This uses new attribute 
<Ref Oper="AsInternalFFE" BookName="ref"/>, for which 
methods are installed for internal FFEs, Conway FFEs and ZmodpZ objects.
</Item>
<Item>
Replaced <Ref Oper="ViewObj" BookName="ref"/> method for fields by 
<Ref Oper="ViewString" BookName="ref"/> method to improve the way
how polynomial rings over algebraic extenstions of fields are displayed.
</Item>
<Item>
Made the info string (optional 2nd argument to 
<Ref Func="InstallImmediateMethod" BookName="ref"/>) 
behave similarly to the info string in 
<Ref Func="InstallMethod" BookName="ref"/>.
In particular, <Ref Func="TraceImmediateMethods" BookName="ref"/>
now always prints the name of the operation.
</Item>
<Item>
Syntax errors such as <C>Unbind(x,1)</C> had the unhelpful
property that <C>x</C> got unbound before the syntax error
was reported. A specific check was added to catch this and
similar cases a little earlier.
</Item>
<Item>
Allow a <C>GAPARGS</C> parameter to the top-level &GAP; <F>Makefile</F> to pass
extra arguments to the &GAP; used for manual building.
</Item>
<Item>
Added an attribute <Ref Attr="UnderlyingRingElement" BookName="ref"/> for Lie objects.
</Item>
<Item>
The function <Ref Attr="PrimeDivisors" BookName="ref"/> now became an attribute.
[suggested by Mohamed Barakat]
</Item>
<Item>
Added an operation <Ref Oper="DistancePerms" BookName="ref"/> with a kernel method for 
internal permutations and a generic method.
</Item>
<Item>
Added a method for <Ref Oper="Subfields" BookName="ref"/> to support large finite fields. 
[reported by Inneke van Gelder]
</Item>
</List>

Fixed bugs which could lead to crashes:
<List>              
<Item>
The extremely old <C>DEBUG_DEADSONS_BAGS</C> compile-time
option has not worked correctly for many years and indeed crashes &GAP;.
The type of bug it is there to detect has not arisen in many years and we 
have certainly not used this option, so it has been removed.
[Reported by Volker Braun]
</Item>
</List>

Other fixed bugs:

<List>
<Item>
Scanning of floating point literals collided with iterated use of integers 
as record field elements in expressions like <C>r.1.2</C>.
</Item>
<Item>
Fixed two potential problems in <C>NorSerPermPcgs</C>, one corrupting
some internal data and one possibly mixing up different pcgs. 
</Item>
<Item>
Fixed a performance problem with <Ref Oper="NiceMonomorphism" BookName="ref"/>.
[reported by John Bamberg]
</Item>
<Item>
Fixed a bug in <Ref Func="ReadCSV" BookName="ref"/> that caused some 
<F>.csv</F> files being parsed incorrectly.
</Item>
</List>

No longer supported:
<List>  
<Item>
The file <File>lib/consistency.g</File>, which contained three undocumented
auxiliary functions, has been removed from the library. In addition, the 
global record <C>Revision</C> is now deprecated, so there is no need to
bind its components in &GAP; packages.
</Item>
</List>

</Subsection>

<Subsection Label="New and updated packages since GAP 4.5.4"> 
<Heading>New and updated packages since &GAP; 4.5.4</Heading>

At the time of the release of &GAP; 4.5 there were 99 packages redistributed with &GAP;. 
The first public release of &GAP;&nbsp;4.6 contains 106 packages. 
<P/>

The new packages that have been added to the redistribution 
since the release of &GAP; 4.5.4 are: 

<List>
<Item>
<Package>AutoDoc</Package> package by S. Gutsche,
providing tools for automated generation of <Package>GAPDoc</Package> manuals.
</Item>
<Item>
<Package>Congruence</Package> package by A. Konovalov,
which provides functions to construct various canonical 
congruence subgroups in <M>SL_2(&ZZ;)</M>, and also 
intersections of a finite number of such subgroups, 
implements the algorithm for generating Farey symbols for
congruence subgroups and uses it to produce a system of 
independent generators for these subgroups. 
</Item>
<Item>
<Package>Convex</Package> package by S. Gutsche,
which provides structures and algorithms for convex geometry. 
</Item>
<Item>
<Package>Float</Package> package by L. Bartholdi, which extends &GAP;
floating-point capabilities by providing new floating-point handlers for 
high-precision real, interval and complex arithmetic using MPFR, MPFI, 
MPC or CXSC external libraries. It also contains a very high-performance 
implementation of the LLL (Lenstra-Lenstra-Lovász) lattice reduction 
algorithm via the external library FPLLL. 
</Item>
<Item>
<Package>PolymakeInterface</Package> package by T. Baechler and S. Gutsche, 
providing a link to the callable library of the <Package>polymake</Package> 
system (<URL>http://www.polymake.org</URL>).
</Item>
<Item>
<Package>ToolsForHomalg</Package> package by M. Barakat, S. Gutsche and
M. Lange-Hegermann, which provides some auxiliary functionality for the
<Package>homalg</Package> project (<URL>http://homalg.math.rwth-aachen.de/</URL>).
</Item>
<Item>
<Package>ToricVarieties</Package> package by S. Gutsche,
which provides data structures to handle toric varieties by their 
commutative algebra structure and by their combinatorics. 
</Item>
</List>

Furthermore, some packages have been upgraded substantially 
since the &GAP;&nbsp;4.5.4 release:
<List>
<Item>
Starting from 2.x.x, the functionality for iterated monodromy 
groups has been moved from the <Package>FR</Package> package 
by L. Bartholdi to a separate package IMG (currently undeposited, 
available from <URL>https://github.com/laurentbartholdi/img</URL>).
This completely removes the dependency of <Package>FR</Package> 
on external library modules, and should make its installation much easier.
</Item>
</List>

</Subsection>

</Section>

<Section Label="fix463"> 
<Heading>&GAP; 4.6.3 (March 2013)</Heading>

Improved functionality:
<List>

<Item>
Several changes were made to <Ref Func="IdentityMat" BookName="ref"/> 
and <Ref Func="NullMat" BookName="ref"/>. First off, the
documentation was changed to properly state that these functions support
arbitrary rings, and not just fields. Also, more usage examples were
added to the manual.
<P/>
For <C>NullMat</C>, it is now also always possible to specify a ring element
instead of a ring, and this is documented. This matches existing
<C>IdentityMat</C> behavior, and partially worked before (undocumented),
but in some cases could run into error or infinite recursion.
<P/>
In the other direction, if a finite field element, <C>IdentityMat</C> now
really creates a matrix over the smallest field containing that element.
Previously, a matrix over the prime field was created instead, contrary
to the documentation.
<P/>
Furthermore, <C>IdentityMat</C> over small finite fields is now substantially
faster when creating matrices of large dimension (say a thousand or so).
<P/>
Finally, <Ref Func="MutableIdentityMat" BookName="ref"/> and 
<Ref Func="MutableNullMat" BookName="ref"/> were explicitly declared
obsolete (and may be removed in &GAP; 4.7). They actually were deprecated
since &GAP; 4.1, and their use discouraged by the manual. Code using
them should switch to <Ref Func="IdentityMat" BookName="ref"/> 
respectively <Ref Func="NullMat" BookName="ref"/>.
</Item>

<Item>
Two new <Ref Attr="PerfectResiduum" BookName="ref"/> methods were added for 
solvable and perfect groups, handling these cases optimally. Moreover, the 
existing generic method was improved by changing it to use 
<Ref Attr="DerivedSeriesOfGroup" BookName="ref"/>. Previously, it would 
always compute the derived series from scratch and then throw away the result.
</Item>

<Item>
A new <Ref Attr="MinimalGeneratingSet" BookName="ref"/> method for groups 
handled by a nice monomorphisms was added, similar to the existing 
<Ref Attr="SmallGeneratingSet" BookName="ref"/> method. This is useful
if the nice monomorphism is already mapping into a pc or pcp group.
</Item>

<Item>
Added a special method for <Ref Oper="DerivedSubgroup" BookName="ref"/>
if the group is known to be abelian.
</Item>

</List>

Fixed bugs:

<List>
<Item>
Fixed a bug in <Ref Func="PowerModInt" BookName="ref"/> computing 
<M>r^e</M> mod <M>m</M> in a special case when <M>e=0</M> and <M>m=0</M>. 
[Reported by Ignat Soroko]
</Item>

<Item>
<Ref Oper="CoefficientsQadic" BookName="ref"/> now better checks 
its arguments to avoid an infinite loop when being asked for a 
<A>q</A>-adic representation for <M>q=1</M>.
[Reported by Ignat Soroko]
</Item>

<Item>
Methods for <C>SylowSubgroupOp</C> 
(see <Ref Oper="SylowSubgroup" BookName="ref"/>) for symmetric and 
alternating group did not always set <Ref Prop="IsPGroup" BookName="ref"/>
and <Ref Attr="PrimePGroup" BookName="ref"/> for the returned Sylow subgroup.
</Item>

<Item>
Display of matrices consisting of Conway field elements
(which are displayed as polynomials) did not print constant 1 terms.
</Item>

<Item>
Added an extra check and a better error message in the method to
access <E>natural</E> generators of domains using the <C>.</C> 
operator (see <Ref Attr="GeneratorsOfDomain" BookName="ref"/>).
</Item>

<Item>
Trying to solve the word problem in an fp group where one or more generators 
has a name of more than one alphabetic character led to a break loop. 
</Item>

<Item>
Provided the default method for 
<Ref Oper="AbsoluteIrreducibleModules" BookName="ref"/> as a temporary
workaround for the problem which may cause returning wrong results or 
producing an error when being called for a non-prime field.
</Item>

<Item>
A bug in the &GAP; kernel caused <C>RNamObj</C> to error out when called 
with a string that had the <Ref Prop="IsSSortedList" BookName="ref"/>
property set (regardless of whether it was set to <K>true</K> or <K>false</K>). 
This in turn would lead to strange (and inappropriate) errors when using 
such a string to access entries of a record.
</Item>

<Item>
&GAP; can store vectors over small finite fields (size at most 256) in a
special internal data representation where each entry of the vector uses
exactly one byte. Due to an off-by-one bug, the case of a field with
exactly 256 elements was not handled properly. As a result, &GAP; failed
to convert a vector to the special data representation, which in some
situations could lead to a crash. The off-by-one error was fixed and now
vectors over <M>GF(256)</M> work as expected.
</Item>

<Item>
A bug in the code for accessing sublist via the <C>list{poss}</C> syntax could
lead to &GAP; crashing. Specifically, if the list was a compressed vector
over a finite field, and the sublist syntax was nested, as in
<C>vec{poss1}{poss2}</C>. This now correctly triggers an error instead of
crashing.
</Item>

</List>

New packages added for the redistribution with &GAP;:

<List>
<Item>
<Package>SpinSym</Package> package by L. Maas, which
contains Brauer tables of Schur covers of symmetric and 
alternating groups and provides some related functionalities.
</Item>
</List>

</Section>


<Section Label="fix464"> 
<Heading>&GAP; 4.6.4 (April 2013)</Heading>

New functionality:
<List>
<Item>
<!-- #368 -->
New command line option <C>-O</C> was introduced to disable loading obsolete
variables. This option may be used, for example, to check that they are
not used in a &GAP; package or one's own &GAP; code. For further details 
see <Ref Label="Options" BookName="ref"/> and
<Ref Label="Replaced and Removed Command Names" BookName="ref"/>.
</Item>
</List>

Fixed bugs which could lead to incorrect results:

<List>
<Item>
<!-- #378 -->
Fixed the bug in <Ref Func="NewmanInfinityCriterion" BookName="ref"/> which
may cause returning <K>true</K> instead of <K>false</K>. 
[Reported by Lev Glebsky]
</Item>
</List>

Fixed bugs which could lead to crashes:

<List>
<Item>
<!-- #362 -->
Fixed the kernel method for <Ref Oper="Remove" BookName="ref"/> which did 
not raise an error in case of empty lists, but corrupted the object.
The error message in a library method is also improved.
[Reported by Roberto Ràdina]
</Item>
</List>

Fixed bugs that could lead to break loops:

<List>

<Item>
<!-- #356 -->
Fixed requirements in a method to multiply a list and an algebraic element.
[Reported by Sebastian Gutsche]
</Item>

<Item>
<!-- #357 -->
Fixed a bug in <Ref Attr="NaturalCharacter" BookName="ref"/> entering a 
break loop when being called on a homomorphism whose image is not a 
permutation group.
[Reported by Sebastian Gutsche]
</Item>

<Item>
<!-- #363 -->
Fixed a bug in <Ref Oper="ExponentsConjugateLayer" BookName="ref"/> which
occured, for example, in some calls of 
<Ref Func="SubgroupsSolvableGroup" BookName="ref"/> 
[Reported by Ramon Esteban-Romero]
</Item>

<Item>
<!-- #364 -->
Fixed a problem with displaying function fields, 
e.g. <C>Field(Indeterminate(Rationals,"x"))</C>.
[Reported by Jan Willem Knopper]
</Item>

<Item>
<!-- #365 -->
Fixed two bugs in the code for 
<Ref Oper="NaturalHomomorphismByIdeal" BookName="ref"/> for polynomial rings.
[Reported by Martin Leuner]
</Item>

<Item>
<!-- #370 -->
Added missing method for <Ref Oper="String" BookName="ref"/> for <C>-infinity</C>.
</Item>

<Item>
<!-- #380 -->
Fixed the bug with <Ref Attr="ONanScottType" BookName="ref"/> not 
recognising product action properly in some cases.
</Item>

<Item>
<!-- #385 -->
The method for <Ref Attr="SlotUsagePattern" BookName="ref"/> for straight 
line programs had a bug which triggered an error, if the straight line
program contained unnecessary steps. 
</Item>

</List>

</Section>


<Section Label="fix465"> 
<Heading>&GAP; 4.6.5 (July 2013)</Heading>

Improved functionality:
<List>
<Item>
<!-- #392 -->
<Ref Func="TraceMethods" BookName="ref"/> and 
<Ref Func="UntraceMethods" BookName="ref"/> now better check their 
arguments and provide a sensible error message if being called without
arguments. Also, both variants of calling them are now documented.
</Item>
<Item>
<!-- #410 -->
Library methods for <Ref Oper="Sortex" BookName="ref"/>  are now 
replaced by faster ones using the kernel 
<Ref Func="SortParallel" BookName="ref"/> functionality instead 
of making expensive zipped lists.
</Item>
</List>

Fixed bugs which could lead to incorrect results:

<List>
<Item>
<!-- #409 -->
<Ref Func="IntHexString" BookName="ref" /> wrongly produced a large 
integer when there were too many leading zeros.
[Reported by Joe Bohanon]
</Item>
</List>

Fixed bugs that could lead to break loops:

<List>
<Item>
<!-- #404 -->
A bug that may occur in some cases while calling 
<Ref Attr="TransitiveIdentification" BookName="transgrp"/>.
[Reported by Izumi Miyamoto]
</Item>
<Item>
<!-- #419 -->
The new code for semidirect products of permutation groups, introduced 
in &GAP; 4.6, had a bug which was causing problems for
<Ref Oper="Projection" BookName="ref"/>.
[Reported by Graham Ellis]
</Item>
</List>

</Section>

</Chapter>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --> 
<!-- %% --> 
<!-- %E -->
