module SOAS.Abstract.Box {T : Set} where
open import SOAS.Common
open import SOAS.Context
open import SOAS.Sorting
open import SOAS.Variable
open import SOAS.Families.Core {T}
open import SOAS.Families.Isomorphism
open import SOAS.Families.BCCC using (_×ₘ_; _+ₘ_; _⇨_; _⇨̣_)
open import SOAS.Abstract.Hom
open import Categories.Functor.Bifunctor
module Unsorted where
□ : Family → Family
□ X = ⟨ ℐ , X ⟩
□F : Functor 𝔽amilies 𝔽amilies
□F = appˡ ⟨-,-⟩F ℐ
private
variable
X Y : Family
□[X×Y]≅□X×□Y : □ (X ×ₘ Y) ≅ₘ (□ X ×ₘ □ Y)
□[X×Y]≅□X×□Y = ⟨𝒳,Y×Z⟩≅⟨𝒳,Y⟩×⟨𝒳,Z⟩
□X+□Y⇾□[X+Y] : (□ X +ₘ □ Y) ⇾ □ (X +ₘ Y)
□X+□Y⇾□[X+Y] = ⟨𝒳,Y⟩+⟨𝒳,Z⟩⇾⟨𝒳,Y+Z⟩
module Sorted where
□ : Familyₛ → Familyₛ
□ X = 〖 ℐ , X 〗
□F : Functor 𝔽amiliesₛ 𝔽amiliesₛ
□F = appˡ 〖-,-〗F ℐ
□₁ : {X Y : Familyₛ} → (X ⇾̣ Y) → □ X ⇾̣ □ Y
□₁ f x ρ = f (x ρ)
ζ : (X : Familyₛ) → □ X ⇾̣ □ (□ X)
ζ X b ρ ϱ = b (ϱ ∘ ρ)