Skip to content
Snippets Groups Projects
GlobalBisim.agda 2.57 KiB
Newer Older
  • Learn to ignore specific revisions
  • tingtind's avatar
    tingtind committed
    {-# OPTIONS --rewriting --guarded #-}
    
     -- to allow opening this module in other files while there are still holes
    {-# OPTIONS --allow-unsolved-metas #-}
    
    module Semantics.GlobalBisim where
    
    open import Cubical.Foundations.Prelude
    open import Cubical.Foundations.Isomorphism
    open import Cubical.Foundations.Function
    open import Cubical.Data.Sigma
    open import Cubical.Data.Nat hiding (_^_)
    open import Cubical.Data.Sum
    
    open import Cubical.Data.Empty as ⊥
    
    open import Cubical.Relation.Binary
    open import Cubical.Relation.Binary.Order.Poset
    
    open import Cubical.HITs.PropositionalTruncation renaming (elim to PTelim ; rec to PTrec)
    
    open import Common.Common
    open import Common.Later
    open import Common.LaterProperties
    open import Common.ClockProperties
    open import Semantics.Lift 
    open import Semantics.WeakBisimilarity
    open import Semantics.GlobalLift
    
    
    private
      variable
        ℓ ℓ' ℓR : Level
    
    
    -- module WBSum {ℓ ℓR : Level} (X : Type ℓ) (R : X -> X -> Type ℓR) (k : Clock) = BisimSum k X R
    
    module GlobalBisimSum  (X : Type ℓ) (R : X -> X -> Type ℓR) where
      -- open WBSum X R
      --open module WBSum = BisimSum X R -- enaming (_≈_ to _≈S_)
    
      --_≈[_]_ : {!L k X → (k : Clock) → L k X!}
      --l ≈[ k ] l' = {!_≈_ k l l'!}
    
      ≈S : (k : Clock) → L k X → L k X → Type (ℓ-max ℓ ℓR)
      ≈S k = BisimSum._≈_ k X R
      syntax ≈S k x y = x ≈[ k ] y
    
      _≈g_ : L^gl X -> L^gl X -> Type (ℓ-max ℓ ℓR)
      l1 ≈g l2 = ∀ k → (l1 k) ≈[ k ] (l2 k)
    
      case1 : (l l' : L^gl X) -> Type (ℓ-max ℓ ℓR)
      case1 l l' = Σ[ x ∈ X ] Σ[ y ∈ X ] (l ≡ ηL^gl x) × (l' ≡ ηL^gl y) × R x y
    
      case2 : (l l' : L^gl X) -> Type (ℓ-max ℓ ℓR)
      case2 l l' =
        Σ[ x ∈ X ] ((l  ≡ ηL^gl x)
          × ∥ Σ[ n ∈ ℕ ] Σ[ y ∈ X ] ((l' ≡ (δL^gl ^ n) (ηL^gl y)) × R x y) ∥₁)
    
      case3 : (l l' : L^gl X) -> Type (ℓ-max ℓ ℓR)
      case3 l l' =
        Σ[ y ∈ X ] ((l' ≡ ηL^gl y)
          × ∥ Σ[ n ∈ ℕ ] Σ[ x ∈ X ] ((l  ≡ (δL^gl ^ n) (ηL^gl x)) × R x y) ∥₁)
    
      case4 : (l l' : L^gl X) -> Type (ℓ-max ℓ ℓR)
      case4 l l' = Σ[ lx~ ∈ (∀ k -> ▹ k , L k X) ] Σ[ ly~ ∈ (∀ k -> ▹ k , (L^gl X)) ]
        (l ≡ λ k → lx~ k {!!}) × (l' ≡ {!!}) × (▸ (λ t -> {!!}))
    
      _≈g'_ : {!!}
      l1 ≈g' l2 = {!!}
    
      L^gl-R-iso : clock-irrel X -> (l l' : L^gl X) ->
        Iso (l ≈g l') (case1 l l' ⊎ (case2 l l' ⊎ (case3 l l' ⊎ case4 l l'))) 
      L^gl-R-iso X-irrel l l' =
        (l ≈g l')
          Iso⟨ {!!} ⟩
          {!!} Iso⟨ {!!} ⟩ {!!}
        (case1 l l' ⊎ (case2 l l' ⊎ (case3 l l' ⊎ case4 l l'))) ∎Iso