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

[WIP] Package invariants #810

Draft
wants to merge 20 commits into
base: master
Choose a base branch
from
Draft

[WIP] Package invariants #810

wants to merge 20 commits into from

Conversation

jcp19
Copy link
Contributor

@jcp19 jcp19 commented Dec 17, 2024

Changelog:

  • we introduce the notion of package invariants to describe the contents of global state (we distinguish between non-duplicable and duplicable invariants - more details to follow soon). We introduce the statement openDupPkgInv to open the duplicable invariants of the current package if initialization is guaranteed to be finished, and we introduce all necessary proof obligations for the init functions and main function.
  • we introduce the notion of functions that may be called during initialization (marked with mayInit) to make sure we never open invariants that might not hold yet - more details on this soon
  • we deprecate importRequires and initEnsures clauses to allow for modularly checking a package. We also deprecate the --lazyImports flag, as it is no longer necessary.
  • we make the Desugarer sequential again to fix the regression reported in Regression same_package/import-fail01/main fails non-deterministically #762

@jcp19 jcp19 mentioned this pull request Dec 17, 2024
@jcp19 jcp19 changed the title Package invariants [WIP] Package invariants Dec 17, 2024
@jcp19 jcp19 linked an issue Jan 6, 2025 that may be closed by this pull request
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.

Add support for initialization invariants
1 participant