Created
March 10, 2022 16:05
-
-
Save bond15/c0ea23554add5d08df7a2186f4304f9d to your computer and use it in GitHub Desktop.
modal
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module modal where | |
open import Data.Unit | |
open import Data.Nat | |
open import Data.Product | |
open import Data.String | |
open import Data.Bool | |
open import Agda.Builtin.String | |
data ty : Set where | |
π : ty | |
_β_ _&_ : ty β ty β ty | |
data tm : Set where | |
var : String β tm | |
_β_ _,_ : tm β tm β tm | |
Οβ Οβ : tm β tm | |
Ζ_β·_β_ : String β ty β tm β tm | |
u : tm | |
-- adding box modality | |
β‘ : tm β tm | |
letβ‘_β£_inn_ : tm β String β tm β tm | |
data _value : tm β Set where | |
ΖV : β {x T t} β (Ζ x β· T β t) value | |
&V : β{t1 t2} β t1 value β t2 value β (t1 , t2) value | |
uV : u value | |
β‘V : β{t} β (β‘ t) value | |
_=β_ : String β String β Bool | |
_=β_ = primStringEquality | |
[_/_]_ : tm β String β tm β tm | |
[ s / x ] t@(var y) = if (x =β y) then s else t | |
[ s / x ] (t β t') = ([ s / x ] t) β ([ s / x ] t') | |
[ s / x ] (Οβ t') = Οβ ([ s / x ] t') | |
[ s / x ] (Οβ t') = Οβ ([ s / x ] t') | |
[ s / x ] (t , t') = [ s / x ] t , [ s / x ] t' | |
[ s / x ] t@(Ζ y β· T β t') = if (x =β y) then t else (Ζ x β· T β [ s / x ] t') | |
[ s / x ] u = u | |
-- adding box modality | |
[ s / x ] t@(β‘ d) = t | |
[ s / x ] (letβ‘ d β£ xβ inn dβ) = {! !} | |
data _βΆ_ : tm β tm β Set where | |
st-Ζ : β{A N M x} β M value β ((Ζ x β· A β N) β M) βΆ ([ M / x ] N) | |
st-&β : β{M N} β M value β N value β (Οβ(M , N)) βΆ M | |
st-&β : β{M N}Β β M value β N value β (Οβ(M , N)) βΆ N | |
st-&cβ : β{M M' N} β (M βΆ M') β (M , N) βΆ (M' , N) | |
st-&cβ : β{M N N'} β M value β (N βΆ N') β (M , N) βΆ (M , N') | |
st-Οβc : β{M M'} β M βΆ M' β (Οβ M) βΆ (Οβ M') | |
st-Οβc : β{M M'} β M βΆ M' β (Οβ M) βΆ (Οβ M') | |
st-βcβ : β{M M' N} β M βΆ M' β (M β N) βΆ (M' β N) | |
st-βcβ : β{M N N'} β M value β N βΆ N' β (M β N) βΆ (M β N') | |
data multi {X : Set}(R : X β X β Set) : X β X β Set where | |
mrefl : β{x : X} β multi R x x | |
mstep : β { x y z : X} β R x y β multi R y z β multi R x z | |
_~>*_ : tm β tm β Set | |
t ~>* t' = multi _βΆ_ t t' | |
_ : ((Ζ "x" β· π β var "x") β Οβ (u , u)) ~>* u | |
_ = mstep (st-βcβ ΖV (st-&β uV uV)) | |
(mstep (st-Ζ uV) | |
mrefl) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment