{-# OPTIONS --without-K #-}
module Data.LR where

open import Type
open import Function.NP
open import HoTT
open import Relation.Binary.PropositionalEquality.NP using () renaming (refl to idp)
open import Data.Two
open Equivalences

data LR :  where
  `L `R : LR

[L:_R:_] :  {}{C : LR  ★_ }(l : C `L)(r : C `R)(lr : LR)  C lr
[L: l R: r ] `L = l
[L: l R: r ] `R = r

[L:_R:_]′ :  {}{C : ★_ }(l : C)(r : C)(lr : LR)  C
[L:_R:_]′ = [L:_R:_]

LR! : LR  LR
LR! `L = `R
LR! `R = `L

LR!-equiv : LR  LR
LR!-equiv = equiv LR! LR! [L: idp R: idp ] [L: idp R: idp ]

isR? : LR  𝟚
isR? `L = 0₂
isR? `R = 1₂

isL? : LR  𝟚
isL? = not  isR?

isR?-is-equiv : Is-equiv isR?
isR?-is-equiv = is-equiv [0: `L 1: `R ] [0: idp 1: idp ] [L: idp R: idp ]

isL?-is-equiv : Is-equiv isL?
isL?-is-equiv = is-equiv [0: `R 1: `L ] [0: idp 1: idp ] [L: idp R: idp ]