{-# OPTIONS --without-K #-} open import Core.Functor open import Core.Container open import Core.Ternary open import Effect.Base open import Effect.Syntax.Free open import Effect.Theory.FirstOrder open import Effect.Relation.Binary.FirstOrderInclusion open import Effect.Relation.Ternary.FirstOrderSeparation open import Data.Empty open import Data.Product open import Relation.Binary.PropositionalEquality module Effect.Instance.Abort.Syntax where data AbortC : Set where `abort : AbortC Abort : Container Abort = record { shape = AbortC ; position = λ where `abort → ⊥ } abort : ⦃ Abort ≲ ε ⦄ → Free ε A abort = ♯ (impure ⟨ `abort , ⊥-elim ⟩) abort-resp-⇔≲ : ∀ {A} (i₁ i₂ : Abort ≲ ε) → i₁ ⇔≲ i₂ → abort {A = A} ⦃ i₁ ⦄ ≡ abort ⦃ i₂ ⦄ abort-resp-⇔≲ i₁ i₂ eqv = begin abort ⦃ i₁ ⦄ ≡⟨⟩ ♯ ⦃ i₁ ⦄ (impure ⟨ `abort , ⊥-elim ⟩) ≡⟨ ♯-resp-⇔≲ eqv (impure ⟨ `abort , ⊥-elim ⟩) ⟩ ♯ ⦃ i₂ ⦄ (impure ⟨ `abort , ⊥-elim ⟩) ≡⟨⟩ abort ⦃ i₂ ⦄ ∎ where open ≡-Reasoning