cgal/Algebraic_foundations/doc_tex/Algebraic_foundations_ref/EuclideanRing.tex

69 lines
2.1 KiB
TeX

\begin{ccRefConcept}{EuclideanRing}
\ccDefinition
A model of \ccc{EuclideanRing} represents an euclidean ring (or Euclidean domain).
It is an \ccc{UniqueFactorizationDomain} that affords a suitable notion of minimality of remainders
such that given $x$ and $y \neq 0$ we obtain an (almost) unique solution to
$ x = qy + r $ by demanding that a solution $(q,r)$ is chosen to minimize $r$.
In particular, $r$ is chosen to be $0$ if possible.
Moreover, \ccc{CGAL::Algebraic_structure_traits< EuclideanRing >} is a model of
\ccc{AlgebraicStructureTraits} providing:\\
- \ccc{CGAL::Algebraic_structure_traits< EuclideanRing >::Algebraic_type} derived from \ccc{Unique_factorization_domain_tag} \\
- \ccc{CGAL::Algebraic_structure_traits< EuclideanRing >::Mod} \\
- \ccc{CGAL::Algebraic_structure_traits< EuclideanRing >::Div} \\
- \ccc{CGAL::Algebraic_structure_traits< EuclideanRing >::Div_mod}\\
\ccHeading{Remarks}
The most prominent example of a Euclidean ring are the integers.
Whenever both $x$ and $y$ are positive, then it is conventional to choose
the smallest positive remainder $r$.
%Another important example of a Euclidean ring are univariate polynomials over a field.
%Here the degree of $r$ is to be minimized. There is no remaining ambiguity.
%Any Euclidean ring is necessarily a \ccc{UniqueFactorizationDomain}, and the ability to take remainders allows
%to use the Euclidean Algorithm to compute gcds.
\ccRefines
\ccc{UniqueFactorizationDomain}
\ccSeeAlso
\ccRefIdfierPage{IntegralDomainWithoutDivision}\\
\ccRefIdfierPage{IntegralDomain}\\
\ccRefIdfierPage{UniqueFactorizationDomain}\\
\ccRefIdfierPage{EuclideanRing}\\
\ccRefIdfierPage{Field}\\
\ccRefIdfierPage{FieldWithSqrt}\\
\ccRefIdfierPage{FieldWithKthRoot}\\
\ccRefIdfierPage{FieldWithRootOf}\\
\ccRefIdfierPage{AlgebraicStructureTraits}\\
%\ccHasModels
%\ccc{int}\\
%\ccc{long}\\
%\ccc{CGAL::Gmpz} \\
%\ccc{CGAL::Gmpzf} \\
%\ccc{mpz_class} \\
%\ccc{leda_integer} \\
%\ccc{CORE::BigInt} \\
%\ccc{CGAL::MP_Float} ( exact version )\\
%\ccc{CGAL::Lazy_exact_nt< NT > } (depends on NT) \\
%%\ccc{CGAL::Polynomial< T >} \\
\end{ccRefConcept}