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

Verification for codecs and generated code #317

Merged
merged 98 commits into from
Nov 23, 2024
Merged

Conversation

mario-bucev
Copy link
Contributor

This PR includes (for the Scala backend only):

  • Invertibility proofs for BitStream
  • Invertibility for Codec and ACN for the functions used by the PUS-C services (except floating-point and string-related)
  • while loops are transformed to recursive top-level functions
  • Hoisting of ACN-specialized 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 a Vector and not an Array
  • Invertibility proofs for SEQUENCE when the -invertibility option is specified

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
samuelchassot and others added 28 commits August 28, 2024 15:06
* unfold the loop in uint2int for verification, proves invertibility of some functions in ACN

* invertibility

* script to verify acn used functions

* remove useless comments

* refactor
Conflicts:
	FrontEndAst/AcnCreateFromAntlr.fs
Merge with the latest changes
@usr3-1415 usr3-1415 merged commit e259d50 into esa:master Nov 23, 2024
3 checks passed
usr3-1415 added a commit that referenced this pull request Dec 15, 2024
This bug was introduced by merging PR #317. The issue caused the ICD tables for sequences, choices, and similar components to be empty when their child components were primitive types.
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.

4 participants