{-# OPTIONS --without-K #-}
module FunUniverse.Types where
open import Type hiding (★)
open import Data.Nat.NP using (ℕ)
open import Level.NP
open import Function
open import FunUniverse.Data
record FunUniverse {t} (T : ★ t) : ★ (ₛ t) where
constructor _,_
field
universe : Universe T
_`→_ : T → T → ★₀
infix 0 _`→_
open Universe universe public
`𝟙→_ : T → ★₀
`𝟙→ A = `𝟙 `→ A
`𝟚→_ : T → ★₀
`𝟚→ A = `𝟚 `→ A
_`→𝟙 : T → ★₀
A `→𝟙 = A `→ `𝟙
_`→𝟚 : T → ★₀
A `→𝟚 = A `→ `𝟚
_`→ᵇ_ : ℕ → ℕ → ★₀
i `→ᵇ o = `Bits i `→ `Bits o
`Endo : T → ★₀
`Endo A = A `→ A
module OpFunU {t} {T : Set t} (funU : FunUniverse T) where
open FunUniverse funU
opFunU : FunUniverse T
opFunU = universe , flip _`→_