Overture.Adjunction.Closure¶
Closure Systems and Operators¶
This is the Overture.Adjunction.Closure module of the Agda Universal Algebra Library.
Closure Systems¶
A closure system on a set X is a collection π of subsets of X that is closed
under arbitrary intersection (including the empty intersection, so β β
= X β π).
Thus a closure system is a complete meet semilattice with respect to the subset
inclusion ordering.
Since every complete meet semilattice is automatically a complete lattice, the closed sets of a closure system form a complete lattice. (See Theorem 2.5 in J.B. Nation's Lattice Theory Notes.)
Some examples of closure systems are the following:
- order ideals of an ordered set
- subalgebras of an algebra
- equivalence relations on a set
- congruence relations of an algebra
Extensive : Rel a Ο β (a β a) β Type _ Extensive _β€_ C = β{x} β x β€ C x -- (We might propose a new stdlib equivalent to Extensive in, e.g., `Relation.Binary.Core`.) module _ {Ο Ο β : Level}{X : Type Ο} where IntersectClosed : Pred (Pred X β) Ο β Type (Ο β Ο β lsuc β) IntersectClosed C = β {I : Type β}{c : I β Pred X β} β (β i β (c i) β C) β β I c β C ClosureSystem : Type _ ClosureSystem = Ξ£[ C β Pred (Pred X β) Ο ] IntersectClosed C
Closure Operators¶
Let π· = (P, β€) be a poset. A function C : P β P is called a closure operator
on π· if it is
- (extensive)
β x β x β€ C x - (order preserving)
β x y β x β€ y β C x β€ C y - (idempotent)
β x β C (C x) = C x
Thus, a closure operator is an extensive, idempotent poset endomorphism.
-- ClOp, the inhabitants of which denote closure operators. record ClOp {β ββ ββ : Level}(π¨ : Poset β ββ ββ) : Type (β β ββ β ββ) where open Poset π¨ using (Carrier; _β_; _β€_) open Algebra.Definitions (_β_) field C : Carrier β Carrier isExtensive : Extensive _β€_ C isOrderPreserving : C Preserves _β€_ βΆ _β€_ isIdempotent : IdempotentFun C
Basic properties of closure operators¶
module _ {π¨ : Poset β ββ ββ} where open Poset π¨ renaming (Carrier to A) using (_β_; _β€_; refl; trans; antisym) open Algebra.Definitions (_β_) using (IdempotentFun) open Inverse using (from; to) module _ {πͺ : ClOp π¨} where open ClOp πͺ open β€-Reasoning π¨
Theorem 1. If π¨ = (A , β¦) is a poset and C is a closure operator on A, then
β (x y : A) β x β¦ C y β C x β¦ C y.
clopβlawβ : β x y β x β€ C y β C x β€ C y clopβlawβ x y xβ€cy = begin C x β€β¨ isOrderPreserving xβ€cy β© C (C y) ββ¨ isIdempotent y β© C y β clopβlawβ : β x y β C x β€ C y β x β€ C y clopβlawβ x y cxβ€cy = begin x β€β¨ isExtensive β© C x β€β¨ cxβ€cy β© C y β
The converse of Theorem 1 also holds. That is,
Theorem 2. If π¨ = (A , β€) is a poset and C : A β A satisfies
β (x y : A) β (x β€ C y β C x β€ C y), then C is a closure operator on A.
clopβlaw : (c : A β A) β (β x y β x β€ c y β c x β€ c y) β Extensive _β€_ c Γ c Preserves _β€_ βΆ _β€_ Γ IdempotentFun c clopβlaw c hyp = e , (o , i) where -- c is extensive: x β€ c x e : Extensive _β€_ c e = (from ββ hyp) _ _ refl -- c is order preserving: x β€ y β c x β€ c y o : c Preserves _β€_ βΆ _β€_ o u = (to ββ hyp) _ _ (trans u e) -- c is idempotent: c (c x) = c x i : IdempotentFun c i x = antisym ((to ββ hyp) _ _ refl) ((from ββ hyp) _ _ refl)