QuotientRing

Struct QuotientRing 

Source
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>>

Source

pub fn kahler_differentials( &self, ) -> Result<KahlerDifferentials<C>, KahlerDifferentialError>

Construct the exact module Omega_{A/C} for this affine algebra.

Source

pub fn cotangent_space_at( &self, point: Vec<C::Element>, ) -> Result<CotangentSpace<C>, KahlerDifferentialError>

Cotangent fiber at one explicit rational or finite-field point.

Source

pub fn cotangent_complex( &self, ) -> Result<CotangentComplexPresentation<C>, KahlerDifferentialError>

Construct the complete-intersection cotangent complex using the canonical reduced ideal generators.

Source

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.

Source

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>

Source

pub fn base_ring(&self) -> &S

Ambient commutative ring before taking the quotient.

Source

pub fn defining_ideal(&self) -> &Ideal<S>

Canonical defining ideal in the ambient ring.

Source§

impl<R: Field> QuotientRing<PolynomialRing<R>>

Source

pub fn element( &self, value: &Polynomial<R>, ) -> Result<QuotientElement<PolynomialRing<R>>, ContextMismatchError>

Project an ambient polynomial to its canonical quotient element.

Source

pub fn is_graded(&self) -> bool

Whether the defining ideal is homogeneous in the complete ambient grading.

Source

pub fn grading(&self) -> Option<&FreeAbelianGrading>

Ambient grading inherited by this quotient, when the defining ideal is homogeneous.

Source

pub fn hilbert_series(&self) -> Result<HilbertSeries, GroebnerError>

Exact Hilbert series computed from the canonical defining ideal.

Source

pub fn hilbert_numerator(&self) -> Result<Vec<Integer>, GroebnerError>

Dense standard-graded Hilbert numerator.

Source

pub fn dimension(&self) -> Result<i64, GroebnerError>

Krull dimension, with -1 for the zero ring.

Source

pub fn degree(&self) -> Result<Integer, GroebnerError>

Standard-graded multiplicity.

Source

pub fn hilbert_polynomial( &self, ) -> Result<Polynomial<RationalField>, GroebnerError>

Standard Hilbert polynomial in the canonical variable m.

Source

pub fn finite_algebra(&self) -> Result<FiniteQuotientAlgebra<R>, GroebnerError>

Verified standard-monomial basis and multiplication operators for a finite quotient.

Source

pub fn induced_map<Q, M>( &self, target: &QuotientRing<PolynomialRing<Q>>, base_map: M, ) -> Result<QuotientRingMap<PolynomialRing<R>, PolynomialRing<Q>, M>, QuotientRingMapError>
where Q: Field, M: CoefficientMap<Source = PolynomialRing<R>, Target = PolynomialRing<Q>>,

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.

Source

pub fn to_json(&self) -> Result<String, NoetherError>
where R: Serialize, R::Element: Serialize,

Serialize the complete ambient presentation and canonical defining ideal.

Source

pub fn from_json(value: &str) -> Result<Self, NoetherError>
where R: for<'de> Deserialize<'de>, R::Element: for<'de> Deserialize<'de>,

Deserialize and revalidate the ambient ring and canonical defining ideal.

Trait Implementations§

Source§

impl<S: Clone + CommutativeRing> Clone for QuotientRing<S>

Source§

fn clone(&self) -> QuotientRing<S>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<S: CommutativeRing> Debug for QuotientRing<S>

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de, R> Deserialize<'de> for QuotientRing<PolynomialRing<R>>
where R: Field + Deserialize<'de>, R::Element: Deserialize<'de>,

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<S: CommutativeRing> Display for QuotientRing<S>

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<S: CommutativeRing> PartialEq for QuotientRing<S>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<R: Field> Ring for QuotientRing<PolynomialRing<R>>

Source§

type Element = QuotientElement<PolynomialRing<R>>

Elements manufactured and validated by this context.
Source§

fn contains(&self, value: &Self::Element) -> bool

Test whether a value belongs to this exact context.
Source§

fn zero(&self) -> Self::Element

The additive identity in this context.
Source§

fn is_zero(&self, value: &Self::Element) -> bool

Test whether a value is the additive identity. Read more
Source§

fn one(&self) -> Self::Element

The multiplicative identity in this context.
Source§

fn add( &self, left: &Self::Element, right: &Self::Element, ) -> Result<Self::Element, ContextMismatchError>

Add two elements after checking their context.
Source§

fn sub( &self, left: &Self::Element, right: &Self::Element, ) -> Result<Self::Element, ContextMismatchError>

Subtract two elements after checking their context.
Source§

fn mul( &self, left: &Self::Element, right: &Self::Element, ) -> Result<Self::Element, ContextMismatchError>

Multiply two elements after checking their context.
Source§

fn sum_products( &self, products: &[(&Self::Element, &Self::Element)], ) -> Result<Self::Element, ContextMismatchError>

Compute a sum of pairwise products in this context. Read more
Source§

fn neg( &self, value: &Self::Element, ) -> Result<Self::Element, ContextMismatchError>

Negate an element after checking its context.
Source§

impl<S: CommutativeRing> SemanticType for QuotientRing<S>

Source§

const TYPE_ID: &'static str = "noether/commalg/QuotientRing@1"

Versioned, language-neutral semantic identity.
Source§

fn canonical_bytes(&self) -> Result<Vec<u8>, NoetherError>

Serialize without backend- or language-specific identity.
Source§

fn describe() -> &'static TypeDescription

Return static discovery metadata for the type.
Source§

impl<R> Serialize for QuotientRing<PolynomialRing<R>>
where R: Field + Serialize, R::Element: Serialize,

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<R: Field> CommutativeRing for QuotientRing<PolynomialRing<R>>

Source§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,