{-# OPTIONS --without-K --rewriting #-}
open import HoTT
open import cohomology.Theory
open import homotopy.DisjointlyPointedSet
module cohomology.DisjointlyPointedSet {i} (OT : OrdinaryTheory i) where
open OrdinaryTheory OT
module _ (n : ℤ) (X : Ptd i)
(X-is-set : is-set (de⊙ X)) (dec : is-separable X)
(ac : has-choice 0 (de⊙ X) i) where
private
lemma : BigWedge {A = MinusPoint X} (λ _ → ⊙Bool) ≃ de⊙ X
lemma = equiv to from to-from from-to where
from : de⊙ X → BigWedge {A = MinusPoint X} (λ _ → ⊙Bool)
from x with dec x
from x | inl p = bwbase
from x | inr ¬p = bwin (x , ¬p) false
module From = BigWedgeRec {A = MinusPoint X} {X = λ _ → ⊙Bool}
(pt X) (λ{_ true → pt X; (x , _) false → x}) (λ _ → idp)
to = From.f
abstract
from-to : ∀ x → from (to x) == x
from-to = BigWedge-elim base* in* glue* where
base* : from (pt X) == bwbase
base* with dec (pt X)
base* | inl _ = idp
base* | inr ¬p = ⊥-rec (¬p idp)
in* : (wp : MinusPoint X) (b : Bool)
→ from (to (bwin wp b)) == bwin wp b
in* wp true with dec (pt X)
in* wp true | inl _ = bwglue wp
in* wp true | inr pt≠pt = ⊥-rec (pt≠pt idp)
in* (x , pt≠x) false with dec x
in* (x , pt≠x) false | inl pt=x = ⊥-rec (pt≠x pt=x)
in* (x , pt≠x) false | inr pt≠'x =
ap (λ ¬p → bwin (x , ¬p) false) $ prop-has-all-paths ¬-is-prop pt≠'x pt≠x
glue* : (wp : MinusPoint X)
→ base* == in* wp true [ (λ x → from (to x) == x) ↓ bwglue wp ]
glue* wp = ↓-∘=idf-from-square from to $ ap (ap from) (From.glue-β wp) ∙v⊡ square where
square : Square base* idp (bwglue wp) (in* wp true)
square with dec (pt X)
square | inl _ = br-square (bwglue wp)
square | inr ¬p = ⊥-rec (¬p idp)
to-from : ∀ x → to (from x) == x
to-from x with dec x
to-from x | inl pt=x = pt=x
to-from x | inr pt≠x = idp
C-set : C n X ≃ᴳ Πᴳ (MinusPoint X) (λ _ → C n (⊙Lift ⊙Bool))
C-set =
C n X
≃ᴳ⟨ C-emap n (≃-to-⊙≃ lemma idp) ⟩
C n (⊙BigWedge {A = MinusPoint X} (λ _ → ⊙Bool))
≃ᴳ⟨ C-emap n (⊙BigWedge-emap-r λ _ → ⊙lower-equiv) ⟩
C n (⊙BigWedge {A = MinusPoint X} (λ _ → ⊙Lift ⊙Bool))
≃ᴳ⟨ C-additive-iso n (λ _ → ⊙Lift ⊙Bool)
(MinusPoint-has-choice 0 (separable-has-disjoint-pt dec) ac) ⟩
Πᴳ (MinusPoint X) (λ _ → C n (⊙Lift ⊙Bool))
≃ᴳ∎
module _ {n : ℤ} (n≠0 : n ≠ 0) (X : Ptd i)
(X-is-set : is-set (de⊙ X)) (dec : is-separable X)
(ac : has-choice 0 (de⊙ X) i) where
C-set-≠-is-trivial : is-trivialᴳ (C n X)
C-set-≠-is-trivial = iso-preserves'-trivial
(C-set n X X-is-set dec ac)
(Πᴳ-is-trivial (MinusPoint X)
(λ _ → C n (⊙Lift ⊙Bool))
(λ _ → C-dimension n≠0))