Module docstring
{"# Closure operators between preorders
We define (bundled) closure operators on a preorder as monotone (increasing), extensive (inflationary) and idempotent functions. We define closed elements for the operator as elements which are fixed by it.
Lower adjoints to a function between preorders u : β → α allow to generalise closure operators to
situations where the closure operator we are dealing with naturally decomposes as u ∘ l where l
is a worthy function to have on its own. Typical examples include
l : Set G → Subgroup G := Subgroup.closure, u : Subgroup G → Set G := (↑), where G is a group.
This shows there is a close connection between closure operators, lower adjoints and Galois
connections/insertions: every Galois connection induces a lower adjoint which itself induces a
closure operator by composition (see GaloisConnection.lowerAdjoint and
LowerAdjoint.closureOperator), and every closure operator on a partial order induces a Galois
insertion from the set of closed elements to the underlying type (see ClosureOperator.gi).
Main definitions
ClosureOperator: A closure operator is a monotone functionf : α → αsuch that∀ x, x ≤ f xand∀ x, f (f x) = f x.LowerAdjoint: A lower adjoint tou : β → αis a functionl : α → βsuch thatlanduform a Galois connection.
Implementation details
Although LowerAdjoint is technically a generalisation of ClosureOperator (by defining
toFun := id), it is desirable to have both as otherwise ids would be carried all over the
place when using concrete closure operators such as ConvexHull.
LowerAdjoint really is a semibundled structure version of GaloisConnection.
References
- https://en.wikipedia.org/wiki/Closureoperator#Closureoperatorsonpartiallyorderedsets
","### Closure operator ","### Lower adjoint ","### Translations between
GaloisConnection,LowerAdjoint,ClosureOperator"}