-
Notifications
You must be signed in to change notification settings - Fork 48
CERT 8687 Realistic example #167
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
Conversation
johspaeth
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This example is way better now and easier to me. Looks good to me.
Is this subsuming #166 or do we take both examples?
We want to keep both PRs. So this can be merged alongside version 8. I added a label. |
|
Assigning @johspaeth (or someone from his team) to complete and merge this Example. |
| @@ -0,0 +1,45 @@ | |||
| # Sorted Array Invariant Example | |||
|
|
|||
| This folder illustrates how the **new** `requireInvariant` semantics handle a **sorted array** property more accurately than the old semantics. We have: | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
from version xxx instead of new
| ## Comparing Execution Outputs | ||
|
|
||
| - **Old Semantics** | ||
| [View Output](https://vaas-stg.certora.com/output/1512/784d8a16d9c748ad980619483fe391b0?anonymousKey=4754ecd79909b410927a0af9c3d77afda15d6534) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
links to prover.certora.com are better (they don't break...)
|
|
||
| ### Buggy Implementation | ||
|
|
||
| - **Old semantics**: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
version below 8.0 sematics
|
|
||
| ### Correct Implementation | ||
|
|
||
| - **Old semantics**: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Below version 8.0 semantics
| [View Output](https://prover.certora.com/output/40726/1636fb234bc74a1bba7f7ee9678b9c4f/?anonymousKey=ff15dfcf8a4da66107d4d7c7f04a49416e992b4d) | ||
| *May incorrectly verify even if the array is temporarily unsorted.* | ||
|
|
||
| - **New semantics**: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From version 8.0 semantics
* Add an example on how to reason about events in CVL (#174) * 7.26.0 Release (#163) * Niv/cert 8248 revert example (#155) * CERT 8248 Add Revert Example * Update README * Address Christiane review * Update example based on Nurit Review * Clean * Update config.yml (#160) Co-authored-by: yoav-el-certora <[email protected]> * Example ready * christiane cr * Code reviews --------- Co-authored-by: Niv vaknin <[email protected]> Co-authored-by: liav-certora <[email protected]> Co-authored-by: liav-certora <[email protected]> * Bug fixed * Add an example on how to reason about events in CVL * Addressing code reviews * Addressing Christiane's CR * Issue with merge resolution * Revert "Bug fixed" This reverts commit 33b87b9. * Reverse incorrect change after merge --------- Co-authored-by: yoav-el-certora <[email protected]> Co-authored-by: Niv vaknin <[email protected]> Co-authored-by: liav-certora <[email protected]> Co-authored-by: liav-certora <[email protected]> Co-authored-by: Otakar <[email protected]> * Removed Process from conf file * Removed send_only from conf file * add a simple example with a transient field and hooks and direct storage accesses on it * remove rule sanity Co-authored-by: Johannes Späth <[email protected]> * remove ambiguity * CERT 8687 Realistic example (#167) * CERT 8687 Realistic example * fix spec, sanity issue * fix * require invariant example * Update README * Update CVLByExample/Invariant/RequireInvariantArray/README.md * Addressing Nurit's CR --------- Co-authored-by: Nurit Dor <[email protected]> Co-authored-by: Johannes Späth <[email protected]> Co-authored-by: Johannes Spaeth <[email protected]> * Re routing example (#180) * Re routing example * Updating example --------- Co-authored-by: Johannes Spaeth <[email protected]> * Niv/fix sanity failure (#183) * Fix some of the sanity failure * Fixing specification to not have sanity failures runFullPool.conf -> https://vaas-stg.certora.com/output/53900/a7ab7f221da84eb4accea1c95e936803?anonymousKey=e063b8e60bae944b4a9d0d0431999b5bd4b578ea runBroken.con -> https://vaas-stg.certora.com/output/53900/c85b8c49fec24d32ac0de00043d7ddd6?anonymousKey=a6c585f91d010a7c13f1c6d8935143b894a0c05d * Updates to spec * Self-Review --------- Co-authored-by: Johannes Spaeth <[email protected]> Co-authored-by: yoav-el-certora <[email protected]> * Added fixes to breaking changes (#190) * foundry toml * comment * branch * branch * branch * Add an example for internal function calls (#191) * add an example for internal function calls * Update CVLByExample/InternalFunctionsFromCVL/README.md Co-authored-by: Johannes Späth <[email protected]> --------- Co-authored-by: Johannes Späth <[email protected]> * Added foundry installation to CI (#194) --------- Co-authored-by: Johannes Späth <[email protected]> Co-authored-by: Niv vaknin <[email protected]> Co-authored-by: liav-certora <[email protected]> Co-authored-by: liav-certora <[email protected]> Co-authored-by: Otakar <[email protected]> Co-authored-by: Christiane Goltz <[email protected]> Co-authored-by: Nurit Dor <[email protected]> Co-authored-by: Johannes Spaeth <[email protected]> Co-authored-by: rahav <[email protected]> Co-authored-by: Rahav <[email protected]> Co-authored-by: Naftali Goldstein <[email protected]>
https://certora.atlassian.net/browse/CERT-8687
Note We need to adjust the example as the invariant is currently violated in both semantic versions.
@nd-certora let me know how to fix it.