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

Precise bitindex #23

Merged
merged 56 commits into from
Aug 6, 2024
Merged

Precise bitindex #23

merged 56 commits into from
Aug 6, 2024

Conversation

mario-bucev
Copy link
Collaborator

This PR includes (only for Scala backend):

  • Invertibility proofs for BitStream
  • while loops are transformed to recursive top-level functions
  • Hoisting of "inlined ACN code" into top-level functions, with the ACN dependencies being parameterized
  • Precise bitindex calculation (for contracts and proofs)
  • SEQUENCE ... OF and strings are now backed by Vector and not an array

samuelchassot and others added 30 commits June 13, 2024 10:42
…ponding read function readNLeastSignificantBits

- add read function readNBitsLSBFirst which is the counter part of appendBitsLSBFirst, and proved its post condition
- proved additional postcondition of appendBitsLSBFirst, to prepare the invertabilitsy proof
…of bits specification, in place of the array of UByte
…ion (i.e. functions that read the bitstream and returns

Then proves the equivalence between checkBits and the list specs
* verified appendNBits and appendNBitsLoops

* remove lemma call

* working on the verification of bitstream

* - proved invertability of appendNLeastSignificantBits with its corresponding read function readNLeastSignificantBits
- add read function readNBitsLSBFirst which is the counter part of appendBitsLSBFirst, and proved its post condition
- proved additional postcondition of appendBitsLSBFirst, to prepare the invertabilitsy proof

* verify invertibility appendBitsLSBFirst, with its corresponding lemma

* working on proving appendBitsMSBFirstLoop, before moving to the list of bits specification, in place of the array of UByte

* proved invertibility of appendBitsMSBFirst but with a List specification (i.e. functions that read the bitstream and returns
Then proves the equivalence between checkBits and the list specs

* verification script + stainless conf

* verified BitStream

* verify the by write functions

* finish bitstream verification

* make verification quicker for some VCs, in test
@mario-bucev mario-bucev requested a review from fschramka July 22, 2024 09:22
@fschramka fschramka merged commit c639ca6 into ateleris:master Aug 6, 2024
3 checks passed
@mario-bucev mario-bucev deleted the precise-bitindex branch August 22, 2024 07:38
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