Classical.Structures.Group.Power¶
Indexed products and powers of groups¶
This is the Classical.Structures.Group.Power module of the Agda Universal Algebra Library.
For an indexed family š¢ : I ā Group α Ļ of groups presented as Ī£-typed structures
over Sig-Group, this module constructs the
indexed direct product āØ
įµš¢, that is, the group on the product
algebra āØ
of Setoid.Algebras.Products, whose carrier is the
function type ā i ā š[ š® i ] with pointwise operations and pointwise equality.
The five group laws transfer coordinatewise by ā§-P-invar of
Setoid.Varieties.Properties (products preserve identities) so no term induction
is repeated here.
This construction generalizes the binary product _Ćįµ_ of
Classical.Structures.Group.Product rather than replacing it.1
The power š¢ ^įµ n is the constant-family product over
I = Fin n, so an element of S ^įµ n is literally a map x : Fin n ā S, and
conditions such as "x is constant on the blocks of a partition of the index set"
are stated by comparing values of x at indices, with no tuple bookkeeping.
Besides the product and the power, the module provides
- pointwise descriptions of the curried operations,
(x ā y) i ā x i ā y iand its companions forεandā»Ā¹;2 - coordinate projections as homomorphisms, by instantiating the generic
⨠-projof Setoid.Homomorphisms.Products.
The underlying equivalence of the product is not redefined here.3
The indexed product of a family of groups¶
GroupFamilyProductš¢ packages the construction for a fixed family:
the product algebra, the transferred satisfaction proof, and the product group.
Each group equation holds in āØ
because it holds in every coordinate;
this is ā§-P-invar applied to the family of satisfaction proofs, one
application per equation of Th-Group.
module GroupFamilyProduct {I : Type ι} (š¢ : I ā Group α Ļ) where private š® : I ā Algebra {š = Sig-Group} α Ļ š® = projā ā š¢ -- Every group equation transfers to the product, coordinatewise. ⨠įµ-⨠: ⨠š® āØįµįµ Th-Group ⨠įµ-⨠eq = ā§-P-invar {p = Th-Group eq .projā} {q = Th-Group eq .projā} š® Ī» i ā š¢ i .projā eq -- The indexed direct product group. ⨠įµ-Group : Group (α ā ι) (Ļ ā ι) ⨠įµ-Group = ⨠š® , ⨠įµ-āØ
The top-level form, for use at call sites.
⨠ᵠ: {I : Type ι} ā (I ā Group α Ļ) ā Group (α ā ι) (Ļ ā ι) ⨠ᵠ= GroupFamilyProduct.⨠įµ-Group
Powers: the constant-family product¶
GroupPowerI š¢ is the product of the constant family at
š¢ (the power š¢ ^ I) together with the power-specific toolkit:
pointwise descriptions of the curried operations and the coordinate projections.
Opening it re-exports the GroupFamilyProduct kit for the constant
family, so āØ
įµ-Group names the power group itself.
module GroupPower (I : Type ι) (š¢ : Group α Ļ) where open GroupFamilyProduct (Ī» (_ : I) ā š¢) public private š® = š¢ .projā š®į“µ = ⨠įµ-Group .projā open Setoid š»[ š® ] using ( _ā_ ; refl )
The curried accessors of Group-Op applied to the power agree, at
each coordinate, with the accessors of the base group applied to the coordinate
values.4
open Group-Op š¢ using ( _ā_ ; ε ; _ā»Ā¹ ) open Group-Op ⨠įµ-Group using () renaming ( _ā_ to _ā_ ; ε to e ; _ā»Ā¹ to inv ) -- The power multiplication is pointwise. ā-pointwise : ā x y i ā (x ā y) i ā x i ā y i ā-pointwise x y i = interp-cong š® ā-Op Ī» { 0F ā refl ; 1F ā refl } -- The power identity is the constant identity tuple. e-pointwise : ā i ā e i ā ε e-pointwise i = interp-cong š® ε-Op Ī» () -- The power inverse is pointwise. inv-pointwise : ā x i ā (inv x) i ā x i ā»Ā¹ inv-pointwise x i = interp-cong š® ā»Ā¹-Op Ī» { 0F ā refl }
Evaluation at a coordinate is a homomorphism from the power onto the base group ā the generic projection of Setoid.Homomorphisms.Products, instantiated at the constant family.
-- The i-th coordinate projection, as a homomorphism. proj-hom : (i : I) ā hom š®į“µ š® proj-hom = ⨠-proj Ī» (_ : I) ā š®
The finite power of a group¶
The power of a group by a natural number is the constant-family product over Fin n.
Since Fin n lives at level zero, the levels of the base group are preserved; in
particular the power of a Group 0ā 0ā is again a Group 0ā 0ā.
infixl 8 _^įµ_ _^įµ_ : Group α Ļ ā ā ā Group α Ļ š¢ ^įµ n = GroupPower.⨠įµ-Group (Fin n) š¢
-
The binary module deliberately keeps the pair carrier
G Ć K, which is the form the FLRP fattening arguments consume, whereas the function-typed carrier here is the form Kurzweil's construction consumes. ↩ -
This bridges the
Fin-tuple Ī·-gap exactly as in the binary module; the curried accessors route arguments through a canonicalpairtuple, andFin-indexed tuples lack Ī· under--cubical-compatible; each bridge is oneinterp-congper use. ↩ -
Following the planned-Cubical-port discipline, the underlying equivalence of the product is not redefined here; it is the pointwise equivalence of
āØ, so the equality locus to substitute on the eventual port is that of Setoid.Algebras.Products alone. ↩ -
They are not definitionally equal, for the same reason as in the binary module: the curried form routes the arguments through a canonical
pairtuple, andFin-indexed tuples lack Ī· under--cubical-compatible; each bridge is oneinterp-cong. ↩