@@ -54,12 +54,19 @@ infix 5 Subst
5454syntax Subst α β = α ⇒ β
5555
5656pattern ⌈⌉ = SNil
57- infix 6 ⌈_↦_◃ _⌉
58- pattern ⌈_↦_◃_⌉ x u σ = SCons {x = x} u σ
59- infix 4 ⌈_↦_◃ ⌉
60- pattern ⌈_↦_◃ ⌉ x u = ⌈ x ↦ u ◃ ⌈⌉ ⌉
57+ infix 6 ⌈_◃_↦ _⌉
58+ pattern ⌈_◃_↦_⌉ σ x u = SCons {x = x} u σ
59+ infix 4 ⌈◃ _↦_⌉
60+ pattern ⌈◃ _↦_⌉ x u = ⌈ ⌈⌉ ◃ x ↦ u ⌉
6161
62+ infix 5 TypeS
63+ syntax TypeS α β = α ⇛ β
6264
65+ pattern ⌈⌉ = YNil
66+ infix 6 ⌈_◃_∶_⌉
67+ pattern ⌈_◃_∶_⌉ Δ x u = YCons {x = x} u Δ
68+ infix 4 ⌈_◃_∶⌉
69+ pattern ⌈_◃_∶⌉ x u = ⌈ x ◃ u ∶ ⌈⌉ ⌉
6370
6471
6572-- This should ideally be the following:
@@ -83,7 +90,7 @@ data Term α where
8390 → Rezz (dataIxScope d) -- Run-time representation of index scope
8491 → (u : Term α) -- Term we are casing on
8592 → (bs : Branches α cs) -- Branches (one for each constructor of d)
86- → (m : Type (x ◃ (~ dataIxScope d <> α))) -- Return type
93+ → (m : Type (x ◃ (dataIxScope d <> α))) -- Return type
8794 → Term α
8895 TPi : (@0 x : Name) (u : Type α) (v : Type (x ◃ α)) → Term α
8996 TSort : Sort α → Term α
@@ -116,7 +123,7 @@ sortType s = El (sucSort s) (TSort s)
116123data Branch α where
117124 BBranch : (c : NameIn conScope)
118125 → Rezz (fieldScope c)
119- → Term (~ fieldScope c <> α) → Branch α (proj₁ c)
126+ → Term (fieldScope c <> α) → Branch α (proj₁ c)
120127{-# COMPILE AGDA2HS Branch deriving Show #-}
121128
122129data Branches α where
@@ -144,6 +151,10 @@ rezzBranches BsNil = rezz mempty
144151rezzBranches (BsCons {c = c} bh bt) = rezzCong (λ cs → c ◃ cs) (rezzBranches bt)
145152{-# COMPILE AGDA2HS rezzBranches #-}
146153
154+ rezzTypeS : TypeS α β → Rezz α
155+ rezzTypeS ⌈⌉ = rezz _
156+ rezzTypeS ⌈ t ◃ x ∶ ty ⌉ = rezzCong (λ t → singleton x <> t) (rezzTypeS t)
157+
147158allBranches : Branches α β → All (λ c → c ∈ conScope) β
148159allBranches BsNil = allEmpty
149160allBranches (BsCons (BBranch (⟨ _ ⟩ ci) _ _) bs) = allJoin (allSingl ci) (allBranches bs)
@@ -160,7 +171,7 @@ applys {γ = γ} v (u ∷ us) = applys (TApp v u) us
160171
161172applySubst : Term γ → (β ⇒ γ) → Term γ
162173applySubst {γ = γ} v ⌈⌉ = v
163- applySubst {γ = γ} v ⌈ _ ↦ u ◃ us ⌉ = applySubst (TApp v u) us
174+ applySubst {γ = γ} v ⌈ us ◃ _ ↦ u ⌉ = applySubst (TApp v u) us
164175{-# COMPILE AGDA2HS applySubst #-}
165176
166177
@@ -212,17 +223,17 @@ lookupSubst : α ⇒ β
212223 → x ∈ α
213224 → Term β
214225lookupSubst ⌈⌉ x q = inEmptyCase q
215- lookupSubst ⌈ _ ↦ u ◃ f ⌉ x q = inBindCase q (λ _ → u) (lookupSubst f x)
226+ lookupSubst ⌈ f ◃ _ ↦ u ⌉ x q = inBindCase q (λ _ → u) (lookupSubst f x)
216227
217228{-# COMPILE AGDA2HS lookupSubst #-}
218229
219230opaque
220231 unfolding Scope
221232
222233 caseSubstBind : (s : (x ◃ α) ⇒ β)
223- → ((t : Term β) → (s' : α ⇒ β) → @0 {{s ≡ ⌈ x ↦ t ◃ s' ⌉}} → d)
234+ → ((t : Term β) → (s' : α ⇒ β) → @0 {{s ≡ ⌈ s' ◃ x ↦ t ⌉}} → d)
224235 → d
225- caseSubstBind ⌈ _ ↦ x ◃ s ⌉ f = f x s
236+ caseSubstBind ⌈ s ◃ _ ↦ x ⌉ f = f x s
226237
227238 {-# COMPILE AGDA2HS caseSubstBind #-}
228239
@@ -242,6 +253,7 @@ weakenType : α ⊆ β → Type α → Type β
242253weakenBranch : α ⊆ β → Branch α c → Branch β c
243254weakenBranches : α ⊆ β → Branches α cs → Branches β cs
244255weakenSubst : β ⊆ γ → α ⇒ β → α ⇒ γ
256+ weakenTypeS : β ⊆ γ → α ⇛ β → α ⇛ γ
245257
246258weakenTerm p (TVar (⟨ x ⟩ k)) = TVar (⟨ x ⟩ coerce p k)
247259weakenTerm p (TDef d) = TDef d
@@ -250,7 +262,7 @@ weakenTerm p (TCon c vs) = TCon c (weakenSubst p vs)
250262weakenTerm p (TLam x v) = TLam x (weakenTerm (subBindKeep p) v)
251263weakenTerm p (TApp u e) = TApp (weakenTerm p u) (weakenTerm p e)
252264weakenTerm p (TProj u x) = TProj (weakenTerm p u) x
253- weakenTerm p (TCase d r u bs m) = TCase d r (weakenTerm p u) (weakenBranches p bs) (weakenType (subBindKeep (subJoinKeep (rezz~ r) p)) m)
265+ weakenTerm p (TCase d r u bs m) = TCase d r (weakenTerm p u) (weakenBranches p bs) (weakenType (subBindKeep (subJoinKeep r p)) m)
254266weakenTerm p (TPi x a b) = TPi x (weakenType p a) (weakenType (subBindKeep p) b)
255267weakenTerm p (TSort α) = TSort (weakenSort p α)
256268weakenTerm p (TLet x v t) = TLet x (weakenTerm p v) (weakenTerm (subBindKeep p) t)
@@ -263,17 +275,21 @@ weakenSort p (STyp x) = STyp x
263275weakenType p (El st t) = El (weakenSort p st) (weakenTerm p t)
264276{-# COMPILE AGDA2HS weakenType #-}
265277
266- weakenBranch p (BBranch c r x) = BBranch c r (weakenTerm (subJoinKeep (rezz~ r) p) x)
278+ weakenBranch p (BBranch c r x) = BBranch c r (weakenTerm (subJoinKeep r p) x)
267279{-# COMPILE AGDA2HS weakenBranch #-}
268280
269281weakenBranches p BsNil = BsNil
270282weakenBranches p (BsCons b bs) = BsCons (weakenBranch p b) (weakenBranches p bs)
271283{-# COMPILE AGDA2HS weakenBranches #-}
272284
273285weakenSubst p ⌈⌉ = ⌈⌉
274- weakenSubst p ⌈ _ ↦ u ◃ e ⌉ = ⌈ _ ↦ (weakenTerm p u ) ◃ (weakenSubst p e ) ⌉
286+ weakenSubst p ⌈ e ◃ _ ↦ u ⌉ = ⌈ (weakenSubst p e ) ◃ _ ↦ (weakenTerm p u ) ⌉
275287{-# COMPILE AGDA2HS weakenSubst #-}
276288
289+ weakenTypeS p ⌈⌉ = ⌈⌉
290+ weakenTypeS p ⌈ e ◃ _ ∶ u ⌉ = ⌈ (weakenTypeS p e) ◃ _ ∶ (weakenType p u) ⌉
291+ {-# COMPILE AGDA2HS weakenTypeS #-}
292+
277293record Weaken (t : @0 Scope Name → Set ) : Set where
278294 field
279295 weaken : α ⊆ β → t α → t β
@@ -293,12 +309,15 @@ instance
293309 iWeakenBranches .weaken = weakenBranches
294310 iWeakenSubst : Weaken (Subst β)
295311 iWeakenSubst .weaken = weakenSubst
312+ iWeakenTypeS : Weaken (TypeS β)
313+ iWeakenTypeS .weaken = weakenTypeS
296314{-# COMPILE AGDA2HS iWeakenTerm #-}
297315{-# COMPILE AGDA2HS iWeakenSort #-}
298316{-# COMPILE AGDA2HS iWeakenType #-}
299317{-# COMPILE AGDA2HS iWeakenBranch #-}
300318{-# COMPILE AGDA2HS iWeakenBranches #-}
301319{-# COMPILE AGDA2HS iWeakenSubst #-}
320+ {-# COMPILE AGDA2HS iWeakenTypeS #-}
302321
303322
304323dropSubst : {@0 α β : Scope Name} {@0 x : Name} → (x ◃ α) ⇒ β → α ⇒ β
@@ -319,8 +338,8 @@ listSubst (rezz β) (v ∷ vs) =
319338concatSubst : α ⇒ γ → β ⇒ γ → (α <> β) ⇒ γ
320339concatSubst ⌈⌉ q =
321340 subst0 (λ α → α ⇒ _) (sym (leftIdentity _)) q
322- concatSubst ⌈ _ ↦ v ◃ p ⌉ q =
323- subst0 (λ α → α ⇒ _) (associativity _ _ _) ⌈ _ ↦ v ◃ concatSubst p q ⌉
341+ concatSubst ⌈ p ◃ _ ↦ v ⌉ q =
342+ subst0 (λ α → α ⇒ _) (associativity _ _ _) ⌈ concatSubst p q ◃ _ ↦ v ⌉
324343
325344{-# COMPILE AGDA2HS concatSubst #-}
326345
@@ -330,7 +349,7 @@ opaque
330349 subToSubst : Rezz α → α ⊆ β → α ⇒ β
331350 subToSubst (rezz []) p = ⌈⌉
332351 subToSubst (rezz (Erased x ∷ α)) p =
333- ⌈ x ↦ (TVar (⟨ x ⟩ coerce p inHere )) ◃ (subToSubst (rezz α) (joinSubRight (rezz _) p )) ⌉
352+ ⌈ (subToSubst (rezz α) (joinSubRight (rezz _) p )) ◃ x ↦ (TVar (⟨ x ⟩ coerce p inHere )) ⌉
334353
335354
336355{-# COMPILE AGDA2HS subToSubst #-}
@@ -340,7 +359,7 @@ opaque
340359
341360 revSubstAcc : {@0 α β γ : Scope Name} → α ⇒ γ → β ⇒ γ → (revScopeAcc α β) ⇒ γ
342361 revSubstAcc ⌈⌉ p = p
343- revSubstAcc ⌈ y ↦ x ◃ s ⌉ p = revSubstAcc s ⌈ y ↦ x ◃ p ⌉
362+ revSubstAcc ⌈ s ◃ y ↦ x ⌉ p = revSubstAcc s ⌈ p ◃ y ↦ x ⌉
344363 {-# COMPILE AGDA2HS revSubstAcc #-}
345364
346365 revSubst : {@0 α β : Scope Name} → α ⇒ β → ~ α ⇒ β
@@ -358,15 +377,15 @@ idSubst r = subst0 (λ β → β ⇒ β) (rightIdentity _) (liftSubst r ⌈⌉)
358377{-# COMPILE AGDA2HS idSubst #-}
359378
360379liftBindSubst : {@0 α β : Scope Name} {@0 x y : Name} → α ⇒ β → (bind x α) ⇒ (bind y β)
361- liftBindSubst {y = y} e = ⌈ _ ↦ (TVar (⟨ y ⟩ inHere)) ◃ (weakenSubst (subBindDrop subRefl) e ) ⌉
380+ liftBindSubst {y = y} e = ⌈ (weakenSubst (subBindDrop subRefl) e) ◃ _ ↦ (TVar (⟨ y ⟩ inHere)) ⌉
362381{-# COMPILE AGDA2HS liftBindSubst #-}
363382
364383raiseSubst : {@0 α β : Scope Name} → Rezz β → α ⇒ β → (α <> β) ⇒ β
365384raiseSubst {β = β} r ⌈⌉ = subst (λ α → α ⇒ β) (sym (leftIdentity β)) (idSubst r)
366385raiseSubst {β = β} r (SCons {α = α} u e) =
367386 subst (λ α → α ⇒ β)
368387 (associativity (singleton _) α β)
369- ⌈ _ ↦ u ◃ raiseSubst r e ⌉
388+ ⌈ raiseSubst r e ◃ _ ↦ u ⌉
370389{-# COMPILE AGDA2HS raiseSubst #-}
371390
372391revIdSubst : {@0 α : Scope Name} → Rezz α → α ⇒ ~ α
@@ -402,7 +421,7 @@ strengthenTerm p (TProj u f) = (λ v → TProj v f) <$> strengthenTerm p u
402421strengthenTerm p (TCase d r u bs m) =
403422 TCase d r <$> strengthenTerm p u
404423 <*> strengthenBranches p bs
405- <*> strengthenType (subBindKeep (subJoinKeep (rezz~ r) p)) m
424+ <*> strengthenType (subBindKeep (subJoinKeep r p)) m
406425strengthenTerm p (TPi x a b) =
407426 TPi x <$> strengthenType p a <*> strengthenType (subBindKeep p) b
408427strengthenTerm p (TSort s) = TSort <$> strengthenSort p s
@@ -413,13 +432,13 @@ strengthenSort p (STyp n) = Just (STyp n)
413432
414433strengthenType p (El st t) = El <$> strengthenSort p st <*> strengthenTerm p t
415434
416- strengthenBranch p (BBranch c r v) = BBranch c r <$> strengthenTerm (subJoinKeep (rezz~ r) p) v
435+ strengthenBranch p (BBranch c r v) = BBranch c r <$> strengthenTerm (subJoinKeep r p) v
417436
418437strengthenBranches p BsNil = Just BsNil
419438strengthenBranches p (BsCons b bs) = BsCons <$> strengthenBranch p b <*> strengthenBranches p bs
420439
421440strengthenSubst p ⌈⌉ = Just ⌈⌉
422- strengthenSubst p ⌈ x ↦ v ◃ vs ⌉ = SCons <$> strengthenTerm p v <*> strengthenSubst p vs
441+ strengthenSubst p ⌈ vs ◃ x ↦ v ⌉ = SCons <$> strengthenTerm p v <*> strengthenSubst p vs
423442
424443{-# COMPILE AGDA2HS strengthenTerm #-}
425444{-# COMPILE AGDA2HS strengthenType #-}
@@ -486,18 +505,18 @@ varInTerm (TProj t x) = varInTerm t
486505varInTerm (TCase d r u bs m) =
487506 varInTerm u <>
488507 (varInBranches bs) <>
489- (liftListNameIn (rezz~ r) (liftBindListNameIn (varInType m)))
508+ (liftListNameIn r (liftBindListNameIn (varInType m)))
490509varInTerm (TPi x a b) = varInType a <> (liftBindListNameIn (varInType b))
491510varInTerm (TSort x) = []
492511varInTerm (TLet x t t₁) = varInTerm t <> (liftBindListNameIn (varInTerm t₁))
493512varInTerm (TAnn u t) = varInTerm u <> varInType t
494513
495514varInSubst ⌈⌉ = []
496- varInSubst ⌈ x ↦ u ◃ σ ⌉ = (varInTerm u) <> (varInSubst σ)
515+ varInSubst ⌈ σ ◃ x ↦ u ⌉ = (varInTerm u) <> (varInSubst σ)
497516
498517varInType (El _ u) = varInTerm u
499518
500519varInBranches BsNil = []
501520varInBranches (BsCons b bs) = varInBranch b <> (varInBranches bs)
502521
503- varInBranch (BBranch c r v) = liftListNameIn (rezz~ r) (varInTerm v)
522+ varInBranch (BBranch c r v) = liftListNameIn r (varInTerm v)
0 commit comments