MuResolutionHomomorphism

Struct MuResolutionHomomorphism 

Source
pub struct MuResolutionHomomorphism<const U: bool, CC1, CC2>
where CC1: FreeChainComplex<U>, CC1::Algebra: MuAlgebra<U>, CC2: ChainComplex<Algebra = CC1::Algebra>,
{ name: String, pub source: Arc<CC1>, pub target: Arc<CC2>, maps: OnceBiVec<Arc<MuFreeModuleHomomorphism<U, CC2::Module>>>, pub shift: Bidegree, save_dir: SaveDirectory, }
Expand description

A chain complex homomorphims from a FreeChainComplex. This contains logic to lift chain maps using the freeness.

Fields§

§name: String§source: Arc<CC1>§target: Arc<CC2>§maps: OnceBiVec<Arc<MuFreeModuleHomomorphism<U, CC2::Module>>>§shift: Bidegree§save_dir: SaveDirectory

Implementations§

Source§

impl<const U: bool, CC1, CC2> MuResolutionHomomorphism<U, CC1, CC2>
where CC1: FreeChainComplex<U>, CC1::Algebra: MuAlgebra<U>, CC2: ChainComplex<Algebra = CC1::Algebra>,

Source

pub fn new( name: String, source: Arc<CC1>, target: Arc<CC2>, shift: Bidegree, ) -> Self

Source

pub fn name(&self) -> &str

Source

pub fn algebra(&self) -> Arc<CC1::Algebra>

Source

pub fn next_homological_degree(&self) -> i32

Source

fn get_map_ensure_length( &self, input_s: i32, ) -> &MuFreeModuleHomomorphism<U, CC2::Module>

Source

pub fn get_map( &self, input_s: i32, ) -> Arc<MuFreeModuleHomomorphism<U, CC2::Module>>

Returns the chain map on the sth source module.

Source

pub fn save_dir(&self) -> &SaveDirectory

Source§

impl<const U: bool, CC1, CC2> MuResolutionHomomorphism<U, CC1, CC2>
where CC1: FreeChainComplex<U>, CC1::Algebra: MuAlgebra<U>, CC2: ChainComplex<Algebra = CC1::Algebra>,

Source

pub fn extend(&self, max: Bidegree)

Extend the resolution homomorphism such that it is defined on degrees (max_s, max_t).

This assumes in yet-uncomputed bidegrees, the homology of the source consists only of decomposables (e.g. it is trivial). More precisely, we assume MuResolutionHomomorphism::extend_step_raw can be called with extra_images = None.

Source

pub fn extend_through_stem(&self, max: Bidegree)

Extend the resolution homomorphism such that it is defined on degrees (max_n, max_s).

This assumes in yet-uncomputed bidegrees, the homology of the source consists only of decomposables (e.g. it is trivial). More precisely, we assume MuResolutionHomomorphism::extend_step_raw can be called with extra_images = None.

Source

pub fn extend_all(&self)

Extend the resolution homomorphism as far as possible, as constrained by how much the source and target have been resolved.

This assumes in yet-uncomputed bidegrees, the homology of the source consists only of decomposables (e.g. it is trivial). More precisely, we assume MuResolutionHomomorphism::extend_step_raw can be called with extra_images = None.

Source

pub fn extend_profile<AUX: Sync>(&self, max: BidegreeRange<'_, AUX>)

Extends the resolution homomorphism up to a given range. This range is first specified by the maximum s, then the maximum t for each s. This should rarely be used directly; instead one should use MuResolutionHomomorphism::extend, MuResolutionHomomorphism::extend_through_stem and ResolutionHomomorphism::extend_all as appropriate.

Note that unlike the more specific versions of this function, the bounds max_s and max_t are exclusive.

This assumes in yet-uncomputed bidegrees, the homology of the source consists only of decomposables (e.g. it is trivial). More precisely, we assume MuResolutionHomomorphism::extend_step_raw can be called with extra_images = None.

Source

pub fn extend_step_raw( &self, input: Bidegree, extra_images: Option<Vec<FpVector>>, ) -> Range<i32>

Extend the MuResolutionHomomorphism to be defined on (input_s, input_t). The resulting homomorphism f is a chain map such that if g is the kth generator in the source such that d(g) = 0, then f(g) is the kth row of extra_images.

The user should call this function explicitly to manually define the chain map where the chain complex is not exact, and then call MuResolutionHomomorphism::extend_all to extend the rest by exactness.

Source§

impl<const U: bool, CC1, CC2> MuResolutionHomomorphism<U, CC1, CC2>
where CC1: FreeChainComplex<U>, CC1::Algebra: MuAlgebra<U>, CC2: AugmentedChainComplex<Algebra = CC1::Algebra>,

Source

pub fn from_class( name: String, source: Arc<CC1>, target: Arc<CC2>, shift: Bidegree, class: &[u32], ) -> Self

Source

pub fn extend_step( &self, input: Bidegree, extra_images: Option<&Matrix>, ) -> Range<i32>

Extend the MuResolutionHomomorphism to be defined on (input_s, input_t). The resulting homomorphism f is a chain map such that if g is the kth generator in the source such that d(g) = 0, then the image of f(g) in the augmentation of the target is the kth row of extra_images.

The user should call this function explicitly to manually define the chain map where the chain complex is not exact, and then call MuResolutionHomomorphism::extend_all to extend the rest by exactness.

Source§

impl<const U: bool, CC1, CC2> MuResolutionHomomorphism<U, CC1, CC2>

Source

pub fn from_module_homomorphism( name: String, source: Arc<CC1>, target: Arc<CC2>, f: &impl ModuleHomomorphism<Source = <<CC1 as AugmentedChainComplex>::TargetComplex as ChainComplex>::Module, Target = <<CC2 as AugmentedChainComplex>::TargetComplex as ChainComplex>::Module>, ) -> Self

Construct a chain map that lifts a given module homomorphism.

Source§

impl<const U: bool, CC1, CC2> MuResolutionHomomorphism<U, CC1, CC2>
where CC1: FreeChainComplex<U>, CC1::Algebra: MuAlgebra<U>, CC2: FreeChainComplex<U, Algebra = CC1::Algebra>,

Source

pub fn act(&self, result: FpSliceMut<'_>, coef: u32, g: BidegreeGenerator)

Given a chain map $f: C \to C’$ between free chain complexes, apply $$ \Hom(f, k): \Hom(C’, k) \to \Hom(C, k) $$ to the specified generator of $\Hom(C’, k)$.

Auto Trait Implementations§

§

impl<const U: bool, CC1, CC2> !Freeze for MuResolutionHomomorphism<U, CC1, CC2>

§

impl<const U: bool, CC1, CC2> RefUnwindSafe for MuResolutionHomomorphism<U, CC1, CC2>
where CC1: RefUnwindSafe, CC2: RefUnwindSafe,

§

impl<const U: bool, CC1, CC2> Send for MuResolutionHomomorphism<U, CC1, CC2>

§

impl<const U: bool, CC1, CC2> Sync for MuResolutionHomomorphism<U, CC1, CC2>

§

impl<const U: bool, CC1, CC2> Unpin for MuResolutionHomomorphism<U, CC1, CC2>

§

impl<const U: bool, CC1, CC2> !UnwindSafe for MuResolutionHomomorphism<U, CC1, CC2>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more