------------------------------------------------------------------------
-- Descending lists
------------------------------------------------------------------------

{-# OPTIONS --safe #-}

open import Cubical.Foundations.Prelude


module Cubical.Data.DescendingList.Base
 (A : Type₀)
 (_≥_ : A  A  Type₀)
 where

------------------------------------------------------------------------
-- Descending lists
--
-- Defined simultaneously with the relation "x ≥ the HEAD of u"

data DL : Type₀
data _≥ᴴ_ (x : A) : DL  Type₀

data DL where
 []   : DL
 cons : (x : A) (u : DL)  x ≥ᴴ u  DL

data _≥ᴴ_ x where
 ≥ᴴ[]   : x ≥ᴴ []
 ≥ᴴcons : {y : A} {u : DL} {r : y ≥ᴴ u}
          x  y  x ≥ᴴ (cons y u r)

[_] : A  DL
[ x ] = cons x [] ≥ᴴ[]