{-# OPTIONS --safe --without-K #-} open import Data.Product using (∃; _,_; -,_) renaming (_×_ to _∧_; proj₁ to fst; proj₂ to snd) open import Relation.Binary.PropositionalEquality using (_≡_; refl; subst) module Semantics.Clouston.Evaluation.IS4.Base (Ctx' : Set₁) (let Ty' = Ctx') (_→̇_ : (P Q : Ctx') → Set) (let infixr 19 _→̇_; _→̇_ = _→̇_) (_≈̇_ : {P Q : Ctx'} → (φ ψ : P →̇ Q) → Set) (let infix 18 _≈̇_; _≈̇_ = _≈̇_) (≈̇-refl : ∀ {P Q : Ctx'} {φ : P →̇ Q} → φ ≈̇ φ) (≈̇-sym : ∀ {P Q : Ctx'} {φ ψ : P →̇ Q} → (φ≈̇ψ : φ ≈̇ ψ) → ψ ≈̇ φ) (≈̇-trans : ∀ {P Q : Ctx'} {φ ψ ω : P →̇ Q} → (φ≈̇ψ : φ ≈̇ ψ) → (ψ≈̇ω : ψ ≈̇ ω) → φ ≈̇ ω) (_∘_ : {P Q R : Ctx'} → (ψ : Q →̇ R) → (φ : P →̇ Q) → (P →̇ R)) (let infixr 19 _∘_; _∘_ = _∘_) (id'[_] : (P : Ctx') → P →̇ P) ([]' : Ctx') (unit' : {P : Ctx'} → P →̇ []') (_×'_ : (P Q : Ctx') → Ctx') (⟨_,_⟩' : {R P Q : Ctx'} → (φ : R →̇ P) → (ψ : R →̇ Q) → R →̇ P ×' Q) (π₁'[_] : {P : Ctx'} → (Q : Ctx') → P ×' Q →̇ P) (π₂'[_] : (P : Ctx') → {Q : Ctx'} → P ×' Q →̇ Q) (let fst'[_]_ = λ {R} {P} Q φ → _∘_ {R} {P ×' Q} {P} π₁'[ Q ] φ) (let snd'[_]_ = λ {R} P {Q} φ → _∘_ {R} {P ×' Q} {Q} π₂'[ P ] φ) (_⇒'_ : (P Q : Ty') → Ty') (lam' : {R P Q : Ty'} → (φ : R ×' P →̇ Q) → R →̇ P ⇒' Q) (app' : {R P Q : Ty'} → (φ : R →̇ P ⇒' Q) → (ψ : R →̇ P) → R →̇ Q) (✦'_ : (P : Ctx') → Ctx') (✦'-map_ : {P Q : Ctx'} → (φ : P →̇ Q) → ✦' P →̇ ✦' Q) (μ'[_] : (P : Ctx') → ✦' ✦' P →̇ ✦' P) (η'[_] : (P : Ctx') → P →̇ ✦' P) (□'_ : (P : Ty') → Ty') (box' : {P Q : Ty'} → (φ : ✦' P →̇ Q) → P →̇ □' Q) (λ' : {P Q : Ty'} → (φ : P →̇ □' Q) → ✦' P →̇ Q) where open import IS4.Term.Base import Semantics.Clouston.Evaluation.IML.Base Ctx' _→̇_ _≈̇_ ≈̇-refl ≈̇-sym ≈̇-trans _∘_ id'[_] []' unit' _×'_ ⟨_,_⟩' π₁'[_] π₂'[_] _⇒'_ lam' app' ✦'_ ✦'-map_ □'_ box' λ' as CloustonEvaluationIMLBase open CloustonEvaluationIMLBase public hiding (module Eval) η' = λ {P} → η'[ P ] μ' = λ {P} → μ'[ P ] module Eval (N : Ty') where module CloustonEvaluationIMLEval = CloustonEvaluationIMLBase.Eval N open CloustonEvaluationIMLEval public evalAcc : (e : CExt Γ ΓL ΓR) → evalCtx Γ →̇ ✦' evalCtx ΓL evalAcc nil = η' evalAcc (ext {a = a} e) = evalAcc e ∘ π₁'[ evalTy a ] evalAcc (ext#- e) = μ' ∘ ✦'-map (evalAcc e) evalTm : (t : Tm Γ a) → evalCtx Γ →̇ evalTy a evalTm (var v) = evalVar v evalTm (lam t) = lam' (evalTm t) evalTm (app t u) = app' (evalTm t) (evalTm u) evalTm (box t) = box' (evalTm t) evalTm (unbox t e) = unbox' (evalTm t) (evalAcc e) evalSub : (σ : Sub Δ Γ) → evalCtx Δ →̇ evalCtx Γ evalSub [] = unit' evalSub (σ `, t) = ⟨ evalSub σ , evalTm t ⟩' evalSub (lock σ e) = ✦'-map (evalSub σ) ∘ evalAcc e
Generated from commit 2fd14c996b195ef101dff8919e837907ca0a08aa.