<story><title>A Graphical Introduction to Lattices</title><url>https://philosophyforprogrammers.blogspot.com/2013/06/a-graphical-introduction-to-lattices.html</url></story><parent_chain><item><author>QuinnWilton</author><text>Lattices, and by extension semilattices, are one of my favourite algebraic structures in the context of programming. Their applications are innumerable, from access control, to distributed systems, to constraining the information flow of privileged information.&lt;p&gt;For example, CvRDTs (a class of conflict-free replicated data types), are made up of the semilattices over a monotonic operation. If you can prove a few basic properties about your data + the merge operation over it, you can construct a CRDT. It won&amp;#x27;t necessarily be efficient, but it&amp;#x27;s a good starting point for reasoning about the problem.&lt;p&gt;People spend a lot of time trying to sell abstract algebra using monads, but in my opinion it&amp;#x27;s a lot easier to grasp the applications of lattices.</text></item></parent_chain><comment><author>zwaps</author><text>Similarly, the most general form of rational decision theory or rational choice theory is based on lattices. That makes intuitive sense, since preference relations ~are~ partially ordered sets.
Then, analyzing rational (vs. for example boundedly rational choice behavior) is equivalent to analyzing lattice optimization problems (monotonicity).&lt;p&gt;Then, parameterizing the choice situation and &amp;#x2F; or introducing strategic dependecies between actors leads to analyzing sub&amp;#x2F;supermodular correspondences on these sets. In fact, the most general version would make use of quasi-supermodularity. I think Milgrom&amp;amp;Roberts 94 show that this is the most general way, one can think of coherent (rational) decision theory.</text></comment>
<story><title>A Graphical Introduction to Lattices</title><url>https://philosophyforprogrammers.blogspot.com/2013/06/a-graphical-introduction-to-lattices.html</url></story><parent_chain><item><author>QuinnWilton</author><text>Lattices, and by extension semilattices, are one of my favourite algebraic structures in the context of programming. Their applications are innumerable, from access control, to distributed systems, to constraining the information flow of privileged information.&lt;p&gt;For example, CvRDTs (a class of conflict-free replicated data types), are made up of the semilattices over a monotonic operation. If you can prove a few basic properties about your data + the merge operation over it, you can construct a CRDT. It won&amp;#x27;t necessarily be efficient, but it&amp;#x27;s a good starting point for reasoning about the problem.&lt;p&gt;People spend a lot of time trying to sell abstract algebra using monads, but in my opinion it&amp;#x27;s a lot easier to grasp the applications of lattices.</text></item></parent_chain><comment><author>082349872349872</author><text>Lattices are also ordered (by intellectual descent) with respect to early explorations in philosophy, such as using transitivity on &amp;quot;Socrates is a man&amp;quot; and &amp;quot;All men are mortal&amp;quot;.&lt;p&gt;Without lattices, we would never have had the ambiguous phrase &amp;quot;computer scientists commonly choose models which have bottoms, but prefer them topless&amp;quot; occurring in a serious textbook.&lt;p&gt;Edit: agreed, intellectual descent is only partially ordered, but the interval between aristotle&amp;#x27;s example syllogism and lattices contains a chain. Guess I should&amp;#x27;ve said &amp;quot;also comparable (by.&amp;quot;</text></comment>