module GpdCont.GroupAction.Equivariant where
open import GpdCont.Prelude
open import GpdCont.GroupAction.Base
open import Cubical.Algebra.Group.Base
open import Cubical.Algebra.Group.Morphisms using (GroupHom)
open import Cubical.Algebra.Group.MorphismProperties using (compGroupHom ; idGroupHom)
open import Cubical.Foundations.HLevels
private
variable
ℓ : Level
G H K : Group ℓ
X Y Z : hSet ℓ
σ : Action G X
τ : Action H Y
open Action
private
Grp×Setᵒᵖ[_,_] : (G×X H×Y : Group ℓ × hSet ℓ) → Type ℓ
Grp×Setᵒᵖ[ (G , X) , (H , Y) ] = GroupHom G H × (⟨ Y ⟩ → ⟨ X ⟩)
{-# INJECTIVE_FOR_INFERENCE Grp×Setᵒᵖ[_,_] #-}
compGrp×Setᵒᵖ : ∀ {G H K : Group ℓ} {X Y Z : hSet ℓ}
→ Grp×Setᵒᵖ[ (G , X) , (H , Y) ]
→ Grp×Setᵒᵖ[ (H , Y) , (K , Z) ]
→ Grp×Setᵒᵖ[ (G , X) , (K , Z) ]
compGrp×Setᵒᵖ (φ , fᵒᵖ) (ψ , gᵒᵖ) .fst = compGroupHom φ ψ
compGrp×Setᵒᵖ (φ , fᵒᵖ) (ψ , gᵒᵖ) .snd = fᵒᵖ ∘ gᵒᵖ
isEquivariantMap[_][_,_] :
(φ×fᵒᵖ : Grp×Setᵒᵖ[ (G , X) , (H , Y) ])
→ Action G X → Action H Y → Type _
isEquivariantMap[ (φ , _) , fᵒᵖ ][ σ , τ ] = ∀ g → (σ ⁺ g) ∘ fᵒᵖ ≡ fᵒᵖ ∘ (τ ⁺ φ g)
{-# INJECTIVE_FOR_INFERENCE isEquivariantMap[_][_,_] #-}
opaque
isPropIsEquivariantMap : (φ×fᵒᵖ : Grp×Setᵒᵖ[ (G , X) , (H , Y) ])
→ (σ : Action G X)
→ (τ : Action H Y)
→ isProp (isEquivariantMap[ φ×fᵒᵖ ][ σ , τ ])
isPropIsEquivariantMap {X = X} _ _ _ = isPropΠ λ g → isSet→ (str X) _ _
opaque
isEquivariantMap-comp :
∀ (φ×f : Grp×Setᵒᵖ[ (G , X) , (H , Y) ])
→ (ψ×p : Grp×Setᵒᵖ[ (H , Y) , (K , Z) ])
→ (σ : Action G X) (τ : Action H Y) (υ : Action K Z)
→ isEquivariantMap[ φ×f ][ σ , τ ]
→ isEquivariantMap[ ψ×p ][ τ , υ ]
→ isEquivariantMap[ compGrp×Setᵒᵖ {X = X} {Y = Y} {Z = Z} φ×f ψ×p ][ σ , υ ]
isEquivariantMap-comp ((φ , _) , f) ((ψ , _) , p) σ τ υ f-eqva p-eqva g =
(σ ⁺ g) ∘ f ∘ p ≡⟨ cong (_∘ p) (f-eqva g) ⟩
f ∘ (τ ⁺ (φ g)) ∘ p ≡⟨ cong (f ∘_) (p-eqva (φ g)) ⟩
f ∘ p ∘ (υ ⁺ (ψ (φ g))) ∎
isEquivariantMap-id : ∀ (σ : Action G X) → isEquivariantMap[ idGroupHom {G = G} , (id ⟨ X ⟩) ][ σ , σ ]
isEquivariantMap-id σ = λ g → refl