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

Assume-guarantee reasoning with scheduled components #72

Open
cong-liu-2000 opened this issue Jan 27, 2022 · 2 comments
Open

Assume-guarantee reasoning with scheduled components #72

cong-liu-2000 opened this issue Jan 27, 2022 · 2 comments
Assignees
Labels
AGREE enhancement New feature or request
Milestone

Comments

@cong-liu-2000
Copy link
Collaborator

What?

This extends AGREE to perform assume-guarantee reasoning with scheduled components.

Why?

AGREE assumes a synchronous model of computation. All components run in parallel simultaneously. This work incorporates an execution schedule in the assume-guarantee reasoning, which more accurately reflects the behavior of the system implementation.

How?

Modify the translation of AGREE AADL annex to Lustre model. All changes are in the "Main" node. No changes are made to the "Component" node.

  1. Add a new "circular counter" node definition, needed for schedule model
  2. Add a new "interval/between" node definition, needed for component input freeze assumption
  3. Add a schedule model, which defines "dispatch" and "complete" events
  4. Add top-level input freeze assumptions, needed for scheduling semantics
  5. Augment top-level contracts, needed for scheduling semantics
    5.1. Assumption holds @ dispatch
    5.2. Guarantee holds @ complete
  6. Clock each component node instance with its complete event: condact (node_complete, node(…), true)
  7. Add component input freeze assumptions, a proof obligation
  8. Add component output freeze guarantees, needed for scheduling semantics
  9. Add component local variable freeze guarantees, otherwise trace shows random value while inactivated.
  10. Add component assumption freeze guarantees, otherwise trace shows random value while inactivated.
@cong-liu-2000 cong-liu-2000 self-assigned this Jan 27, 2022
@mwwhalen
Copy link

mwwhalen commented Jan 27, 2022 via email

@cong-liu-2000
Copy link
Collaborator Author

Right now, we only support AADL data ports and event/event data ports of size one, i.e. no FIFO semantics. Not so sure of scalability. But my tuition is that it should scale well, as we did not add anything complicated. Details can be found in our paper recently submitted for NFM 2022. The prototype implementation in Python and examples can be found here: https://github.com/loonwerks/Examples/tree/main/AGREE_Scheduled_Components
Note that for the "uav" example, the majority of the time (6-7 min) is spent on "consistence" check, the "property" check takes about 1-2 min.

@kfhoech kfhoech added AGREE enhancement New feature or request labels Feb 3, 2022
@kfhoech kfhoech added this to the v2.9.0 milestone Mar 1, 2022
@kfhoech kfhoech modified the milestones: v2.9.0, v2.10.0 Mar 15, 2022
@kfhoech kfhoech modified the milestones: v2.10.0, v2.11.0 Aug 31, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AGREE enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants