{-# OPTIONS --without-K --safe #-} module Cfe.Fin.Properties where open import Cfe.Fin.Base open import Data.Fin using (zero; suc; toℕ) open import Data.Nat using (suc; pred) open import Relation.Binary.PropositionalEquality inject-cong : ∀ {n i j k l} → toℕ> {i = i} k ≡ toℕ> {i = j} l → raise> {n} k ≡ raise> l raise>-cong {suc _} {k = zero} {zero} _ = refl raise>-cong {suc _} {k = suc k} {suc l} k≡l = cong suc (raise>-cong (cong pred k≡l)) raise>-cong {suc _} {k = suc k} {inj l} k≡l = cong suc (raise>-cong (cong pred k≡l)) raise>-cong {suc _} {k = inj k} {suc l} k≡l = cong suc (raise>-cong (cong pred k≡l)) raise>-cong {suc _} {k = inj k} {inj l} k≡l = cong suc (raise>-cong (cong pred k≡l)) toℕ>-suc> : ∀ {n} j → toℕ> (suc> {suc n} j) ≡ toℕ> (suc j) toℕ>-suc> zero = refl toℕ>-suc> (suc j) = cong suc (toℕ>-suc> j) toℕ<-inject-cast>-inject k ≡ toℕ> (cast>-inject-cast>-inject-cast>-inject-cast>-inject-cast>-inject-cast>-inject-cast>-inject-cast>-inject