pub struct QuotientRing<S: CommutativeRing> { /* private fields */ }Expand description
The exact quotient of one explicit commutative ring by one canonical ideal.
Context identity is the ambient ring presentation together with the exact defining ideal. The first implemented family is a polynomial ring over an exact field, but neither the public context nor element name encodes that specialization.
Implementations§
Source§impl<C: Field> QuotientRing<PolynomialRing<C>>
impl<C: Field> QuotientRing<PolynomialRing<C>>
Sourcepub fn kahler_differentials(
&self,
) -> Result<KahlerDifferentials<C>, KahlerDifferentialError>
pub fn kahler_differentials( &self, ) -> Result<KahlerDifferentials<C>, KahlerDifferentialError>
Construct the exact module Omega_{A/C} for this affine algebra.
Sourcepub fn cotangent_space_at(
&self,
point: Vec<C::Element>,
) -> Result<CotangentSpace<C>, KahlerDifferentialError>
pub fn cotangent_space_at( &self, point: Vec<C::Element>, ) -> Result<CotangentSpace<C>, KahlerDifferentialError>
Cotangent fiber at one explicit rational or finite-field point.
Sourcepub fn cotangent_complex(
&self,
) -> Result<CotangentComplexPresentation<C>, KahlerDifferentialError>
pub fn cotangent_complex( &self, ) -> Result<CotangentComplexPresentation<C>, KahlerDifferentialError>
Construct the complete-intersection cotangent complex using the canonical reduced ideal generators.
Sourcepub fn cotangent_complex_from_generators(
&self,
generators: &[Polynomial<C>],
) -> Result<CotangentComplexPresentation<C>, KahlerDifferentialError>
pub fn cotangent_complex_from_generators( &self, generators: &[Polynomial<C>], ) -> Result<CotangentComplexPresentation<C>, KahlerDifferentialError>
Construct the complete-intersection cotangent complex from an explicit chosen equation list.
The equations are first proved to generate this algebra’s canonical ideal. Redundant lists then fail the regular-sequence count check rather than producing a falsely free conormal term.
Sourcepub fn conormal_sequence_from_generators(
&self,
generators: &[Polynomial<C>],
) -> Result<ConormalSequenceEvidence<C>, KahlerDifferentialError>
pub fn conormal_sequence_from_generators( &self, generators: &[Polynomial<C>], ) -> Result<ConormalSequenceEvidence<C>, KahlerDifferentialError>
Present I/I^2 and its conormal map using an explicit equation list.
Unlike the complete-intersection constructor this accepts redundant generators: their exact syzygies remain visible in the returned conormal module. The equations must generate this algebra’s defining ideal exactly.
Source§impl<S: CommutativeRing> QuotientRing<S>
impl<S: CommutativeRing> QuotientRing<S>
Source§impl<R: Field> QuotientRing<PolynomialRing<R>>
impl<R: Field> QuotientRing<PolynomialRing<R>>
Sourcepub fn element(
&self,
value: &Polynomial<R>,
) -> Result<QuotientElement<PolynomialRing<R>>, ContextMismatchError>
pub fn element( &self, value: &Polynomial<R>, ) -> Result<QuotientElement<PolynomialRing<R>>, ContextMismatchError>
Project an ambient polynomial to its canonical quotient element.
Sourcepub fn is_graded(&self) -> bool
pub fn is_graded(&self) -> bool
Whether the defining ideal is homogeneous in the complete ambient grading.
Sourcepub fn grading(&self) -> Option<&FreeAbelianGrading>
pub fn grading(&self) -> Option<&FreeAbelianGrading>
Ambient grading inherited by this quotient, when the defining ideal is homogeneous.
Sourcepub fn hilbert_series(&self) -> Result<HilbertSeries, GroebnerError>
pub fn hilbert_series(&self) -> Result<HilbertSeries, GroebnerError>
Exact Hilbert series computed from the canonical defining ideal.
Sourcepub fn hilbert_numerator(&self) -> Result<Vec<Integer>, GroebnerError>
pub fn hilbert_numerator(&self) -> Result<Vec<Integer>, GroebnerError>
Dense standard-graded Hilbert numerator.
Sourcepub fn dimension(&self) -> Result<i64, GroebnerError>
pub fn dimension(&self) -> Result<i64, GroebnerError>
Krull dimension, with -1 for the zero ring.
Sourcepub fn degree(&self) -> Result<Integer, GroebnerError>
pub fn degree(&self) -> Result<Integer, GroebnerError>
Standard-graded multiplicity.
Sourcepub fn hilbert_polynomial(
&self,
) -> Result<Polynomial<RationalField>, GroebnerError>
pub fn hilbert_polynomial( &self, ) -> Result<Polynomial<RationalField>, GroebnerError>
Standard Hilbert polynomial in the canonical variable m.
Sourcepub fn finite_algebra(&self) -> Result<FiniteQuotientAlgebra<R>, GroebnerError>
pub fn finite_algebra(&self) -> Result<FiniteQuotientAlgebra<R>, GroebnerError>
Verified standard-monomial basis and multiplication operators for a finite quotient.
Sourcepub fn induced_map<Q, M>(
&self,
target: &QuotientRing<PolynomialRing<Q>>,
base_map: M,
) -> Result<QuotientRingMap<PolynomialRing<R>, PolynomialRing<Q>, M>, QuotientRingMapError>
pub fn induced_map<Q, M>( &self, target: &QuotientRing<PolynomialRing<Q>>, base_map: M, ) -> Result<QuotientRingMap<PolynomialRing<R>, PolynomialRing<Q>, M>, QuotientRingMapError>
Descend a checked ambient-ring map to a target quotient.
Construction verifies that every source defining relation maps to zero
in target; failure never creates a partially checked map.
Sourcepub fn to_json(&self) -> Result<String, NoetherError>
pub fn to_json(&self) -> Result<String, NoetherError>
Serialize the complete ambient presentation and canonical defining ideal.
Sourcepub fn from_json(value: &str) -> Result<Self, NoetherError>
pub fn from_json(value: &str) -> Result<Self, NoetherError>
Deserialize and revalidate the ambient ring and canonical defining ideal.
Trait Implementations§
Source§impl<S: Clone + CommutativeRing> Clone for QuotientRing<S>
impl<S: Clone + CommutativeRing> Clone for QuotientRing<S>
Source§fn clone(&self) -> QuotientRing<S>
fn clone(&self) -> QuotientRing<S>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<S: CommutativeRing> Debug for QuotientRing<S>
impl<S: CommutativeRing> Debug for QuotientRing<S>
Source§impl<'de, R> Deserialize<'de> for QuotientRing<PolynomialRing<R>>
impl<'de, R> Deserialize<'de> for QuotientRing<PolynomialRing<R>>
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl<S: CommutativeRing> Display for QuotientRing<S>
impl<S: CommutativeRing> Display for QuotientRing<S>
Source§impl<S: CommutativeRing> PartialEq for QuotientRing<S>
impl<S: CommutativeRing> PartialEq for QuotientRing<S>
Source§impl<R: Field> Ring for QuotientRing<PolynomialRing<R>>
impl<R: Field> Ring for QuotientRing<PolynomialRing<R>>
Source§type Element = QuotientElement<PolynomialRing<R>>
type Element = QuotientElement<PolynomialRing<R>>
Source§fn contains(&self, value: &Self::Element) -> bool
fn contains(&self, value: &Self::Element) -> bool
Source§fn is_zero(&self, value: &Self::Element) -> bool
fn is_zero(&self, value: &Self::Element) -> bool
Source§fn add(
&self,
left: &Self::Element,
right: &Self::Element,
) -> Result<Self::Element, ContextMismatchError>
fn add( &self, left: &Self::Element, right: &Self::Element, ) -> Result<Self::Element, ContextMismatchError>
Source§fn sub(
&self,
left: &Self::Element,
right: &Self::Element,
) -> Result<Self::Element, ContextMismatchError>
fn sub( &self, left: &Self::Element, right: &Self::Element, ) -> Result<Self::Element, ContextMismatchError>
Source§fn mul(
&self,
left: &Self::Element,
right: &Self::Element,
) -> Result<Self::Element, ContextMismatchError>
fn mul( &self, left: &Self::Element, right: &Self::Element, ) -> Result<Self::Element, ContextMismatchError>
Source§fn sum_products(
&self,
products: &[(&Self::Element, &Self::Element)],
) -> Result<Self::Element, ContextMismatchError>
fn sum_products( &self, products: &[(&Self::Element, &Self::Element)], ) -> Result<Self::Element, ContextMismatchError>
Source§impl<S: CommutativeRing> SemanticType for QuotientRing<S>
impl<S: CommutativeRing> SemanticType for QuotientRing<S>
Source§const TYPE_ID: &'static str = "noether/commalg/QuotientRing@1"
const TYPE_ID: &'static str = "noether/commalg/QuotientRing@1"
Source§fn canonical_bytes(&self) -> Result<Vec<u8>, NoetherError>
fn canonical_bytes(&self) -> Result<Vec<u8>, NoetherError>
Source§fn describe() -> &'static TypeDescription
fn describe() -> &'static TypeDescription
Source§impl<R> Serialize for QuotientRing<PolynomialRing<R>>
impl<R> Serialize for QuotientRing<PolynomialRing<R>>
impl<R: Field> CommutativeRing for QuotientRing<PolynomialRing<R>>
impl<S: CommutativeRing> Eq for QuotientRing<S>
Auto Trait Implementations§
impl<S> Freeze for QuotientRing<S>
impl<S> !RefUnwindSafe for QuotientRing<S>
impl<S> Send for QuotientRing<S>
impl<S> Sync for QuotientRing<S>
impl<S> Unpin for QuotientRing<S>
impl<S> !UnwindSafe for QuotientRing<S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more