Large join-semilattices

Content created by Louis Wasserman.

Created on 2025-03-01.
Last modified on 2026-02-15.

{-# OPTIONS --lossy-unification #-}

module order-theory.large-join-semilattices where
Imports
open import foundation.action-on-identifications-binary-functions
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.large-binary-relations
open import foundation.large-similarity-relations
open import foundation.logical-equivalences
open import foundation.sets
open import foundation.universe-levels

open import group-theory.commutative-monoids
open import group-theory.large-commutative-monoids
open import group-theory.large-monoids
open import group-theory.large-semigroups

open import order-theory.bottom-elements-large-posets
open import order-theory.join-semilattices
open import order-theory.large-posets
open import order-theory.least-upper-bounds-large-posets
open import order-theory.posets
open import order-theory.similarity-of-elements-large-posets
open import order-theory.upper-bounds-large-posets

Idea

A large join-semilattice is a large poset in which every pair of elements has a least binary upper bound.

Definition

The predicate that a large poset has joins

record
  has-joins-Large-Poset
    { α : Level  Level}
    { β : Level  Level  Level}
    ( P : Large-Poset α β) :
    UUω
  where
  constructor
    make-has-joins-Large-Poset
  field
    join-has-joins-Large-Poset :
      {l1 l2 : Level}
      (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) 
      type-Large-Poset P (l1  l2)
    is-least-binary-upper-bound-join-has-joins-Large-Poset :
      {l1 l2 : Level}
      (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) 
      is-least-binary-upper-bound-Large-Poset P x y
        ( join-has-joins-Large-Poset x y)

open has-joins-Large-Poset public

The predicate of being a large join-semilattice

record
  is-large-join-semilattice-Large-Poset
    { α : Level  Level}
    { β : Level  Level  Level}
    ( P : Large-Poset α β) :
    UUω
  where
  field
    has-joins-is-large-join-semilattice-Large-Poset :
      has-joins-Large-Poset P
    has-bottom-element-is-large-join-semilattice-Large-Poset :
      has-bottom-element-Large-Poset P

open is-large-join-semilattice-Large-Poset public

module _
  {α : Level  Level}
  {β : Level  Level  Level}
  (P : Large-Poset α β)
  (H : is-large-join-semilattice-Large-Poset P)
  where

  join-is-large-join-semilattice-Large-Poset :
    {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) 
    type-Large-Poset P (l1  l2)
  join-is-large-join-semilattice-Large-Poset =
    join-has-joins-Large-Poset
      ( has-joins-is-large-join-semilattice-Large-Poset H)

  is-least-binary-upper-bound-join-is-large-join-semilattice-Large-Poset :
    {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) 
    is-least-binary-upper-bound-Large-Poset P x y
      ( join-is-large-join-semilattice-Large-Poset x y)
  is-least-binary-upper-bound-join-is-large-join-semilattice-Large-Poset =
    is-least-binary-upper-bound-join-has-joins-Large-Poset
      ( has-joins-is-large-join-semilattice-Large-Poset H)

  bottom-is-large-join-semilattice-Large-Poset :
    (l : Level)  type-Large-Poset P l
  bottom-is-large-join-semilattice-Large-Poset =
    bottom-has-bottom-element-Large-Poset
      ( has-bottom-element-is-large-join-semilattice-Large-Poset H)

  is-bottom-element-bottom-is-large-join-semilattice-Large-Poset :
    (l : Level) {l1 : Level} (x : type-Large-Poset P l1) 
    leq-Large-Poset P (bottom-is-large-join-semilattice-Large-Poset l) x
  is-bottom-element-bottom-is-large-join-semilattice-Large-Poset =
    is-bottom-element-bottom-has-bottom-element-Large-Poset
      ( has-bottom-element-is-large-join-semilattice-Large-Poset H)

Large join-semilattices

record
  Large-Join-Semilattice
    ( α : Level  Level)
    ( β : Level  Level  Level) :
    UUω
  where
  constructor
    make-Large-Join-Semilattice
  field
    large-poset-Large-Join-Semilattice :
      Large-Poset α β
    is-large-join-semilattice-Large-Join-Semilattice :
      is-large-join-semilattice-Large-Poset
        large-poset-Large-Join-Semilattice

open Large-Join-Semilattice public

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  where

  type-Large-Join-Semilattice : (l : Level)  UU (α l)
  type-Large-Join-Semilattice =
    type-Large-Poset (large-poset-Large-Join-Semilattice L)

  set-Large-Join-Semilattice : (l : Level)  Set (α l)
  set-Large-Join-Semilattice =
    set-Large-Poset (large-poset-Large-Join-Semilattice L)

  is-set-type-Large-Join-Semilattice :
    {l : Level}  is-set (type-Large-Join-Semilattice l)
  is-set-type-Large-Join-Semilattice =
    is-set-type-Large-Poset (large-poset-Large-Join-Semilattice L)

  leq-prop-Large-Join-Semilattice :
    Large-Relation-Prop β type-Large-Join-Semilattice
  leq-prop-Large-Join-Semilattice =
    leq-prop-Large-Poset (large-poset-Large-Join-Semilattice L)

  leq-Large-Join-Semilattice : Large-Relation β type-Large-Join-Semilattice
  leq-Large-Join-Semilattice =
    leq-Large-Poset (large-poset-Large-Join-Semilattice L)

  refl-leq-Large-Join-Semilattice :
    is-reflexive-Large-Relation
      ( type-Large-Join-Semilattice)
      ( leq-Large-Join-Semilattice)
  refl-leq-Large-Join-Semilattice =
    refl-leq-Large-Poset (large-poset-Large-Join-Semilattice L)

  antisymmetric-leq-Large-Join-Semilattice :
    is-antisymmetric-Large-Relation
      ( type-Large-Join-Semilattice)
      ( leq-Large-Join-Semilattice)
  antisymmetric-leq-Large-Join-Semilattice =
    antisymmetric-leq-Large-Poset (large-poset-Large-Join-Semilattice L)

  transitive-leq-Large-Join-Semilattice :
    is-transitive-Large-Relation
      ( type-Large-Join-Semilattice)
      ( leq-Large-Join-Semilattice)
  transitive-leq-Large-Join-Semilattice =
    transitive-leq-Large-Poset (large-poset-Large-Join-Semilattice L)

  has-joins-Large-Join-Semilattice :
    has-joins-Large-Poset (large-poset-Large-Join-Semilattice L)
  has-joins-Large-Join-Semilattice =
    has-joins-is-large-join-semilattice-Large-Poset
      ( is-large-join-semilattice-Large-Join-Semilattice L)

  join-Large-Join-Semilattice :
    {l1 l2 : Level}
    (x : type-Large-Join-Semilattice l1)
    (y : type-Large-Join-Semilattice l2) 
    type-Large-Join-Semilattice (l1  l2)
  join-Large-Join-Semilattice =
    join-is-large-join-semilattice-Large-Poset
      ( large-poset-Large-Join-Semilattice L)
      ( is-large-join-semilattice-Large-Join-Semilattice L)

  is-least-binary-upper-bound-join-Large-Join-Semilattice :
    {l1 l2 : Level}
    (x : type-Large-Join-Semilattice l1)
    (y : type-Large-Join-Semilattice l2) 
    is-least-binary-upper-bound-Large-Poset
      ( large-poset-Large-Join-Semilattice L)
      ( x)
      ( y)
      ( join-Large-Join-Semilattice x y)
  is-least-binary-upper-bound-join-Large-Join-Semilattice =
    is-least-binary-upper-bound-join-is-large-join-semilattice-Large-Poset
      ( large-poset-Large-Join-Semilattice L)
      ( is-large-join-semilattice-Large-Join-Semilattice L)

  is-binary-upper-bound-join-Large-Join-Semilattice :
    {l1 l2 : Level}
    (x : type-Large-Join-Semilattice l1)
    (y : type-Large-Join-Semilattice l2) 
    is-binary-upper-bound-Large-Poset
      ( large-poset-Large-Join-Semilattice L)
      ( x)
      ( y)
      ( join-Large-Join-Semilattice x y)
  is-binary-upper-bound-join-Large-Join-Semilattice x y =
    is-binary-upper-bound-is-least-binary-upper-bound-Large-Poset
      ( large-poset-Large-Join-Semilattice L)
      ( x)
      ( y)
      ( is-least-binary-upper-bound-join-Large-Join-Semilattice x y)

  leq-left-join-Large-Join-Semilattice :
    {l1 l2 : Level}
    (x : type-Large-Join-Semilattice l1)
    (y : type-Large-Join-Semilattice l2) 
    leq-Large-Join-Semilattice x (join-Large-Join-Semilattice x y)
  leq-left-join-Large-Join-Semilattice x y =
    pr1 (is-binary-upper-bound-join-Large-Join-Semilattice x y)

  leq-right-join-Large-Join-Semilattice :
    {l1 l2 : Level}
    (x : type-Large-Join-Semilattice l1)
    (y : type-Large-Join-Semilattice l2) 
    leq-Large-Join-Semilattice y (join-Large-Join-Semilattice x y)
  leq-right-join-Large-Join-Semilattice x y =
    pr2 (is-binary-upper-bound-join-Large-Join-Semilattice x y)

  leq-join-Large-Join-Semilattice :
    {l1 l2 l3 : Level}
    (x : type-Large-Join-Semilattice l1)
    (y : type-Large-Join-Semilattice l2)
    (z : type-Large-Join-Semilattice l3) 
    leq-Large-Join-Semilattice x z 
    leq-Large-Join-Semilattice y z 
    leq-Large-Join-Semilattice (join-Large-Join-Semilattice x y) z
  leq-join-Large-Join-Semilattice x y z x≤z y≤z =
    forward-implication
      ( is-least-binary-upper-bound-join-Large-Join-Semilattice x y z)
      ( x≤z , y≤z)

  ap-join-Large-Join-Semilattice :
    {l1 l2 : Level}
    {x x' : type-Large-Join-Semilattice l1}
    {y y' : type-Large-Join-Semilattice l2} 
    (x  x')  (y  y') 
    join-Large-Join-Semilattice x y  join-Large-Join-Semilattice x' y'
  ap-join-Large-Join-Semilattice p q =
    ap-binary join-Large-Join-Semilattice p q

  has-bottom-element-Large-Join-Semilattice :
    has-bottom-element-Large-Poset (large-poset-Large-Join-Semilattice L)
  has-bottom-element-Large-Join-Semilattice =
    has-bottom-element-is-large-join-semilattice-Large-Poset
      ( is-large-join-semilattice-Large-Join-Semilattice L)

  bottom-Large-Join-Semilattice :
    (l : Level)  type-Large-Join-Semilattice l
  bottom-Large-Join-Semilattice =
    bottom-is-large-join-semilattice-Large-Poset
      ( large-poset-Large-Join-Semilattice L)
      ( is-large-join-semilattice-Large-Join-Semilattice L)

  is-bottom-element-bottom-Large-Join-Semilattice :
    (l : Level) {l1 : Level} (x : type-Large-Join-Semilattice l1) 
    leq-Large-Join-Semilattice (bottom-Large-Join-Semilattice l) x
  is-bottom-element-bottom-Large-Join-Semilattice =
    is-bottom-element-bottom-is-large-join-semilattice-Large-Poset
      ( large-poset-Large-Join-Semilattice L)
      ( is-large-join-semilattice-Large-Join-Semilattice L)

  large-similarity-relation-Large-Join-Semilattice :
    Large-Similarity-Relation
      ( λ l1 l2  β l1 l2  β l2 l1)
      ( type-Large-Join-Semilattice)
  large-similarity-relation-Large-Join-Semilattice =
    large-similarity-relation-sim-Large-Poset
      ( large-poset-Large-Join-Semilattice L)

  sim-prop-Large-Join-Semilattice :
    Large-Relation-Prop
      ( λ l1 l2  β l1 l2  β l2 l1)
      ( type-Large-Join-Semilattice)
  sim-prop-Large-Join-Semilattice =
    sim-prop-Large-Similarity-Relation
      ( large-similarity-relation-Large-Join-Semilattice)

  sim-Large-Join-Semilattice :
    Large-Relation
      ( λ l1 l2  β l1 l2  β l2 l1)
      ( type-Large-Join-Semilattice)
  sim-Large-Join-Semilattice =
    sim-Large-Similarity-Relation
      ( large-similarity-relation-Large-Join-Semilattice)

Small join semilattices from large join semilattices

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  where

  poset-Large-Join-Semilattice : (l : Level)  Poset (α l) (β l l)
  poset-Large-Join-Semilattice =
    poset-Large-Poset (large-poset-Large-Join-Semilattice L)

  is-join-semilattice-poset-Large-Join-Semilattice :
    {l : Level}  is-join-semilattice-Poset (poset-Large-Join-Semilattice l)
  pr1 (is-join-semilattice-poset-Large-Join-Semilattice x y) =
    join-Large-Join-Semilattice L x y
  pr2 (is-join-semilattice-poset-Large-Join-Semilattice x y) =
    is-least-binary-upper-bound-join-Large-Join-Semilattice L x y

  order-theoretic-join-semilattice-Large-Join-Semilattice :
    (l : Level)  Order-Theoretic-Join-Semilattice (α l) (β l l)
  pr1 (order-theoretic-join-semilattice-Large-Join-Semilattice l) =
    poset-Large-Join-Semilattice l
  pr2 (order-theoretic-join-semilattice-Large-Join-Semilattice l) =
    is-join-semilattice-poset-Large-Join-Semilattice

  join-semilattice-Large-Join-Semilattice :
    (l : Level)  Join-Semilattice (α l)
  join-semilattice-Large-Join-Semilattice l =
    join-semilattice-Order-Theoretic-Join-Semilattice
      ( order-theoretic-join-semilattice-Large-Join-Semilattice l)

The join operation is associative

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  (let _≤_ = leq-Large-Join-Semilattice L)
  (let _∨_ = join-Large-Join-Semilattice L)
  {l1 l2 l3 : Level}
  (x : type-Large-Join-Semilattice L l1)
  (y : type-Large-Join-Semilattice L l2)
  (z : type-Large-Join-Semilattice L l3)
  where

  abstract
    leq-left-triple-join-Large-Join-Semilattice :
      x  ((x  y)  z)
    leq-left-triple-join-Large-Join-Semilattice =
      transitive-leq-Large-Join-Semilattice L
        ( x)
        ( x  y)
        ( (x  y)  z)
        ( leq-left-join-Large-Join-Semilattice L (x  y) z)
        ( leq-left-join-Large-Join-Semilattice L x y)

    leq-center-triple-join-Large-Join-Semilattice :
      y  ((x  y)  z)
    leq-center-triple-join-Large-Join-Semilattice =
      transitive-leq-Large-Join-Semilattice L
        ( y)
        ( x  y)
        ( (x  y)  z)
        ( leq-left-join-Large-Join-Semilattice L (x  y) z)
        ( leq-right-join-Large-Join-Semilattice L x y)

    leq-right-triple-join-Large-Join-Semilattice :
      z  ((x  y)  z)
    leq-right-triple-join-Large-Join-Semilattice =
      leq-right-join-Large-Join-Semilattice L (x  y) z

    leq-left-triple-join-Large-Join-Semilattice' :
      x  (x  (y  z))
    leq-left-triple-join-Large-Join-Semilattice' =
      leq-left-join-Large-Join-Semilattice L x (y  z)

    leq-center-triple-join-Large-Join-Semilattice' :
      y  (x  (y  z))
    leq-center-triple-join-Large-Join-Semilattice' =
      transitive-leq-Large-Join-Semilattice L
        ( y)
        ( y  z)
        ( x  (y  z))
        ( leq-right-join-Large-Join-Semilattice L x (y  z))
        ( leq-left-join-Large-Join-Semilattice L y z)

    leq-right-triple-join-Large-Join-Semilattice' :
      z  (x  (y  z))
    leq-right-triple-join-Large-Join-Semilattice' =
      transitive-leq-Large-Join-Semilattice L
        ( z)
        ( y  z)
        ( x  (y  z))
        ( leq-right-join-Large-Join-Semilattice L x (y  z))
        ( leq-right-join-Large-Join-Semilattice L y z)

    leq-associative-join-Large-Join-Semilattice :
      ((x  y)  z)  (x  (y  z))
    leq-associative-join-Large-Join-Semilattice =
      leq-join-Large-Join-Semilattice L _ _ _
        ( leq-join-Large-Join-Semilattice L _ _ _
          ( leq-left-triple-join-Large-Join-Semilattice')
          ( leq-center-triple-join-Large-Join-Semilattice'))
        ( leq-right-triple-join-Large-Join-Semilattice')

    leq-associative-join-Large-Join-Semilattice' :
      (x  (y  z))  ((x  y)  z)
    leq-associative-join-Large-Join-Semilattice' =
      leq-join-Large-Join-Semilattice L _ _ _
        ( leq-left-triple-join-Large-Join-Semilattice)
        ( leq-join-Large-Join-Semilattice L _ _ _
          ( leq-center-triple-join-Large-Join-Semilattice)
          ( leq-right-triple-join-Large-Join-Semilattice))

    associative-join-Large-Join-Semilattice :
      ((x  y)  z)  (x  (y  z))
    associative-join-Large-Join-Semilattice =
      antisymmetric-leq-Large-Join-Semilattice L _ _
        ( leq-associative-join-Large-Join-Semilattice)
        ( leq-associative-join-Large-Join-Semilattice')

The join operation is commutative

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  (let _≤_ = leq-Large-Join-Semilattice L)
  (let _∨_ = join-Large-Join-Semilattice L)
  {l1 l2 : Level}
  (x : type-Large-Join-Semilattice L l1)
  (y : type-Large-Join-Semilattice L l2)
  where

  abstract
    leq-commutative-join-Large-Join-Semilattice :
      (x  y)  (y  x)
    leq-commutative-join-Large-Join-Semilattice =
      leq-join-Large-Join-Semilattice L _ _ _
        ( leq-right-join-Large-Join-Semilattice L y x)
        ( leq-left-join-Large-Join-Semilattice L y x)

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  (let _≤_ = leq-Large-Join-Semilattice L)
  (let _∨_ = join-Large-Join-Semilattice L)
  {l1 l2 : Level}
  (x : type-Large-Join-Semilattice L l1)
  (y : type-Large-Join-Semilattice L l2)
  where

  abstract
    commutative-join-Large-Join-Semilattice :
      (x  y)  (y  x)
    commutative-join-Large-Join-Semilattice =
      antisymmetric-leq-Large-Join-Semilattice L _ _
        ( leq-commutative-join-Large-Join-Semilattice L x y)
        ( leq-commutative-join-Large-Join-Semilattice L y x)

The bottom element is an identity for the join operation

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  (let _≤_ = leq-Large-Join-Semilattice L)
  (let _∨_ = join-Large-Join-Semilattice L)
  {l : Level}
  (x : type-Large-Join-Semilattice L l)
  where

  abstract
    left-bottom-law-join-Large-Join-Semilattice :
      join-Large-Join-Semilattice L (bottom-Large-Join-Semilattice L lzero) x 
      x
    left-bottom-law-join-Large-Join-Semilattice =
      antisymmetric-leq-Large-Join-Semilattice L _ _
        ( leq-join-Large-Join-Semilattice L _ _ _
          ( is-bottom-element-bottom-Large-Join-Semilattice L lzero x)
          ( refl-leq-Large-Join-Semilattice L x))
        ( leq-right-join-Large-Join-Semilattice L _ _)

    right-bottom-law-join-Large-Join-Semilattice :
      join-Large-Join-Semilattice L
        ( x)
        ( bottom-Large-Join-Semilattice L lzero) 
      x
    right-bottom-law-join-Large-Join-Semilattice =
      ( commutative-join-Large-Join-Semilattice L
        ( x)
        ( bottom-Large-Join-Semilattice L lzero)) 
      ( left-bottom-law-join-Large-Join-Semilattice)

The join operation on a large join semilattice preserves similarity

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  where

  abstract
    preserves-sim-join-Large-Join-Semilattice :
      {l1 l2 l3 l4 : Level}
      (x : type-Large-Join-Semilattice L l1)
      (x' : type-Large-Join-Semilattice L l2) 
      sim-Large-Join-Semilattice L x x' 
      (y : type-Large-Join-Semilattice L l3)
      (y' : type-Large-Join-Semilattice L l4) 
      sim-Large-Join-Semilattice L y y' 
      sim-Large-Join-Semilattice L
        ( join-Large-Join-Semilattice L x y)
        ( join-Large-Join-Semilattice L x' y')
    preserves-sim-join-Large-Join-Semilattice
      x x' (x≤x' , x'≤x) y y' (y≤y' , y'≤y) =
      ( leq-join-Large-Join-Semilattice L _ _ _
          ( transitive-leq-Large-Join-Semilattice L _ _ _
            ( leq-left-join-Large-Join-Semilattice L x' y')
            ( x≤x'))
          ( transitive-leq-Large-Join-Semilattice L _ _ _
            ( leq-right-join-Large-Join-Semilattice L x' y')
            ( y≤y')) ,
        leq-join-Large-Join-Semilattice L _ _ _
          ( transitive-leq-Large-Join-Semilattice L _ _ _
            ( leq-left-join-Large-Join-Semilattice L x y)
            ( x'≤x))
          ( transitive-leq-Large-Join-Semilattice L _ _ _
            ( leq-right-join-Large-Join-Semilattice L x y)
            ( y'≤y)))

The large commutative monoid associated with a large join semilattice

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  where

  large-semigroup-Large-Join-Semilattice : Large-Semigroup α
  large-semigroup-Large-Join-Semilattice =
    λ where
      .set-Large-Semigroup  set-Large-Join-Semilattice L
      .mul-Large-Semigroup  join-Large-Join-Semilattice L
      .associative-mul-Large-Semigroup 
        associative-join-Large-Join-Semilattice L

  raise-Large-Join-Semilattice :
    {l1 : Level} (l : Level) 
    type-Large-Join-Semilattice L l1  type-Large-Join-Semilattice L (l1  l)
  raise-Large-Join-Semilattice l x =
    join-Large-Join-Semilattice L
      ( x)
      ( bottom-Large-Join-Semilattice L l)

  abstract
    sim-raise-Large-Join-Semilattice :
      {l1 : Level} (l : Level) (x : type-Large-Join-Semilattice L l1) 
      sim-Large-Join-Semilattice L x (raise-Large-Join-Semilattice l x)
    sim-raise-Large-Join-Semilattice l x =
      ( leq-left-join-Large-Join-Semilattice L x _ ,
        leq-join-Large-Join-Semilattice L _ _ _
          ( refl-leq-Large-Join-Semilattice L x)
          ( is-bottom-element-bottom-Large-Join-Semilattice
            ( L)
            ( l)
            ( x)))

  large-monoid-Large-Join-Semilattice :
    Large-Monoid α  l1 l2  β l1 l2  β l2 l1)
  large-monoid-Large-Join-Semilattice =
    λ where
      .large-semigroup-Large-Monoid  large-semigroup-Large-Join-Semilattice
      .large-similarity-relation-Large-Monoid 
        large-similarity-relation-sim-Large-Poset
          ( large-poset-Large-Join-Semilattice L)
      .raise-Large-Monoid l x 
        join-Large-Join-Semilattice L
          ( x)
          ( bottom-Large-Join-Semilattice L l)
      .unit-Large-Monoid 
        bottom-Large-Join-Semilattice L lzero
      .left-unit-law-mul-Large-Monoid 
        left-bottom-law-join-Large-Join-Semilattice L
      .right-unit-law-mul-Large-Monoid 
        right-bottom-law-join-Large-Join-Semilattice L
      .sim-raise-Large-Monoid 
        sim-raise-Large-Join-Semilattice
      .preserves-sim-mul-Large-Monoid 
        preserves-sim-join-Large-Join-Semilattice L

  large-commutative-monoid-Large-Join-Semilattice :
    Large-Commutative-Monoid α  l1 l2  β l1 l2  β l2 l1)
  large-commutative-monoid-Large-Join-Semilattice =
    λ where
      .large-monoid-Large-Commutative-Monoid 
        large-monoid-Large-Join-Semilattice
      .commutative-mul-Large-Commutative-Monoid 
        commutative-join-Large-Join-Semilattice L

  commutative-monoid-Large-Join-Semilattice :
    (l : Level)  Commutative-Monoid (α l)
  commutative-monoid-Large-Join-Semilattice =
    commutative-monoid-Large-Commutative-Monoid
      ( large-commutative-monoid-Large-Join-Semilattice)

Raising the bottom element to a universe level produces the bottom element at that level

module _
  {α : Level  Level} {β : Level  Level  Level}
  (L : Large-Join-Semilattice α β)
  where

  abstract
    raise-bottom-Large-Join-Semilattice :
      {l1 l2 : Level} 
      raise-Large-Join-Semilattice L l1 (bottom-Large-Join-Semilattice L l2) 
      bottom-Large-Join-Semilattice L (l1  l2)
    raise-bottom-Large-Join-Semilattice {l1} {l2} =
      antisymmetric-leq-Large-Join-Semilattice L _ _
        ( leq-join-Large-Join-Semilattice L _ _ _
          ( is-bottom-element-bottom-Large-Join-Semilattice L _ _)
          ( is-bottom-element-bottom-Large-Join-Semilattice L _ _))
        ( is-bottom-element-bottom-Large-Join-Semilattice L _ _)

Recent changes