From c07519dcc26a8eb4c02723a0535edff8c4725f7c Mon Sep 17 00:00:00 2001 From: Max New <maxsnew@gmail.com> Date: Sat, 3 Jun 2023 13:19:11 -0400 Subject: [PATCH] =?UTF-8?q?[abstract=20semantics]=20error=20strictness,=20?= =?UTF-8?q?ret=20and=20ret=20=CE=B2=CE=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Abstract/TermModel/Convenient.agda | 3 +- .../TermModel/Convenient/Computations.agda | 2 +- .../TermModel/Convenient/Semantics.agda | 42 ++++++++++++++++--- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient.agda b/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient.agda index 295be28..b5ac962 100644 --- a/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient.agda +++ b/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient.agda @@ -93,4 +93,5 @@ record Model â„“ â„“' : Type (â„“-suc (â„“-max â„“ â„“')) where field ℧-homo : ∀ {Γ a b} → (f : Linear Γ [ a , b ]) -- define this explicitly as a profunctor? - → bind f ∘⟨ cat ⟩ ((cat .id ,p ℧)) ≡ ℧ + -- f ∘⟨ Linear Γ ⟩ (F ℧) ≡ F ℧ + → bindP f ∘⟨ cat ⟩ ((cat .id ,p ℧)) ≡ ℧ diff --git a/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Computations.agda b/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Computations.agda index 0c22e04..3872fc4 100644 --- a/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Computations.agda +++ b/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Computations.agda @@ -34,7 +34,7 @@ module _ (𓜠: Model â„“ â„“') where open StrongExtensionSystem COMP : ∀ Γ → Functor (Linear Γ) (SET â„“') COMP Γ .F-ob a = (ClLinear [ Γ , a ]) , cat .isSetHom - COMP Γ .F-hom E M = bind E ∘⟨ cat ⟩ (cat .id ,p M) + COMP Γ .F-hom E M = bindP E ∘⟨ cat ⟩ (cat .id ,p M) COMP Γ .F-id = funExt λ M → congâ‚‚ (comp' cat) (ExtensionSystemFor.bind-r (monad .systems Γ)) refl ∙ ×β₂ COMP Γ .F-seq f g = funExt (λ M → congâ‚‚ (cat ._⋆_) refl (sym (ExtensionSystemFor.bind-comp (monad .systems Γ))) ∙ sym (cat .⋆Assoc _ _ _) ∙ congâ‚‚ (comp' cat) refl (,p-natural ∙ congâ‚‚ _,p_ ×β₠refl) ) diff --git a/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Semantics.agda b/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Semantics.agda index 8c9c602..426dbbd 100644 --- a/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Semantics.agda +++ b/formalizations/guarded-cubical/Semantics/Abstract/TermModel/Convenient/Semantics.agda @@ -128,7 +128,16 @@ module _ (𓜠: Model â„“ â„“') where ⟦ ∘substDist {E = E}{F = F}{γ = γ} i ⟧E = ð“œ.pull ⟦ γ ⟧S .F-seq ⟦ F ⟧E ⟦ E ⟧E i ⟦ bind M ⟧E = ⟦ M ⟧C - ⟦ ret-η i ⟧E = {!!} + -- E ≡ + -- bind (E [ wk ]e [ retP [ !s ,s var ]c ]∙) + ⟦ ret-η {Γ}{R}{S}{E} i ⟧E = explicit i where + explicit : ⟦ E ⟧E + ≡ ð“œ.bindP (ð“œ.pull ð“œ.π₠⟪ ⟦ E ⟧E ⟫) ∘⟨ ð“œ.cat ⟩ (ð“œ.cat .id ð“œ.,p (ð“œ.retP ∘⟨ ð“œ.cat ⟩ (ð“œ.!t ð“œ.,p ð“œ.π₂))) + explicit = sym (congâ‚‚ (comp' ð“œ.cat) (sym ð“œ.bind-natural) refl + ∙ sym (ð“œ.cat .⋆Assoc _ _ _) + ∙ congâ‚‚ (comp' ð“œ.cat) refl (ð“œ.,p-natural ∙ congâ‚‚ ð“œ._,p_ (sym (ð“œ.cat .⋆Assoc _ _ _) ∙ congâ‚‚ (comp' ð“œ.cat) refl ð“œ.×β₠∙ ð“œ.cat .⋆IdL _) + (ð“œ.×β₂ ∙ congâ‚‚ (comp' ð“œ.cat) refl (congâ‚‚ ð“œ._,p_ ð“œ.ðŸ™Î·' refl) ∙ ð“œ.η-natural {γ = ð“œ.!t})) + ∙ ð“œ.bindP-l) ⟦ dn S⊑T ⟧E = ⟦ S⊑T .ty-prec ⟧p ∘⟨ ð“œ.cat ⟩ ð“œ.π₂ ⟦ isSetEvCtx E F p q i j ⟧E = ð“œ.cat .isSetHom ⟦ E ⟧E ⟦ F ⟧E (cong ⟦_⟧E p) (cong ⟦_⟧E q) i j @@ -140,11 +149,32 @@ module _ (𓜠: Model â„“ â„“') where ⟦ substId {M = M} i ⟧C = ð“œ.cat .⋆IdL ⟦ M ⟧C i ⟦ substAssoc {M = M}{δ = δ}{γ = γ} i ⟧C = ð“œ.cat .⋆Assoc ⟦ γ ⟧S ⟦ δ ⟧S ⟦ M ⟧C i ⟦ substPlugDist {E = E}{M = M}{γ = γ} i ⟧C = COMP-Enriched 𓜠⟦ γ ⟧S ⟦ M ⟧C ⟦ E ⟧E i - ⟦ err ⟧C = ð“œ.℧ - ⟦ strictness {E = E} i ⟧C = ð“œ.℧-homo ⟦ E ⟧E {!i!} - - ⟦ ret ⟧C = ð“œ.Linear _ .id - ⟦ ret-β i ⟧C = {!!} + ⟦ err ⟧C = ð“œ.err + ⟦ strictness {E = E} i ⟧C = ð“œ.℧-homo ⟦ E ⟧E i + + ⟦ ret ⟧C = ð“œ.retP + -- (bind M [ wk ]e [ ret [ !s ,s var ]c ]∙) + -- ≡ bind (π₂ ^* M) ∘ (id , ret [ !s ,s var ]c) + -- ≡ bind (π₂ ^* M) ∘ (id , id ∘ (! , π₂)) + -- ≡ π₂ ^* bind M ∘ (id , (! , π₂)) + -- ≡ M + ⟦ ret-β {S}{T}{Γ}{M = M} i ⟧C = explicit i where + explicit : + -- pull γ ⟪ f ⟫ = f ∘ ((γ ∘⟨ C ⟩ Ï€â‚) ,p π₂) + -- pull π₠⟪ f ⟫ = f ∘ ((π₠∘⟨ C ⟩ Ï€â‚) ,p π₂) + ð“œ.bindP ((ð“œ.pull ð“œ.Ï€â‚) ⟪ ⟦ M ⟧C ⟫) + ∘⟨ ð“œ.cat ⟩ (ð“œ.cat .id ð“œ.,p (ð“œ.retP ∘⟨ ð“œ.cat ⟩ (ð“œ.!t ð“œ.,p ð“œ.π₂))) + ≡ ⟦ M ⟧C + explicit = + congâ‚‚ (comp' ð“œ.cat) (sym ð“œ.bind-natural) refl + ∙ (sym (ð“œ.cat .⋆Assoc _ _ _) + -- (π₠∘ π₠,p π₂) ∘ ((ð“œ.cat .id) ,p (η ∘ !t , π₂)) + -- (π₠∘ π₠,p π₂) ∘ ((ð“œ.cat .id) ,p (η ∘ !t , π₂)) + ∙ congâ‚‚ (comp' ð“œ.cat) refl (ð“œ.,p-natural ∙ congâ‚‚ ð“œ._,p_ (sym (ð“œ.cat .⋆Assoc _ _ _) ∙ congâ‚‚ (comp' ð“œ.cat) refl ð“œ.×β₠∙ ð“œ.cat .⋆IdL _) ð“œ.×β₂)) + -- ret ∘ (!t , π₂) + -- ≡ ret ∘ (π₠∘ !t , π₂) + ∙ congâ‚‚ (comp' (ð“œ.With ⟦ Γ ⟧ctx)) refl (congâ‚‚ (comp' ð“œ.cat) refl (congâ‚‚ ð“œ._,p_ ð“œ.ðŸ™Î·' refl) ∙ ð“œ.η-natural {γ = ð“œ.!t}) + ∙ ð“œ.bindP-l ⟦ app ⟧C = {!!} ⟦ fun-β i ⟧C = {!!} -- GitLab