Principles of TLA+
Great article, and I look forward to the next! I&#x27;ve been meaning to learn about TLA+ for a while.<p>One thought I didn&#x27;t see expressed, in all the comparisons of tools and approaches, is that sometimes you don&#x27;t care about time and state.  In purely &quot;transformational&quot; programs, like compilers, for example, all state is incidental complexity, so we can analyze them as pure functions.  Meanwhile, all the questions such as whether we can just execute the spec and whether we can prove properties of real programs remain.  New web frameworks are trying to keep the parts that deal with time and state as small and self-contained as possible, leaving the rest to be described using functions.<p>Couldn&#x27;t we say that the factor of &quot;do you care about time&quot; is behind observations such as that TLA+ is mostly popular with concurrent and distributed systems, or that approaches that only look at function contracts often apply to pieces of a program but not the whole?  As a more specific statement than, for example, that distributed systems are particularly hard so they necessitate particularly powerful tools.