From 02a0f87be944b1d43fda265058b891f419d25b65 Mon Sep 17 00:00:00 2001 From: Chloe Brown Date: Tue, 16 Mar 2021 18:45:27 +0000 Subject: Change Language definition to respects instead of custom congruence. --- src/Cfe/Judgement/Base.agda | 2 +- src/Cfe/Judgement/Properties.agda | 112 ++++++++++++++++++++++++-------------- 2 files changed, 73 insertions(+), 41 deletions(-) (limited to 'src/Cfe/Judgement') diff --git a/src/Cfe/Judgement/Base.agda b/src/Cfe/Judgement/Base.agda index 4623066..754d92d 100644 --- a/src/Cfe/Judgement/Base.agda +++ b/src/Cfe/Judgement/Base.agda @@ -28,10 +28,10 @@ data _,_⊢_∶_ : {m : ℕ} → {n : ℕ} → Vec (Type ℓ ℓ) m → Vec (Typ Vee : ∀ {m n} {Γ : Vec _ m} {Δ : Vec _ n} {e₁ e₂ τ₁ τ₂} → Γ , Δ ⊢ e₁ ∶ τ₁ → Γ , Δ ⊢ e₂ ∶ τ₂ → (τ₁#τ₂ : τ₁ # τ₂) → Γ , Δ ⊢ e₁ ∨ e₂ ∶ τ₁ ∨ₜ τ₂ vcast : ∀ {a A m n} → .(m ≡ n) → Vec {a} A m → Vec A n +vcast {n = ℕ.zero} eq [] = [] vcast {n = suc n} eq (x ∷ xs) = x ∷ vcast (suc-injective eq) xs where open import Data.Nat.Properties using (suc-injective) -vcast {n = ℕ.zero} eq [] = [] data _≅_ {a A} : {m n : ℕ} → Vec {a} A m → Vec A n → Set a where []≅[] : [] ≅ [] diff --git a/src/Cfe/Judgement/Properties.agda b/src/Cfe/Judgement/Properties.agda index 101994b..1c06fcd 100644 --- a/src/Cfe/Judgement/Properties.agda +++ b/src/Cfe/Judgement/Properties.agda @@ -13,11 +13,65 @@ open import Data.Empty open import Data.Fin as F hiding (cast) open import Data.Fin.Properties open import Data.Nat as ℕ -open import Data.Nat.Properties +open import Data.Nat.Properties as NP open import Data.Vec open import Data.Vec.Properties open import Function open import Relation.Binary.PropositionalEquality +open import Relation.Nullary + +private + raise-mono : ∀ {m n i j} → i F.≤ j → raise {n} m i F.≤ raise m j + raise-mono {zero} i≤j = i≤j + raise-mono {suc m} i≤j = s≤s (raise-mono i≤j) + + raise≤ : ∀ {m} n i → n ℕ.≤ toℕ (raise {m} n i) + raise≤ zero i = z≤n + raise≤ (suc n) i = s≤s (raise≤ n i) + + inject+≤raise : ∀ {m n} i j → inject+ {suc n} m i F.≤ F.cast (+-suc n m) (raise {suc m} n j) + inject+≤raise {m} {n} i j = begin + toℕ (inject+ m i) ≡˘⟨ toℕ-inject+ m i ⟩ + toℕ i ≤⟨ NP.<⇒≤pred (toℕ