--------------------------------------------------------------------------------
title: Properties of ideals
author: Ayberk Tosun
date-started: 2024-03-02
dates-updated: [2024-03-13, 2024-03-28, 2024-05-03]
--------------------------------------------------------------------------------
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import UF.FunExt
open import UF.PropTrunc
open import UF.Subsingletons
module Locales.DistributiveLattice.Ideal-Properties
(pt : propositional-truncations-exist)
(fe : Fun-Ext)
(pe : Prop-Ext)
where
open import Locales.DistributiveLattice.Definition fe pt
open import Locales.DistributiveLattice.Ideal pt fe pe
open import Locales.DistributiveLattice.Spectrum fe pe pt
open import Locales.Frame pt fe hiding (is-directed)
open import MLTT.Spartan
open import Slice.Family
open import UF.Classifiers
open import UF.Logic
open import UF.SubtypeClassifier
open AllCombinators pt fe hiding (_β¨_)
open PropositionalTruncation pt hiding (_β¨_)
\end{code}
We work in a module parameterized by a π€-distributive-lattice `L`.
\begin{code}
module IdealProperties (L : DistributiveLattice π€) where
open DefnOfFrameOfIdeal L
open DistributiveLattice L
open IdealNotation L
contains-π-implies-above-π : (I : Ideal L) β π ββ± I β (πα΅’ βα΅’ I) holds
contains-π-implies-above-π I ΞΌβ x ΞΌβ =
I-is-downward-closed x π (πα΅-is-top L x) ΞΌβ
where
open Ideal I using (I-is-downward-closed)
above-π-implies-contains-π : (I : Ideal L) β (πα΅’ βα΅’ I) holds β π ββ± I
above-π-implies-contains-π I Ο = Ο π (β€-is-reflexive (poset-ofα΅ L) π)
\end{code}
Added on 2024-03-13.
\begin{code}
open PrincipalIdeals L
open Joins _βα΅’_
\end{code}
Every ideal is the join of the principal ideals of the elements it contains. To
prove this fact, we start by writing down the family of principal ideals
generated by the elements of a given ideal.
\begin{code}
principal-ideals-of : (I : Ideal L) β Fam π€ (Ideal L)
principal-ideals-of I = β
β u β£ (u , _) βΆ Ξ£ u κ β£ L β£α΅ , u ββ± I β
\end{code}
Given an ideal `I`, it is clear that it is an upper bound of its family of
principal ideals.
\begin{code}
ideal-is-an-upper-bound-of-its-principal-ideals
: (I : Ideal L)
β (I is-an-upper-bound-of (principal-ideals-of I)) holds
ideal-is-an-upper-bound-of-its-principal-ideals I (u , ΞΌα΅’) x ΞΌ =
I-is-downward-closed x u ΞΌ ΞΌα΅’
where
open Ideal I using (I-is-downward-closed)
\end{code}
It is in fact the _least_ upper bound of this family.
\begin{code}
ideal-is-lowerbound-of-upperbounds-of-its-principal-ideals
: (I Iα΅€ : Ideal L)
β (Iα΅€ is-an-upper-bound-of (principal-ideals-of I)
β (I βα΅’ Iα΅€)) holds
ideal-is-lowerbound-of-upperbounds-of-its-principal-ideals I Iα΅€ Ο x ΞΌ =
Ο (x , ΞΌ) x (β€-is-reflexive (poset-ofα΅ L) x)
\end{code}
Added on 2024-03-28.
\begin{code}
open import Locales.DirectedFamily pt fe _βα΅’_
principal-ideals-of-ideal-form-a-directed-family
: (I : Ideal L)
β is-directed (principal-ideals-of I) holds
principal-ideals-of-ideal-form-a-directed-family I =
β£ π , I-contains-π β£ , β‘
where
open Ideal I hiding (I)
open PosetReasoning (poset-ofα΅ L)
β‘ : is-closed-under-binary-upper-bounds (principal-ideals-of I) holds
β‘ (x , ΞΌβ) (y , ΞΌβ) = β£ (x β¨ y , I-is-closed-under-β¨ x y ΞΌβ ΞΌβ) , Ξ² , Ξ³ β£
where
Ξ² : (β x βα΅’ β (x β¨ y)) holds
Ξ² z p = z β€β¨ p β© x β€β¨ β¨-is-an-upper-boundβ L x y β© (x β¨ y) β
Ξ³ : (β y βα΅’ β (x β¨ y)) holds
Ξ³ z p = z β€β¨ p β© y β€β¨ β¨-is-an-upper-boundβ L x y β© (x β¨ y) β
\end{code}
Added on 2024-05-03.
Every ideal is directed.
\begin{code}
open classifier-single-universe π€
open import Locales.DirectedFamily pt fe (Ξ» x y β x β€α΅[ L ] y)
using ()
renaming (is-directed to is-directed-L;
is-closed-under-binary-upper-bounds
to is-closed-under-binary-upper-bounds-L)
ideals-are-directed : (I : Ideal L) β is-directed-L (π β£ L β£α΅ (_ββ± I)) holds
ideals-are-directed β = β£ π , I-contains-π β£ , β
where
open Ideal β using (I-contains-π; I-is-closed-under-β¨)
β : is-closed-under-binary-upper-bounds-L (π β£ L β£α΅ (_ββ± β)) holds
β (x , ΞΌβ) (y , ΞΌβ) = β£ ((x β¨ y) , I-is-closed-under-β¨ x y ΞΌβ ΞΌβ) , Ξ² , Ξ³ β£
where
Ξ² : (x β€α΅[ L ] (x β¨ y)) holds
Ξ² = β¨-is-an-upper-boundβ L x y
Ξ³ : (y β€α΅[ L ] (x β¨ y)) holds
Ξ³ = β¨-is-an-upper-boundβ L x y
\end{code}