{-# OPTIONS --without-K --safe --guardedness --no-sized-types #-}

-------------------------------------------------------------
-- Intensional equality is a linear simulation from w to w --
-------------------------------------------------------------


open import dtt
open import equality
open import Simulations

module Simulations.identity {I : Set} (w : IS I) where

open IS w renaming (Command to A ; Response to D ; next to n)

private coalg : {i₁ i₂ : I}  i₁  i₂  Φ w w _≡_ i₁ i₂
coalg {i₁} {i₂} eq =
      J  i₁ i₂ eq₁  Φ w w _≡_ i₁ i₂)
         i  λ a  a ,  d  d , refl))
        i₁ i₂ eq
-- coalg {i} {.i} refl = λ a → a , (λ d → d , refl)

ID : w  w
ID = record {
            R = _≡_ ;
            coalg = coalg
            }