{-# OPTIONS --without-K --allow-unsolved-metas #-} open import Core.Functor open import Core.Functor.Monad open import Core.Extensionality open import Core.Ternary open import Core.Logic open import Effect.Relation.Binary.FirstOrderInclusion open import Effect.Relation.Ternary.FirstOrderSeparation open import Effect.Base open import Effect.Syntax.Free open import Effect.Theory.FirstOrder open import Effect.Instance.Abort.Syntax open import Data.Product open import Data.List open import Data.Sum open import Data.List.Relation.Unary.All open import Data.Unit open import Relation.Binary.PropositionalEquality using (_≡_ ; refl ; sym ; trans ; cong) open import Relation.Unary module Effect.Instance.Abort.Theory where open Respects-⇔≲ open _⇔≲_ module _ {ε : Effect} ⦃ _ : Abort ≲ ε ⦄ where bind-abort : Equation ε Δ′ bind-abort = 2 Γ′ bind-abort (A , B , _) = A → Free ε B R′ bind-abort (A , B , _) = B lhs bind-abort _ k = abort >>= k rhs bind-abort _ k = abort AbortTheory : Theory Abort arity AbortTheory = ⊤ eqs AbortTheory tt = nec bind-abort respects-⇔≲ (lawful AbortTheory) i₁ i₂ eq = {!!}