)abbrev category ACFS AlgebraicallyClosedFunctionSpace ++ Author: Manuel Bronstein ++ Date Created: 31 October 1988 ++ Date Last Updated: 7 October 1991 ++ Description: ++ Model for algebraically closed function spaces. ++ Keywords: algebraic, closure, field. AlgebraicallyClosedFunctionSpace(R: IntegralDomain): Category == Join(AlgebraicallyClosedField, FunctionSpace R) with rootOf : $ -> $ ++ rootOf(p) returns y such that \spad{p(y) = 0}. ++ Error: if p has more than one variable y. rootsOf: $ -> List $ ++ rootsOf(p, y) returns \spad{[y1,...,yn]} such that \spad{p(yi) = 0}; ++ Note: the returned symbols y1,...,yn are bound in the interpreter ++ to respective root values. ++ Error: if p has more than one variable y. rootOf : ($, Symbol) -> $ ++ rootOf(p,y) returns y such that \spad{p(y) = 0}. ++ The object returned displays as \spad{'y}. rootsOf: ($, Symbol) -> List $ ++ rootsOf(p, y) returns \spad{[y1,...,yn]} such that \spad{p(yi) = 0}; ++ The returned roots display as \spad{'y1},...,\spad{'yn}. ++ Note: the returned symbols y1,...,yn are bound in the interpreter ++ to respective root values. zeroOf : $ -> $ ++ zeroOf(p) returns y such that \spad{p(y) = 0}. ++ The value y is expressed in terms of radicals if possible,and otherwise ++ as an implicit algebraic quantity. ++ Error: if p has more than one variable. zerosOf: $ -> List $ ++ zerosOf(p) returns \spad{[y1,...,yn]} such that \spad{p(yi) = 0}. ++ The yi's are expressed in radicals if possible. ++ The returned symbols y1,...,yn are bound in the interpreter ++ to respective root values. ++ Error: if p has more than one variable. zeroOf : ($, Symbol) -> $ ++ zeroOf(p, y) returns y such that \spad{p(y) = 0}. ++ The value y is expressed in terms of radicals if possible,and otherwise ++ as an implicit algebraic quantity ++ which displays as \spad{'y}. zerosOf: ($, Symbol) -> List $ ++ zerosOf(p, y) returns \spad{[y1,...,yn]} such that \spad{p(yi) = 0}. ++ The yi's are expressed in radicals if possible, and otherwise ++ as implicit algebraic quantities ++ which display as \spad{'yi}. ++ The returned symbols y1,...,yn are bound in the interpreter ++ to respective root values. add rootOf(p:$) == empty?(l := variables p) => error "rootOf: constant expression" rootOf(p, first l) rootsOf(p:$) == empty?(l := variables p) => error "rootsOf: constant expression" rootsOf(p, first l) zeroOf(p:$) == empty?(l := variables p) => error "zeroOf: constant expression" zeroOf(p, first l) zerosOf(p:$) == empty?(l := variables p) => error "zerosOf: constant expression" zerosOf(p, first l) zeroOf(p:$, x:Symbol) == n := numer(f := univariate(p, kernel(x)$Kernel($))) positive? degree denom f => error "zeroOf: variable appears in denom" degree n = 0 => error "zeroOf: constant expression" zeroOf(n, x) rootOf(p:$, x:Symbol) == n := numer(f := univariate(p, kernel(x)$Kernel($))) positive? degree denom f => error "roofOf: variable appears in denom" degree n = 0 => error "rootOf: constant expression" rootOf(n, x) zerosOf(p:$, x:Symbol) == n := numer(f := univariate(p, kernel(x)$Kernel($))) positive? degree denom f => error "zerosOf: variable appears in denom" degree n = 0 => empty() zerosOf(n, x) rootsOf(p:$, x:Symbol) == n := numer(f := univariate(p, kernel(x)$Kernel($))) positive? degree denom f => error "roofsOf: variable appears in denom" degree n = 0 => empty() rootsOf(n, x) rootsOf(p:SparseUnivariatePolynomial $, y:Symbol) == (r := retractIfCan(p)@Union($,"failed")) case $ => rootsOf(r::$,y) rootsOf(p, y)$AlgebraicallyClosedField_&($) zerosOf(p:SparseUnivariatePolynomial $, y:Symbol) == (r := retractIfCan(p)@Union($,"failed")) case $ => zerosOf(r::$,y) zerosOf(p, y)$AlgebraicallyClosedField_&($) zeroOf(p:SparseUnivariatePolynomial $, y:Symbol) == (r := retractIfCan(p)@Union($,"failed")) case $ => zeroOf(r::$, y) zeroOf(p, y)$AlgebraicallyClosedField_&($)