-
Notifications
You must be signed in to change notification settings - Fork 14
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 Blog for safety-of-methods-for-numeric-primitive-types - 2024-12-02 #51
Conversation
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.
Thank you!
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
@tautschnig @celinval @zhassan-aws @feliperodri We have finished the draft. Appreciate any feedback :) |
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.
I really liked the blog post. My main suggestion is to improve a little bit the explanation about the need for range partitioning into the checks that involved multiplication.
I think it's good to clarify that the problem here is the complexity of the SAT formula generated for multiplications. For example, the input space for addition and multiplication are the same, but only the multiplication requires partitioning.
@tautschnig do you know any good reference that we can use so we don't have to give too much details on why multiplications are hard for sat solvers?
From Randy E Bryant's "Graph-Based Algorithms for Boolean Function Manipulation" (1986) we know that the Boolean function representing all outputs of a multiplier as a BDD is exponential in the size of the operands. We can do a more compact representation in CNF, but it will still be quadratic in the size of the operands. And those turn out to be hard to solve for SAT solvers, which in some ways is good news, as otherwise we could rather efficiently do factorisation of numbers (and thereby, in practice, break some of today's cryptographic algorithms). |
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.
Thank you!
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
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 is a great post! Awesome job. My main comments are about some technical points in section 2--request my re-review once addressed and I'll approve.
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
_posts/2024-12-02-safety-of-methods-for-numeric-primitive-types.md
Outdated
Show resolved
Hide resolved
…s.md Co-authored-by: Carolyn Zech <[email protected]>
…s.md Co-authored-by: Carolyn Zech <[email protected]>
…s.md Co-authored-by: Carolyn Zech <[email protected]>
…s.md Co-authored-by: Carolyn Zech <[email protected]>
…s.md Co-authored-by: Carolyn Zech <[email protected]>
Co-authored-by: Carolyn Zech <[email protected]>
Co-authored-by: Carolyn Zech <[email protected]>
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.
Thanks!
Towards : model-checking/verify-rust-std#59
Description : This blog post talks about verifying the safety of unsafe methods which use Rust's numeric primitive data types.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.