automating formal proofs for reactive systems
play

Automating Formal Proofs for Reactive Systems Daniel Ricketts , - PowerPoint PPT Presentation

Automating Formal Proofs for Reactive Systems Daniel Ricketts , Valentin Robert, Zachary Danger Tatlock Dongseok Jang, Sorin Lerner University of California, San Diego University of Washington Proof Assistant Based Verification Proof


  1. Properties Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  2. Properties Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ... Specify allowed behaviors

  3. Properties Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ... Specify allowed behaviors wrt sequence of system calls

  4. Properties Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ... Specify allowed behaviors wrt sequence of system calls

  5. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls

  6. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time

  7. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time …

  8. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time The system calls so far …

  9. Properties When [Tab t] sends CookieSet(c): [Tab t] sends CookieSet(c) cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time The system calls so far …

  10. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time The system calls so far …

  11. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time The system Recv(Tab, CookieSet(c)) calls so far …

  12. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time The system Recv(Tab, CookieSet(c)) calls so far …

  13. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Time The system Recv(Tab, CookieSet(c)) calls so far …

  14. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Spawn CookieMgr(t.domain) Time The system Recv(Tab, CookieSet(c)) calls so far …

  15. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Spawn CookieMgr(t.domain) Time The system Recv(Tab, CookieSet(c)) calls so far …

  16. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Spawn CookieMgr(t.domain) Time The system Recv(Tab, CookieSet(c)) calls so far …

  17. Properties When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) Specify allowed behaviors wrt sequence of system calls Send(cp, CookieSet(c)) Spawn CookieMgr(t.domain) Time The system Recv(Tab, CookieSet(c)) calls so far …

  18. Example: Web browser kernel Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  19. Example: Web browser kernel Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  20. Example: Web browser kernel Specify cookie integrity Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  21. Example: Web browser kernel Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  22. Example: Web browser kernel forall d c, For any domain d and cookie c Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  23. Example: Web browser kernel The kernel sends the cookie forall d c, manager for domain d a cookie c [Send(CookieMgr(d), CookieSet(c))] Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  24. Example: Web browser kernel forall d c, Only if Enables [Send(CookieMgr(d), CookieSet(c))] Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  25. Example: Web browser kernel forall d c, [Recv(Tab(d), CookieSet(c))] Enables [Send(CookieMgr(d), CookieSet(c))] Components = Tab | CookieMgr | ... The kernel already received a Messages = CookieSet | CookieGet | ... cookie c from a tab of domain d Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  26. Example: Web browser kernel forall d c, [Recv(Tab(d), CookieSet(c))] Enables [Send(CookieMgr(d), CookieSet(c))] Components = Tab | CookieMgr | ... A Enables B Messages = CookieSet | CookieGet | ... iff every sys call B is preceded by sys call A Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  27. Example: Web browser kernel forall d c, [Recv(Tab(d), CookieSet(c))] Enables [Send(CookieMgr(d), CookieSet(c))] Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

  28. Example: Web browser kernel forall d c, [Recv(Tab(d), CookieSet(c))] Enables [Send(CookieMgr(d), CookieSet(c))] Components = Tab | CookieMgr | ... Messages = CookieSet | CookieGet | ... Handlers: When [Tab t] sends CookieSet(c): cp <- find CookieMgr(t.domain) send(cp, CookieSet(c)) When [Tab t] sends CookieGet(c): ...

Recommend


More recommend