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

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

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

Julek
Copy link
Contributor

@Julek Julek commented Mar 29, 2023

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
Copy link
Contributor

@langfield langfield left a comment

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