pub struct FreeAlgebraHom<R, S>where
R: RingStore,
R::Type: FreeAlgebra,
S: RingStore,
S::Type: FreeAlgebra,
<S::Type as RingExtension>::BaseRing: RingStore<Type = <<R::Type as RingExtension>::BaseRing as RingStore>::Type>,{ /* private fields */ }unstable-enable only.Expand description
§Availability
This API is marked as unstable and is only available when the unstable-enable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Implementations§
Source§impl<R> FreeAlgebraHom<R, R>
impl<R> FreeAlgebraHom<R, R>
Source§impl<R, S> FreeAlgebraHom<R, S>where
R: RingStore,
R::Type: FreeAlgebra,
S: RingStore,
S::Type: FreeAlgebra,
<S::Type as RingExtension>::BaseRing: RingStore<Type = <<R::Type as RingExtension>::BaseRing as RingStore>::Type>,
impl<R, S> FreeAlgebraHom<R, S>where
R: RingStore,
R::Type: FreeAlgebra,
S: RingStore,
S::Type: FreeAlgebra,
<S::Type as RingExtension>::BaseRing: RingStore<Type = <<R::Type as RingExtension>::BaseRing as RingStore>::Type>,
Sourcepub fn promise_is_well_defined(
from: R,
to: S,
image_of_generator: El<S>,
) -> Self
pub fn promise_is_well_defined( from: R, to: S, image_of_generator: El<S>, ) -> Self
Creates a new FreeAlgebraHom from R to S, mapping the canonical
generator of R to the given element of S. This assumes that the resulting
homomorphism is well-defined, i.e. the generating polynomial of R evaluated
at image_of_generator gives zero in S.
The checked variant of this function is FreeAlgebraHom::new().
§Availability
This API is marked as unstable and is only available when the unstable-enable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Sourcepub fn new(from: R, to: S, image_of_generator: El<S>) -> Self
pub fn new(from: R, to: S, image_of_generator: El<S>) -> Self
Creates a new FreeAlgebraHom from R to S, mapping the canonical
generator of R to the given element of S.
As opposed to FreeAlgebraHom::promise_is_well_defined(), this function
checks that the resulting homomorphism is well-defined.
§Availability
This API is marked as unstable and is only available when the unstable-enable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Sourcepub fn destruct(self) -> (R, S, El<S>)
pub fn destruct(self) -> (R, S, El<S>)
Consumes this object, producing the domain ring store, the codomain ring store and the image of the canonical generator of the domain number field.
§Availability
This API is marked as unstable and is only available when the unstable-enable crate feature is enabled. This comes with no stability guarantees, and could be changed or removed at any time.
Trait Implementations§
Source§impl<R, S> Homomorphism<<R as RingStore>::Type, <S as RingStore>::Type> for FreeAlgebraHom<R, S>where
R: RingStore,
R::Type: FreeAlgebra,
S: RingStore,
S::Type: FreeAlgebra,
<S::Type as RingExtension>::BaseRing: RingStore<Type = <<R::Type as RingExtension>::BaseRing as RingStore>::Type>,
impl<R, S> Homomorphism<<R as RingStore>::Type, <S as RingStore>::Type> for FreeAlgebraHom<R, S>where
R: RingStore,
R::Type: FreeAlgebra,
S: RingStore,
S::Type: FreeAlgebra,
<S::Type as RingExtension>::BaseRing: RingStore<Type = <<R::Type as RingExtension>::BaseRing as RingStore>::Type>,
Source§type DomainStore = R
type DomainStore = R
RingStore used by this object to store the domain ring.Source§type CodomainStore = S
type CodomainStore = S
RingStore used by this object to store the codomain ring.Source§fn domain<'a>(&'a self) -> &'a Self::DomainStore
fn domain<'a>(&'a self) -> &'a Self::DomainStore
Source§fn codomain<'a>(&'a self) -> &'a Self::CodomainStore
fn codomain<'a>(&'a self) -> &'a Self::CodomainStore
Source§fn map(&self, x: El<R>) -> El<S>
fn map(&self, x: El<R>) -> El<S>
Source§fn map_ref(&self, x: &El<R>) -> El<S>
fn map_ref(&self, x: &El<R>) -> El<S>
Source§fn mul_assign_map(&self, lhs: &mut Codomain::Element, rhs: Domain::Element)
fn mul_assign_map(&self, lhs: &mut Codomain::Element, rhs: Domain::Element)
Source§fn mul_assign_ref_map(&self, lhs: &mut Codomain::Element, rhs: &Domain::Element)
fn mul_assign_ref_map(&self, lhs: &mut Codomain::Element, rhs: &Domain::Element)
Source§fn mul_map(
&self,
lhs: Codomain::Element,
rhs: Domain::Element,
) -> Codomain::Element
fn mul_map( &self, lhs: Codomain::Element, rhs: Domain::Element, ) -> Codomain::Element
Source§fn fma_map(
&self,
lhs: &Codomain::Element,
rhs: &Domain::Element,
summand: Codomain::Element,
) -> Codomain::Element
fn fma_map( &self, lhs: &Codomain::Element, rhs: &Domain::Element, summand: Codomain::Element, ) -> Codomain::Element
lhs * rhs + summand, where rhs is mapped
into the ring via this homomorphism. Read moreSource§fn mul_ref_fst_map(
&self,
lhs: &Codomain::Element,
rhs: Domain::Element,
) -> Codomain::Element
fn mul_ref_fst_map( &self, lhs: &Codomain::Element, rhs: Domain::Element, ) -> Codomain::Element
Source§fn mul_ref_snd_map(
&self,
lhs: Codomain::Element,
rhs: &Domain::Element,
) -> Codomain::Element
fn mul_ref_snd_map( &self, lhs: Codomain::Element, rhs: &Domain::Element, ) -> Codomain::Element
Source§fn mul_ref_map(
&self,
lhs: &Codomain::Element,
rhs: &Domain::Element,
) -> Codomain::Element
fn mul_ref_map( &self, lhs: &Codomain::Element, rhs: &Domain::Element, ) -> Codomain::Element
Source§fn compose<F, PrevDomain: ?Sized + RingBase>(
self,
prev: F,
) -> ComposedHom<PrevDomain, Domain, Codomain, F, Self>where
Self: Sized,
F: Homomorphism<PrevDomain, Domain>,
fn compose<F, PrevDomain: ?Sized + RingBase>(
self,
prev: F,
) -> ComposedHom<PrevDomain, Domain, Codomain, F, Self>where
Self: Sized,
F: Homomorphism<PrevDomain, Domain>,
x -> self.map(prev.map(x)).Source§fn mul_assign_ref_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>(
&self,
lhs: &mut Codomain::Element,
rhs: &First::Element,
hom: H,
)
fn mul_assign_ref_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>( &self, lhs: &mut Codomain::Element, rhs: &First::Element, hom: H, )
Source§fn mul_assign_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>(
&self,
lhs: &mut Codomain::Element,
rhs: First::Element,
hom: H,
)
fn mul_assign_map_through_hom<First: ?Sized + RingBase, H: Homomorphism<First, Domain>>( &self, lhs: &mut Codomain::Element, rhs: First::Element, hom: H, )
Auto Trait Implementations§
impl<R, S> Freeze for FreeAlgebraHom<R, S>
impl<R, S> RefUnwindSafe for FreeAlgebraHom<R, S>where
<<S as RingStore>::Type as RingExtension>::BaseRing: Sized,
R: RefUnwindSafe,
S: RefUnwindSafe,
<<S as RingStore>::Type as RingBase>::Element: RefUnwindSafe,
impl<R, S> Send for FreeAlgebraHom<R, S>
impl<R, S> Sync for FreeAlgebraHom<R, S>
impl<R, S> Unpin for FreeAlgebraHom<R, S>
impl<R, S> UnsafeUnpin for FreeAlgebraHom<R, S>where
<<S as RingStore>::Type as RingExtension>::BaseRing: Sized,
R: UnsafeUnpin,
S: UnsafeUnpin,
<<S as RingStore>::Type as RingBase>::Element: UnsafeUnpin,
impl<R, S> UnwindSafe for FreeAlgebraHom<R, S>where
<<S as RingStore>::Type as RingExtension>::BaseRing: Sized,
R: UnwindSafe,
S: UnwindSafe,
<<S as RingStore>::Type as RingBase>::Element: UnwindSafe,
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> 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