{-# OPTIONS --without-K #-} 

open import Core.Container
open import Core.Ternary

open import Effect.Base
open import Effect.Syntax.Free 

open import Effect.Relation.Binary.FirstOrderInclusion
open import Effect.Relation.Ternary.FirstOrderSeparation

open import Effect.Theory.FirstOrder

open import Data.Product

open import Relation.Binary.PropositionalEquality

module Effect.Instance.Reader.Syntax (R : Set) where 

data ReaderC : Set where
  `ask : ReaderC

Reader : Container
Reader = record
  { shape    = ReaderC
  ; position = λ where `ask  R
  }

ask :  Reader  ε   Free ε R
ask =  (impure  `ask , pure ) 

ask-resp-⇔≲ : (i₁ i₂ : Reader  ε)  i₁ ⇔≲ i₂  ask  i₁   ask  i₂ 
ask-resp-⇔≲ i₁ i₂ eqv = ♯-resp-⇔≲ eqv (impure  `ask , pure )