use crate::error::CompSigmaError;
use ark_ff::Field;
pub trait LinearForm<F: Field>: Sized {
fn eval(&self, x: &[F]) -> F;
fn scale(&self, scalar: &F) -> Self;
fn add(&self, other: &Self) -> Self;
fn split_in_half(&self) -> (Self, Self);
fn size(&self) -> usize;
fn pad(&self, new_size: usize) -> Self;
}
pub trait Homomorphism<F: Field>: Sized {
type Output;
fn eval(&self, x: &[F]) -> Result<Self::Output, CompSigmaError>;
fn scale(&self, scalar: &F) -> Self;
fn add(&self, other: &Self) -> Result<Self, CompSigmaError>;
fn split_in_half(&self) -> (Self, Self);
fn size(&self) -> usize;
fn pad(&self, new_size: usize) -> Self;
}