{-# OPTIONS --safe #-}
module Ledger.Conway.Conformance.Equivalence.Bisimilarity where
open import Data.Product.Base
record Bisimilar {C Sig S₁ S₂ : Set} (_⊢_⇀⦇_⦈₁_ : C → S₁ → Sig → S₁ → Set) (_⊢_⇀⦇_⦈₂_ : C → S₂ → Sig → S₂ → Set) : Set₁ where
field
_≈_ : S₁ → S₂ → Set
to : ∀ {Γ sig s₁ s₁' s₂}
→ s₁ ≈ s₂
→ Γ ⊢ s₁ ⇀⦇ sig ⦈₁ s₁'
→ ∃[ s₂' ] s₁' ≈ s₂' × Γ ⊢ s₂ ⇀⦇ sig ⦈₂ s₂'
from : ∀ {Γ sig s₁ s₂ s₂'}
→ s₁ ≈ s₂
→ Γ ⊢ s₂ ⇀⦇ sig ⦈₂ s₂'
→ ∃[ s₁' ] s₁' ≈ s₂' × Γ ⊢ s₁ ⇀⦇ sig ⦈₁ s₁'