module ETU.Uniqueness where
open import Prelude
open import WSLN
open import ETU.Syntax
open import ETU.Judgement
open import ETU.Rules
open import ETU.Ok
open import ETU.WellScoped
open import ETU.Weakening
open import ETU.Substitution
open import ETU.Admissible
open import ETU.ExistsFresh
svVr :
{l l' : โ}
{ฮ : 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' : โ}
{ฮ : 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 _) (โข๐๐ฆ๐ฉ q' _)
with (refl , _) โ svTy q q' = refl , 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#))