module indexed {ℓ^A} {A : Set ℓ^A} where
open import Level using (Level ; _⊔_)
open import Data.Sum using (_⊎_)
open import Data.Product using (_×_)
infixr 5 _⟶_
infixr 6 _∙⊎_
infixr 7 _∙×_
infix 8 _⊢_
_∙⊎_ : {ℓ ℓ′ : Level} → (A → Set ℓ) → (A → Set ℓ′) → (A → Set (ℓ′ ⊔ ℓ))
(S ∙⊎ T) a = S a ⊎ T a
_⟶_ : {ℓ ℓ′ : Level} → (A → Set ℓ) → (A → Set ℓ′) → (A → Set (ℓ′ ⊔ ℓ))
(S ⟶ T) a = S a → T a
κ : {ℓ : Level} → Set ℓ → (A → Set ℓ)
κ S a = S
[_] : {ℓ : Level} → (A → Set ℓ) → Set (ℓ^A ⊔ ℓ)
[ T ] = ∀ {a} → T a
_∙×_ : {ℓ ℓ′ : Level} → (A → Set ℓ) → (A → Set ℓ′) → (A → Set (ℓ′ ⊔ ℓ))
(S ∙× T) a = S a × T a
_⊢_ : {ℓ : Level} → (A → A) → (A → Set ℓ) → (A → Set ℓ)
(f ⊢ T) a = T (f a)
open import Agda.Builtin.Equality
_ : ∀ {f : A → A} {S T U V : A → Set} →
[ f ⊢ S ∙⊎ T ⟶ U ∙× V ] ≡ ({a : A} → S (f a) ⊎ T a → U a × V a)
_ = refl