{-# OPTIONS --cubical --safe #-}
module Cardinality.Finite.ManifestEnumerable.Isomorphism where
open import Prelude
import Cardinality.Finite.ManifestEnumerable.Container as β
import Cardinality.Finite.ManifestEnumerable.Inductive as π
open import Container.List.Isomorphism
open import Data.Fin
open import HITs.PropositionalTruncation.Sugar
open import Data.List using (_β·_; [])
open import HITs.PropositionalTruncation
open import Cardinality.Finite.SplitEnumerable.Isomorphism
open import Data.Sigma.Properties
πβββ¨β°β© : π.β° A β β.β° A
πβββ¨β°β© .fun (sup , cov) = πββ sup , cov
πβββ¨β°β© .inv (sup , cov) = ββπ sup , Ξ» x β ββββπ x sup β₯$β₯ cov x
πβββ¨β°β© .rightInv (sup , cov) = Ξ£Propβ‘ (Ξ» xs x y i t β squash (x t) (y t) i) (πββ .rightInv sup)
πβββ¨β°β© .leftInv (sup , cov) = Ξ£Propβ‘ (Ξ» xs x y i t β squash (x t) (y t) i) (πββ .leftInv sup)