{-# OPTIONS --cubical --safe #-}

module Data.Bits.Order where

open import Data.Bits
open import Data.Bool
open import Level

infix 4 _≤ᴮ_ _<ᴮ_
_≤ᴮ_ _<ᴮ_ : Bits  Bits  Bool
[]    ≤ᴮ ys    = true
0∷ xs ≤ᴮ []    = false
0∷ xs ≤ᴮ 0∷ ys = xs ≤ᴮ ys
0∷ xs ≤ᴮ 1∷ ys = true
1∷ xs ≤ᴮ []    = false
1∷ xs ≤ᴮ 0∷ ys = false
1∷ xs ≤ᴮ 1∷ ys = xs ≤ᴮ ys

xs    <ᴮ []    = false
[]    <ᴮ 0∷ ys = true
0∷ xs <ᴮ 0∷ ys = xs <ᴮ ys
1∷ xs <ᴮ 0∷ ys = false
[]    <ᴮ 1∷ ys = true
0∷ xs <ᴮ 1∷ ys = true
1∷ xs <ᴮ 1∷ ys = xs <ᴮ ys

infix 4 _≤_ _<_
_≤_ _<_ : Bits  Bits  Type
xs  ys = T (xs ≤ᴮ ys)
xs < ys = T (xs <ᴮ ys)