Use a `Polynomial` type instead of `Vec<E::Fr>`
Operations over polynomial and commitment would be changed because of the new type definition. https://github.com/LayerXcom/zero-chain/blob/d866d2e469ff4c9ee3b58db061fe25e71fbd765f/core/sonic/src/polynomials/mod.rs#L6
It could be type alias.
You might want +, *, etc. defined, which prevents using a type alias. You might check into using both Vec and SmallVec with roughly:
pub struct Polynomial<E,V>(V)
where E: Engine: V: Borrow<[E::Fr]>+BorrowMut<[E::Fr]>+Default;
Appears VecLike was deprecated in favor of just Extend though, so maybe mutation does not work so well.
LGTM! It should be implemented as operator overloadings. I've never used SmallVec. How much would it be optimized actually?