Trait TowerField

Source
pub trait TowerField: BinaryField {
    const TOWER_LEVEL: usize = _;

    // Required method
    fn min_tower_level(self) -> usize;

    // Provided methods
    fn basis(iota: usize, i: usize) -> Result<Self, Error> { ... }
    fn mul_primitive(self, iota: usize) -> Result<Self, Error> { ... }
}
Expand description

A binary field isomorphic to a binary tower field.

The canonical binary field tower construction is specified in DP23, section 2.3. This is a family of binary fields with extension degree $2^{\iota}$ for any tower height $\iota$. This trait can be implemented on any binary field isomorphic to the canonical tower field.

Provided Associated Constants§

Source

const TOWER_LEVEL: usize = _

The level $\iota$ in the tower, where this field is isomorphic to $T_{\iota}$.

Required Methods§

Source

fn min_tower_level(self) -> usize

Returns the smallest valid TOWER_LEVEL in the tower that can fit the same value.

Since which TOWER_LEVEL values are valid depends on the tower, F::Canonical::from(elem).min_tower_level() can return a different result from elem.min_tower_level().

Provided Methods§

Source

fn basis(iota: usize, i: usize) -> Result<Self, Error>

Returns the i’th basis element of this field as an extension over the tower subfield with level $\iota$.

Source

fn mul_primitive(self, iota: usize) -> Result<Self, Error>

Multiplies a field element by the canonical primitive element of the extension $T_{\iota + 1} / T_{iota}$.

We represent the tower field $T_{\iota + 1}$ as a vector space over $T_{\iota}$ with the basis ${1, \beta^{(\iota)}_1}$. This operation multiplies the element by $\beta^{(\iota)}_1$.

§Throws
  • Error::ExtensionDegreeTooHigh if iota >= Self::TOWER_LEVEL

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§