Skip to content

Add missing range check bound to assert_nn_le() spec - #195

Open
Julek wants to merge 12 commits into
masterfrom
julek/assert_nn_le_spec_fix
Open

Add missing range check bound to assert_nn_le() spec#195
Julek wants to merge 12 commits into
masterfrom
julek/assert_nn_le_spec_fix

Conversation

@Julek

@Julek Julek commented Mar 29, 2023

Copy link
Copy Markdown
Contributor

No description provided.

Ferinko and others added 11 commits March 24, 2023 13:49
In this commit, we add a function `userAnnotatedSources` which replaces
`isStandardSource`. It generates a list of all the user annotated
ScopedFunctions. This list is used to filter modules for solving. This
requires a slight refactor within `FunctionAnalysis.hs`.

* Add `extern_remove_dirty` test.

The basic idea is this:
1. Find all wrapper functions.
2. Compute their respective set of reachable functions.
3. Mark them all as 'don't check' unless they are referenced from a
   different source as well.
Don't verify `@external`-generated wrapper functions
* Use `ssh-agent` to clone with specific private key
* Set `0o400` permissions on private key file
* Add `mathsat` to list of solvers used in tests
Add mathsat installation to Github actions workflow
…ted-specs

Add FAQ about commenting-out annotations
…eadme-additions

Add `README.md` section on details of `CairoSemanticsL`
@Julek
Julek requested a review from langfield March 29, 2023 13:25
@Julek
Julek force-pushed the julek/assert_nn_le_spec_fix branch 3 times, most recently from 6cea51d to e45ffbb Compare March 29, 2023 14:20
@langfield
langfield force-pushed the julek/assert_nn_le_spec_fix branch 2 times, most recently from b0ae760 to b704100 Compare March 29, 2023 16:25
@langfield langfield changed the title assert_nn_le std spec fix Add missing range check bound to assert_nn_le() spec Mar 29, 2023

@langfield langfield 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.

Does this agree with the docstring?

// Verifies that 0 <= a <= b.
//
// Prover assumption: b < RANGE_CHECK_BOUND.
//
// This function is still sound without the prover assumptions. In that case, it is guaranteed
// that a < RANGE_CHECK_BOUND and b < 2 * RANGE_CHECK_BOUND.
// @pre b < 2**128
// @post 0 <= a and  a <= b
func assert_nn_le{range_check_ptr}(a, b) {
    assert_nn(a);
    assert_le(a, b);
    return ();
}

Looks like the b < rcBound is an assumption. But I suppose we want that in the post so other stuff can use it?

@langfield
langfield force-pushed the master branch 2 times, most recently from 9f9928b to 3397b7c Compare March 31, 2023 15:01
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