2 ms·
I've been learning Alloy[0], which I think is probably more practical for most software engineers. I'm using it with the goal of documenting and decomposing a
by chrsig 2y ago
I've been learning Alloy[0], which I think is probably more practical for most software engineers. I'm using it with the goal of documenting and decomposing a legacy system that I've been working with for a number of years.
It's more geared towards the static elements of the system, and writing a spec feels quite like writing a relational database schema -- mostly because they're both expressions of relationships.
It seems like a pretty natural path to write a spec in alloy before building out some crud interface.
I think there's a huge tooling gap though. Alloy, TLA+ and friends all seem to be very jvm/UI centric, really targeting a user who is working in the editors the language ships with.
I'd really love to see more tooling to run model checkers in a CI pipeline, or generate stubs and test cases for various languages. If that were in place, I think there would be more stickiness to formal methods.
I've started writing a Go parser for alloy, in part to learn it better, in part because I know go and want to write some tooling that I think go would be a good implementation language for. I don't know if anything will come of it, but at least having a parser would allow for things like a formatter or code generator. If I were feeling ambitious, I might try to implement a model checker.
[0] https://alloytools.org/ https://alloytools.org/
- photonthug 2y ago> tooling to run model checkers in a ci pipeline Helpful to escape the alloy UI: https://github.com/elo-enterprises/docker-alloy-cli https://github.com/elo-enterprises/docker-alloy-cli
- chrsig 2y agoMy hero! I looked into what it would take to tackle it from the source code, There were some barriers, like the jars not really being published to maven, but the biggest just being the time & energy investment to pick up java again. I'll definitely be looking into this project and seeing if there's anything I can contribute back.
- rramadass 2y agoYou might find Viper (Verification Infrastructure for Permission- based Reasoning) from ETH-Zurich useful - https://www.pm.inf.ethz.ch/research/viper.html https://www.pm.inf.ethz.ch/research/viper.html and https://viper.ethz.ch/tutorial/ https://viper.ethz.ch/tutorial/ I came across this when researching/studying Formal Methods but have not yet really sat down and tried it out.