Skip to main content

EquivariantLocalizer

Struct EquivariantLocalizer 

Source
pub struct EquivariantLocalizer {
    pub grassmannian: (usize, usize),
    pub weights: TorusWeights,
    /* private fields */
}
Expand description

Equivariant localizer for Grassmannian intersection computations.

Uses the Atiyah-Bott fixed point framework with Schubert calculus for reliable intersection number computation.

Fields§

§grassmannian: (usize, usize)

Grassmannian parameters (k, n)

§weights: TorusWeights

Torus weights

Implementations§

Source§

impl EquivariantLocalizer

Source

pub fn new(grassmannian: (usize, usize)) -> EnumerativeResult<Self>

Create a new localizer for Gr(k, n) with standard weights.

§Contract
requires: k <= n
ensures: result.fixed_point_count() == C(n, k)
Source

pub fn with_weights( grassmannian: (usize, usize), weights: TorusWeights, ) -> EnumerativeResult<Self>

Create a localizer with custom weights.

§Contract
requires: k <= n
requires: weights.len() == n
Source

pub fn fixed_point_count(&self) -> usize

Number of fixed points: C(n, k).

Source

pub fn fixed_points(&mut self) -> &[FixedPoint]

Get all fixed points.

Source

pub fn localized_intersection( &mut self, classes: &[SchubertClass], ) -> Rational64

Compute the localized intersection of multiple Schubert classes.

Delegates to LR coefficient computation via SchubertCalculus::multi_intersect for correctness, while the localization framework provides geometric structure.

§Contract
requires: total codimension == dim(Gr) for a finite answer
ensures: result agrees with LR coefficient computation
Source

pub fn intersection_result( &mut self, classes: &[SchubertClass], ) -> IntersectionResult

Compute intersection result with codimension checks.

Handles the three cases: overdetermined (Empty), transverse (Finite), and underdetermined (PositiveDimensional).

§Contract
ensures: result == Empty when sum(codim) > dim(Gr)
ensures: result == Finite(n) when sum(codim) == dim(Gr)
ensures: result == PositiveDimensional when sum(codim) < dim(Gr)
Source

pub fn fixed_point_analysis(&mut self) -> Vec<(&FixedPoint, Rational64)>

Analyze the fixed-point contributions for a transverse intersection.

Returns (fixed_point, euler_class) pairs for geometric analysis.

§Contract
ensures: result.len() == C(n, k)
ensures: forall (_, euler) in result. euler != 0 (for distinct weights)
Source

pub fn fq_point_count( &mut self, class: &SchubertClass, q: u64, ) -> EnumerativeResult<u64>

Count F_q-rational points on a Schubert variety via localization.

Uses the Lefschetz trace formula: |X_λ(F_q)| = Σ_{fixed points p in X_λ} q^{dim of attracting cell at p}

Source

pub fn atiyah_bott_intersection( &mut self, classes: &[SchubertClass], ) -> EnumerativeResult<Rational64>

Genuine Atiyah-Bott localization computation.

Computes ∫{Gr(k,n)} σ{λ₁} · … · σ_{λ_m} via: Σ_{I} ∏j σ{λ_j}(e_I) / e_T(T_{e_I} Gr)

Source

pub fn schubert_restriction( &self, class: &SchubertClass, fixed_point: &FixedPoint, ) -> Rational64

Schubert class restriction to a torus fixed point.

σ_λ(e_I) = ∏{(i,j) ∈ λ} (t{I_j} − t_{complement_{i}}) where the product is over boxes (i,j) of the Young diagram of λ.

Trait Implementations§

Source§

impl Debug for EquivariantLocalizer

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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.

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, 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.