{-# OPTIONS --safe --sized-types #-} module Generic.Semantics.Elaboration.LetBinders where open import Size open import Data.Product open import Function open import Relation.Unary open import Relation.Binary.PropositionalEquality open import Data.Environment open import Generic.Syntax open import Generic.Syntax.LetBinders open import Generic.Semantics open import Generic.Semantics.Syntactic module _ {I : Set} {d : Desc I} where private variable σ : I i : Size UnLets : Semantics (d `+ Lets) (Tm d _) (Tm d _) Semantics.th^𝓥 UnLets = th^Tm Semantics.var UnLets = id Semantics.alg UnLets = case (Semantics.alg Sub) $ λ where ((Δ , σ) , est) → case unXs Δ est of λ where (es , t , refl) → t $$ es unLets : ∀[ Tm (d `+ Lets) i σ ⇒ Tm d _ σ ] unLets = Semantics.semantics UnLets id^Tm