feat(honk): Shared relation arithmetic#514
Merged
ledwards2225 merged 4 commits intomasterfrom Jun 12, 2023
Merged
Conversation
ledwards2225
commented
Jun 7, 2023
| } | ||
| } | ||
|
|
||
| /** |
Collaborator
Author
There was a problem hiding this comment.
Note: this was an earlier iteration of the method instantiate_barycentric_utils, defined just above, which is the one actually being used. This was never meant to go in and this is the first I'm noticing it so I'm deleting it in this unrelated PR.
8791ff1 to
552b185
Compare
|
Since this only modifies honk related code -- marking this feature as non-breaking while the honk codepath not known to be used externally |
552b185 to
267f67d
Compare
zac-williamson
approved these changes
Jun 12, 2023
ludamad
pushed a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Jul 22, 2023
* a working version of shared relation arithmetic * add RelationWrapper
ludamad
pushed a commit
to AztecProtocol/aztec-packages
that referenced
this pull request
Jul 24, 2023
* a working version of shared relation arithmetic * add RelationWrapper
This was referenced Jul 25, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Introduces a framework that allows the relation arithmetic to be shared between the prover and verifier.
The sumcheck prover and verifier accumulate the contributions from each relation (really, each sub-relation) into, respectively, Univariates and individual field elements. When performing relation arithmetic on Univariates, we introduce UnivariateViews to reduce full length Univariates to the minimum required length and to avoid unnecessary copies.
To share the relation arithmetic. we introduce simple structs that specify two types:
AccumulatorsandAccumulatorViews. For the prover, who accumulates Univariates, these are respectivelystd::tuple<Univariate>andstd::tuple<UnivariateView>. For the verifier, who accumulatesFFs, both types are simply aliases forstd::array<FF>(since no "view" type is necessary). The containersstd::tupleandstd::arrayare needed to accommodate multiple sub-relations within each relation, where, for efficiency, each sub-relation has its own specified degree.Checklist:
/markdown/specshave been updated.@briefdescribing the intended functionality.