semilattices: Semilattices

[ algebra, bsd3, data, data-structures, library, math ] [ Propose Tags ]

Join- and meet-semilattices, with optional upper and lower bounds, and a variety of instances for each.

[Skip to Readme]
Change log
Dependencies base (>=4.9 && <4.12), containers (==0.5.*), hashable (==1.2.*), unordered-containers (==0.2.*) [details]
License BSD-3-Clause
Copyright 2017-2018 Rob Rix
Author Rob Rix
Category Algebra, Data, Data Structures, Math
Home page
Source repo head: git clone
Uploaded by robrix at Fri Jun 15 15:34:22 UTC 2018
Distributions NixOS:
Downloads 60 total (25 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-06-15 [all 1 reports]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees

Readme for semilattices-

[back to package description]


This Haskell package defines typeclasses for join- and meet-semilattices, and for upper and lower bounds, and a variety of instances for each.


Semilattices are idempotent commutative semigroups, and come in two flavours: Join and Meet. This presentation of them doesn’t inherit from Semigroup however, since Semigroups already exist and the relationships between the various classes here warrant their own operators.

Join semilattices can be combined using the \/ operator (pronounced “lub,” for “least upper bound”). Meet semilattices can be combined with the /\ operator (pronounced “glb,” for “greatest lower bound”). They have opposite relationships to Lower and Upper bounds (which are optional; in general, there are more lower bounds than upper ones).