{-# OPTIONS --without-K --rewriting --overlapping-instances #-}
module Pi.UFin.UFinLehmerEquiv where
open import HoTT
open import Pi.Lehmer.Lehmer
open import Pi.Lehmer.LehmerFinEquiv
open import Pi.Common.Extra
open import Pi.UFin.UFin
module _ {n : ℕ} where
open import HoTT
UFin≃BAut : Ω ⊙[ UFin , FinFS n ] ≃ ΩBAut (Fin n)
UFin≃BAut = equiv f g f-g g-f
where f : Ω ⊙[ UFin , FinFS n ] → ΩBAut (Fin n)
f p = pair= (fst= p) prop-has-all-paths-↓
g : ΩBAut (Fin n) → Ω ⊙[ UFin , FinFS n ]
g p = pair= (fst= p) prop-has-all-paths-↓
f-g : (p : ΩBAut (Fin n)) → f (g p) == p
f-g p = pair== (fst=-β (fst= p) prop-has-all-paths-↓)
(prop-has-all-paths-↓ {{transport is-prop (ua (to-transp-equiv _ (fst= p) ⁻¹)) ⟨⟩}})
∙ ! (pair=-η p)
g-f : (p : Ω ⊙[ UFin , FinFS n ]) → g (f p) == p
g-f p = pair== (fst=-β (fst= p) prop-has-all-paths-↓)
(prop-has-all-paths-↓ {{transport is-prop (ua (to-transp-equiv _ (fst= p) ⁻¹)) ⟨⟩}})
∙ ! (pair=-η p)
UFin≃Fin : Ω ⊙[ UFin , FinFS n ] ≃ Aut (Fin n)
UFin≃Fin = Fin-loop-equiv n ∘e UFin≃BAut
module _ {n : ℕ} where
UFin≃Lehmer : Ω ⊙[ UFin , FinFS (S n) ] ≃ Lehmer n
UFin≃Lehmer = Fin≃Lehmer ∘e UFin≃Fin