pub struct SecondaryResolution<CC: FreeChainComplex>where
CC::Algebra: PairAlgebra,{
underlying: Arc<CC>,
pub(crate) homotopies: OnceBiVec<SecondaryHomotopy<CC::Algebra>>,
intermediates: DashMap<BidegreeGenerator, FpVector>,
}Fields§
§underlying: Arc<CC>§homotopies: OnceBiVec<SecondaryHomotopy<CC::Algebra>>s -> t -> idx -> homotopy
intermediates: DashMap<BidegreeGenerator, FpVector>Implementations§
Source§impl<CC: FreeChainComplex> SecondaryResolution<CC>where
CC::Algebra: PairAlgebra,
impl<CC: FreeChainComplex> SecondaryResolution<CC>where
CC::Algebra: PairAlgebra,
Trait Implementations§
Source§impl<CC: FreeChainComplex> SecondaryLift for SecondaryResolution<CC>where
CC::Algebra: PairAlgebra,
impl<CC: FreeChainComplex> SecondaryLift for SecondaryResolution<CC>where
CC::Algebra: PairAlgebra,
type Algebra = <CC as ChainComplex>::Algebra
type Source = CC
type Target = CC
type Underlying = CC
fn underlying(&self) -> Arc<CC>
fn algebra(&self) -> Arc<Self::Algebra>
fn source(&self) -> Arc<Self::Source>
fn target(&self) -> Arc<Self::Target>
fn shift(&self) -> Bidegree
fn max(&self) -> BidegreeRange<'_, Self>
fn homotopies(&self) -> &OnceBiVec<SecondaryHomotopy<CC::Algebra>>
fn intermediates(&self) -> &DashMap<BidegreeGenerator, FpVector>
fn save_dir(&self) -> &SaveDirectory
fn composite(&self, s: i32) -> CompositeData<CC::Algebra>
fn compute_intermediate(&self, g: BidegreeGenerator) -> FpVector
Source§const HIT_GENERATOR: bool = false
const HIT_GENERATOR: bool = false
Whether the composite can hit generators. This is true for
SecondaryChainHomotopy and
false for the rest. This is important because for SecondaryResolution, we don’t
actually know all the generators if we resolve up to a stem. So in composites for
SecondaryResolution, we need to ignore target generators of the same degree uniformly.fn prime(&self) -> ValidPrime
fn initialize_homotopies(&self)
fn compute_composites(&self)
fn get_intermediate(&self, g: BidegreeGenerator) -> FpVector
fn compute_partial(&self, s: i32)
fn compute_intermediates(&self)
fn compute_homotopy_step(&self, b: Bidegree) -> Range<i32>
fn compute_homotopies(&self)
fn extend_all(&self)
Auto Trait Implementations§
impl<CC> !Freeze for SecondaryResolution<CC>
impl<CC> !RefUnwindSafe for SecondaryResolution<CC>
impl<CC> Send for SecondaryResolution<CC>
impl<CC> Sync for SecondaryResolution<CC>
impl<CC> Unpin for SecondaryResolution<CC>
impl<CC> !UnwindSafe for SecondaryResolution<CC>
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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