Conjugation actions on internal homs of discrete modules #
Let a group G act on two additive monoids M and N. The additive homomorphisms
M →+ N carry the conjugation action
homAction g φ : m ↦ g • φ (g⁻¹ • m),
which is the action for which evaluation (φ, m) ↦ φ m is equivariant, in the form
homAction g φ (g • m) = g • φ m. This file constructs that action and proves that it is again a
continuous action on a discrete module when M is finite discrete and N is discrete: the set of
group elements fixing a given φ is open, and over a compact G it contains an open normal
subgroup. The internal hom is contravariantly functorial in its source, by precomposition with an
equivariant homomorphism, and covariantly functorial in its target, by postcomposition; Hom(-, N)
is exact on the modules killed by a prime p, for every N: this is the algebra behind the dual
of a short exact sequence of finite 𝔽_p[G]-modules.
Main definitions #
TauCeti.homAction: the conjugation action ofGonM →+ N, with the action lawshomAction_oneandhomAction_muland the additivity lawshomAction_zero,homAction_add,homAction_negandhomAction_sub.TauCeti.InternalHom: the carrierM →+ Nequipped with that action, as aDistribMulActioninstance. ItsTauCeti.InternalHom.ofandTauCeti.InternalHom.toAddMonoidHomtranslate to and fromM →+ N.TauCeti.InternalHom.evalPairing: the evaluation pairing, the additive homomorphismInternalHom G M N →+ (M →+ N)whose value atφandmis the evaluationφ m; its equivariance isTauCeti.InternalHom.evalPairing_equivariant, and that of the opposite pairing(m, φ) ↦ φ misTauCeti.InternalHom.evalPairing_flip_equivariant.TauCeti.InternalHom.precomp: precomposition with an equivariant homomorphismf : M →+[G] M', the equivariant homomorphismInternalHom G M' N →+[G] InternalHom G M N, withTauCeti.InternalHom.evalPairing_precompas its defining equation and the functor lawsprecomp_idandprecomp_comp.TauCeti.InternalHom.postcomp: postcomposition with an equivariant homomorphismf : N →+[G] N', the equivariant homomorphismInternalHom G M N →+[G] InternalHom G M N', withTauCeti.InternalHom.evalPairing_postcompas its defining equation and the functor lawspostcomp_idandpostcomp_comp.TauCeti.InternalHom.restrict: restriction of the acting group to a subgroupU ≤ G, theU-equivariant bijectionInternalHom G M N →+[U] InternalHom U M Nthat leaves the underlying homomorphism unchanged.TauCeti.InternalHom.zmodEquiv: for aZMod n-moduleA, evaluation at1identifiesInternalHom G (ZMod n) AwithAadditively;TauCeti.InternalHom.toAddMonoidHom_apply_eq_smulrecovers a homomorphism from its value at1. For a trivial action ofGonZMod n, evaluation at1is equivariant (TauCeti.InternalHom.zmodEquiv_smul); for trivial actions on bothMandNthe conjugation action onInternalHom G M Nis trivial (TauCeti.InternalHom.smul_eq_self_of_smul_eq_self).
Main results #
TauCeti.homAction_apply_smul: evaluation is equivariant; on the carrier this isTauCeti.InternalHom.evalPairing_equivariant.TauCeti.homAction_eq_self_iff:gfixesφexactly whenφcommutes with the action ofg(TauCeti.InternalHom.smul_eq_self_iffon the carrier); soφis fixed by all ofGexactly when it isG-equivariant (TauCeti.forall_homAction_eq_self_iff, andTauCeti.InternalHom.mem_fixedPoints_iffon the carrier).TauCeti.isOpen_setOfPred_homAction_eq_self: for finiteMand discreteNthe set of group elements fixing a continuousφis open. This is what theContinuousSMul Ginstance onTauCeti.InternalHomrests on; with the discrete topology that carrier has by definition, it is what makes it again a discreteG-module for finite discreteMand discreteN.TauCeti.exists_openNormalSubgroup_homAction_eq_self: over a compact topological group that set contains an open normal subgroup.TauCeti.InternalHom.precomp_injective,TauCeti.InternalHom.exact_precomp,TauCeti.InternalHom.precomp_surjectiveandTauCeti.InternalHom.precomp_surjective_of_baer:Hom(-, N)takes a surjection to an injection, an exact pair with surjective second map to an exact pair, and an injection to a surjection when the target of the injection is killed by a primep, or is killed bynwithNsatisfying Baer's criterion overℤ/nℤ; both are cases ofTauCeti.InternalHom.precomp_surjective_of_forall_exists_comp_eq, precomposition is surjective as soon as every additive homomorphism extends. The internal hom of finite modules is finite, and it is killed by any natural number killing the codomain (TauCeti.InternalHom.nsmul_eq_zero) or the domain (TauCeti.InternalHom.nsmul_eq_zero_of_domain).TauCeti.InternalHom.postcomp_injective,TauCeti.InternalHom.postcomp_bijectiveandTauCeti.InternalHom.postcomp_bijective_of_forall_nsmul_eq_zero:Hom(M, -)takes an injection to an injection and an isomorphism to an isomorphism, and, whenMis killed byn, it takes an injection whose range is then-torsion of its target to an isomorphism.
Implementation notes #
Mathlib already puts the codomain-pointwise action (g • φ) m = g • φ m on M →+ N, as the
instance in Mathlib/Algebra/GroupWithZero/Action/Hom.lean, and that action is not the conjugation
one, so the conjugation action cannot be registered on M →+ N itself: instance search would be
incoherent, and continuous cohomology of M →+ N would silently pick up the pointwise action.
The conjugation action is therefore introduced twice over. It is first the plain function
homAction of g, whose action and additivity laws are the lemmas listed above; this is the
form used by the lemmas about evaluation. It is
assembled from Mathlib's DistribSMul.toAddMonoidHom, which bundles each g • · as an additive
homomorphism, so that its additivity comes from AddMonoidHom.comp. It is then registered as a
genuine DistribMulAction on the wrapper InternalHom G M N, which is the object downstream
cohomology is meant to be applied to. The two actions on M →+ N agree at any g acting trivially
on the source (homAction_eq_smul_of_smul_eq_self).
The group G is a phantom parameter of InternalHom G M N: the type of its single field does not
mention G, so it is formed for bare additive monoids, and Group G and the two
DistribMulActions are hypotheses of the action instances only, as AddCommMonoid N is a
hypothesis of the additive ones. The additive structure is transported from M →+ N along the
of/toAddMonoidHom equivalence, as an AddCommMonoid in general and as an AddCommGroup when
N is one. That equivalence is written inline in the two instances rather than given a name, so
that the only bundled form of the carrier map in the public surface is evalPairing; the
transported structure is meant to be used only through the interface lemmas below
(toAddMonoidHom_zero, toAddMonoidHom_add, toAddMonoidHom_nsmul, of_zero, of_add,
of_nsmul and their group-level counterparts), which hold by rfl on the transported instance.
Two theorems are instead written (rfl) rather than rfl: homAction_apply and
evalPairing_apply. The module system rejects a bare rfl for an exported theorem whose proof
unfolds a definition that is not @[expose]d, and those two unfold homAction and evalPairing,
which nothing here needs to be exposed. The parenthesized form elaborates the same proof as an
ordinary term, without that check.
Continuity in the group variable (continuous_homAction_apply) needs only that φ itself be
continuous, the two actions occurring in g • φ (g⁻¹ • m) being continuous by hypothesis, and
isOpen_setOfPred_homAction_eq_self inherits that hypothesis; the discrete source of the intended
setting enters only where it is discharged, in the ContinuousSMul instance, by
continuous_of_discreteTopology.
Representation.linHom is the same conjugation construction for k-linear maps V →ₗ[k] W of
bundled representations. It is not used as the definition here for two reasons. Its carrier is
V →ₗ[k] W, a type distinct from the M →+ N used for additive cochains, so
routing through it would still need a bespoke definition round-tripping along
AddMonoidHom.toIntLinearMap and LinearMap.toAddMonoidHom; and taking k = ℤ forces
Module ℤ M and Module ℤ N, hence AddCommGroup on both sides, whereas everything below needs
only AddMonoid M and AddMonoid N. In the generality where Representation.linHom is available
the two constructions do agree, transported along AddMonoidHom.toIntLinearMap; that comparison is
not recorded here, because it would pull Mathlib.RepresentationTheory.Basic — and with it the
tensor, matrix and dual stack — into a file the whole continuous-cohomology development imports.
Mathlib puts no topology on M →+ N. Discreteness of the internal hom enters here through the
discreteness of the ambient function space M → N, which is what
isOpen_setOfPred_homAction_eq_self rests on. InternalHom G M N carries the discrete topology by
definition, with no hypothesis on M or N: that is the intended topology in the discrete setting
this file is written for, namely finite discrete M and discrete N, which is also the setting in
which the action is proved continuous below. Those hypotheses are sufficient for that continuity,
not necessary — if G acts trivially on both M and N then it acts trivially on M →+ N, so
the action is continuous for an infinite M too — and it is sufficiency that is established here.
(A trivial action on M alone does not suffice: the stabilizer of φ is then the intersection of
the stabilizers of the values φ m, which for infinitely many m need not be open.) For infinite
M the internal hom in the category of discrete G-modules is the sub-object of homomorphisms
with open stabilizer, which is not InternalHom G M N; nothing here claims otherwise.
The conjugation action of G on the internal hom M →+ N, sending φ to
m ↦ g • φ (g⁻¹ • m). This is the action making evaluation equivariant; see
homAction_apply_smul.
Equations
- TauCeti.homAction g φ = (DistribSMul.toAddMonoidHom N g).comp (φ.comp (DistribSMul.toAddMonoidHom M g⁻¹))
Instances For
The conjugation action is additive in the homomorphism. Of the four laws only homAction_zero
holds for a bare additive-monoid codomain; this one and homAction_neg and homAction_sub all
name the pointwise structure on M →+ N, hence need a commutative codomain.
The conjugation action commutes with negation for an additive commutative codomain group.
The conjugation action commutes with subtraction for an additive commutative codomain group.
Evaluation (φ, m) ↦ φ m is equivariant for the conjugation action on M →+ N. This is the
equivariance that makes the duality cup pairings well typed, and it is what fixes the direction of
the conjugation action.
A group element fixes φ for the conjugation action exactly when φ commutes with its
action. It is deliberately not @[simp]: homAction g φ = φ is the shape in which the openness
and compact-group statements below are phrased, and rewriting it away would take them out of
simp-normal form.
The fixed points of the conjugation action are exactly the G-equivariant homomorphisms.
The conjugation action is functorial for composition of homomorphisms.
At a group element acting trivially on the source, the conjugation action on M →+ N is
Mathlib's codomain-pointwise action.
Each value of the conjugation action is continuous in the group variable, as soon as φ
itself is continuous.
The conjugation action is continuous into the ambient function space M → N, as soon as φ
itself is continuous.
For a finite M and a discrete N the set of group elements fixing a continuous φ is open.
Discreteness enters through the ambient function space M → N; as for the two continuity lemmas
above, the source only has to be discrete where Continuous φ is discharged. This is what the
ContinuousSMul G (InternalHom G M N) instance below rests on, through
continuousSMul_iff_stabilizer_isOpen.
The internal hom of two G-modules: the additive homomorphisms M →+ N carrying the
conjugation action g • φ = homAction g φ. It is a one-field wrapper around M →+ N rather than
M →+ N itself because Mathlib registers the codomain-pointwise action on the latter; this is the
type on which continuous cohomology of the internal hom is to be taken. The group G is a phantom
parameter, recording which action is meant. The type carries the discrete topology unconditionally,
and is the internal hom of discrete G-modules in the setting this file establishes: M finite
discrete and N discrete, which is sufficient for the action to be continuous.
- of :: (
Regard an element of the internal hom as an additive homomorphism, forgetting the action.
- )
Instances For
The internal hom always carries the discrete topology, by definition; see the implementation notes for when that is the intended topology.
Equations
The internal hom out of a subsingleton module is a subsingleton: a homomorphism out of the zero module is zero.
Equations
- One or more equations did not get rendered due to their size.
The evaluation pairing out of the internal hom: the additive homomorphism that
forgets the action, so that evalPairing G φ m is the evaluation φ m. Its equivariance is
evalPairing_equivariant.
Equations
- TauCeti.InternalHom.evalPairing G = { toFun := TauCeti.InternalHom.toAddMonoidHom, map_zero' := ⋯, map_add' := ⋯ }
Instances For
A natural number killing the codomain kills the internal hom.
A natural number killing the domain kills the internal hom.
For a codomain that is an additive commutative group, so is the internal hom; together with the discrete topology below this supplies coefficients for continuous cohomology.
Equations
- One or more equations did not get rendered due to their size.
The conjugation action of G on the internal hom.
Equations
- TauCeti.InternalHom.instSMul = { smul := fun (g : G) (φ : TauCeti.InternalHom G M N) => { toAddMonoidHom := TauCeti.homAction g φ.toAddMonoidHom } }
Equations
- TauCeti.InternalHom.instMulAction = { toSMul := TauCeti.InternalHom.instSMul, mul_smul := ⋯, one_smul := ⋯ }
A single group element fixes an element of the internal hom exactly when the underlying
homomorphism commutes with its action; this is homAction_eq_self_iff on the carrier, and the form
in which a stabilizer membership or an exists_openNormalSubgroup_smul_eq_self hypothesis is
consumed. Like homAction_eq_self_iff it is deliberately not @[simp], since g • φ = φ is the
shape in which those statements are phrased.
For trivial actions on M and N, the conjugation action on InternalHom G M N is
trivial.
The fixed points of the internal hom are the G-equivariant homomorphisms. This is the
degree-zero invariants of the conjugation action, phrased through Mathlib's
MulAction.fixedPoints, which is the invariants object the surrounding development uses. It is
deliberately not @[simp]: Mathlib's MulAction.mem_fixedPoints already rewrites the left-hand
side, so a simp attribute here would be shadowed and the simpNF linter rejects it.
For a finite discrete M and a discrete N over a topological group, the conjugation action
on the internal hom is continuous: this is the statement that InternalHom G M N is again a
discrete G-module.
Equations
- TauCeti.InternalHom.instDistribMulAction = { toMulAction := inferInstance, smul_zero := ⋯, smul_add := ⋯ }
The evaluation pairing is G-equivariant: this is the carrier form of
homAction_apply_smul.
The opposite evaluation pairing (m, φ) ↦ φ m is G-equivariant: evalPairing_equivariant
with its two arguments swapped, in the form a cup product along the opposite pairing takes.
Contravariant functoriality in the source #
Precomposition with an equivariant homomorphism f : M →+[G] M', as an equivariant homomorphism
InternalHom G M' N →+[G] InternalHom G M N: the internal hom is contravariantly functorial in its
source. Its values are characterized by evalPairing_precomp.
Equations
- TauCeti.InternalHom.precomp G f = { toFun := fun (φ : TauCeti.InternalHom G M' N) => { toAddMonoidHom := φ.toAddMonoidHom.comp ↑f }, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Precomposition is compatible with evaluation: (φ ∘ f) m = φ (f m). Not a simp lemma, since
evalPairing_apply already rewrites its left-hand side to toAddMonoidHom_precomp.
Precomposition with a surjection is injective: Hom(-, N) takes surjections to injections.
Precomposition with f is surjective on internal homs as soon as every additive homomorphism
M →+ N is the restriction along f of an additive homomorphism M' →+ N: the extension, with
the conjugation action, is a preimage in the internal hom.
Precomposition with a bijection is bijective: Hom(-, N) takes isomorphisms to isomorphisms.
The inverse is precomposition with the inverse bijection.
Covariant functoriality in the target #
Postcomposition with an equivariant homomorphism f : N →+[G] N', as an equivariant
homomorphism InternalHom G M N →+[G] InternalHom G M N': the internal hom is covariantly
functorial in its target. Its values are characterized by evalPairing_postcomp.
Equations
- TauCeti.InternalHom.postcomp G f = { toFun := fun (φ : TauCeti.InternalHom G M N) => { toAddMonoidHom := (↑f).comp φ.toAddMonoidHom }, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Postcomposition is compatible with evaluation: (f ∘ φ) m = f (φ m). Not a simp lemma, since
evalPairing_apply already rewrites its left-hand side to toAddMonoidHom_postcomp.
Postcomposition with an injection is injective: Hom(M, -) takes injections to injections.
Postcomposition with an injection onto the n-torsion is bijective on the internal homs out
of a module killed by n: if f : N →+[G] N' is injective and every element of N' killed by n
lies in its range, then Hom(M, f) is bijective for every M killed by n, because every
homomorphism out of M takes values in the n-torsion.
Postcomposition with a bijection is bijective: Hom(M, -) takes isomorphisms to isomorphisms.
This is the case n = 0 of postcomp_bijective_of_forall_nsmul_eq_zero.
Restricting the acting group #
Restricting the acting group to a subgroup U ≤ G: the internal hom of M and N as
G-modules, regarded as a U-module through the restricted action, is the internal hom of M and
N as U-modules. The underlying homomorphism does not move (toAddMonoidHom_restrict), the
evaluation pairing is unchanged (evalPairing_restrict) and the map is a bijection
(restrict_bijective). It is recorded as a U-equivariant homomorphism because that is the form in
which the coefficient maps of continuous cohomology consume it.
Equations
- TauCeti.InternalHom.restrict U = { toFun := fun (φ : TauCeti.InternalHom G M N) => { toAddMonoidHom := φ.toAddMonoidHom }, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Restricting the acting group does not change the evaluation pairing.
Precomposition along an exact pair f : M →+[G] M', g : M' →+[G] M'' with g surjective is
exact: a homomorphism on M' killing the image of f factors through g. The groups
M' and M'' need not be commutative.
Precomposition with an injection into a module killed by a prime p is surjective, for any
N: Hom(-, N) is exact on the modules killed by p. This is
AddMonoidHom.exists_comp_eq_of_injective on the internal hom.
Precomposition with an injection into a module killed by n is surjective when the target N
satisfies Baer's criterion over ℤ/nℤ: for such N, Hom(-, N) is exact on the modules killed by
n. This holds for N = ℤ/nℤ with any action when n ≠ 0, by Module.Baer.zmod_self, and is
AddMonoidHom.exists_comp_eq_of_injective_of_baer on the internal hom.
Over a compact topological group, a homomorphism from a finite discrete module to a discrete
module is fixed by an open normal subgroup. This is the form used by the finite-quotient system for
continuous cohomology. It is exists_openNormalSubgroup_smul_eq_self for the discrete G-module
InternalHom G M N, read back on M →+ N.
Homomorphisms out of ZMod n #
An additive homomorphism out of ZMod n is determined by its value at 1, so the internal hom
InternalHom G (ZMod n) A is additively A itself whenever A is a ZMod n-module. The action of
G plays no part in this identification.
A homomorphism out of ZMod n into a ZMod n-module is scalar multiplication by its value at
1: it is ZMod n-linear, and x = x • 1.
Homomorphisms out of ZMod n are elements. For a ZMod n-module A, evaluation at 1
identifies the internal hom InternalHom G (ZMod n) A with A, additively; the inverse sends
a to x ↦ x • a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
For a trivial action on the source ZMod n, evaluation at 1 is G-equivariant for the
conjugation action on InternalHom G (ZMod n) A and any action on A: (g • φ) 1 = g • φ 1,
since g⁻¹ • 1 = 1.