{-# OPTIONS --without-K --exact-split --rewriting #-} module Pi.Equiv.Equiv0Norm where open import Pi.Syntax.Pi+.Indexed as Pi open import Pi.Syntax.Pi^ as Pi^ open import Pi.UFin.UFin open import Pi.Common.Extra open import lib.Basics open import lib.types.Fin open import lib.types.List open import lib.types.Truncation open import lib.NType2 open import lib.types.SetQuotient open import lib.types.Coproduct open import lib.types.Nat as N private variable n m o p : ℕ quoteNorm₀ : {n : ℕ} -> UFin[ n ] → ℕ quoteNorm₀ {n} _ = n evalNorm₀ : (n : ℕ) → UFin[ n ] evalNorm₀ _ = pFin _ quote-evalNorm₀ : (n : ℕ) → quoteNorm₀ (evalNorm₀ n) ⟷₁^ n quote-evalNorm₀ O = id⟷₁^ quote-evalNorm₀ (S n) = ⊕^ quote-evalNorm₀ n eval-quoteNorm₀ : {n : ℕ} (X : UFin[ n ]) → Trunc -1 (evalNorm₀ (quoteNorm₀ X) == X) eval-quoteNorm₀ (X , ϕ) = Trunc-fmap (λ p → pair= p prop-has-all-paths-↓) ϕ