order.closure

# Closure operators on a partial order #

We define (bundled) closure operators on a partial order as an monotone (increasing), extensive (inflationary) and idempotent function. We define closed elements for the operator as elements which are fixed by it.

Note that there is close connection to Galois connections and Galois insertions: every closure operator induces a Galois insertion (from the set of closed elements to the underlying type), and every Galois connection induces a closure operator (namely the composition). In particular, a Galois insertion can be seen as a general case of a closure operator, where the inclusion is given by coercion, see closure_operator.gi.

## References #

structure closure_operator (α : Type u)  :
Type u
• to_preorder_hom : α →ₘ α
• le_closure' : ∀ (x : α), x
• idempotent' : ∀ (x : α), =

A closure operator on the partial order α is a monotone function which is extensive (every x is less than its closure) and idempotent.

@[instance]
def closure_operator.has_coe_to_fun (α : Type u)  :
Equations
@[simp]
theorem closure_operator.id_to_preorder_hom_to_fun (α : Type u) (x : α) :
= x
def closure_operator.id (α : Type u)  :

The identity function as a closure operator.

Equations
@[instance]
def closure_operator.inhabited (α : Type u)  :
Equations
@[ext]
theorem closure_operator.ext {α : Type u} (c₁ c₂ : closure_operator α) :
c₁ = c₂c₁ = c₂
@[simp]
theorem closure_operator.mk'_to_preorder_hom_to_fun {α : Type u} (f : α → α) (hf₁ : monotone f) (hf₂ : ∀ (x : α), x f x) (hf₃ : ∀ (x : α), f (f x) f x) (ᾰ : α) :
hf₁ hf₂ hf₃).to_preorder_hom) = f ᾰ
def closure_operator.mk' {α : Type u} (f : α → α) (hf₁ : monotone f) (hf₂ : ∀ (x : α), x f x) (hf₃ : ∀ (x : α), f (f x) f x) :

Constructor for a closure operator using the weaker idempotency axiom: f (f x) ≤ f x.

Equations
theorem closure_operator.monotone {α : Type u} (c : closure_operator α) :
theorem closure_operator.le_closure {α : Type u} (c : closure_operator α) (x : α) :
x c x

Every element is less than its closure. This property is sometimes referred to as extensivity or inflationary.

@[simp]
theorem closure_operator.idempotent {α : Type u} (c : closure_operator α) (x : α) :
c (c x) = c x
theorem closure_operator.le_closure_iff {α : Type u} (c : closure_operator α) (x y : α) :
x c y c x c y
theorem closure_operator.closure_top {α : Type u} [order_top α] (c : closure_operator α) :
theorem closure_operator.closure_inter_le {α : Type u} (c : closure_operator α) (x y : α) :
c (x y) c x c y
theorem closure_operator.closure_union_closure_le {α : Type u} (c : closure_operator α) (x y : α) :
c x c y c (x y)
def closure_operator.closed {α : Type u} (c : closure_operator α) :
set α

An element x is closed for the closure operator c if it is a fixed point for it.

Equations
theorem closure_operator.mem_closed_iff {α : Type u} (c : closure_operator α) (x : α) :
x c.closed c x = x
theorem closure_operator.mem_closed_iff_closure_le {α : Type u} (c : closure_operator α) (x : α) :
x c.closed c x x
theorem closure_operator.closure_eq_self_of_mem_closed {α : Type u} (c : closure_operator α) {x : α} (h : x c.closed) :
c x = x
@[simp]
theorem closure_operator.closure_is_closed {α : Type u} (c : closure_operator α) (x : α) :
theorem closure_operator.closed_eq_range_close {α : Type u} (c : closure_operator α) :

The set of closed elements for c is exactly its range.

def closure_operator.to_closed {α : Type u} (c : closure_operator α) (x : α) :

Send an x to an element of the set of closed elements (by taking the closure).

Equations
theorem closure_operator.closure_le_closed_iff_le {α : Type u} (c : closure_operator α) {x y : α} (hy : c.closed y) :
x y c x y
def closure_operator.gi {α : Type u} (c : closure_operator α) :

The set of closed elements has a Galois insertion to the underlying type.

Equations
@[simp]
theorem galois_connection.closure_operator_to_preorder_hom_to_fun {α : Type u} {β : Type u} [preorder β] {l : α → β} {u : β → α} (gc : u) (x : α) :
def galois_connection.closure_operator {α : Type u} {β : Type u} [preorder β] {l : α → β} {u : β → α} (gc : u) :

Every Galois connection induces a closure operator given by the composition. This is the partial order version of the statement that every adjunction induces a monad.

Equations
@[simp]
theorem closure_operator_gi_self {α : Type u} (c : closure_operator α) :

The Galois insertion associated to a closure operator can be used to reconstruct the closure operator.

Note that the inverse in the opposite direction does not hold in general.