|
| 1 | +module GpdCont.HomotopyGroup.Action where |
| 2 | + |
| 3 | +open import GpdCont.Prelude |
| 4 | +open import GpdCont.Connectivity |
| 5 | +open import GpdCont.Embedding |
| 6 | +open import GpdCont.HomotopySet |
| 7 | +import GpdCont.SetTruncation as ST |
| 8 | + |
| 9 | +open import GpdCont.HomotopyGroup.Base |
| 10 | + |
| 11 | +open import Cubical.Foundations.Equiv |
| 12 | +open import Cubical.Foundations.HLevels |
| 13 | +open import Cubical.Data.Sigma |
| 14 | +open import Cubical.HITs.PropositionalTruncation as PT using (∥_∥₁) |
| 15 | + |
| 16 | + |
| 17 | +private |
| 18 | + variable |
| 19 | + ℓ ℓX ℓY : Level |
| 20 | + |
| 21 | +hAction : (ℓX : Level) → hGroup ℓ → Type _ |
| 22 | +hAction ℓX G = ⟨ G ⟩ᵗ → hSet ℓX |
| 23 | + |
| 24 | +isFaithful : (G : hGroup ℓ) (X : hAction ℓX G) → Type _ |
| 25 | +isFaithful G X = isOfHLevelFun 2 X |
| 26 | + |
| 27 | +isPropIsFaithful : (G : hGroup ℓ) (X : hAction ℓX G) → isProp (isFaithful G X) |
| 28 | +isPropIsFaithful G X = isPropΠ λ _ → isPropIsSet |
| 29 | + |
| 30 | +Pr' : (G : hGroup ℓ) → ⟨ G ⟩ᵗ → hAction ℓ G |
| 31 | +Pr' G g₀ g .fst = g₀ ≡ g |
| 32 | +Pr' G g₀ g .snd = hGroup.is-groupoid G g₀ g |
| 33 | + |
| 34 | +Pr : (G : hGroup ℓ) → hAction ℓ G |
| 35 | +Pr G = Pr' G $ hGroup.pt₀ G |
| 36 | + |
| 37 | +Pr* : (G : hGroup ℓ) → ⟨ G ⟩ᵗ → Σ[ X ∈ hAction ℓ G ] ∥ Pr G ≡ X ∥₁ |
| 38 | +Pr* G g₀ .fst = Pr' G g₀ |
| 39 | +Pr* G g₀ .snd = PT.map (λ p → funExt λ g → hSet≡ (cong (_≡ g) p)) (hGroup.mere-path G g₀) |
| 40 | + |
| 41 | +-- Pr⁻ : (G : hGroup ℓ) → Σ[ X ∈ hAction ℓ G ] ∥ Pr G ≡ X ∥₁ → ⟨ G ⟩ᵗ |
| 42 | +-- Pr⁻ G = uncurry λ X → PT.rec→Gpd {! !} (λ h → {! h ≡$ hGroup.pt₀ G !}) (record { link = {! !} ; coh₁ = {! !} }) |
| 43 | + |
| 44 | +-- yonedaPr≃ : (G : hGroup ℓ) (g h : ⟨ G ⟩ᵗ) → (g ≡ h) ≃ (Pr* G g ≡ Pr* G h) |
| 45 | +-- yonedaPr≃ G g h = {! !} |
| 46 | +-- -- (g ≡ h) ≃⟨ {! !} ⟩ |
| 47 | +-- -- ((G.pt₀ ≡ g) ≡ (G.pt₀ ≡ h)) ≃⟨ hSet≡Equiv ⟩ |
| 48 | +-- -- (Pr G g ≡ Pr G h) ≃∎ |
| 49 | +-- -- where module G = hGroup G |
| 50 | + |
| 51 | + |
| 52 | +-- yonedaPr : (G : hGroup ℓ) (g h : ⟨ G ⟩ᵗ) → isEquiv (λ (p : g ≡ h) → cong (Pr* G) p) |
| 53 | +-- yonedaPr G g h = isoToIsEquiv λ where |
| 54 | +-- .Iso.fun → _ |
| 55 | +-- .Iso.inv x → {! cong (fst) x !} |
| 56 | +-- .Iso.leftInv → {! !} |
| 57 | +-- .Iso.rightInv → {! !} |
| 58 | + |
| 59 | +-- ??? |
| 60 | +isFaithfulPr : (G : hGroup ℓ) → isFaithful G (Pr G) |
| 61 | +isFaithfulPr G = ST.isEmbeddingCong→hasSetFibers (Pr G) λ g h → injEmbedding (isOfHLevelPath' 2 isGroupoidHSet _ _) (Pr⁻ g h _ _) where |
| 62 | + module G = hGroup G |
| 63 | + Pr⁻ : (g h : ⟨ G ⟩ᵗ) → (p q : g ≡ h) → cong (Pr G) p ≡ cong (Pr G) q → p ≡ q |
| 64 | + Pr⁻ g h p q sq = {! !} where |
| 65 | + sq' : Square (λ i → G.pt₀ ≡ p i) (λ i → G.pt₀ ≡ q i) refl refl |
| 66 | + sq' i j = ⟨ sq i j ⟩ |
| 67 | + -- isOfHLevelFunOfImage→isOfHLevelFun 1 _ (G.elimProp {! !} goal) where |
| 68 | + -- module G = hGroup G |
| 69 | + -- foo : (fiber (Pr G) (Pr G G.pt₀)) ≃ {! !} |
| 70 | + -- foo = |
| 71 | + -- (fiber (Pr G) (Pr G G.pt₀)) ≃⟨ {! !} ⟩ |
| 72 | + -- Σ[ g ∈ ⟨ G ⟩ᵗ ] (Pr G g) ≡ (Pr G G.pt₀) ≃⟨ {! !} ⟩ |
| 73 | + -- Σ[ g ∈ ⟨ G ⟩ᵗ ] (G.pt₀ ≡ g) ≡ (G.pt₀ ≡ G.pt₀) ≃⟨ {! !} {- Yoneda? -} ⟩ |
| 74 | + -- Σ[ g ∈ ⟨ G ⟩ᵗ ] g ≡ G.pt₀ ≃⟨ {! !} ⟩ |
| 75 | + -- singl G.pt₀ ≃∎ |
| 76 | + |
| 77 | + -- goal : (x y : fiber (Pr G) (Pr G G.pt₀)) → isProp (x ≡ y) |
| 78 | + -- goal = {! !} |
| 79 | + |
| 80 | +∫ : (G : hGroup ℓ) (X : hAction ℓX G) → hGroupoid (ℓ-max ℓ ℓX) |
| 81 | +∫ G X .fst = Σ[ g ∈ ⟨ G ⟩ᵗ ] ⟨ X g ⟩ |
| 82 | +∫ G X .snd = isGroupoidΣ (hGroup.is-groupoid G) λ g → isSet→isGroupoid $ str $ X g |
| 83 | + |
| 84 | +isTransitive : (G : hGroup ℓ) (X : hAction ℓX G) → Type _ |
| 85 | +isTransitive G X = isPathConnected ⟨ ∫ G X ⟩ |
| 86 | + |
| 87 | +isPropIsTransitive : (G : hGroup ℓ) (X : hAction ℓX G) → isProp (isTransitive G X) |
| 88 | +isPropIsTransitive G X = isPropIsPathConnected _ |
| 89 | + |
| 90 | +precompAction : ∀ {ℓ′} (G : hGroup ℓ) (X : hAction ℓX G) (Y : hSet ℓ′) → hAction (ℓ-max ℓX ℓ′) G |
| 91 | +precompAction G X Y = λ g → X g →Set Y |
| 92 | + |
| 93 | +precompAction∫ : ∀ {ℓ′} (G : hGroup ℓ) (X : hAction ℓX G) (Y : hSet ℓ′) |
| 94 | + → ⟨ ∫ G (precompAction G X Y) ⟩ ≃ {! !} |
| 95 | +precompAction∫ G X Y = |
| 96 | + Σ[ g ∈ ⟨ G ⟩ᵗ ] (⟨ X g ⟩ → ⟨ Y ⟩) ≃⟨ {! !} ⟩ |
| 97 | + {! !} ≃∎ |
| 98 | + |
| 99 | +module _ (G : hGroup ℓ) (X : hAction ℓX G) (Y : hAction ℓY G) where |
| 100 | + private module G = hGroup G |
| 101 | + |
| 102 | + hActionHom : Type _ |
| 103 | + hActionHom = ∀ g → ⟨ X g ⟩ → ⟨ Y g ⟩ |
| 104 | + |
| 105 | + ev : {g : ⟨ G ⟩ᵗ} (x : ⟨ X g ⟩) → hActionHom → ⟨ Y g ⟩ |
| 106 | + ev {g} x f = f g x |
| 107 | + |
| 108 | + isTransitive→isEmbeddingEv : isTransitive G X → ∀ {g₀ : ⟨ G ⟩ᵗ} (x₀ : ⟨ X g₀ ⟩) → isOfHLevelFun 1 (ev x₀) |
| 109 | + isTransitive→isEmbeddingEv is-transitive-X {g₀} x₀ y (f₀ , p₀) (f₁ , p₁) = goal where |
| 110 | + p : f₀ g₀ x₀ ≡ f₁ g₀ x₀ |
| 111 | + p = p₀ ∙ sym p₁ |
| 112 | + |
| 113 | + -- Assuming some path from (g₀ , x₀) to (g , x) exists, we can equate f₀ and f₁: |
| 114 | + path-ext-conn : ∀ g x |
| 115 | + → (pᵍ : g₀ ≡ g) |
| 116 | + → (pˣ : PathP (λ i → ⟨ X (pᵍ i) ⟩) x₀ x) |
| 117 | + → f₀ g x ≡ f₁ g x |
| 118 | + path-ext-conn g x pᵍ pˣ = goal where |
| 119 | + -- Substituting under f₀ and f₁, we get paths in Y over pᵍ: |
| 120 | + p₀′ : PathP (λ i → ⟨ Y (pᵍ i) ⟩) (f₀ g₀ x₀) (f₀ g x) |
| 121 | + p₀′ = cong₂ f₀ pᵍ pˣ |
| 122 | + p₁′ : PathP (λ i → ⟨ Y (pᵍ i) ⟩) (f₁ g₀ x₀) (f₁ g x) |
| 123 | + p₁′ = cong₂ f₁ pᵍ pˣ |
| 124 | + |
| 125 | + -- We compose (p : f₀ g₀ x₀ ≡ f₁ g₀ x₀) on either side with the ajusted paths from above, |
| 126 | + -- over the identification (pᵍ : g₀ ≡ g). This gives us the desired (non-dependent) |
| 127 | + -- path from (f₀ g x) to (f₁ g x). |
| 128 | + goal : PathP (λ _ → ⟨ Y g ⟩) (f₀ g x) (f₁ g x) |
| 129 | + goal = doubleCompPathP (λ i _ → ⟨ Y (pᵍ i) ⟩) p₀′ p p₁′ |
| 130 | + |
| 131 | + -- Since X is transitive (= ∫ G X is connected), there merely exists a path (g₀ , x₀) ≡ (g , x) |
| 132 | + -- for any g, x. The goal is a proposition, so we can apply [path-ext-conn] from above: |
| 133 | + path-ext : ∀ g x → f₀ g x ≡ f₁ g x |
| 134 | + path-ext g x = PT.rec (str (Y g) _ _) |
| 135 | + (λ ∫-path → path-ext-conn g x (cong fst ∫-path) (cong snd ∫-path)) |
| 136 | + (isPathConnected→merePath is-transitive-X (g₀ , x₀) (g , x)) |
| 137 | + |
| 138 | + path : f₀ ≡ f₁ |
| 139 | + path i g x = path-ext g x i |
| 140 | + |
| 141 | + goal : Path (fiber (ev x₀) y) (f₀ , p₀) (f₁ , p₁) |
| 142 | + goal = Σ≡Prop (λ f → str (Y g₀) _ _) path |
0 commit comments