module Fin.Properties where open import Data.Fin.Base open import Data.Fin.Properties open import Data.Fin.Patterns open import Data.Nat as ℕ using (ℕ; z≤n; s≤s; _∸_) open import Relation.Binary.PropositionalEquality open import Fin.Base private variable m n : ℕ toℕ-reduce≥ : ∀ (i : Fin (m ℕ.+ n)) (m≤n : m ℕ.≤ toℕ i) → toℕ (reduce≥ i m≤n) ≡ toℕ i ∸ m toℕ-reduce≥ {ℕ.zero} i z≤n = refl toℕ-reduce≥ {ℕ.suc m} (suc i) (s≤s m≤i) rewrite toℕ-reduce≥ i m≤i = refl suc-reduce : ∀ (i : Fin (ℕ.suc n)) (0<i : ℕ.zero ℕ.< toℕ i) → suc (reduce≥ i 0<i) ≡ i suc-reduce (suc i) 0<i = refl