//! Inside the Posedion paper, they describe that the internal layers of the hash
//! function do not require the full properties of MDS matrices.
//!
//! > For the partial rounds, the MDS property is not required anymore, and
//! > we can set up the matrix MI focusing only on providing full diffusion, breaking
//! > arbitrarily long subspace trails, and ensuring that the polynomial representation
//! > of the scheme is dense." (Section 5.2)
//!
//! > These properties can be ensured by checking the following two conditions:
//! > Every entry of the Matrix is non 0.
//! > The characteristic polynomial of the matrix is irreducible.
//!
//! This file implements a trait for linear layers that satisfy these three properties.
use ;
use Permutation;