Skip to content

CERT 8687 Realistic example - #167

Merged
johspaeth merged 7 commits into
cli-betafrom
niv/CERT-8687-RequireInv
Aug 4, 2025
Merged

johspaeth merged 7 commits into
cli-betafrom
niv/CERT-8687-RequireInv

Conversation

@nivcertora

Copy link
Copy Markdown
Contributor

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.

@yoav-el-certora
yoav-el-certora requested a review from johspaeth May 19, 2025 13:19

@johspaeth johspaeth left a comment

Copy link
Copy Markdown
Contributor

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?

Comment thread CVLByExample/Invariant/RequireInvariantArray/README.md Outdated
@johspaeth

Copy link
Copy Markdown
Contributor

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.

@yoav-el-certora

yoav-el-certora commented Jul 24, 2025 •

Copy link
Copy Markdown
Contributor

Assigning @johspaeth (or someone from his team) to complete and merge this Example.

Comment thread CVLByExample/Invariant/RequireInvariantArray/README.md Outdated
@@ -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:

Copy link
Copy Markdown
Contributor

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)

Copy link
Copy Markdown
Contributor

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**:

Copy link
Copy Markdown
Contributor

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**:

Copy link
Copy Markdown
Contributor

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**:

Copy link
Copy Markdown
Contributor

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

@johspaeth
johspaeth merged commit 1dce640 into cli-beta Aug 4, 2025
yoav-el-certora added a commit that referenced this pull request Aug 11, 2025
* 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 <122207807+yoav-el-certora@users.noreply.github.com>

* Example ready

* christiane cr

* Code reviews

---------

Co-authored-by: Niv vaknin <122722245+nivcertora@users.noreply.github.com>
Co-authored-by: liav-certora <114004726+liav-certora@users.noreply.github.com>
Co-authored-by: liav-certora <liav@certora.com>

* 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 <122207807+yoav-el-certora@users.noreply.github.com>
Co-authored-by: Niv vaknin <122722245+nivcertora@users.noreply.github.com>
Co-authored-by: liav-certora <114004726+liav-certora@users.noreply.github.com>
Co-authored-by: liav-certora <liav@certora.com>
Co-authored-by: Otakar <Otakar@certora.com>

* 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 <johspaeth@users.noreply.github.com>

* 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 <57101353+nd-certora@users.noreply.github.com>
Co-authored-by: Johannes Späth <johspaeth@users.noreply.github.com>
Co-authored-by: Johannes Spaeth <johannes@certora.com>

* Re routing example (#180)

* Re routing example

* Updating example

---------

Co-authored-by: Johannes Spaeth <johannes@certora.com>

* 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 <johannes@certora.com>
Co-authored-by: yoav-el-certora <122207807+yoav-el-certora@users.noreply.github.com>

* 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 <johspaeth@users.noreply.github.com>

---------

Co-authored-by: Johannes Späth <johspaeth@users.noreply.github.com>

* Added foundry installation to CI (#194)

---------

Co-authored-by: Johannes Späth <johspaeth@users.noreply.github.com>
Co-authored-by: Niv vaknin <122722245+nivcertora@users.noreply.github.com>
Co-authored-by: liav-certora <114004726+liav-certora@users.noreply.github.com>
Co-authored-by: liav-certora <liav@certora.com>
Co-authored-by: Otakar <Otakar@certora.com>
Co-authored-by: Christiane Goltz <christiane@certora.com>
Co-authored-by: Nurit Dor <57101353+nd-certora@users.noreply.github.com>
Co-authored-by: Johannes Spaeth <johannes@certora.com>
Co-authored-by: rahav <rahav@certora.com>
Co-authored-by: Rahav <103361134+rahav-certora@users.noreply.github.com>
Co-authored-by: Naftali Goldstein <44599898+naftali-g@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants