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

a "getting started" guide #79

Open
andres-erbsen-sifive opened this issue Jun 12, 2019 · 1 comment
Open

a "getting started" guide #79

andres-erbsen-sifive opened this issue Jun 12, 2019 · 1 comment

Comments

@andres-erbsen-sifive
Copy link
Contributor

andres-erbsen-sifive commented Jun 12, 2019

so I've been asked for this several times now. Here are some thoughts of what we should do.

References to non-bedrock2-specific background resources

  • basic coq usage, like one or two chapters of software foundations or frap. no induction or datatypes stuff, just proof.
  • Hoare logic (software foundations? frap? VST?)
  • Separation Logic (* and emp, no fancy things like magic wand).
  • separation logic automation. perhaps read the first bedrock paper, and ignore the higher order stuff about code pointers http://adam.chlipala.net/papers/BedrockPLDI11/BedrockPLDI11.pdf chapter 2. SeparationLogic.ecancel is the bedrock2 script to perform cancellation.
  • coq tactic lia, ring documentation
  • reading coq type errors (reification by parametricity repo might have a thing on this?)

Common infrastructure in bedrock2 (just skim)

bedrock2 semantics (read enough to understand structure)

Things that we don't really know how to teach

  • how to actually prove interesting things about your program. this requires a clear plan and direction, and good understanding of coq to evaluate different choices of stating "the same" thing
  • how to understand very generic dependently typed lemmas like `tailrec, copy-pasting their usages is hopefully fine though
@matu3ba
Copy link

matu3ba commented Apr 7, 2022

All links are broken, since they were not pinning a specific commit (instead master).
One usually starts with the target audience and use cases, before going into the "how do I do stuff".

From my point of view there should be an estimation of additional effort vs gain and scalability and some reasoning how this differs to (I guess https://sel4.systems/ is current state of art?).
For example, currently it reads like there are only result semantics taken into consideration but not temporal properties and their combination (usually abstractly modeled with TLA+ because LTL and CTL do compose very poorly).

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

2 participants