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

Re-work (horizontal) compatibility check #3

Open
AlexanderKnueppel opened this issue Jan 25, 2023 · 0 comments
Open

Re-work (horizontal) compatibility check #3

AlexanderKnueppel opened this issue Jan 25, 2023 · 0 comments

Comments

@AlexanderKnueppel
Copy link
Contributor

The actual check is implemented in pretty ad-hoc fashion and should be both refactored and re-worked.

Current workflow:

To verify compatibility between provided/required intertface, two conditions are checked for every required method: either (1) the provided interface contains a method with the exact same signature or (2) the mapped method is behaviorally compatible in the sense of liskov (class: du.kit.archicorc2.core\src\edu\kit\archicorc2\core\compatibility\CompatibilityChecker.java):

image

For verification, a java-stub is generated, where the required method calls the provided method. Using contracting, this allows us rather easily to verify whether the provided method is sufficient for the required one.

There are numerous outcomes:

  • A proof is generated automatically
  • If that is not possible, KeY will start an interactive session, where the user can try to prove compatible
  • If that is not possible, the proof cannot be generated.
  • Other outcomes: syntax error and timeout

Isseues:

  • KeY is employed as the primary verifier. However, sometimes the generated stub can be verified automatically, sometimes only interactively, and sometimes not at all.

Envisioned Solution
If have the feeling that this should completely rewritten. The questions that arise:

  • Is such a stub a useful idea?
  • Is KeY the best veifier for this? what about Z3? Is is only necessary to check implication of specifications. There is no need here to check concrete code
  • ...?
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