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

Documentation for Treatment of Final Fields #44

Open
WolframPfeifer opened this issue Feb 27, 2025 · 1 comment
Open

Documentation for Treatment of Final Fields #44

WolframPfeifer opened this issue Feb 27, 2025 · 1 comment

Comments

@WolframPfeifer
Copy link
Member

There is a new treatment of final fields about to be merged into main KeY (KeYProject/key#3495).

I think it is a good idea to write a user documentation about it.

Here are some ideas and questions what to describe in the docs:

Treatment of Final Fields

Motivation

  • Why is it a good idea to have a special treatment for final fields in KeY?
  • Maybe give some statistics/insights about the effect of that feature on case study?
  • Reference to the STTT journal paper (as soon as it appears)? (Not sure if there are differences to what is described here ...)

Recap: Final fields in Java

  • Maybe add a quick recap on where final fields can be written/accessed in Java (that is quite an edge case and not something I was entirely sure of, not even as a Java developer)?

The Solution for KeY

  • new (sort-depending) function symbol in logic

  • changed default, taclet option for legacy treatment

  • Difference between the two settings?

  • Soundness/completeness?

    • user guideline when to use which of the two options
  • What exactly does the static analysis check for?

  • How does the new feature interact with inlining?

  • How does this feature work with static fields?

  • Does the feature work for ghost fields as well?

  • What are examples for critical edge cases that we have to mitigate (reading before writing the final field)?

  • How is the new symbol printed in pretty-printing? How can it be distinguished from the normal select?

  • Are there any known current limitations or open questions (inner classes maybe)?

@WolframPfeifer
Copy link
Member Author

@mattulbrich Here is the list with questions you wanted to have ...

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

No branches or pull requests

1 participant