Skip to content

Locales.ContinuousMap.FrameHomomorphism-Properties

--------------------------------------------------------------------------------
title:          Properties of frame homomorphisms
author:         Ayberk Tosun
date-started:   2024-04-10
dates-updated:  [2024-05-06]
--------------------------------------------------------------------------------

Originally written as part of the `Locales.Frame` module on 2021-03-09.

Factored out from the `Locales.Frame` module on 2024-04-10.


{-# OPTIONS --safe --without-K #-}

open import MLTT.Spartan hiding (𝟚; ; )
open import UF.Base
open import UF.FunExt
open import UF.PropTrunc

module Locales.ContinuousMap.FrameHomomorphism-Properties
        (pt : propositional-truncations-exist)
        (fe : Fun-Ext)
       where

open import Locales.ContinuousMap.FrameHomomorphism-Definition pt fe
open import Locales.Frame pt fe
open import Slice.Family
open import UF.Logic
open import UF.Subsingletons
open import UF.SubtypeClassifier

open AllCombinators pt fe


We work in a module parameterized by two frames.


module FrameHomomorphismProperties (F : Frame 𝓤 𝓥 𝓦) (G : Frame 𝓤' 𝓥' 𝓦) where

 open FrameHomomorphisms using (_─f→_)
 open FrameHomomorphisms F G hiding (_─f→_)


The following lemma says that if the underlying functions of two frame
homomorphisms are extensionally equal, then the frame homomorphisms are equal.


 to-frame-homomorphism-= : (h₁ h₂  : F ─f→ G)
                          ((x :  F )  h₁ .pr₁ x  h₂ .pr₁ x)
                          h₁  h₂
 to-frame-homomorphism-= h₁ h₂ ψ = to-subtype-=  (dfunext fe ψ)
  where
    : (f :  F    G )  is-prop (is-a-frame-homomorphism f holds)
    f = holds-is-prop (is-a-frame-homomorphism f)



 frame-morphisms-are-monotonic : (h :  F    G )
                                is-a-frame-homomorphism h holds
                                is-monotonic (poset-of F) (poset-of G) h holds
 frame-morphisms-are-monotonic f (_ , ψ , _) (x , y) p =
  f x              ≤⟨  
  f (x ∧[ F ] y)   ≤⟨  
  f x ∧[ G ] f y   ≤⟨  
  f y              
   where
    open PosetReasoning (poset-of G)

     = reflexivity+ (poset-of G) (ap f (connecting-lemma₁ F p))
     = reflexivity+ (poset-of G) (ψ x y)
     = ∧[ G ]-lower₂ (f x) (f y)



 monotone-map-of : (F ─f→ G)  poset-of F ─m→ poset-of G
 monotone-map-of h = fun h , 
  where
    : is-monotonic (poset-of F) (poset-of G) (pr₁ h) holds
    = frame-morphisms-are-monotonic (pr₁ h) (pr₂ h)



 meet-preserving-implies-monotone : (h :  F    G )
                                   preserves-binary-meets h holds
                                   is-monotonic (poset-of F) (poset-of G) h holds
 meet-preserving-implies-monotone h μ (x , y) p =
  h x              =⟨ i   ⟩ₚ
  h (x ∧[ F ] y)   =⟨ ii  ⟩ₚ
  h x ∧[ G ] h y   ≤⟨ iii 
  h y              
   where
    open PosetReasoning (poset-of G)

    i   = ap h (connecting-lemma₁ F p)
    ii  = μ x y
    iii = ∧[ G ]-lower₂ (h x) (h y)



 frame-homomorphisms-preserve-bottom : (h : F ─f→ G)
                                      h .pr₁ 𝟎[ F ]  𝟎[ G ]
 frame-homomorphisms-preserve-bottom 𝒽@(h , _ , _ , γ) =
  only-𝟎-is-below-𝟎 G (𝒽 .pr₁ 𝟎[ F ]) 
   where
     : (h 𝟎[ F ] ≤[ poset-of G ] 𝟎[ G ]) holds
     = pr₂ (γ ( _)) ((⋁[ G ]  𝓦) , λ ())



 frame-homomorphisms-preserve-binary-joins : (h : F ─f→ G)
                                            (x y :  F )
                                            h .pr₁ (x ∨[ F ] y)
                                            (h .pr₁ x) ∨[ G ] (h .pr₁ y)
 frame-homomorphisms-preserve-binary-joins 𝒽@(h , _ , _ , γ) x y =
  ⋁[ G ]-unique  h x , h y  (h (x ∨[ F ] y)) ( , )
   where
    open Joins  x y  x ≤[ poset-of G ] y)

     : (h (x ∨[ F ] y) is-an-upper-bound-of  h x , h y ) holds
     (inl ) = pr₁ (γ  x , y ) (inl )
     (inr ) = pr₁ (γ  x , y ) (inr )

     : ((u , _) : upper-bound  h x , h y )
       (h (x ∨[ F ] y) ≤[ poset-of G ] u) holds
     (u , p) = pr₂ (γ  x , y ) (u , q)
     where
      q : (u is-an-upper-bound-of  h z  z ε  x , y  ) holds
      q (inl ) = p (inl )
      q (inr ) = p (inr )


Added on 2024-05-06.


sections-are-order-embeddings : (P : Poset 𝓤 𝓥) (Q : Poset 𝓤' 𝓥')
                               (s :  P ∣ₚ   Q ∣ₚ)
                               (r :  Q ∣ₚ   P ∣ₚ )
                               is-monotonic Q P r holds
                               r  s  id
                               {x y :  P ∣ₚ}
                               (s x ≤[ Q ] s y  x ≤[ P ] y) holds
sections-are-order-embeddings P Q s r 𝓂 φ {x} {y} p =
 transport₂  x y  (x ≤[ P ] y) holds) (φ x) (φ y) 
  where
    : (r (s x) ≤[ P ] r (s y)) holds
    = 𝓂 (s x , s y) p