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

Add writeup of AGREE, GUMBO, FRET #101

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

Conversation

peterohanley
Copy link
Contributor

Describe your changes

Add a document with an overview of the relationship between CN, GUMBO, AGREE, FRET, and how CN could serve as the bottom layer for these specs.

Issue ticket number and link

#91

Checklist before requesting a review

  • [N/A] I have performed a self-review of my code
  • [N/A] My code matches the coding standards and I have ran the appropriate linters
  • I included documentation updates for my code
  • [N/A] I extended the test suite and the tests run by the CI to cover my code
  • I assigned a Milestone to this PR
  • I assigned this PR to a Project
  • I assigned this PR appropriate Labels

@peterohanley peterohanley added the documentation Improvements or additions to documentation label Aug 2, 2024
@peterohanley peterohanley added this to the MVP 2 milestone Aug 2, 2024
@peterohanley peterohanley self-assigned this Aug 2, 2024
@podhrmic podhrmic modified the milestones: MVP 2, MVP 3 Aug 2, 2024
Copy link
Collaborator

@podhrmic podhrmic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mv spec_languages.md docs/SPEC_LANGUAGES.md

Looks good!

@peterohanley if you have spare cycles, can you come up with a small (almost trivial) example expressed in all three languages for comparison (AGREE, GUMBO, CN)?

Such example would serve as a great starting point for the discussion about automated spec translation / refinement across different levels of abstractions in the model.

from their specification. Global variables are considered only as they are
manipulated by functions.

AGREE allows temporal logic constraints and works over "systems" with input and
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
AGREE allows temporal logic constraints and works over "systems" with input and
AGREE allows temporal logic constraints and works over *systems* with input and

level.

GUMBO works over threads that can receive and send events and access data
"ports". It assumes there is a runtime system available that will run the
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"ports". It assumes there is a runtime system available that will run the
*ports*. It assumes there is a runtime system available that will run the

conveniet, but it will still work if the well-formed constraints are
transparently inlined into every spec.

GUMBO's entry points have various restrictions on what kinds of data each can
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GUMBO's entry points have various restrictions on what kinds of data each can

Each entry point ?

Copy link
Contributor

@thatplguy thatplguy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@peterohanley thanks for putting this together. There are a few things I'm curious about that I'm hoping you can add. For AGREE/Gumbo/FRET:

  1. What is the intended use, and when might one use AGREE vs. Gumbo vs. FRET? Or do they complement each other?
  2. What do they model, and what does the model look like (ideally with a small example, such as one might find in their docs/tutorials)?
    • e.g. what is a "system" in AGREE, what is a "thread" in Gumbo", etc.
  3. What specs do they support, with a few examples?
    • I see AGREE and FRET support temporal logic in specs, what about Gumbo?
    • Presumably they're used to specify safety and liveness properties? Perhaps list an example for each?

states of a set of variables. It does not consider implementation below this
level.

GUMBO works over threads that can receive and send events and access data
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What kinds of properties can you write with GUMBO? Also temporal properties?

@podhrmic
Copy link
Collaborator

@peterohanley please timebox this and update by 12/4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants