---
title: Homomorphisms of distributive lattices
author: Ayberk Tosun
date-started: 2024-02-21
dates-updated: [2024-05-20, 2024-05-29, 2024-06-09]
---
This module contains the definition of the notion of a distributive lattice
homomorphism.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import UF.FunExt
open import UF.PropTrunc
module Locales.DistributiveLattice.Homomorphism
(fe : Fun-Ext)
(pt : propositional-truncations-exist)
where
open import Locales.DistributiveLattice.Definition fe pt
open import Locales.Frame pt fe
open import MLTT.Spartan
open import UF.Logic
open import UF.SubtypeClassifier
open AllCombinators pt fe renaming (_∧_ to _∧ₚ_)
\end{code}
The properties of preserving bottom, top, binary joins, and binary meets.
\begin{code}
preserves-𝟎 : (L₁ : DistributiveLattice 𝓤) (L₂ : DistributiveLattice 𝓥)
→ (∣ L₁ ∣ᵈ → ∣ L₂ ∣ᵈ) → Ω 𝓥
preserves-𝟎 L₁ L₂ h = h 𝟎₁ =[ σ₂ ]= 𝟎₂
where
open DistributiveLattice L₁ renaming (𝟎 to 𝟎₁)
open DistributiveLattice L₂ renaming (𝟎 to 𝟎₂; X-is-set to σ₂)
preserves-𝟏 : (L₁ : DistributiveLattice 𝓤) (L₂ : DistributiveLattice 𝓥)
→ (∣ L₁ ∣ᵈ → ∣ L₂ ∣ᵈ) → Ω 𝓥
preserves-𝟏 L₁ L₂ h = h 𝟏₁ =[ σ₂ ]= 𝟏₂
where
open DistributiveLattice L₁ renaming (𝟏 to 𝟏₁)
open DistributiveLattice L₂ renaming (𝟏 to 𝟏₂; X-is-set to σ₂)
preserves-∨ : (L₁ : DistributiveLattice 𝓤) (L₂ : DistributiveLattice 𝓥)
→ (∣ L₁ ∣ᵈ → ∣ L₂ ∣ᵈ)
→ Ω (𝓤 ⊔ 𝓥)
preserves-∨ L₁ L₂ h =
Ɐ x ꞉ ∣ L₁ ∣ᵈ , Ɐ y ꞉ ∣ L₁ ∣ᵈ , h (x ∨₁ y) =[ σ ]= (h x ∨₂ h y)
where
open DistributiveLattice L₁ renaming (_∨_ to _∨₁_)
open DistributiveLattice L₂ renaming (_∨_ to _∨₂_; X-is-set to σ)
preserves-∧ : (L₁ : DistributiveLattice 𝓤) (L₂ : DistributiveLattice 𝓥)
→ (∣ L₁ ∣ᵈ → ∣ L₂ ∣ᵈ)
→ Ω (𝓤 ⊔ 𝓥)
preserves-∧ L₁ L₂ h =
Ɐ x ꞉ ∣ L₁ ∣ᵈ , Ɐ y ꞉ ∣ L₁ ∣ᵈ , h (x ∧₁ y) =[ σ ]= (h x ∧₂ h y)
where
open DistributiveLattice L₁ renaming (_∧_ to _∧₁_)
open DistributiveLattice L₂ renaming (_∧_ to _∧₂_; X-is-set to σ)
\end{code}
The property of being a homomorphism of distributive lattices.
\begin{code}
is-homomorphismᵈ : (L₁ : DistributiveLattice 𝓤) (L₂ : DistributiveLattice 𝓥)
→ (∣ L₁ ∣ᵈ → ∣ L₂ ∣ᵈ) → Ω (𝓤 ⊔ 𝓥)
is-homomorphismᵈ L₁ L₂ h = preserves-𝟏 L₁ L₂ h
∧ₚ preserves-∧ L₁ L₂ h
∧ₚ preserves-𝟎 L₁ L₂ h
∧ₚ preserves-∨ L₁ L₂ h
\end{code}
Record-based definition of distributive lattice homomorphisms.
\begin{code}
record Homomorphismᵈᵣ (L₁ : DistributiveLattice 𝓤) (L₂ : DistributiveLattice 𝓥) : 𝓤 ⊔ 𝓥 ̇ where
field
h : ∣ L₁ ∣ᵈ → ∣ L₂ ∣ᵈ
h-is-homomorphism : is-homomorphismᵈ L₁ L₂ h holds
h-preserves-𝟏 : preserves-𝟏 L₁ L₂ h holds
h-preserves-𝟏 = pr₁ h-is-homomorphism
h-preserves-∧ : preserves-∧ L₁ L₂ h holds
h-preserves-∧ = pr₁ (pr₂ h-is-homomorphism)
h-preserves-𝟎 : preserves-𝟎 L₁ L₂ h holds
h-preserves-𝟎 = pr₁ (pr₂ (pr₂ h-is-homomorphism))
h-preserves-∨ : preserves-∨ L₁ L₂ h holds
h-preserves-∨ = pr₂ (pr₂ (pr₂ h-is-homomorphism))
h-is-monotone : is-monotonic (poset-ofᵈ L₁) (poset-ofᵈ L₂) h holds
h-is-monotone (x , y) p = h x ∧₂ h y =⟨ Ⅰ ⟩
h (x ∧₁ y) =⟨ Ⅱ ⟩
h x ∎
where
open DistributiveLattice L₁ renaming (_∧_ to _∧₁_)
open DistributiveLattice L₂ renaming (_∧_ to _∧₂_)
Ⅰ = h-preserves-∧ x y ⁻¹
Ⅱ = ap h p
\end{code}
Added on 2024-03-04.
\begin{code}
syntax Homomorphismᵈᵣ L₁ L₂ = L₁ ─d→ L₂
\end{code}
Added on 2024-05-20.
\begin{code}
funᵈ : (K : DistributiveLattice 𝓤) (L : DistributiveLattice 𝓥) → K ─d→ L → ∣ K ∣ᵈ → ∣ L ∣ᵈ
funᵈ K L 𝒽 = Homomorphismᵈᵣ.h {L₁ = K} {L₂ = L} 𝒽
\end{code}
Added on 2024-05-29.
If the underlying functions of two lattice homomorphisms are equal, then they
are equal.
\begin{code}
to-homomorphismᵈ-= : (K : DistributiveLattice 𝓤) (L : DistributiveLattice 𝓥)
(h₁ h₂ : K ─d→ L)
→ (funᵈ K L h₁ ∼ funᵈ K L h₂)
→ h₁ = h₂
to-homomorphismᵈ-= K L 𝒽₁ 𝒽₂ φ = † (dfunext fe φ)
where
open Homomorphismᵈᵣ 𝒽₁
using ()
renaming (h to h₁; h-is-homomorphism to h₁-is-homomorphism)
open Homomorphismᵈᵣ 𝒽₂
using ()
renaming (h to h₂; h-is-homomorphism to h₂-is-homomorphism)
f : is-homomorphismᵈ K L h₁ holds → Homomorphismᵈᵣ K L
f ϑ = record { h = h₁ ; h-is-homomorphism = ϑ}
† : funᵈ K L 𝒽₁ = funᵈ K L 𝒽₂ → 𝒽₁ = 𝒽₂
† refl = ap f p
where
p : h₁-is-homomorphism = h₂-is-homomorphism
p = holds-is-prop
(is-homomorphismᵈ K L h₁)
h₁-is-homomorphism
h₂-is-homomorphism
\end{code}
Added on 2024-06-09.
\begin{code}
meet-preserving-implies-monotone
: (K L : DistributiveLattice 𝓤)
→ (f : ∣ K ∣ᵈ → ∣ L ∣ᵈ)
→ (preserves-∧ K L f ⇒ is-monotonic (poset-ofᵈ K) (poset-ofᵈ L) f) holds
meet-preserving-implies-monotone K L f φ (x , y) p =
f x ∧₂ f y =⟨ Ⅰ ⟩
f (x ∧₁ y) =⟨ Ⅱ ⟩
f x ∎
where
open DistributiveLattice K renaming (_∧_ to _∧₁_)
open DistributiveLattice L renaming (_∧_ to _∧₂_)
Ⅰ = φ x y ⁻¹
Ⅱ = ap f p
\end{code}
End of addition.