{-# OPTIONS --without-K #-}
open import FunUniverse.Core
open import Data.Nat.NP
open import Data.Bits
module FunUniverse.Interface.Bits
{t} {T : Set t} (funU : FunUniverse T) where
open FunUniverse funU
record FunBits : Set t where
field
<0∷_> : ∀ {n A} → (A `→ `Bits n) → A `→ `Bits (1 + n)
<1∷_> : ∀ {n A} → (A `→ `Bits n) → A `→ `Bits (1 + n)
constBits : ∀ {n _⊤} → Bits n → _⊤ `→ `Bits n
<0ⁿ> : ∀ {n _⊤} → _⊤ `→ `Bits n
<1ⁿ> : ∀ {n _⊤} → _⊤ `→ `Bits n
constBits′′ : ∀ {n _⊤} → Bits n → _⊤ `→ `Bits n
exploreBits : ∀ {n A} → (A `× A `→ A) → (`Bits n `→ A) → `𝟙 `→ A
fromFun : ∀ {n A} → (Bits n → `𝟙 `→ A) → `Bits n `→ A
fromBitsFun : ∀ {i o} → (i →ᵇ o) → i `→ᵇ o
<==> : ∀ {n} → `Bits n `× `Bits n `→ `Bit
<⊕> : ∀ {n} → `Bits n `× `Bits n `→ `Bits n