Skip to main content

PermutationMonomial

Trait PermutationMonomial 

Source
pub trait PermutationMonomial<const N: u64>: InjectiveMonomial<N> {
    // Required method
    fn injective_exp_root_n(&self) -> Self;
}
Expand description

A ring implements PermutationMonomial<N> if the algebraic function f(x) = x^N is invertible and thus acts as a permutation on elements of the ring.

In all cases we care about, this means that we can find another integer K such that x = x^{NK} for all elements of our ring.

Required Methods§

Source

fn injective_exp_root_n(&self) -> Self

Compute x -> x^K for a given K > 1 such that x^{NK} = x for all elements x.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl PermutationMonomial<7> for Goldilocks

Source§

fn injective_exp_root_n(&self) -> Goldilocks

In the field Goldilocks, a^{1/7} is equal to a^{10540996611094048183}.

This follows from the calculation 7*10540996611094048183 = 4*(2^64 - 2**32) + 1 = 1 mod (p - 1).

Source§

impl<FP, const D: u64> PermutationMonomial<D> for MontyField31<FP>

Implementors§