~/talk

Verifying Concurrent Go Code in Coq with Goose

Talkat CoqPL 2020 · on Saturday, 2020-01-25· [go]
links:none on file
slides:none on file

A pipeline imports a practical subset of Go into Coq: a 2.5k‑line Go translator produces GooseLang programs that plug into Iris’s weakest‑precondition framework, so concurrent Go (mutexes modeled as spin‑lock locks, goroutines → fork in heapLang) is verifiable. A 150‑line concurrent mail server is fully verified; a 3,000‑line filesystem is implemented but proofs are pending. Weak‑memory racy loads/stores become undefined via split begin/commit semantics; an executable single‑threaded interpreter is used for behavioral testing. Code is open source.

AI-written summary · about

  1. 0:00Systems verification, broadly
  2. 0:26Systems verification requires connecting implementation to proof
  3. 0:51We aim to verify realistic systems
  4. 1:47Goal: implement in a systems language
  5. 2:04Goose: write code in Go and prove with Iris
  6. 2:52Implementing in Go helps build the software
  7. 3:21Goose: import subset of Go into a Coq model
  8. 5:11Our systems verification research using Goose
  9. 5:42Go is a systems language
  10. 6:36Goose code
  11. 7:13Challenges in implementing Goose
  12. 7:30GooseLang, a semantic model of Go
  13. 10:07modeling concurrency and locking
  14. 11:37Challenge in modeling Go: weak memory
  15. 12:57Disallow racy loads and stores
  16. 13:31Compatibility with Iris gives us amazing verification technology
  17. 14:04Proofs using non-atomic memory
  18. 15:06GooseLang programs can make system calls
  19. 16:29Semantics of GooseLang
  20. 18:45Goose translator supports enough Go
  21. 19:24Making the goose translator sound
  22. 20:25Related work
  23. 22:43Conclusion
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.