advancedtelematic / quickcheck-state-machine

Test monadic programs using state machine based models

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Towards refinement

stevana opened this issue · comments

Refinement is used by the Z/Event-B/TLA+ people as a way to not have to model the whole system in full detail at once. The father of Z/Event-B, Jean-Raymond Abrial, makes the analogy that if you think of a model as the blueprint (in the architecture/engineering sense), then refinement is a way to zoom in and get a more detailed view of the system.

A nice demo of how this plays out in Event-B is given by Abrial in the following video. I've started to port the example from the demo in the example/bank branch in order to better understand it.

I suspect that the necessary bits of the puzzle can be read off from the notion of morphism/(linear) simulation between indexed containers/interaction structures, but I don't see exactly how it all fits together yet.

I'll use this issue for notes. Any thoughts or comments are of course welcome!

Refinement of concurrent objects (via linearisability): www.cs.ox.ac.uk/people/hongseok.yang/paper/TCS10-concurrent-objects.pdf

On composing state machines a la Harel's state charts: https://gist.github.com/andymatuschak/d5f0a8730ad601bcccae97e8398e25b2

Also see: