{-# 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₁'