20 Group Actions — Algebraic Reference
A group action is a way for a group to act on a set — each group element becomes a transformation of the set, and group multiplication corresponds to composition of transformations.
This chapter provides a comprehensive algebraic treatment: the orbit-stabilizer theorem, Burnside’s lemma, the cycle index, and Pólya enumeration, verified across many groups. For conceptual introductions to these ideas, see:
- Symmetry Sketchpad — group actions on 2D points
- Counting Necklaces — Burnside’s lemma in action
- Chord Geometry — group actions on pitch class sets
(ns harmonica-book.group-actions
(:require
[scicloj.harmonica :as hm]
[scicloj.kindly.v4.kind :as kind]))Actions of cyclic groups
The cyclic group \(C_n\) acts on \(\{0, \ldots, n{-}1\}\) by rotation: \(g \cdot x = (x + g) \bmod n\).
(defn rotation-action [n]
(fn [g x] (mod (+ x g) n)))The orbit of any point under \(C_n\) is the entire set (the action is transitive).
(let [G (hm/cyclic-group 5)
act (rotation-action 5)]
(hm/orbit G act 0))#{0 1 4 3 2}There is exactly one orbit.
(let [G (hm/cyclic-group 5)
act (rotation-action 5)]
(count (hm/orbits G act (range 5))))
ImportantNo implementation of method: :elements of protocol: #’scicloj.harmonica.protocols/FiniteGroup found for class: scicloj.harmonica.group.cyclic.CyclicGroup
clojure.core/eval core.clj: 3232
...
harmonica-book.group-actions/eval124561 REPL Input:
scicloj.harmonica.action/orbits action.clj: 35
scicloj.harmonica.action/orbit action.clj: 24
scicloj.harmonica.protocols/eval102277/fn/G protocols.clj: 14
clojure.core/-cache-protocol-fn core_deftype.clj: 585
java.lang.IllegalArgumentException: No implementation of method: :elements of protocol: #'scicloj.harmonica.protocols/FiniteGroup found for class: scicloj.harmonica.group.cyclic.CyclicGroup