59 lines
1.4 KiB
Plaintext
59 lines
1.4 KiB
Plaintext
{-# OPTIONS --cubical #-}
|
||
|
||
module Experiments.TList where
|
||
|
||
open import Cubical.Foundations.Everything
|
||
open import Cubical.Data.List
|
||
open import Cubical.HITs.SetTruncation as S
|
||
|
||
MList : ∀ {ℓ} -> Type ℓ -> Type ℓ
|
||
MList A = ∥ List A ∥₂
|
||
|
||
variable
|
||
ℓ : Level
|
||
A B C : Type ℓ
|
||
|
||
inc : (A -> List B) -> (A -> MList B)
|
||
inc = ∣_∣₂ ∘_
|
||
|
||
eta : A -> MList A
|
||
eta = inc [_]
|
||
|
||
map₂ : (A -> B -> C) -> ∥ A ∥₂ -> ∥ B ∥₂ -> ∥ C ∥₂
|
||
map₂ f ∣ a ∣₂ = S.map (f a)
|
||
map₂ f (squash₂ a a' p q i j) = {!!}
|
||
|
||
fmap : (A -> B) -> ∥ A ∥₂ -> ∥ B ∥₂
|
||
fmap f ∣ a ∣₂ = ∣ f a ∣₂
|
||
fmap f (squash₂ a b p q i j) =
|
||
squash₂ (fmap f a) (fmap f b) (cong (fmap f) p) (cong (fmap f) q) i j
|
||
|
||
module _ (P : List A -> Type ℓ)
|
||
(h : (xs : List A) -> P xs)
|
||
(trunc : {xs : List A} -> isSet (P xs))
|
||
where
|
||
f : (xs : MList A) -> P {!!}
|
||
f = {!!}
|
||
|
||
e : MList A
|
||
e = ∣ [] ∣₂
|
||
|
||
_⊕_ : MList A -> MList A -> MList A
|
||
_⊕_ = map₂ _++_
|
||
|
||
map-inc : ∀ {f : A -> B} {a} -> S.map f (∣ a ∣₂) ≡ ∣ f a ∣₂
|
||
map-inc = refl
|
||
|
||
map₂-inc : ∀ {f : A -> B -> C} {a b} -> map₂ f a ∣ b ∣₂ ≡ S.map (\a -> f a b) a
|
||
map₂-inc {a = a} = {!!}
|
||
|
||
congmap : ((a b : A) -> f a ≡ g b)
|
||
-> (a' b' : ∥ A ∥₂) -> map f a' ≡ map g b'
|
||
|
||
unitr : (xs : MList A) -> xs ⊕ e ≡ xs
|
||
unitr xs =
|
||
map₂ _++_ xs e ≡⟨ {!!} ⟩
|
||
S.map (\xs -> xs ⊕ e) e ≡⟨ {!!} ⟩
|
||
idfun _ xs
|
||
∎
|