\documentclass{article} \usepackage{open-axiom} \begin{document} \title{\$SPAD/src/algebra resring.spad} \author{Patrizia Gianni} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \section{domain RESRING ResidueRing} <>= )abbrev domain RESRING ResidueRing ++ Author: P.Gianni ++ Date Created: December 1992 ++ Date Last Updated: ++ Basic Functions: ++ Related Constructors: ++ Also See: ++ AMS Classifications: ++ Keywords: ++ References: ++ Description: ResidueRing is the quotient of a polynomial ring by an ideal. ++ The ideal is given as a list of generators. The elements of the domain ++ are equivalence classes expressed in terms of reduced elements ResidueRing(F,Expon,VarSet,FPol,LFPol) : Dom == Body where F : Field Expon : OrderedAbelianMonoidSup VarSet : OrderedSet FPol : PolynomialCategory(F, Expon, VarSet) LFPol : List FPol Dom == Join(CommutativeRing, Algebra F) with reduce : FPol -> $ ++ reduce(f) produces the equivalence class of f in the residue ring coerce : FPol -> $ ++ coerce(f) produces the equivalence class of f in the residue ring lift : $ -> FPol ++ lift(x) return the canonical representative of the equivalence class x Body == add --representation Rep:= FPol import GroebnerPackage(F,Expon,VarSet,FPol) relations:= groebner(LFPol) relations = [1] => error "the residue ring is the zero ring" --declarations x,y: $ --definitions 0 == 0$Rep 1 == 1$Rep reduce(f : FPol) : $ == normalForm(f,relations) coerce(f : FPol) : $ == normalForm(f,relations) lift x == x :: Rep :: FPol x + y == x +$Rep y -x == -$Rep x x*y == normalForm(lift(x *$Rep y),relations) (n : Integer) * x == n *$Rep x (a : F) * x == a *$Rep x x = y == x =$Rep y characteristic == characteristic$F coerce(x) : OutputForm == coerce(x)$Rep @ \section{License} <>= --Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. --All rights reserved. -- --Redistribution and use in source and binary forms, with or without --modification, are permitted provided that the following conditions are --met: -- -- - Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- -- - Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in -- the documentation and/or other materials provided with the -- distribution. -- -- - Neither the name of The Numerical ALgorithms Group Ltd. nor the -- names of its contributors may be used to endorse or promote products -- derived from this software without specific prior written permission. -- --THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER --OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, --EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, --PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @ <<*>>= <> <> @ \eject \begin{thebibliography}{99} \bibitem{1} nothing \end{thebibliography} \end{document}