\documentclass{article} \usepackage{open-axiom} \begin{document} \title{\$SPAD/src/algebra nsregset.spad} \author{Marc Moreno Maza} \maketitle \begin{abstract} \end{abstract} \eject \tableofcontents \eject \section{category SNTSCAT SquareFreeNormalizedTriangularSetCategory} <>= )abbrev category SNTSCAT SquareFreeNormalizedTriangularSetCategory ++ Author: Marc Moreno Maza ++ Date Created: 10/07/1998 ++ Date Last Updated: 12/16/1998 ++ Basic Functions: ++ Related Constructors: ++ Also See: essai Graphisme ++ AMS Classifications: ++ Keywords: polynomial, multivariate, ordered variables set ++ Description: ++ The category of square-free and normalized triangular sets. ++ Thus, up to the primitivity axiom of [1], these sets are Lazard ++ triangular sets.\newline ++ References : ++ [1] D. LAZARD "A new method for solving algebraic systems of ++ positive dimension" Discr. App. Math. 33:147-160,1991 SquareFreeNormalizedTriangularSetCategory(R:GcdDomain,E:OrderedAbelianMonoidSup,_ V:OrderedSet,P:RecursivePolynomialCategory(R,E,V)): Category == Join(SquareFreeRegularTriangularSetCategory(R,E,V,P), NormalizedTriangularSetCategory(R,E,V,P)) @ \section{package LAZM3PK LazardSetSolvingPackage} <>= )abbrev package LAZM3PK LazardSetSolvingPackage ++ Author: Marc Moreno Maza ++ Date Created: 10/02/1998 ++ Date Last Updated: 12/16/1998 ++ Basic Functions: ++ Related Constructors: ++ Also See: ++ AMS Classifications: ++ Keywords: ++ Description: ++ A package for solving polynomial systems by means of Lazard triangular ++ sets [1]. ++ This package provides two operations. One for solving in the sense ++ of the regular zeros, and the other for solving in the sense of ++ the Zariski closure. Both produce square-free regular sets. ++ Moreover, the decompositions do not contain any redundant component. ++ However, only zero-dimensional regular sets are normalized, since ++ normalization may be time consumming in positive dimension. ++ The decomposition process is that of [2].\newline ++ References : ++ [1] D. LAZARD "A new method for solving algebraic systems of ++ positive dimension" Discr. App. Math. 33:147-160,1991 ++ [2] M. MORENO MAZA "A new algorithm for computing triangular ++ decomposition of algebraic varieties" NAG Tech. Rep. 4/98. ++ Version: 1. LazardSetSolvingPackage(R,E,V,P,TS,ST): Exports == Implementation where R : GcdDomain E : OrderedAbelianMonoidSup V : OrderedSet P : RecursivePolynomialCategory(R,E,V) TS: RegularTriangularSetCategory(R,E,V,P) ST : SquareFreeRegularTriangularSetCategory(R,E,V,P) N ==> NonNegativeInteger Z ==> Integer B ==> Boolean S ==> String K ==> Fraction R LP ==> List P PWT ==> Record(val : P, tower : TS) BWT ==> Record(val : Boolean, tower : TS) LpWT ==> Record(val : (List P), tower : TS) Split ==> List TS --KeyGcd ==> Record(arg1: P, arg2: P, arg3: TS, arg4: B) --EntryGcd ==> List PWT --HGcd ==> TabulatedComputationPackage(KeyGcd, EntryGcd) --KeyInvSet ==> Record(arg1: P, arg3: TS) --EntryInvSet ==> List TS --HInvSet ==> TabulatedComputationPackage(KeyInvSet, EntryInvSet) polsetpack ==> PolynomialSetUtilitiesPackage(R,E,V,P) regsetgcdpack ==> SquareFreeRegularTriangularSetGcdPackage(R,E,V,P,ST) quasicomppack ==> SquareFreeQuasiComponentPackage(R,E,V,P,ST) normalizpack ==> NormalizationPackage(R,E,V,P,ST) Exports == with normalizeIfCan: ST -> ST ++ \axiom{normalizeIfCan(ts)} returns \axiom{ts} in an normalized shape ++ if \axiom{ts} is zero-dimensional. zeroSetSplit: (LP, B) -> List ST ++ \axiom{zeroSetSplit(lp,clos?)} has the same specifications as ++ \axiomOpFrom{zeroSetSplit(lp,clos?)}{RegularTriangularSetCategory}. Implementation == add convert(st: ST): TS == ts: TS := empty() lp: LP := members(st)$ST lp := sort(infRittWu?,lp) for p in lp repeat ts := internalAugment(p,ts)$TS ts squareFree(ts: TS): List ST == empty? ts => [empty()$ST] lp: LP := members(ts)$TS lp := sort(infRittWu?,lp) newts: ST := empty()$ST toSee: List ST := [newts] toSave: List ST for p in lp repeat toSave := [] while (not empty? toSee) repeat us := first toSee; toSee := rest toSee lpwt := stoseSquareFreePart(p,us)$regsetgcdpack for pwt in lpwt repeat newus := internalAugment(pwt.val,pwt.tower)$ST toSave := cons(newus,toSave) toSee := toSave toSave normalizeIfCan(ts: ST): ST == empty? ts => ts lp: LP := members(ts)$ST lp := sort(infRittWu?,lp) p: P := first lp not univariate?(p)$polsetpack => ts lp := rest lp newts: ST := empty()$ST newts := internalAugment(p,newts)$ST while (not empty? lp) repeat p := first lp lv := variables(p) for v in lv repeat v = mvar(p) => "leave" not algebraic?(v,newts) => return internalAugment(lp,newts)$ST lp := rest lp p := normalizedAssociate(p,newts)$normalizpack newts := internalAugment(p,newts)$ST newts zeroSetSplit(lp:List(P), clos?:B): List ST == -- if clos? then SOLVE in the closure sense toSee: Split := zeroSetSplit(lp, clos?)$TS toSave: List ST := [] for ts in toSee repeat toSave := concat(squareFree(ts),toSave) toSave := removeSuperfluousQuasiComponents(toSave)$quasicomppack [normalizeIfCan(ts) for ts in toSave] @ \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}