{-# OPTIONS --no-termination-check #-}
open import Prelude hiding (P)
open import CCS.Alg
open import CCS.SemiModel
module CCS.Hyp.Interp {r} {R : Type r} (alg : CCSAlg R) ⦃ _ : IsDiscrete (CCSAlg.Name alg) ⦄ where
open import Hyper.Base
open CCSAlg ⦃ ... ⦄ hiding (Name)
open CCSAlg alg using (Name)
open import CCS.Hyp.Definition Name R
instance
_ : CCSAlg R
_ = alg
open import CCS.Hyp.Alg {R = R} ⊕-magma {Name = Name}
instance
_ : CCSAlg Communicator
_ = hypAlg
prompt : (Maybe (Act Name) → R) → R
prompt k = k 𝕥
receive : R → Maybe (Act Name) → R
receive r (𝕚 a) = a · r
receive r 𝕥 = r
𝟙 : Communicator
⟦_⟧↓ : Communicator → R
ι 𝟙 h 𝕥 = 𝟘
ι 𝟙 h (𝕚 o) = o · ⟦ h ⟧↓
⟦ h ⟧↓ = ι h 𝟙 𝕥
com-ident : (c : Communicator) → ⟦ c ⟧↓ ≡ ι c 𝟙 𝕥
com-ident c = refl
syncₐₒ : Act Name → Communicator → Communicator → R
syncₐₒ a p q = ι q (𝟙 ∥ p) (𝕚 a)
ι-⌊-push : ∀ p q → ι p (q ∥ 𝟙) 𝕥 ≡ ⟦ p ⌊ q ⟧↓
ι-⌊-push p q = refl
act-hom↓ : ∀ (a : Act Name) (p : Communicator) → a · ⟦ p ⟧↓ ≡ ⟦ a · p ⟧↓
act-hom↓ a p = refl
⊕-hom↓ : ∀ (p q : Communicator) → ⟦ p ⟧↓ ⊕ ⟦ q ⟧↓ ≡ ⟦ p ⊕ q ⟧↓
⊕-hom↓ p q = refl