&gt; If I have to perform another model checking routine<p>Why model checking? TLA+ is not a model checker. It&#x27;s a specification and proof language. There <i>is</i> a model checker that can check TLA+ specs, just as there is a proof assistant that can check TLA+ proofs.<p>&gt; must have an extremely low opinion of quite a number of very smart people.<p>Why low opinion? Type theory isn&#x27;t &quot;smarter&quot;, it&#x27;s just more obscure.<p>&gt; The &quot;set theory&quot; you see in a discrete math course kind of barely scrapes definitions. I think most people who posit that &quot;set theory&quot; is nice and simple must&#x27;ve never really dove deem into the actual theory of set theory...<p>Thankfully, that basic set theory -- the one that barely scrapes the definition -- is all that&#x27;s required to specify real-world programs.<p>&gt; Did you read this dissertation&#x27;s explanation of why separation logic is important?<p>Skimmed it. Unless I&#x27;m missing something (which is quite possible) it seems very straightforward to use in TLA+: you just define the operators just as they&#x27;re defined in the paper. There&#x27;s no need to &quot;code&quot; the logic in any arcane or non-obvious way; just define it. In fact, this short paper describes doing just that and it seems pretty basic: <a href="http:&#x2F;&#x2F;citeseerx.ist.psu.edu&#x2F;viewdoc&#x2F;download?doi=10.1.1.570.3798&amp;rep=rep1&amp;type=pdf" rel="nofollow">http:&#x2F;&#x2F;citeseerx.ist.psu.edu&#x2F;viewdoc&#x2F;download?doi=10.1.1.570...</a><p>&gt; Anyways, I think the argument over whether type theory is a successful foundations for CS research and practice is already a closed issue. It demonstrably is.<p>It never even crossed my mind to make the case that it isn&#x27;t. That type theory is an interesting topic for research is obvious. I also never implied that dependent-type tools can&#x27;t do the job; as you say, they demonstrably can. I simply asked if I -- a programmer working in the industry -- had a program I wished to verify, whether there was a reason why I would reach for a dependent-type tool vs. a classical logic tool. So far, I don&#x27;t see why I should. It seems to basically boil down (at least according to the responses in this thread) to whether I prefer working with direct, classical logic or with dependent types.