Galois connections between large posets

module order-theory.galois-connections-large-posets where
Imports
open import foundation.functions
open import foundation.logical-equivalences
open import foundation.universe-levels

open import order-theory.large-posets
open import order-theory.order-preserving-maps-large-posets

Idea

A galois connection between large posets P and Q consists of order preserving maps f : hom-Large-Poset id P Q and hom-Large-Poset id Q P such that the adjoint relation

  (f x ≤ y) ↔ (x ≤ g y)

holds for every two elements x : P and y : Q.

Definition

module _
  {αP αQ : Level  Level} {βP βQ : Level  Level  Level}
  (P : Large-Poset αP βP) (Q : Large-Poset αQ βQ)
  where

  record
    galois-connection-Large-Poset : UUω
    where
    field
      lower-adjoint-galois-connection-Large-Poset :
        hom-Large-Poset id P Q
      upper-adjoint-galois-connection-Large-Poset :
        hom-Large-Poset id Q P
      adjoint-relation-galois-connection-Large-Poset :
        {l1 l2 : Level}
        (x : type-Large-Poset P l1) (y : type-Large-Poset Q l2) 
        leq-Large-Poset Q
          ( map-hom-Large-Poset P Q
            ( lower-adjoint-galois-connection-Large-Poset)
            ( x))
          ( y) 
        leq-Large-Poset P x
          ( map-hom-Large-Poset Q P
            ( upper-adjoint-galois-connection-Large-Poset)
            ( y))

  open galois-connection-Large-Poset public

  module _
    (G : galois-connection-Large-Poset)
    where

    map-lower-adjoint-galois-connection-Large-Poset :
      {l1 : Level}  type-Large-Poset P l1  type-Large-Poset Q l1
    map-lower-adjoint-galois-connection-Large-Poset =
      map-hom-Large-Poset P Q
        ( lower-adjoint-galois-connection-Large-Poset G)

    preserves-order-lower-adjoint-galois-connection-Large-Poset :
      {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) 
      leq-Large-Poset P x y 
      leq-Large-Poset Q
        ( map-lower-adjoint-galois-connection-Large-Poset x)
        ( map-lower-adjoint-galois-connection-Large-Poset y)
    preserves-order-lower-adjoint-galois-connection-Large-Poset =
      preserves-order-hom-Large-Poset P Q
        ( lower-adjoint-galois-connection-Large-Poset G)

    map-upper-adjoint-galois-connection-Large-Poset :
      {l1 : Level}  type-Large-Poset Q l1  type-Large-Poset P l1
    map-upper-adjoint-galois-connection-Large-Poset =
      map-hom-Large-Poset Q P
        ( upper-adjoint-galois-connection-Large-Poset G)

    preserves-order-upper-adjoint-galois-connection-Large-Poset :
      {l1 l2 : Level} (x : type-Large-Poset Q l1) (y : type-Large-Poset Q l2) 
      leq-Large-Poset Q x y 
      leq-Large-Poset P
        ( map-upper-adjoint-galois-connection-Large-Poset x)
        ( map-upper-adjoint-galois-connection-Large-Poset y)
    preserves-order-upper-adjoint-galois-connection-Large-Poset =
      preserves-order-hom-Large-Poset Q P
        ( upper-adjoint-galois-connection-Large-Poset G)