Domains (parameterized types)
<Text-field style="Heading 2" layout="Heading 2" bookmark="info">Description</Text-field> Domains in Domains are functions which return tables of operations for manipulating objects in the domain. For example, Integers() returns a table of operations for computing with integers including `+` addition, `-` subtraction, `*` multiplication, etc. Domains can be parameterized by other domains and values; for example, the domain NiMtSTpEZW5zZVVuaXZhcmlhdGVQb2x5bm9taWFsRzYiNiRJIlJHRiVJInhHRiU= takes a coefficient ring R and a variable x as a parameter. The coefficient ring must be a Domains domain which belongs to the category Ring; that is, it must support all the operations of a ring. The variable x must be a name. All domains support belongs to the category Set which supports the operations =, <> -- boolean equality of domains elements Input -- for converting expressions into the domain data representation Output -- for converting from the domain representation to an output form Random -- for generating a pseudo-random value from the domain Type -- for testing if a value is a valid domain element The command show(D, operations) can be used to print out all the operations that are defined for a domain. Operations marked by -- are not implemented. A list of the domains constructors in Domains is
ZIntegers()QRationals()GGaussian(R:Ring)ZmodZmod(n:posint)GFGaloisField(p:prime, k:posint)DUPDenseUnivariatePolynomial(R:Ring, x:name)OUPOrderedUnivariatePolynomial(P:UnivariatePolynomial(R),f:(R,R) -> Boolean)DEVDenseExponentVector(X:list(name))PEVPrimeExponentVector(X:list(name))MEVMapleExponentVector(X:list(name))TEVMacaulayExponentVector(X:list(name))TDMPTableDistributedMultivariatePolynomial(R:Ring, E:ExponentVector)SDMPSparseDistributedMultivariatePolynomial(R:Ring, E:ExponentVector)QFExpandedNormalFormQuotientField(D:GcdDomain)ENFQFExpandedNormalFormQuotientField(D:GcdDomain)FNFQFFactoredNormalFormQuotientField(D:GcdDomain)RFRationalFunction(D:GcdDomain, X:list(name))LUPSLazyUnivariatePowerSeries(R:Ring, x:name)Matrix(R:Ring)SMSquareMatrix(n:posint, R:Ring)SAEAlgebraicExtension(D:UnivariatePolynomial, m:D)
In addition, there are some special domains that use the Maple representation for polynomials to try to get back some efficiency for integer and rational coefficients. MUPMapleUnivariatePolynomial(R:{Z, Q, Zmod}, x:name)MMPMapleMultivariatePolynomial(R:{Z, Q, Zmod}, X:list(name))