import Syntax.Simple.Signature as S
module Theory.Erasure {SD : S.SigD} where
open import Prelude
open import Syntax.Typed.Signature SD as T
open import Syntax.BiTyped.Signature SD as B
private variable
Ξ : ℕ
eraseᵃ : B.ArgD Ξ → T.ArgD Ξ
eraseᵃ (Δ ⊢[ _ ] B)= Δ ⊢ B
eraseᵃˢ : B.ArgsD Ξ → T.ArgsD Ξ
eraseᵃˢ = L.map eraseᵃ
eraseᶜ : B.OpD → T.OpD
eraseᶜ (ι _ A D) = ι A (eraseᵃˢ D)
erase : B.SigD → T.SigD
erase (sigd Op ar) = sigd Op (eraseᶜ ∘ ar)