<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %W  obsolete.tex             GAP documentation               Frank Lübeck -->
<!-- %%   -->
<!-- %H  @(#)<M>Id: obsolete.tex,v 4.3 2005/08/24 14:31:34 gap Exp </M> -->
<!-- %%   -->
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Chapter Label="Replaced and Removed Command Names">
<Heading>Replaced and Removed Command Names</Heading>

<#Include Label="obsolete_intro">


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Group Actions - Name Changes">
<Heading>Group Actions &ndash; Name Changes</Heading>

<Index>group operations</Index>

The concept of a group action is sometimes referred to as a
<Q>group operation</Q>.
In &GAP;&nbsp;3 as well as in older versions of &GAP;&nbsp;4 the term
<C>Operation</C> was used instead of <C>Action</C>.
We decided to change the names to avoid confusion with the term
<Q>operation</Q> as in <Ref Func="DeclareOperation"/> and
<Q>operations for Xyz</Q>.
<P/>
Here are some examples of such name changes.
<P/>
<Index Key="Operation"><C>Operation</C></Index>
<Index Key="RepresentativeOperation"><C>RepresentativeOperation</C></Index>
<Index Key="OperationHomomorphism"><C>OperationHomomorphism</C></Index>
<Index Key="FunctionOperation"><C>FunctionOperation</C></Index>
<Table Align="l|l">
<Row>
  <Item><E>OLD</E></Item>
  <Item><E>NOW USE</E></Item>
</Row>
<HorLine/>
<Row>
  <Item><C>Operation</C></Item>
  <Item><Ref Func="Action" Label="for a group, an action domain, etc."/></Item>
</Row>
<Row>
  <Item><C>RepresentativeOperation</C></Item>
  <Item><Ref Func="RepresentativeAction"/></Item>
</Row>
<Row>
  <Item><C>OperationHomomorphism</C></Item>
  <Item><Ref Func="ActionHomomorphism" Label="for a group, an action domain, etc."/></Item>
</Row>
<Row>
  <Item><C>FunctionOperation</C></Item>
  <Item><Ref Func="FunctionAction"/></Item>
</Row>
</Table>

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Package Interface - Obsolete Functions and Name Changes">
<Heading>Package Interface &ndash; Obsolete Functions and Name Changes</Heading>

With &GAP;&nbsp;4.4 the package interface was changed. Thereby some functions
became obsolete and the names of some others were made more consistent.
<P/>
<Index Key="DeclarePackage"><C>DeclarePackage</C></Index>
<Index Key="DeclareAutoPackage"><C>DeclareAutoPackage</C></Index>
<Index Key="DeclarePackageDocumentation">
<C>DeclarePackageDocumentation</C></Index>
<Index Key="DeclarePackageAutoDocumentation">
<C>DeclarePackageAutoDocumentation</C></Index>
The following functions are no longer needed:
<C>DeclarePackage</C>,
<C>DeclareAutoPackage</C>,
<C>DeclarePackageDocumentation</C> and 
<C>DeclarePackageAutoDocumentation</C>.
They are substituted by entries in the packages' <F>PackageInfo.g</F> files,
see <Ref Sect="The PackageInfo.g File"/>. 
<P/>
Furthermore, the global variable <C>PACKAGES_VERSIONS</C> is no longer needed,
since this information is now contained in the <C>GAPInfo.PackagesInfo</C> record
(see <Ref Subsect="GAPInfo"/>). The global variable <C>Revisions</C> is also
no longer needed, since the function <C>DisplayRevision</C> was made obsolete in
&GAP;&nbsp;4.5 and removed in &GAP;&nbsp;4.7.
<P/>

The following function names were changed.
<P/>
<Index Key="RequirePackage"><C>RequirePackage</C></Index>
<Index Key="ReadPkg"><C>ReadPkg</C></Index>
<Index Key="RereadPkg"><C>RereadPkg</C></Index>
<Table Align="l|l">
<Row>
  <Item><E>OLD</E></Item>
  <Item><E>NOW USE</E></Item>
</Row>
<HorLine/>
<Row>
  <Item><C>RequirePackage</C></Item>
  <Item><Ref Func="LoadPackage"/></Item>
</Row>
<Row>
  <Item><C>ReadPkg</C></Item>
  <Item><Ref Func="ReadPackage"/></Item>
</Row>
<Row>
  <Item><C>RereadPkg</C></Item>
  <Item><Ref Func="RereadPackage"/></Item>
</Row>
</Table>

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Normal Forms of Integer Matrices - Name Changes">
<Heading>Normal Forms of Integer Matrices &ndash; Name Changes</Heading>

<Index>Smith normal form</Index>
<Index>Hermite normal form</Index>

Former versions of &GAP;&nbsp;4 documented several functions for computing
the Smith or Hermite normal form of integer matrices.
Some of them were never implemented and it was unclear which commands to use.
The functionality of all of these commands is now available with
<Ref Func="NormalFormIntMat"/> and a few interface functions.

</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="Miscellaneous Name Changes or Removed Names">
<Heading>Miscellaneous Name Changes or Removed Names</Heading>

<Index Key="QUIET"><C>QUIET</C></Index>
<Index Key="BANNER"><C>BANNER</C></Index>

In former releases of &GAP;&nbsp;4 there were some global variable names
bound to general information about the running &GAP;,
such as path names or command line options.
Although they were not officially documented they were used by several users
and in some packages.
We mention here <C>BANNER</C> and <C>QUIET</C>.
This type of information is now collected in the global record
<Ref Var="GAPInfo"/>.
<P/>
Here are some further name changes.
<P/>
<Index Key="MonomialTotalDegreeLess"><C>MonomialTotalDegreeLess</C></Index>
<Index Key="NormedVectors"><C>NormedVectors</C></Index>
<Index Key="MutableIdentityMat"><C>MutableIdentityMat</C></Index>
<Index Key="MutableNullMat"><C>MutableNullMat</C></Index>
<Table Align="l|l">
<Row>
  <Item><E>OLD</E></Item>
  <Item><E>NOW USE</E></Item>
</Row>
<HorLine/>
<Row>
  <Item><C>MonomialTotalDegreeLess</C></Item>
  <Item><Ref Func="MonomialExtGrlexLess"/></Item>
</Row>
<Row>
  <Item><C>NormedVectors</C></Item>
  <Item><Ref Func="NormedRowVectors"/></Item>
</Row>
<Row>
  <Item><C>MutableIdentityMat</C></Item>
  <Item><Ref Func="IdentityMat"/></Item>
</Row>
<Row>
  <Item><C>MutableNullMat</C></Item>
  <Item><Ref Func="NullMat"/></Item>
</Row>
</Table>


<Index Key="PositionFirstComponent"><C>PositionFirstComponent</C></Index>
The operation <C>PositionFirstComponent</C> has been deprecated in GAP
4.8 and later due to issues with its documentation and implementation.
Instead of <C>PositionFirstComponent(list,obj)</C>, you may use
<C>PositionSorted(list,[obj])</C> or
<C>PositionProperty(list,x->x[1]=obj)</C> as a replacement, depending on
your specific use case.


<ManSection>
<InfoClass Name="InfoObsolete"/>
<Description>
is an info class to display warnings when an obsolete variable is used.
By default, these warnings are switched off since the info level for 
this class is 0. Setting it to 1 will trigger warnings if &GAP; will 
detect that an obsolete variable is used at runtime.
<P/>
To check that the &GAP; code does not use obsolete variables at the 
parsing time, and not at a runtime, use <C>-O</C> command line option,
see <Ref Sect="Command Line Options"/>. 
</Description>
</ManSection>


</Section>


<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="obsolete-gaprc">
<Heading>The former .gaprc file</Heading>

Up to &GAP;&nbsp;4.4, a file <F>.gaprc</F> in the user's home directory
(if available, and &GAP; was started without <C>-r</C> option) was 
read automatically during startup,
early enough for influencing the autoloading of packages and
late enough for being allowed to execute any &GAP; code.  On Windows 
machines this file was called <F>gap.rc</F>.
<P/>
In &GAP;&nbsp;4.5 the startup mechanism has changed, see 
<Ref Sect="sect:gap.ini"/> for details. These new configuration
files are now contained in a directory <C>GAPInfo.UserGapRoot</C>.
<P/>
For the sake of partial backwards compatibility,
also the former file <F>~/.gaprc</F> is still supported for such
initializations, but this file is read only if the directory 
<C>GAPInfo.UserGapRoot</C> does not exist.
In that case the <F>~/.gaprc</F> is read at the same time as <F>gaprc</F>
would be read, i.&nbsp;e., too late for influencing the startup of &GAP;.
<P/>
As before, the command line option <C>-r</C> disables reading
<F>~/.gaprc</F>, see <Ref Sect="Command Line Options"/>.
<P/>
To migrate from the old setup to the new one introduced with &GAP;&nbsp;4.5,
first have a look at the function <Ref Func="WriteGapIniFile"/>. Many users
will find that all or most of what was set in the old <F>~/.gaprc</F> file
can now be done via the user preferences in a <F>gap.ini</F> file.
If you had code for new functions or abbreviations in your old <F>~/.gaprc</F> 
file or you were reading additional files, then move this into
the file <F>gaprc</F> (without the leading dot, same name for all operating
systems) in the directory <C>GAPInfo.UserGapRoot</C>.

</Section>

<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<Section Label="obsolete-semigroups-properties">
  <Heading>Semigroup properties</Heading>

  Until Version 4.8 of &GAP; there was inconsistent use of the following
  properties of semigroups: <C>IsGroupAsSemigroup</C>, <C>IsMonoidAsSemigroup</C>, 
  and <C>IsSemilatticeAsSemigroup</C>. <C>IsGroupAsSemigroup</C> was true for
  semigroups that mathematically defined a group, and for semigroups in the
  category <Ref Filt = "IsGroup"/>; <C>IsMonoidAsSemigroup</C> was true for
  semigroups that mathematically defined monoids, but did not belong to the
  category <Ref Filt = "IsMonoid"/>; and <C>IsSemilatticeAsSemigroup</C> was
  simply a property of semigroups, there is no category <C>IsSemilattice</C>. 
  <P/>

  From Version 4.8 onwards, <C>IsSemilatticeAsSemigroup</C> is renamed
  <C>IsSemilattice</C>, and <C>IsMonoidAsSemigroup</C> returns <C>true</C> for
  semigroups in the category <Ref Filt = "IsMonoid"/>.
  
  <#Include Label="IsSemilatticeAsSemigroup">
</Section>

</Chapter>


