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

Use quantifiers over message fields instead of large conjunctions #806

Closed
kanigsson opened this issue Oct 12, 2021 · 1 comment · Fixed by #811
Closed

Use quantifiers over message fields instead of large conjunctions #806

kanigsson opened this issue Oct 12, 2021 · 1 comment · Fixed by #811
Assignees
Labels
generator Related to generator package (SPARK code generation)

Comments

@kanigsson
Copy link
Collaborator

kanigsson commented Oct 12, 2021

Context and Problem Statement

Currently, Recordflux generates predicates and postconditions that contain large conjunctions, where each conjunct expresses some property for a given record field. An example is the postcondition of Reset_Dependent_Fields, but there are many others. gnatprove has a lot of trouble with these large expression, and I believe this is the biggest source of inefficiencies when processing the generate code (see also #767).

Considered Options

O1

Given that message fields are already explicit in SPARK code via an enumeration type, it seems possible to replace the large conjunctions by much smaller quantified expressions. A quick experiment on the dhcp example lead to a large reduction of processing time (from 6 to 4 minutes, ignoring prover time, by replacing just one large conjunction). Impact on provability needs to be assessed.

O2

TBD.

Decision Outcome

TBD

@senier senier added the generator Related to generator package (SPARK code generation) label Oct 12, 2021
@senier senier added this to To do in RecordFlux 0.6 via automation Oct 12, 2021
@senier senier moved this from To do to In progress in RecordFlux 0.6 Oct 18, 2021
@kanigsson kanigsson linked a pull request Oct 21, 2021 that will close this issue
@kanigsson
Copy link
Collaborator Author

I have done some more experiments but they are not conclusive so I'm closing the issue now and will open new issues when necessary.

RecordFlux 0.6 automation moved this from In progress to Merged Oct 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
generator Related to generator package (SPARK code generation)
Projects
No open projects
Development

Successfully merging a pull request may close this issue.

2 participants