Feature/sumcheck circuit (#47)
* feat: init sumcheck.rs
* chore: rename
* feat: update lib and add trait for transcript with vec storing challenges
* bugfix: mut self ref of transcript
* feat: tentative sum-check using poseidon
* refactor: remove extension trait and use initial trait
* refactor: stop using extension trait, use initial Transcript trait
* feat: generic over CurveGroup sum-check verifier and algorithm
* feat: implement generic sum-check veriy
* bugfix: cargo clippy --fix
* chore: cargo fmt
* feat: (unstable) sum-check implementation
* feat: start benches
* chore: run clippy
* chore: run cargo fmt
* feat: add sum-check tests + benches
* chore: clippy + fmt
* chore: remove unstable sumcheck
* chore: delete duplicated sum-check code
* chore: remove deleted sum-check code from lib.rs imports
* feat: remove non generic traits, implement sum-check with generic trait and add test
* chore: remove non-generic struct
* chore: remove non generic verifier
* feat: make nifms generic over transcript and update to use poseidon transcript
* chore: cargo fmt
* chore: remove tmp benches
* chore: update cargo.toml
* refactor: remove Generic suffix
* feat: prover state generic over CurveGroup
* chore: disable clippy type complexity warning
* refactor: remove Transcript type and espresso transcript dependency
* refactor: SumCheckProver generic over CurveGroup
* feat: init sumcheck.rs
* chore: rename
* feat: update lib and add trait for transcript with vec storing challenges
* bugfix: mut self ref of transcript
* feat: tentative sum-check using poseidon
* refactor: stop using extension trait, use initial Transcript trait
* feat: generic over CurveGroup sum-check verifier and algorithm
* feat: implement generic sum-check veriy
* bugfix: cargo clippy --fix
* chore: cargo fmt
* feat: (unstable) sum-check implementation
* feat: start benches
* chore: run clippy
* chore: run cargo fmt
* feat: add sum-check tests + benches
* chore: clippy + fmt
* chore: remove unstable sumcheck
* chore: delete duplicated sum-check code
* chore: remove deleted sum-check code from lib.rs imports
* feat: remove non generic traits, implement sum-check with generic trait and add test
* chore: remove non-generic struct
* chore: remove non generic verifier
* feat: make nifms generic over transcript and update to use poseidon transcript
* chore: cargo fmt
* chore: remove tmp benches
* chore: update cargo.toml
* refactor: remove Generic suffix
* feat: prover state generic over CurveGroup
* chore: disable clippy type complexity warning
* refactor: remove Transcript type and espresso transcript dependency
* refactor: SumCheckProver generic over CurveGroup
* feat: adds `compute_lagrange_poly`, returning a `DensePolynomial` to extract coeffs from
* chore: add assert on interpolated poly degree vs initial poly degree
* refactor: use `compute_lagrange_poly` in `SumCheckVerifier` instead of `interpolate_uni_poly`
* refactor: have `TranscriptVar` be generic over `CurveGroup` for consistency
* refactor: change back to being generic over field
* feat: start to use `PoseidonTranscriptVar` struct
* chore: add line to eof for `Cargo.toml`
* chore: naming consistency with espresso/sum_check folder
* bugfix: add error handling on sum-check prove and verify
* chore: clippy fix
* chore: add line at eof
* feat: switch to using coeffs instead of evals in sum-check
* bugfix: tmp remove sanity check in nimfs
* refactor: update sanity check
* refactor: update verifier evaluation form + add comment
* chore: run clippy
* fix: correct merge artifacts
* feat: verify circuit passing
* refactor: change naming to use the `Gadget` suffix, update `verify_sumcheck` to not have `&self` as first argument, update test
* feat: testing on polynomials with various number of variables
* refactor: update method name
* fix: avoid rust-analyzer from complaining
* fix: fix clippy complains
* chore: cargo clippy
* chore: udpate arg name for `SumCheckVerifierGadget`
* refactor: remove unnecessary cloning in sumcheck circuit
* refactor: impl `get_poly_vars_from_sumcheck_proof` for `IOPProof`
* chore: group imports
* refactor: update `P(0) + P(1)` and name it `eval`
* chore: clippy + fmt
* refactor: move `compute_lagrange_poly` to `utils`
* fix: wrong import
* chore: cargo fmt
* refactor: absorb num vars and max degree within sumcheck circuit
* refactor: update name to `compute_lagrange_interpolated_poly` and add comment
* feat: create `IOPProofVar`, which implements the `AllocVar` trait
* fix: clippy allow `type_complexity` on return type of `SumCheckVerifierGadget`
* refactor: use `VPAuxInfo` instead of virtual type, remove `_` prefix in params name
* feat: add tests on computed & returned values from `verify`
* refactor: use `new_witness` instead of `new_variable`
Co-authored-by: arnaucube <root@arnaucube.com>
* chore: clippy
* fix: remove `unwrap()` within `verify()`
Co-authored-by: arnaucube <root@arnaucube.com>
* chore: add comment on `unwrap()`
* refactor: move `compute_lagrange_interpolated_poly` tests to `lagrange_poly.rs`
---------
Co-authored-by: arnaucube <root@arnaucube.com>