Monoid representations #
This file introduces monoid representations and their characters and defines a few ways to construct representations.
Main definitions #
Implementation notes #
Representations of a monoid G
on a k
-module V
are implemented as
homomorphisms G →* (V →ₗ[k] V)
. We use the abbreviation Representation
for this hom space.
The theorem asAlgebraHom_def
constructs a module over the group k
-algebra of G
(implemented
as MonoidAlgebra k G
) corresponding to a representation. If ρ : Representation k G V
, this
module can be accessed via ρ.asModule
. Conversely, given a MonoidAlgebra k G
-module M
,
M.ofModule
is the associociated representation seen as a homomorphism.
A representation of G
on the k
-module V
is a homomorphism G →* (V →ₗ[k] V)
.
Equations
- Representation k G V = (G →* V →ₗ[k] V)
Instances For
The trivial representation of G
on a k
-module V.
Equations
Instances For
A predicate for representations that fix every element.
- out : ∀ (g : G) (x : V), (ρ g) x = x
Instances
Equations
- ⋯ = ⋯
A k
-linear representation of G
on V
can be thought of as
an algebra map from MonoidAlgebra k G
into the k
-linear endomorphisms of V
.
Equations
- ρ.asAlgebraHom = (MonoidAlgebra.lift k G (Module.End k V)) ρ
Instances For
If ρ : Representation k G V
, then ρ.asModule
is a type synonym for V
,
which we equip with an instance Module (MonoidAlgebra k G) ρ.asModule
.
You should use asModuleEquiv : ρ.asModule ≃+ V
to translate terms.
Equations
- x.asModule = V
Instances For
Equations
- ρ.instAddCommMonoidAsModule = inferInstanceAs (AddCommMonoid V)
Equations
- ρ.instInhabitedAsModule = { default := 0 }
A k
-linear representation of G
on V
can be thought of as
a module over MonoidAlgebra k G
.
Equations
- ρ.asModuleModule = Module.compHom V ρ.asAlgebraHom.toRingHom
Equations
- ρ.instModuleAsModule = inferInstanceAs (Module k V)
The additive equivalence from the Module (MonoidAlgebra k G)
to the original vector space
of the representative.
This is just the identity, but it is helpful for typechecking and keeping track of instances.
Equations
- ρ.asModuleEquiv = AddEquiv.refl ρ.asModule
Instances For
Build a Representation k G M
from a [Module (MonoidAlgebra k G) M]
.
This version is not always what we want, as it relies on an existing [Module k M]
instance, along with a [IsScalarTower k (MonoidAlgebra k G) M]
instance.
We remedy this below in ofModule
(with the tradeoff that the representation is defined
only on a type synonym of the original module.)
Equations
- Representation.ofModule' M = (MonoidAlgebra.lift k G (M →ₗ[k] M)).symm (Algebra.lsmul k k M)
Instances For
Build a Representation
from a [Module (MonoidAlgebra k G) M]
.
Note that the representation is built on restrictScalars k (MonoidAlgebra k G) M
,
rather than on M
itself.
Equations
- Representation.ofModule M = (MonoidAlgebra.lift k G (RestrictScalars k (MonoidAlgebra k G) M →ₗ[k] RestrictScalars k (MonoidAlgebra k G) M)).symm (RestrictScalars.lsmul k (MonoidAlgebra k G) M)
Instances For
ofModule
and asModule
are inverses. #
This requires a little care in both directions: this is a categorical equivalence, not an isomorphism.
See Rep.equivalenceModuleMonoidAlgebra
for the full statement.
Starting with ρ : Representation k G V
, converting to a module and back again
we have a Representation k G (restrictScalars k (MonoidAlgebra k G) ρ.asModule)
.
To compare these, we use the composition of restrictScalarsAddEquiv
and ρ.asModuleEquiv
.
Similarly, starting with Module (MonoidAlgebra k G) M
,
after we convert to a representation and back to a module,
we have Module (MonoidAlgebra k G) (restrictScalars k (MonoidAlgebra k G) M)
.
Equations
- ρ.instAddCommGroupAsModule = I
A G
-action on H
induces a representation G →* End(k[H])
in the natural way.
Equations
- Representation.ofMulAction k G H = { toFun := fun (g : G) => Finsupp.lmapDomain k k fun (x : H) => g • x, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Turns a k
-module A
with a compatible DistribMulAction
of a monoid G
into a
k
-linear G
-representation on A
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Turns a CommGroup
G
with a MulDistribMulAction
of a monoid M
into a
ℤ
-linear M
-representation on Additive G
.
Equations
- Representation.ofMulDistribMulAction M G = (↑(addMonoidEndRingEquivInt (Additive G))).comp ((↑(monoidEndToAdditive G)).comp (MulDistribMulAction.toMonoidEnd M G))
Instances For
Equations
- Representation.instHMulMonoidAlgebraAsModuleFinsuppOfMulAction = inferInstanceAs (HMul (MonoidAlgebra k G) (MonoidAlgebra k G) (MonoidAlgebra k G))
If we equip k[G]
with the k
-linear G
-representation induced by the left regular action of
G
on itself, the resulting object is isomorphic as a k[G]
-module to k[G]
with its natural
k[G]
-module structure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When G
is a group, a k
-linear representation of G
on V
can be thought of as
a group homomorphism from G
into the invertible k
-linear endomorphisms of V
.
Equations
- ρ.asGroupHom = MonoidHom.toHomUnits ρ
Instances For
Given representations of G
on V
and W
, there is a natural representation of G
on their
tensor product V ⊗[k] W
.
Equations
- ρV.tprod ρW = { toFun := fun (g : G) => TensorProduct.map (ρV g) (ρW g), map_one' := ⋯, map_mul' := ⋯ }
Instances For
Given representations of G
on V
and W
, there is a natural representation of G
on the
module V →ₗ[k] W
, where G
acts by conjugation.
Equations
Instances For
The dual of a representation ρ
of G
on a module V
, given by (dual ρ) g f = f ∘ₗ (ρ g⁻¹)
,
where f : Module.Dual k V
.
Equations
- ρV.dual = { toFun := fun (g : G) => { toFun := fun (f : Module.Dual k V) => f ∘ₗ ρV g⁻¹, map_add' := ⋯, map_smul' := ⋯ }, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Given $k$-modules $V, W$, there is a homomorphism $φ : V^* ⊗ W → Hom_k(V, W)$
(implemented by dualTensorHom
in Mathlib.LinearAlgebra.Contraction
).
Given representations of $G$ on $V$ and $W$,there are representations of $G$ on $V^* ⊗ W$ and on
$Hom_k(V, W)$.
This lemma says that $φ$ is $G$-linear.