-- For copyright see ../etc/copyright
)abbrev category ATFINAG finiteAggregate
++ Description:
++ The class of all aggregates with a finite number of elements.
finiteAggregate() : Category == with ()

)abbrev category ATSHMUT shallowlyMutable
++ Description:
++ The class of all domains which have have immediate components
++ that are updateable (mutable).
++ Note: the properties of any component domain are irrelevant to the
++ \spad{shallowlyMutable} proper.
shallowlyMutable() : Category == with ()

)abbrev category ATUNIKN unitsKnown
++ Description:
++ The class of all monoids (multiplicative semigroups with a 1)
++ such that the operation \spadfun{recip} can only return "failed"
++ if its argument is not a unit.
unitsKnown() : Category == with ()

)abbrev category ATNZDIV noZeroDivisors
++ Description:
++ The class of all semirings such that \spad{x * y \~~= 0} implies
++ both x and y are non-zero
noZeroDivisors() : Category == with ()

)abbrev category ATCUNOR canonicalUnitNormal
++ Description:
++ The class of all integral domains such that we can choose a canonical
++ representative for each class of associate elements, that is
++ \spad{associates?(a, b)} returns true if and only if
++ \spad{unitCanonical(a) = unitCanonical(b)}.
canonicalUnitNormal() : Category == with ()

)abbrev category ATCANCL canonicalsClosed
++ Description:
++ The class of all integral domains such that
++ \spad{unitCanonical(a)*unitCanonical(b) = unitCanonical(a*b)}.
canonicalsClosed() : Category == with ()

)abbrev category ATARBPR arbitraryPrecision
++ Description:
++ Approximate numbers for which the user can set the
++ precision for subsequent calculations.
arbitraryPrecision() : Category == with ()

)abbrev category ATARBEX arbitraryExponent
++ Description:
++ Approximate numbers with arbitrarily large exponents
arbitraryExponent() : Category == with ()

)abbrev category ATAPPRO Approximate
++ Description:
++ An approximation to the real numbers.
Approximate() : Category == with ()

)abbrev category ATADDVA additiveValuation
++ Description:
++ The class of all euclidean domains such that
++ \spad{euclideanSize(a*b)=euclideanSize(a)+euclideanSize(b)}.
additiveValuation() : Category == with ()

)abbrev category ATMULVA multiplicativeValuation
++ Description:
++ The class of all euclidean domains such that
++ \spad{euclideanSize(a*b)=euclideanSize(a)*euclideanSize(b)}.
multiplicativeValuation() : Category == with ()

)abbrev category ATCANON Canonical
++ Description:
++ The class of all domains which have canonical representation,
++ that is if mathematically equal elements have the same data structures.
Canonical() : Category == with ()

)abbrev category ATTWSR TwoSidedRecip
++ Description:
++  The class of all magmas where \spad{leftRecip} and \spad{rightRecip} are
++  the same as \spad{recip}.
TwoSidedRecip() : Category == with ()

)abbrev category ATCS CommutativeStar
++ Description:
++ The class of all commutative semigroups in multiplicative
++ notation.  In other words domains \spad{D} with
++ \spad{"*": (D, D) -> D} which is commutative.
++ Typically applied to rings.
CommutativeStar() : Category == TwoSidedRecip

)abbrev category ATLR lazyRepresentation
++ Description:
++ The class of all domains which have have lazy representation.
lazyRepresentation() : Category == with ()

)abbrev category ATVCWC VariablesCommuteWithCoefficients
++ Description:
++  The class of all polynomial domains such that variables
++  commute with coefficients.
VariablesCommuteWithCoefficients() : Category == with ()
