module Algebra.Group.Concrete.Abelian where
Concrete abelian groups🔗
A concrete abelian group is, unsurprisingly, a concrete group in which concatenation of loops at the base point is commutative.
module _ {ℓ} (G : ConcreteGroup ℓ) where
: Type ℓ
is-concrete-abelian = ∀ (p q : pt G ≡ pt G) → p ∙ q ≡ q ∙ p is-concrete-abelian
This is a property:
open ConcreteGroup G using (H-Level-B)
: is-prop is-concrete-abelian
is-concrete-abelian-is-prop = hlevel 1 is-concrete-abelian-is-prop
As an easy consequence, in an abelian group we can fill any square that has equal opposite sides.
concrete-abelian→square: is-concrete-abelian
→ {x : ⌞ B G ⌟} → (p q : x ≡ x) → Square p q q p
{x} = connected∙-elim-prop
concrete-abelian→square ab {P = λ x → (p q : x ≡ x) → Square p q q p}
(G .has-is-connected)
(hlevel 1)
(λ p q → commutes→square (ab p q))
x
Still unsurprisingly, the properties of being a concrete abelian group and being an abelian group are equivalent over the equivalence between concrete and abstract groups.
abelian≃abelian: ∀ {ℓ}
→ is-concrete-abelian ≃[ Concrete≃Abstract {ℓ} ] is-commutative-group
= prop-over-ext Concrete≃Abstract
abelian≃abelian (λ {G} → is-concrete-abelian-is-prop G)
(λ {G} → Group-on-is-abelian-is-prop (G .snd))
(λ G G-ab → G-ab)
(λ G G-ab → Deloop-ab.∙-comm _ G-ab)
For example, the circle is abelian, being the delooping of
: is-concrete-abelian S¹-concrete
S¹-concrete-abelian = Equiv.from (abelian≃abelian S¹-concrete ℤ
S¹-concrete-abelian (Univalent.iso→path (Structured-objects-is-category _) π₁S¹≅ℤ))
(Abelian→Group-on-abelian (ℤ-ab .snd))
First abelian group cohomology🔗
When is a concrete abelian group, something interesting happens: for any other concrete group the set of pointed maps (i.e. group homomorphisms from to turns out to be equivalent to the set truncation of the type of unpointed maps,
This is a special case of a theorem that relates this set truncation with the set of orbits of the action of the inner automorphism group of on the set of group homomorphisms We do not prove this here, but see (Bezem et al. 2025, theorem 8.10.2). In the special case that is abelian, its inner automorphism group is trivial, and we can avoid quotienting.
In even fancier language, it is also a computation of the first cohomology group of with coefficients in hence we adopt the notation
_,_] : ∀ {ℓ ℓ'} → ConcreteGroup ℓ → ConcreteGroup ℓ' → Type (ℓ ⊔ ℓ')
H¹[= ∥ (⌞ B G ⌟ → ⌞ B H ⌟) ∥₀ H¹[ G , H ]
First, note that there is always a natural map that just forgets the pointing path.
class: ∀ {ℓ ℓ'} (G : ConcreteGroup ℓ) (H : ConcreteGroup ℓ')
→ (B G →∙ B H) → H¹[ G , H ]
(f , _) = inc f class G H
Now assume is abelian; we will show that this map is injective and surjective, so that it is an equivalence of sets.
module _ {ℓ ℓ'}
(G : ConcreteGroup ℓ)
(H : ConcreteGroup ℓ') (H-ab : is-concrete-abelian H)
where
open ConcreteGroup H using (H-Level-B)
Surjectivity is the easy part: since is connected, every map is merely homotopic to a pointed map.
: is-surjective (class G H)
class-surjective = ∥-∥₀-elim (λ _ → hlevel 2) λ f → do
class-surjective .has-is-connected (f (pt G))
ptf ← H ((f , ptf) , refl) inc
For injectivity, we restrict our attention to the case of two pointed maps whose underlying maps are definitionally equal. In other words, we prove that any two pointings of (say yield equal pointed maps.
In order to define our underlying homotopy, we proceed by induction: since is a pointed connected type, it suffices to give a path and to show that every loop respects this identification, in the sense of the following square:
Since our homotopy additionally has to be pointed, we know that we must have This is where the fact that is abelian comes in: the above square has equal opposite sides, so it automatically commutes.
class-injective: ∀ f → (p q : f (pt G) ≡ pt H)
→ Path (B G →∙ B H) (f , p) (f , q)
= Σ-pathp
class-injective f p q (funext E.elim)
(transpose (symP (∙→square'' E.elim-β-point)))
where
: f (pt G) ≡ f (pt G)
α = p ∙ sym q
α
: ∀ (l : pt G ≡ pt G) → Square (ap f l) α α (ap f l)
coh = concrete-abelian→square H H-ab (ap f l) α
coh l
module E = connected∙-elim-set {P = λ g → f g ≡ f g}
(G .has-is-connected) (hlevel 2) α coh
By a quick path induction, we can conclude that class
is an equivalence between sets.
: is-equiv (class G H)
class-is-equiv = injective-surjective→is-equiv! (inj _ _) class-surjective
class-is-equiv where
: ∀ f g → class G H f ≡ class G H g → f ≡ g
inj (f , ptf) (g , ptg) f≡g = ∥-∥-rec
inj (ConcreteGroups-Hom-set G H _ _)
(λ f≡g → J (λ g _ → ∀ ptg → (f , ptf) ≡ (g , ptg))
(class-injective f ptf)
)
f≡g ptg(∥-∥₀-path.to f≡g)
first-concrete-abelian-group-cohomology: (B G →∙ B H) ≃ H¹[ G , H ]
first-concrete-abelian-group-cohomology= class G H , class-is-equiv
Translating this across our equivalence of categories gives a similar statement for abstract groups.
module _ {ℓ}
(G : Group ℓ)
(H : Group ℓ) (H-ab : is-commutative-group H)
where
: (Deloop∙ G →∙ Deloop∙ H) ≃ Hom (Groups ℓ) G H
Deloop-hom-equiv = ff+split-eso→hom-equiv π₁F
Deloop-hom-equiv (λ {G} {H} → π₁F-is-ff {_} {G} {H})
π₁F-is-split-eso.snd .snd
G H
first-abelian-group-cohomology: H¹[ Concrete G , Concrete H ] ≃ Hom (Groups ℓ) G H
=
first-abelian-group-cohomology
first-concrete-abelian-group-cohomology(Concrete G) (Concrete H)
(Equiv.from (abelian≃abelian (Concrete H) H (Concrete≃Abstract.ε H)) H-ab)
e⁻¹ ∙e Deloop-hom-equiv
References
- Bezem, Marc, Ulrik Buchholtz, Pierre Cagne, Bjørn Ian Dundas, and Daniel R. Grayson. 2025. “Symmetry.” https://github.com/UniMath/SymmetryBook.