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

A separation logic prover for pulse #38

Merged
merged 138 commits into from
Jul 27, 2023
Merged

A separation logic prover for pulse #38

merged 138 commits into from
Jul 27, 2023

Conversation

aseemr
Copy link
Collaborator

@aseemr aseemr commented Jul 24, 2023

Diff in Pulse examples:

  • Removes the trailing () from some cases (e.g., in CustomSyntax)
  • A function that is not annotated ghost but only contains one ghost command in its body now succeeds, because the typechecker inserts a stateful return

Implementation files to look at:

These two files contain the main type definitions for prover state and type checker result:

The following is the interface provided by the prover:

https://github.com/FStarLang/steel/blob/_aseem_prover_integration/lib/steel/pulse/Pulse.Checker.Prover.fsti

To see a usage for the prover, please see the following implementation of stateful applications (specifically line 127):

https://github.com/FStarLang/steel/blob/_aseem_prover_integration/lib/steel/pulse/Pulse.Checker.STApp.fst

Current prover steps are elim exists, elim pure, intro exists, intro pure, and match:

@aseemr aseemr changed the title A new prover for pulse programs A separation logic prover for pulse Jul 24, 2023
@aseemr aseemr merged commit 074c25f into main Jul 27, 2023
1 check passed
@aseemr aseemr deleted the _aseem_prover_integration branch July 27, 2023 12:07
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.

1 participant