<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<!-- %% -->
<!-- %W  obsolete.tex             GAP documentation               Frank Lübeck -->
<!-- %%   -->
<!-- %%   -->
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<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/>
<Table Align="l|l">
<Row>
  <Item><E>OLD</E></Item>
  <Item><E>NOW USE</E></Item>
</Row>
<HorLine/>
<Row>
  <Item><C>Operation</C><Index Key="Operation"><C>Operation</C></Index></Item>
  <Item><Ref Func="Action" Label="for a group, an action domain, etc."/></Item>
</Row>
<Row>
  <Item><C>RepresentativeOperation</C><Index Key="RepresentativeOperation"><C>RepresentativeOperation</C></Index></Item>
  <Item><Ref Func="RepresentativeAction"/></Item>
</Row>
<Row>
  <Item><C>OperationHomomorphism</C><Index Key="OperationHomomorphism"><C>OperationHomomorphism</C></Index></Item>
  <Item><Ref Func="ActionHomomorphism" Label="for a group, an action domain, etc."/></Item>
</Row>
<Row>
  <Item><C>FunctionOperation</C><Index Key="FunctionOperation"><C>FunctionOperation</C></Index></Item>
  <Item><Ref Attr="FunctionAction"/></Item>
</Row>
<Row>
  <Item><C>IsLexicographicallyLess</C><Index Key="IsLexicographicallyLess"><C>IsLexicographicallyLess</C></Index></Item>
  <Item><Ref Oper="\&lt;"/></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/>
<Table Align="l|l">
<Row>
  <Item><E>OLD</E></Item>
  <Item><E>NOW USE</E></Item>
</Row>
<HorLine/>
<Row>
  <Item><C>MonomialTotalDegreeLess</C><Index Key="MonomialTotalDegreeLess"><C>MonomialTotalDegreeLess</C></Index></Item>
  <Item><Ref Func="MonomialExtGrlexLess"/></Item>
</Row>
<Row>
  <Item><C>MultRowVector</C><Index Key="MultRowVector"><C>MultRowVector</C></Index></Item>
  <Item><Ref Oper="MultVectorLeft"/></Item>
</Row>
<Row>
  <Item><C>MutableCopyMat</C><Index Key="MutableCopyMat"><C>MutableCopyMat</C></Index></Item>
  <Item><Ref Oper="MutableCopyMatrix" Label="for a matrix object"/></Item>
</Row>
<Row>
  <Item><C>MutableIdentityMat</C><Index Key="MutableIdentityMat"><C>MutableIdentityMat</C></Index></Item>
  <Item><Ref Func="IdentityMat"/></Item>
</Row>
<Row>
  <Item><C>MutableNullMat</C><Index Key="MutableNullMat"><C>MutableNullMat</C></Index></Item>
  <Item><Ref Func="NullMat"/></Item>
</Row>
<Row>
  <Item><C>NormedVectors</C><Index Key="NormedVectors"><C>NormedVectors</C></Index></Item>
  <Item><Ref Attr="NormedRowVectors"/></Item>
</Row>
<Row>
  <Item><C>RadicalGroup</C><Index Key="RadicalGroup"><C>RadicalGroup</C></Index></Item>
  <Item><Ref Attr="SolvableRadical"/></Item>
</Row>
</Table>

<List>

<Item>
<Index Key="PositionFirstComponent"><C>PositionFirstComponent</C></Index>
The operation <C>PositionFirstComponent</C> has been deprecated in GAP
4.8 due to issues with its documentation and implementation, and was
removed in GAP 4.10.
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.
</Item>

<Item>
<Index Key="MultRowVector"><C>MultRowVector</C></Index>
The five argument version of the operation <C>MultRowVector</C> has been
deprecated in GAP 4.10 since it was unused and only available for coefficient
lists.
Note that <C>MultRowVector</C> was also renamed to <C>MultVectorLeft</C>.
</Item>

<Item>
<Index Key="TemporaryGlobalVarName"><C>TemporaryGlobalVarName</C></Index>
The function <C>TemporaryGlobalVarName</C> has been deprecated in GAP 4.11.
Code using it typically can be restructured to not need it, e.g. by
using <Ref Func="EvalString"/>.
</Item>

<Item>
A bunch of synonyms have been deprecated in GAP 4.13.
The alternative names have always existed and so are safe
to use even in code which is meant to run in older GAP versions.
<Table Align="l|l">
<Row>
  <Item><E>Deprecated</E></Item>
  <Item><E>Recommended alternative</E></Item>
</Row>
<HorLine/>
<Row>
  <Item><C>OneSM</C><Index Key="OneSM"><C>OneSM</C></Index></Item>
  <Item><Ref Oper="OneSameMutability"/></Item>
</Row>
<Row>
  <Item><C>InverseSM</C><Index Key="InverseSM"><C>InverseSM</C></Index></Item>
  <Item><Ref Oper="InverseSameMutability"/></Item>
</Row>
<Row>
  <Item><C>ZeroSM</C><Index Key="ZeroSM"><C>ZeroSM</C></Index></Item>
  <Item><Ref Oper="ZeroSameMutability"/></Item>
</Row>
<Row>
  <Item><C>AdditiveInverseSM</C><Index Key="AdditiveInverseSM"><C>AdditiveInverseSM</C></Index></Item>
  <Item><Ref Oper="AdditiveInverseSameMutability"/></Item>
</Row>

<Row>
  <Item><C>OneAttr</C><Index Key="OneAttr"><C>OneAttr</C></Index></Item>
  <Item><Ref Attr="One"/>, <Ref Attr="OneImmutable"/></Item>
</Row>
<Row>
  <Item><C>InverseAttr</C><Index Key="InverseAttr"><C>InverseAttr</C></Index></Item>
  <Item><Ref Attr="Inverse"/>, <Ref Attr="InverseImmutable"/></Item>
</Row>
<Row>
  <Item><C>ZeroAttr</C><Index Key="ZeroAttr"><C>ZeroAttr</C></Index></Item>
  <Item><Ref Attr="Zero"/>, <Ref Attr="ZeroImmutable"/></Item>
</Row>
<Row>
  <Item><C>AdditiveInverseAttr</C><Index Key="AdditiveInverseAttr"><C>AdditiveInverseAttr</C></Index></Item>
  <Item><Ref Attr="AdditiveInverse"/>, <Ref Attr="AdditiveInverseImmutable"/></Item>
</Row>

</Table>

</Item>

</List>

<ManSection>
<InfoClass Name="InfoObsolete"/>
<Description>
is an info class to display warnings when an obsolete variable is used.
By default, the info level for this class is set to 1, which will only
show variables which will be removed in the next major version of GAP.
Setting it to 2 will trigger further warnings, for variables which have
alternative names, or may be removed in future.

This class can be set to 0 to disable all obsolete warnings.
<P/>
To check that the &GAP; code does not use any obsolete variables at
parsing time, and not at a runtime, use the <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>IsMonoidAsSemigroup</C> returns
  <K>true</K> for semigroups in the category <Ref Filt = "IsMonoid"/>,
  and <C>IsSemilatticeAsSemigroup</C> has been moved to the
  <Package>Semigroups</Package> under the new name
  <Ref Prop="IsSemilattice" BookName = "Semigroups"/>.
</Section>

</Chapter>


