{-# OPTIONS --without-K --safe #-} open import Relation.Binary using (Setoid) module Cfe.Judgement.Properties {c ℓ} (over : Setoid c ℓ) where open import Cfe.Expression over open import Cfe.Judgement.Base over open import Cfe.Type over 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 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ℕ