module ETT.Uniqueness where
open import Prelude
open import WSLN
open import ETT.Syntax
open import ETT.Judgement
open import ETT.Cofinite
open import ETT.Ok
open import ETT.WellScoped
open import ETT.Weakening
open import ETT.Substitution
open import ETT.Admissible
open import ETT.ExistsFresh
svVr :
{l l' : Lvl}
{ฮ : Cx}
{A A' : Ty}
{x x' : ๐ธ}
(_ : Ok ฮ)
(_ : (x , A , l) isIn ฮ)
(_ : (x' , A' , l') isIn ฮ)
(_ : x โก x')
โ
(l โก l') โง (A โก A')
svVr _ isInNew isInNew _ = refl , refl
svVr (okโจ _ q _) isInNew (isInOld p') refl =
รelim (โโยฌโ q (isInโdom p'))
svVr (okโจ _ q _) (isInOld p) isInNew refl =
รelim (โโยฌโ q (isInโdom p))
svVr (okโจ _ _ q) (isInOld p) (isInOld p') e = svVr q p p' e
svTy :
{l l' : Lvl}
{ฮ : Cx}
{A A' : Ty}
{a : Tm}
(_ : ฮ โข a โถ A โฆ l)
(_ : ฮ โข a โถ A' โฆ l')
โ
(l โก l') โง (ฮ โข A ๏ผ A' โฆ l)
svTy (โขconv qโ qโ) q' with (refl , q) โ svTy qโ q' =
(refl , Trans (Symm qโ) q)
svTy q (โขconv qโ' qโ') with (refl , q') โ svTy q qโ' =
(refl , Trans q' qโ')
svTy (โข๐ฏ qโ qโ) (โข๐ฏ _ qโ')
with (refl , refl) โ svVr qโ qโ qโ' refl =
(refl , Refl (okโty qโ qโ))
svTy (โข๐ q) (โข๐ _) = (refl , Refl (โข๐ q))
svTy (โข๐ท _ qโ _) (โข๐ท _ _ _) = (refl , Refl (โข๐ (โขok qโ)))
svTy (โข๐{B = B} S qโ qโ _) (โข๐{B = B'} S' qโ' qโ' _)
with (refl , _ ) โ svTy qโ qโ'
| (x , x#S โโช x#S' โโช x#) โ fresh (S , S' , B , B')
with (refl , r) โ svTy (qโ x x#S) (qโ' x x#S') =
refl , (๐ทCongโป (Refl qโ) r x#)
svTy (โขโ{B = B} S _ qโ qโ _) (โขโ S' _ qโ' qโ' _)
with (refl , _) โ svTy qโ qโ'
| (x , x#S โโช x#S' โโช x#) โ fresh (S , S' , B)
with (refl , _) โ svTy (qโ x x#S) (qโ' x x#S') =
(refl , Refl (concTy B x (qโ x x#S) qโ x#))
svTy (โข๐๐ช q _ _) (โข๐๐ช q' _ _)
with (refl , _) โ svTy q q' =
(refl , Refl (โข๐ (โขok q)))
svTy (โข๐ซ๐๐๐ฅ q _) (โข๐ซ๐๐๐ฅ q' _)
with (refl , r) โ svTy q q' =
(refl , ๐๐ชCong r (Refl q) (Refl q))
svTy (โข๐๐๐ญ q) (โข๐๐๐ญ _) = (refl , Refl (โข๐ q))
svTy (โข๐ณ๐๐ซ๐จ q) (โข๐ณ๐๐ซ๐จ _) = (refl , Refl (โข๐๐๐ญ q))
svTy (โข๐ฌ๐ฎ๐๐ q) (โข๐ฌ๐ฎ๐๐ _) = (refl , Refl (โข๐๐๐ญ (โขok q)))
svTy (โข๐ง๐ซ๐๐{C = C} S qโ _ qโ h) (โข๐ง๐ซ๐๐ _ qโ' _ _ _)
with (refl , _) โ svTy qโ qโ'
| (x , x#S โโช x#) โ fresh (S , C) =
(refl , Refl (concTy C x (h x x#S) qโ x#))