From 37dfd372e3083a02d345c08349f084046f2c949a Mon Sep 17 00:00:00 2001
From: Eric Giovannini <ecg19@seas.upenn.edu>
Date: Thu, 19 Oct 2023 16:53:23 -0400
Subject: [PATCH] Update syntactic bisimilarity

---
 .../Syntax/SyntacticBisimilarity.agda         | 73 ++++++++++++++++++-
 1 file changed, 71 insertions(+), 2 deletions(-)

diff --git a/formalizations/guarded-cubical/Syntax/SyntacticBisimilarity.agda b/formalizations/guarded-cubical/Syntax/SyntacticBisimilarity.agda
index 1b09647..b391130 100644
--- a/formalizations/guarded-cubical/Syntax/SyntacticBisimilarity.agda
+++ b/formalizations/guarded-cubical/Syntax/SyntacticBisimilarity.agda
@@ -10,6 +10,7 @@ open import Cubical.Data.Empty renaming (rec to exFalso)
 
 open import Syntax.Types
 open import Syntax.IntensionalTerms
+open import Syntax.Perturbation
 
 open TyPrec
 open CtxPrec
@@ -55,8 +56,10 @@ data _≈e_ : EvCtx Γ S T -> EvCtx Γ S T -> Type
 data _≈c_ : Comp Γ S -> Comp Γ S -> Type
 
 
+
 data _≈s_  where
   ≈-refl : γ ≈s γ
+  ≈-sym : γ ≈s γ' -> γ' ≈s γ
   -- ≈-ids : (ids {Γ = Γ}) ≈s ids
   ≈-∘s : γ ≈s γ' -> δ ≈s δ' -> (γ ∘s δ) ≈s (γ' ∘s δ')
   -- ≈-!s : (!s {Γ = Γ}) ≈s !s
@@ -69,6 +72,7 @@ data _≈s_  where
 
 data _≈v_ where
   ≈-refl : V ≈v V
+  ≈-sym : V ≈v V' -> V' ≈v V
   ≈-substV : V ≈v V' ->
              γ ≈s γ' ->
              V [ γ ]v ≈v V' [ γ' ]v
@@ -77,6 +81,11 @@ data _≈v_ where
  -- ≈-suc : suc ≈v suc
   ≈-lda : M ≈c M' ->
           lda M ≈v lda M'
+  ≈-mapDyn : {Vn Vn' : Val [ nat ] nat}
+             {Vf Vf' : Val [ dyn ⇀ dyn ] (dyn ⇀ dyn)} ->
+             Vn ≈v Vn' ->
+             Vf ≈v Vf' ->
+             mapDyn Vn Vf ≈v mapDyn Vn' Vf'
  -- ≈-up : ∀ S⊑T -> up S⊑T ≈v up S⊑T -- follows from reflexivity?
 
   -- If δl and δr were made admissible, then these two rules wouldn't be needed
@@ -86,6 +95,7 @@ data _≈v_ where
 
 data _≈e_ where
   ≈-refl : E ≈e E
+  ≈-sym : E ≈e E' -> E' ≈e E
   ≈-∘E : E ≈e E' -> F ≈e F' -> E ∘E F ≈e E' ∘E F'
   ≈-substE : E ≈e E' -> γ ≈s γ' -> E [ γ ]e ≈e E' [ γ' ]e
   ≈-bind : M ≈c M' -> bind M ≈e bind M'
@@ -98,6 +108,7 @@ data _≈e_ where
 
 data _≈c_ where
   ≈-refl : M ≈c M
+  ≈-sym : M ≈c M' -> M' ≈c M
   ≈-tick : (M M' : Comp Γ S) -> M ≈c M' -> tick M ≈c M'
   ≈-plugE :
     E ≈e E' ->
@@ -110,10 +121,68 @@ data _≈c_ where
   ≈-matchNat : {Kz Kz' : Comp Γ S} {Ks Ks' : Comp (nat ∷ Γ) S} ->
     Kz ≈c Kz' ->
     Ks ≈c Ks' ->
-    (matchNat Kz Ks) ≈c matchNat Kz' Ks'
+    matchNat Kz Ks ≈c matchNat Kz' Ks'
+  ≈-matchDyn : {Kn Kn' : Comp (nat ∷ Γ) S}
+               {Kf Kf' : Comp (dyn ⇀ dyn ∷ Γ) S} ->
+    Kn ≈c Kn' ->
+    Kf ≈c Kf' ->
+    matchDyn Kn Kf ≈c matchDyn Kn' Kf'
+
+_≈->>_ : {M M' : Comp Γ S} -> {N N' : Comp (S ∷ Γ) T} ->
+  M ≈c M' -> N ≈c N' -> (M >> N) ≈c (M' >> N')
+_≈->>_ M≈M' N≈N' = ≈-plugE (≈-bind N≈N') M≈M'
+
+≈-vToE : {V V' : Val [ S ] T} -> V ≈v V' -> vToE V ≈e vToE V'
+≈-vToE V≈V' = ≈-bind (≈-substC ≈-refl (≈-,s ≈-refl V≈V'))
+
+
+-- Bisimilarity is prop-valued
+{-
+≈s-prop : isProp (γ ≈s γ')
+≈v-prop : isProp (V ≈v V')
+≈c-prop : isProp (M ≈c M')
+≈e-prop : isProp (E ≈e E')
+-}
+
+
+-- Admissible results:
+
+δl-e≈id : (c : S ⊑ T) -> δl-e c ≈v var
+δl-p≈id : (c : S ⊑ T) -> δl-p c ≈e ∙E
+
+δl-e≈id nat = ≈-refl
+δl-e≈id dyn = ≈-refl
+δl-e≈id (c ⇀ d) =
+  transport (cong₂ _≈v_ refl (congS lda ({!!} ∙ {!!}) ∙ sym fun-η)) lem -- transport (cong₂ _≈v_ refl (sym fun-η)) {!!}
+  where
+    LHS : _
+    LHS = lda
+        (((δl-p c [ !s ]e) [ ret' var ]∙) >>
+        ((app [ drop2nd ]c) >>
+        ((vToE (δl-e d) [ !s ]e) [ ret' var ]∙)))
+
+    LHS' : _
+    LHS' = lda
+        (((∙E [ !s ]e) [ ret' var ]∙) >>
+        ((app [ drop2nd ]c) >>
+        ((vToE var [ !s ]e) [ ret' var ]∙)))
+
+    lem : LHS ≈v LHS'
+    lem = ≈-lda ((≈-plugE (≈-substE (δl-p≈id c) ≈-refl) ≈-refl) ≈->>
+                 (≈-refl ≈->> ≈-plugE (≈-substE (≈-vToE (δl-e≈id d)) ≈-refl) ≈-refl))
+δl-e≈id inj-nat = ≈-refl
+δl-e≈id (inj-arr (c ⇀ d)) = {!!}
+
+
+δl-p≈id nat = ≈-refl
+δl-p≈id dyn = ≈-refl
+δl-p≈id (c ⇀ d) = {!!}
+δl-p≈id inj-nat = ≈-refl
+δl-p≈id (inj-arr (c ⇀ d)) = {!!}
+
 
+-- TODO same for right-side delays
 
--- TODO: add symmetry
 
 
 {-
-- 
GitLab