%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% $Id $
% File:		lib/DOMAINS/CATEGORY/DOC/ModuleWithSeveralBases.tex
% Authors:	Florent Hivert <florent.hivert@univ-mlv.fr>
% Purpose:	Documentation for the category Cat::ModuleWithSeveralBases
% Created:	Fri Jan 30 18:03:00 2004
% License:	LGPL
% Project:	MuPAD-Combinat, http://mupad-combinat.sf.net
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{Mhelppage}{ModuleWithSeveralBases}{Florent Hivert}
  [ImplState=beta,TestState=beta,DocState=beta]
%\Mproofread{...}{...}{...}

\begin{MInfo}
  \eng{The category of free modules with several basis}
  \de{}
\end{MInfo}

\begin{MIntro}
  \eng{\Mthis{} represents the category of free modules with several basis.}
  \de{}
\end{MIntro}

\begin{MCatConst}
  \MCall{}
\end{MCatConst}

%\begin{MCategories}
%  \Mup{}
%  \Mupc{}{}
%\end{MCategories}

\begin{MDetails}
  \eng{A \Mthis{} is a.
  \begin{itemize}
\item \Mex{basisChangesBasis} is an hash table of associations of the type
\begin{Mvin}{prompt=,click=false,test=false}
  (basSource, basTarget) = basSourceTobasTargetChangeBasis
\end{Mvin}
\begin{Mvout}{test=false,hide=true}
\end{Mvout}
  where \Mex{basSourceTobasTargetChangeBasis} is a function that take an
  element \Mex{x} of the domain \Mex{basSource::basisIndices} and returns the
  image of the element \Mex{basSource(x)} expressed in the basis
  \Mex{basTarget}. The basis change is defined as the linear extension of the
  given function.
\item \Mex{basisChanges} is an hash table of associations of the type
\begin{Mvin}{prompt=,click=false,test=false}
  (basSource, basTarget) = basSourceTobasTargetChange
\end{Mvin}
\begin{Mvout}{test=false,hide=true}
\end{Mvout}
  The only differences from the previous is that the element \Mex{x} is now
  supposed to be an element of \Mex{basSource} rather than
  \Mex{basSource::basisIndices} so that no linear extension is needed.
\item \Mex{autoDefineBasisChanges} is a boolean that tells the system whether
  the basis changes that are not defined in \Mex{basisChangesBasis} or
  \Mex{basisChanges} should be defined when possible by inversion and
  transpose. 
\item \Mex{dual}: the system knows how to take care of free modules that are
  not isomorphic to their dual (for example if there is more algebraic
  structure). So we have to tell him what is the dual module of the currently
  being defined module. With this information the category
  \Mup{Cat::ModuleWithSeveralBases} is able to define transpose of basis
  changes.
\item \Mex{dualBasesPairs} provide finally the necessary information to define
  scalar product.  
\end{itemize}
}
  \de{}
\end{MDetails}

%\begin{MDomBasEntries}
%  \MDomEntry{bla}
%  \eng{.}
%  \de{}
%\end{MDomBasEntries}

\begin{MChanges}
  \version{3.1}
  \eng[New category]{\Mthis{} is a new category} %
\end{MChanges}

\end{Mhelppage}
