pub struct HomPullback<M: Module> {
source: Arc<HomModule<M>>,
target: Arc<HomModule<M>>,
map: Arc<FreeModuleHomomorphism<FreeModule<M::Algebra>>>,
images: OnceBiVec<Subspace>,
kernels: OnceBiVec<Subspace>,
quasi_inverses: OnceBiVec<QuasiInverse>,
}Expand description
Given a map $\mathtt{map}: A \to B$ and hom modules $\mathtt{source} = \Hom(B, X)$, $\mathtt{target} = \Hom(A, X)$, produce the induced pullback map $\Hom(B, X) \to \Hom(A, X)$.
Fields§
§source: Arc<HomModule<M>>§target: Arc<HomModule<M>>§map: Arc<FreeModuleHomomorphism<FreeModule<M::Algebra>>>§images: OnceBiVec<Subspace>§kernels: OnceBiVec<Subspace>§quasi_inverses: OnceBiVec<QuasiInverse>Implementations§
Source§impl<M: Module> HomPullback<M>
impl<M: Module> HomPullback<M>
pub fn new( source: Arc<HomModule<M>>, target: Arc<HomModule<M>>, map: Arc<FreeModuleHomomorphism<FreeModule<M::Algebra>>>, ) -> Self
Trait Implementations§
Source§impl<M: Module> ModuleHomomorphism for HomPullback<M>
impl<M: Module> ModuleHomomorphism for HomPullback<M>
type Source = HomModule<M>
type Target = HomModule<M>
fn source(&self) -> Arc<Self::Source>
fn target(&self) -> Arc<Self::Target>
fn degree_shift(&self) -> i32
fn min_degree(&self) -> i32
Source§fn apply_to_basis_element(
&self,
result: FpSliceMut<'_>,
coeff: u32,
fn_degree: i32,
fn_idx: usize,
)
fn apply_to_basis_element( &self, result: FpSliceMut<'_>, coeff: u32, fn_degree: i32, fn_idx: usize, )
Calling this function when
input_idx < source().dimension(input_degree) results in
undefined behaviour. Implementations are encouraged to panic when this happens (this is
usually the case because of out-of-bounds errors.fn compute_auxiliary_data_through_degree(&self, degree: i32)
fn quasi_inverse(&self, degree: i32) -> Option<&QuasiInverse>
fn kernel(&self, degree: i32) -> Option<&Subspace>
fn image(&self, degree: i32) -> Option<&Subspace>
fn apply( &self, result: FpSliceMut<'_>, coeff: u32, input_degree: i32, input: FpSlice<'_>, )
fn prime(&self) -> ValidPrime
Source§fn auxiliary_data(&self, degree: i32) -> (Subspace, Subspace, QuasiInverse)
fn auxiliary_data(&self, degree: i32) -> (Subspace, Subspace, QuasiInverse)
Compute the auxiliary data associated to the homomorphism at input degree
degree. Returns
it in the order image, kernel, quasi_inverseSource§fn get_matrix(&self, matrix: MatrixSliceMut<'_>, degree: i32)
fn get_matrix(&self, matrix: MatrixSliceMut<'_>, degree: i32)
Source§fn get_partial_matrix(&self, degree: i32, inputs: &[usize]) -> Matrix
fn get_partial_matrix(&self, degree: i32, inputs: &[usize]) -> Matrix
Get the values of the homomorphism on the specified inputs to
matrix.Source§fn apply_quasi_inverse(
&self,
result: FpSliceMut<'_>,
degree: i32,
input: FpSlice<'_>,
) -> bool
fn apply_quasi_inverse( &self, result: FpSliceMut<'_>, degree: i32, input: FpSlice<'_>, ) -> bool
Attempt to apply quasi inverse to the input. Returns whether the operation was
successful. This is required to either always succeed or always fail for each degree.
Auto Trait Implementations§
impl<M> !Freeze for HomPullback<M>
impl<M> RefUnwindSafe for HomPullback<M>
impl<M> Send for HomPullback<M>
impl<M> Sync for HomPullback<M>
impl<M> Unpin for HomPullback<M>
impl<M> !UnwindSafe for HomPullback<M>
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
Mutably borrows from an owned value. Read more
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>
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 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>
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