From ff89dff78f055582d087f7c77df81c13200544a1 Mon Sep 17 00:00:00 2001 From: Max New <maxsnew@gmail.com> Date: Thu, 26 Apr 2018 11:23:16 -0400 Subject: [PATCH] start doing the boundary calculuations, a lot of unexpectedly dumb obligations --- code/gcbpv.agda | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/code/gcbpv.agda b/code/gcbpv.agda index ff801ee..a8b65dd 100644 --- a/code/gcbpv.agda +++ b/code/gcbpv.agda @@ -216,7 +216,11 @@ _⟨_⟩vv : forall {Γ : VCtx onevar} {A} -> Value Γ A -> (i : Dimension) -> Value (Γ ⟪ i ⟫v) (A ⟨ i ⟩v) -record ValCompat Γ⊤ Γ⊥ A⊤ A⊥ (pctx : Γ⊤ ⟪ Bot ⟫v ≡ Γ⊥ ⟪ Top ⟫v) (pty : A⊤ ⟨ Bot ⟩v ≡ A⊥ ⟨ Top ⟩v) : Set₠+record ValCompat Γ⊤ Γ⊥ A⊤ A⊥ + (pctx : Γ⊤ ⟪ Bot ⟫v ≡ Γ⊥ ⟪ Top ⟫v) + (pty : A⊤ ⟨ Bot ⟩v ≡ A⊥ ⟨ Top ⟩v) + (v⊤ : Value Γ⊤ A⊤) + (v⊥ : Value Γ⊥ A⊥) : Set₠data Term : forall {I} -> VCtx I -> CCtx I -> CType I -> Set₠_⟨_⟩cc : forall {Γ : VCtx onevar}{Δ}{B} -> Term Γ Δ B -> @@ -237,18 +241,24 @@ data Value where valtrans : forall {Γ⊤}{Γ⊥}{A⊤}{A⊥} -> (pctx : Γ⊤ ⟪ Bot ⟫v ≡ Γ⊥ ⟪ Top ⟫v) -> (pty : A⊤ ⟨ Bot ⟩v ≡ A⊥ ⟨ Top ⟩v) -> - ValCompat Γ⊤ Γ⊥ A⊤ A⊥ pctx pty -> + (v⊤ : Value Γ⊤ A⊤) -> + (v⊥ : Value Γ⊥ A⊥) -> + ValCompat Γ⊤ Γ⊥ A⊤ A⊥ pctx pty v⊤ v⊥ -> Value (vctxtrans Γ⊤ Γ⊥ pctx) (vtrans A⊤ A⊥ pty) -- VCtx.Vars Γ⊤ ≡ VCtx.Vars Γ⊥ -> -- {!!} -_⟨_⟩vv = {!!} +var Γ x ⟨ i ⟩vv = var (Γ ⟪ i ⟫v) x +vunit Γ ⟨ i ⟩vv = vunit (Γ ⟪ i ⟫v) +vpair V V' ⟨ i ⟩vv = vpair (V ⟨ i ⟩vv) (V' ⟨ i ⟩vv) +vdestr V Vk ⟨ i ⟩vv = vdestr (V ⟨ i ⟩vv) {!Vk ⟨ i ⟩vv!} +vthunk M ⟨ i ⟩vv = vthunk {!M ⟨ i ⟩cc!} +(valtrans pctx pty v⊤ v⊥ compat) ⟨ Top ⟩vv = v⊤ ⟨ Top ⟩vv +(valtrans pctx pty v⊤ v⊥ compat) ⟨ Bot ⟩vv = {!v⊥ ⟨ Bot ⟩vv!} -record ValCompat Γ⊤ Γ⊥ A⊤ A⊥ pctx pty where +record ValCompat Γ⊤ Γ⊥ A⊤ A⊥ pctx pty v⊤ v⊥ where inductive field - v⊤ : Value Γ⊤ A⊤ - v⊥ : Value Γ⊥ A⊥ compat : subst (λ Γm → Value Γm (A⊥ ⟨ Top ⟩v)) pctx (subst (λ Am → Value (Γ⊤ ⟪ Bot ⟫v) Am) pty (v⊤ ⟨ Bot ⟩vv)) @@ -274,10 +284,26 @@ data Term where Term Γ (cdot _) B -> Term Γ Δ B -_⟨_⟩cc = {!!} +hole ⟨ i ⟩cc = hole +lambda M ⟨ i ⟩cc = {!lambda (M ⟨ i ⟩cc)!} +app M V ⟨ i ⟩cc = app (M ⟨ i ⟩cc) (V ⟨ i ⟩vv) +force V ⟨ i ⟩cc = {!force (V ⟨ i ⟩vv)!} +ret V ⟨ i ⟩cc = {!ret (V ⟨ i ⟩vv)!} +lett M Mk ⟨ i ⟩cc = lett (M ⟨ i ⟩cc) {!Mk ⟨ i ⟩cc!} valrefl : forall {Γ}{A} -> Value Γ A -> Value (vctxrefl Γ) (vrefl A) -valrefl = {!!} - termrefl : forall {Γ}{Δ}{B} -> Term Γ Δ B -> Term (vctxrefl Γ) (cctxrefl Δ) (crefl B) -termrefl = {!!} + +valrefl (var Γ x) = var _ x +valrefl (vunit Γ) = vunit _ +valrefl (vpair V V') = vpair (valrefl V) (valrefl V') +valrefl (vdestr V Vk) = vdestr (valrefl V) {!valrefl Vk!} +valrefl (vthunk M) = vthunk {!termrefl M!} + +termrefl hole = hole +termrefl (lambda M) = {!lambda (termrefl M)!} +termrefl (app M V) = app (termrefl M) (valrefl V) +termrefl (force V) = {!force (valrefl V)!} +termrefl (ret V) = {!ret (valrefl V)!} +termrefl (lett M Mk) = lett (termrefl M) {!(termrefl Mk)!} + -- GitLab