{-# OPTIONS --without-K --exact-split --rewriting #-}
module Pi.FSMG.UFin where
open import lib.Base
open import lib.NType
open import lib.NType2
open import lib.Equivalence
open import lib.Univalence
open import lib.types.Sigma
open import lib.types.Truncation
open import lib.types.BAut
open import lib.types.Nat
open import lib.types.Fin
open import lib.types.Pi
open import lib.types.Coproduct
open import homotopy.FinSet public
UFin : ∀ {i} → Type i → Type (lmax (lsucc lzero) i)
UFin A = Σ FinSet λ X → X .fst → A
open import Pi.FSMG.SMG
open import Pi.UFin.BAut
open import Pi.Common.Extra
instance
BAut-Fin-level : {n : ℕ} → has-level 1 (BAut (Fin n))
BAut-Fin-level = BAut-level {{Fin-is-set}}
FinSet-exp-level : has-level 1 FinSet-exp
FinSet-exp-level = Σ-level ⟨⟩ λ n → BAut-Fin-level
FinSet-level : has-level 1 FinSet
FinSet-level = equiv-preserves-level FinSet-econv {{FinSet-exp-level}}
FinSet-fst-level : (X : FinSet) → is-set (X .fst)
FinSet-fst-level (X , ϕ) = Trunc-elim (λ p → transport is-set (p .snd) Fin-is-set) ϕ
module _ {i} (A : Type i) {{_ : has-level 1 A}} where
instance
UFin-level : has-level 1 (UFin A)
UFin-level = Σ-level FinSet-level λ X → ⟨⟩
I : UFin A
I = FinFS 0 , ⊥-elim ∘ –> Fin-equiv-Empty
Fin+ : (m n : ℕ) → Fin (m + n) ≃ Fin m ⊔ Fin n
Fin+ O n = TODO
Fin+ (S m) n = TODO
_∪_ : FinSet → FinSet → FinSet
(X , ϕ) ∪ (Y , ψ) = X ⊔ Y , TODO
_⊗_ : UFin A → UFin A → UFin A
(X , F) ⊗ (Y , G) = (X ∪ Y) , TODO
UFin-SMGStructure : SMGStructure (UFin A) {{UFin-level}}
SMGStructure.I UFin-SMGStructure = I
SMGStructure._⊗_ UFin-SMGStructure X Y = X ⊗ Y
SMGStructure.α UFin-SMGStructure = TODO
SMGStructure.Λ UFin-SMGStructure = TODO
SMGStructure.ρ UFin-SMGStructure = TODO
SMGStructure.β UFin-SMGStructure = TODO
SMGStructure.⬠ UFin-SMGStructure = TODO
SMGStructure.▽ UFin-SMGStructure = TODO
SMGStructure.⬡ UFin-SMGStructure = TODO
SMGStructure.β² UFin-SMGStructure = TODO