That is much better.<p>So the take away here is that modelling in the domain of CSP is easier because some language frameworks directly implement CSP?<p>I guess that&#x27;s one of the challenges I&#x27;m having learning TLA+ and formal methods. I have this high-level specification of a semaphore lock that the model checker can verify and might even have a proof. How do I now implement this in code?<p>But that&#x27;s kind of moot: a blueprint doesn&#x27;t implement the building. However if we follow the blueprint, if our reasoning was sound and the mathematics hold, then the sky-scraper will stand and everyone is happy.<p>What&#x27;s neat about FRP and functional languages like Haskell is that we can encode some of the correctness invariants into the type system; essentially having the compiler guarantee the implications for us. (Or as TFA mentions, directly synthesize our CSP program from the specification; which seems very neat but restrictive...)<p>And what&#x27;s <i>really</i> cool about strong fairness is that it doesn&#x27;t say anything about <i>when</i> a relation has to happen. It could be that your lock will be held for a thousand years before the next process gets to acquire it... but the strong fairness property guarantees it will happen.<p>The question may then be... <i>well what about the implementation? How do I know it will satisfy this property without waiting for the heat-death of the universe?</i> Computers are not theoretical machines. They are complex, physical devices with non-theoretical limitations. They won&#x27;t last until the heat-death of the universe so don&#x27;t worry. You can prove that every process will get a chance to acquire the lock in the implementation without saying anything about the specification.<p>The reason why I thought this was beautiful was because now we can reason about the soundness of our design without concerning ourselves with timers, memory limitations, network connectivity... etc, etc. The properties of those things will change over time but our specification will remain solid and useful.<p>All very interesting stuff and to answer the conclusion, yes I think adoption of these tools and ways of thinking can be done in practice by the wider industry. I&#x27;d even go as far as saying that it&#x27;s necessary. If we want software developers to become capital-P <i>professional</i> software engineers we need to introduce liability and rely on tools to verify the soundness of our thinking before we go asking the world to trust our creations.<p>I don&#x27;t think the math is terribly difficult; the problem is that thinking is hard and programmers don&#x27;t seem to enjoy doing it very much. For some reason computer science is allergic to math and programmers in industry think their job is to write code. CSPm is neat but you&#x27;re so close to a more general and useful language one step up.