A lattice is a partially ordered set where every pair of elements has a supremum (least upper bound) and infimum (greatest lower bound). A lattice must satisfy the properties that (1) any two elements have a supremum and infimum and (2) the supremum of two elements is their join and the infimum is their meet. Common examples of lattices include the natural numbers under the divisibility relation and sets under the subset relation. Lattice theory has applications in many areas of computer science and engineering such as distributed computing, concurrency theory, and programming language semantics.