Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Explanations about skippable #11984

Merged
merged 1 commit into from
Feb 13, 2025
Merged

chore: Explanations about skippable #11984

merged 1 commit into from
Feb 13, 2025

Conversation

jeanmon
Copy link
Contributor

@jeanmon jeanmon commented Feb 13, 2025

No description provided.

@jeanmon jeanmon marked this pull request as ready for review February 13, 2025 16:33
@fcarreiro fcarreiro requested review from dbanks12 and removed request for fcarreiro and Maddiaa0 February 13, 2025 16:35
@jeanmon jeanmon merged commit 19589bc into master Feb 13, 2025
72 of 73 checks passed
@jeanmon jeanmon deleted the jm/docu-skippable branch February 13, 2025 17:11

## Introduction

For each sub-trace defined in a .pil file, one can optionally add so-called "skippable" condition which allows to improve performance on prover side whenever the "skippable" condition is satisfied. It basically skips some accumulation computation in sumcheck protocol to all sub-relations pertaining to the sub-trace. More on how to define a valid "skippable" condition in the next section. We emphasize that the "skippable" mechanism does not change the behavior of the verifier and therefore does not present any security risk about soundness, i.e., it does not help a malicious prover to prove a wrong statement even if the "skippable" condition is too relaxed. What can however happen is that the verification fails when it should not (perfect completeness is not guarenteed anymore).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well, we would still have perfect completeness if we don't make mistakes in skipping things

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lucasxia01 Yep, I was describing the risk of an incorrect skippable condition. Otherwise, sure it is perfectly complete.
Do you think the last sentence is not clear enough that it is about a "too relaxed" condition?

## Strong Skippable Condition

As accumulated column values in sumcheck will be in general unknown, a way to ensure that a skippable condition guarantees that all sub-relations will be satisfied is to choose a condition which algebraically implies that all sub-relations will be zero. Typically, if
each sub-relation is of the form $sel * (\ldots) = 0$ then setting $sel == 0$ as "skippable" condition does the job. Similarly, for a list of boolean selectors $sel_1,\ldots sel_n$ and sub-relations of the form $sel_i * (\ldots) = 0$, a "skippable" condition can be picked as
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this supposed to be a product of sel_i * (\ldots)?

Copy link
Contributor Author

@jeanmon jeanmon Feb 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lucasxia01 Since they are boolean, the sum is zero only if all selectors are zero (unless the number of selectors is as large as the field order.)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'm not questioning the condition, but I see what you meant now. Just n subrelations, each of the form $sel_i * (...) = 0$

rahul-kothari pushed a commit that referenced this pull request Mar 5, 2025
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.77.0</summary>

##
[0.77.0](aztec-package-v0.76.4...aztec-package-v0.77.0)
(2025-02-14)


### Miscellaneous

* **aztec-package:** Synchronize aztec-packages versions
</details>

<details><summary>barretenberg.js: 0.77.0</summary>

##
[0.77.0](barretenberg.js-v0.76.4...barretenberg.js-v0.77.0)
(2025-02-14)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

<details><summary>aztec-packages: 0.77.0</summary>

##
[0.77.0](aztec-packages-v0.76.4...aztec-packages-v0.77.0)
(2025-02-14)


### ⚠ BREAKING CHANGES

* Only decrement the counter of an array if its address has not changed
(noir-lang/noir#7297)

### Features

* PIL relations modifications for bc decomposition
([#11935](#11935))
([6c93058](6c93058))
* Poseidon2 in vm2
([#11597](#11597))
([2c199d8](2c199d8))
* Refactor `append_tx_effects_for_blob`
([#11805](#11805))
([e5a055b](e5a055b))


### Bug Fixes

* **docs:** Update token bridge diagram
([#11982](#11982))
([e5da9ed](e5da9ed))
* Let LSP read `noirfmt.toml` for formatting files
(noir-lang/noir#7355)
([4d35d2f](4d35d2f))
* Only decrement the counter of an array if its address has not changed
(noir-lang/noir#7297)
([4d35d2f](4d35d2f))
* Test more prover agents devnet
([#11990](#11990))
([f12be5f](f12be5f))


### Miscellaneous

* Avoid u128s in brillig memory
(noir-lang/noir#7363)
([4d35d2f](4d35d2f))
* **ci:** Downgrade 4epochs test to transfer test
([#11983](#11983))
([2340aab](2340aab))
* Explanations about skippable
([#11984](#11984))
([19589bc](19589bc))
* Op wires index from 0
([#11986](#11986))
([be1b563](be1b563))
* Prep for ci3
([8edee9e](8edee9e))
* Remove browser test
([3e570be](3e570be))
* Replace relative paths to noir-protocol-circuits
([b8ba716](b8ba716))
* Some polishing on the skippable document
([#11997](#11997))
([50e0a38](50e0a38))
* Update docs about integer overflows
(noir-lang/noir#7370)
([4d35d2f](4d35d2f))
</details>

<details><summary>barretenberg: 0.77.0</summary>

##
[0.77.0](barretenberg-v0.76.4...barretenberg-v0.77.0)
(2025-02-14)


### Features

* PIL relations modifications for bc decomposition
([#11935](#11935))
([6c93058](6c93058))
* Poseidon2 in vm2
([#11597](#11597))
([2c199d8](2c199d8))


### Miscellaneous

* Explanations about skippable
([#11984](#11984))
([19589bc](19589bc))
* Op wires index from 0
([#11986](#11986))
([be1b563](be1b563))
* Some polishing on the skippable document
([#11997](#11997))
([50e0a38](50e0a38))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Mar 6, 2025
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.77.0</summary>

##
[0.77.0](AztecProtocol/aztec-packages@aztec-package-v0.76.4...aztec-package-v0.77.0)
(2025-02-14)


### Miscellaneous

* **aztec-package:** Synchronize aztec-packages versions
</details>

<details><summary>barretenberg.js: 0.77.0</summary>

##
[0.77.0](AztecProtocol/aztec-packages@barretenberg.js-v0.76.4...barretenberg.js-v0.77.0)
(2025-02-14)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

<details><summary>aztec-packages: 0.77.0</summary>

##
[0.77.0](AztecProtocol/aztec-packages@aztec-packages-v0.76.4...aztec-packages-v0.77.0)
(2025-02-14)


### ⚠ BREAKING CHANGES

* Only decrement the counter of an array if its address has not changed
(noir-lang/noir#7297)

### Features

* PIL relations modifications for bc decomposition
([#11935](AztecProtocol/aztec-packages#11935))
([6c93058](AztecProtocol/aztec-packages@6c93058))
* Poseidon2 in vm2
([#11597](AztecProtocol/aztec-packages#11597))
([2c199d8](AztecProtocol/aztec-packages@2c199d8))
* Refactor `append_tx_effects_for_blob`
([#11805](AztecProtocol/aztec-packages#11805))
([e5a055b](AztecProtocol/aztec-packages@e5a055b))


### Bug Fixes

* **docs:** Update token bridge diagram
([#11982](AztecProtocol/aztec-packages#11982))
([e5da9ed](AztecProtocol/aztec-packages@e5da9ed))
* Let LSP read `noirfmt.toml` for formatting files
(noir-lang/noir#7355)
([4d35d2f](AztecProtocol/aztec-packages@4d35d2f))
* Only decrement the counter of an array if its address has not changed
(noir-lang/noir#7297)
([4d35d2f](AztecProtocol/aztec-packages@4d35d2f))
* Test more prover agents devnet
([#11990](AztecProtocol/aztec-packages#11990))
([f12be5f](AztecProtocol/aztec-packages@f12be5f))


### Miscellaneous

* Avoid u128s in brillig memory
(noir-lang/noir#7363)
([4d35d2f](AztecProtocol/aztec-packages@4d35d2f))
* **ci:** Downgrade 4epochs test to transfer test
([#11983](AztecProtocol/aztec-packages#11983))
([2340aab](AztecProtocol/aztec-packages@2340aab))
* Explanations about skippable
([#11984](AztecProtocol/aztec-packages#11984))
([19589bc](AztecProtocol/aztec-packages@19589bc))
* Op wires index from 0
([#11986](AztecProtocol/aztec-packages#11986))
([be1b563](AztecProtocol/aztec-packages@be1b563))
* Prep for ci3
([8edee9e](AztecProtocol/aztec-packages@8edee9e))
* Remove browser test
([3e570be](AztecProtocol/aztec-packages@3e570be))
* Replace relative paths to noir-protocol-circuits
([b8ba716](AztecProtocol/aztec-packages@b8ba716))
* Some polishing on the skippable document
([#11997](AztecProtocol/aztec-packages#11997))
([50e0a38](AztecProtocol/aztec-packages@50e0a38))
* Update docs about integer overflows
(noir-lang/noir#7370)
([4d35d2f](AztecProtocol/aztec-packages@4d35d2f))
</details>

<details><summary>barretenberg: 0.77.0</summary>

##
[0.77.0](AztecProtocol/aztec-packages@barretenberg-v0.76.4...barretenberg-v0.77.0)
(2025-02-14)


### Features

* PIL relations modifications for bc decomposition
([#11935](AztecProtocol/aztec-packages#11935))
([6c93058](AztecProtocol/aztec-packages@6c93058))
* Poseidon2 in vm2
([#11597](AztecProtocol/aztec-packages#11597))
([2c199d8](AztecProtocol/aztec-packages@2c199d8))


### Miscellaneous

* Explanations about skippable
([#11984](AztecProtocol/aztec-packages#11984))
([19589bc](AztecProtocol/aztec-packages@19589bc))
* Op wires index from 0
([#11986](AztecProtocol/aztec-packages#11986))
([be1b563](AztecProtocol/aztec-packages@be1b563))
* Some polishing on the skippable document
([#11997](AztecProtocol/aztec-packages#11997))
([50e0a38](AztecProtocol/aztec-packages@50e0a38))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants