This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-05-29
Channels
- # announcements (6)
- # babashka-sci-dev (15)
- # beginners (46)
- # calva (1)
- # clj-kondo (1)
- # clojure-australia (2)
- # clojure-europe (10)
- # clojure-uk (4)
- # clojured (3)
- # clojurescript (16)
- # fulcro (6)
- # helix (1)
- # hyperfiddle (8)
- # instaparse (28)
- # joyride (33)
- # malli (17)
- # off-topic (13)
- # pedestal (3)
- # portal (5)
- # react (1)
- # sci (1)
- # sql (6)
- # vim (1)
Yesterday felt like a good day to uninstall & install some things. :rain_cloud: I wrote a short post about how switching from docker to podman went here: https://davidvujic.blogspot.com/2022/05/hi-podman-bye-docker.html
Mostly off-topic: I have two processes. Both state machines, that interact and drive each other. Neither implemented in Clojure, and only one implemented by us. I want to model these two and check for correctness. We found a bug in our state machine, because we did not cater for a state transition in "their" state machine. Reaching for TLA+, I have something working. Then I needed to add time (https://github.com/tlaplus/Examples/blob/9d7de44a8a37e415c8ba6e24d167632d53c24176/specifications/SpecifyingSystems/RealTime/RealTime.tla) and the wheels fell off (spectacularly). So my question is this: What would you reach for to check for correctness? It is worth figuring out how to do this in TLA+? Will https://github.com/Datomic/simulant and https://github.com/candera/causatum fit here?
https://gist.github.com/hiredman/60e5e6f0025cb38c8a7739d21f5a8ce6 is a toy for specifying and checking stateful protocols (describing a state machine in spec)
For finite state machines you often don't actually need to do proofs, because you can do exhaustive checking for a finite set of states
https://www.hillelwayne.com/post/alloy6/ alloy might be interesting to check out too
Thank you @U0NCTKEV8, you always seem to have infinitely deep sleeves to pull something from!
@U0NCTKEV8 https://gist.github.com/hiredman/60e5e6f0025cb38c8a7739d21f5a8ce6 Are you using core async to mock a internet network? Is the goal here to have some communication protocol between 2 actors/servers/whatever and then see what happens with arbitrary message failures? I'm trying to read the code top down as by the time i hit the details i lose the thread...
The idea is to define, via spec, how a stateful protocol operates over time (start in state x, in which messages q w and e can happen, and those messages cause it to change to another state)
Thanks, haven't looked at the link but the explanation makes sense.
What if a state machine has multiple possible states in multiple places? For instance 10 variables which can be populated depending on some rules and each can have n
states.
Is it 10^n
of combinations to describe in the state machine "checker" language?
you could also check out http://docs.imandra.ai/imandra-docs , it's a computable logic as a subset of ocaml (much in the spirit of ACL2) with seamless integration between (semi)-automated inductive proofs and bounded model checking (disclaimer: I work on this).