Martin Escardo 3rd January 2023

Type-class for notation for underlying set and order of various kinds
of ordinals.

\begin{code}

{-# OPTIONS --without-K --exact-split --safe --auto-inline #-}

module Ordinals.Underlying where

open import MLTT.Spartan
open import Ordinals.Notions

record Underlying {𝓤} (O : 𝓤  ̇ ) : 𝓤  ̇  where
 field
  ⟨_⟩              : O  𝓤 ̇
  underlying-order : (α : O)   α    α   𝓤 ̇

 underlying-weak-order : (α : O)   α    α   𝓤 ̇
 underlying-weak-order α x y = ¬ (underlying-order α y x)

 underlying-porder : (α : O)   α    α   𝓤 ̇
 underlying-porder α = extensional-po (underlying-order α)

 syntax underlying-order      α x y = x ≺⟨ α  y
 syntax underlying-weak-order α x y = x ≾⟨ α  y
 syntax underlying-porder     α x y = x ≼⟨ α  y

open Underlying {{...}} public

\end{code}