/-
Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison

! This file was ported from Lean 3 source module representation_theory.maschke
! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Algebra.MonoidAlgebra.Basic
import Mathbin.Algebra.CharP.Invertible
import Mathbin.LinearAlgebra.Basis

/-!
# Maschke's theorem

We prove **Maschke's theorem** for finite groups,
in the formulation that every submodule of a `k[G]` module has a complement,
when `k` is a field with `invertible (fintype.card G : k)`.

We do the core computation in greater generality.
For any `[comm_ring k]` in which  `[invertible (fintype.card G : k)]`,
and a `k[G]`-linear map `i : V → W` which admits a `k`-linear retraction `π`,
we produce a `k[G]`-linear retraction by
taking the average over `G` of the conjugates of `π`.

## Implementation Notes
* These results assume `invertible (fintype.card G : k)` which is equivalent to the more
familiar `¬(ring_char k ∣ fintype.card G)`. It is possible to convert between them using
`invertible_of_ring_char_not_dvd` and `not_ring_char_dvd_of_invertible`.

## Future work
It's not so far to give the usual statement, that every finite dimensional representation
of a finite group is semisimple (i.e. a direct sum of irreducibles).
-/

universe u

noncomputable section

open Module

open MonoidAlgebra

open BigOperators

section

-- At first we work with any `[comm_ring k]`, and add the assumption that
-- `[invertible (fintype.card G : k)]` when it is required.
variable {k : Type u} [CommRing k] {G : Type u} [Group G]

variable {V : Type u} [AddCommGroup V] [Module k V] [Module (MonoidAlgebra k G) V]

variable [IsScalarTower k (MonoidAlgebra k G) V]

variable {W : Type u} [AddCommGroup W] [Module k W] [Module (MonoidAlgebra k G) W]

variable [IsScalarTower k (MonoidAlgebra k G) W]

/-!
We now do the key calculation in Maschke's theorem.

Given `V → W`, an inclusion of `k[G]` modules,,
assume we have some retraction `π` (i.e. `∀ v, π (i v) = v`),
just as a `k`-linear map.
(When `k` is a field, this will be available cheaply, by choosing a basis.)

We now construct a retraction of the inclusion as a `k[G]`-linear map,
by the formula
$$ \frac{1}{|G|} \sum_{g \in G} g⁻¹ • π(g • -). $$
-/

namespace LinearMap

variable (π : W →ₗ[k] V)

include π

/- warning: linear_map.conjugate -> LinearMap.conjugate is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] {G : Type.{u}} [_inst_2 : Group.{u} G] {V : Type.{u}} [_inst_3 : AddCommGroup.{u} V] [_inst_4 : Module.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_5 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_5)))) (SMulZeroClass.toHasSmul.{u, u} k V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} k V (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_4))))] {W : Type.{u}} [_inst_7 : AddCommGroup.{u} W] [_inst_8 : Module.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_9 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_9)))) (SMulZeroClass.toHasSmul.{u, u} k W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} k W (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_8))))], (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) -> G -> (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4)
but is expected to have type
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] {G : Type.{u}} [_inst_2 : Group.{u} G] {V : Type.{v}} [_inst_3 : AddCommGroup.{v} V] [_inst_4 : Module.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_5 : Module.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, v} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_5)))) (SMulZeroClass.toSMul.{u, v} k V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} k V (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_4))))] {W : Type.{w}} [_inst_7 : AddCommGroup.{w} W] [_inst_8 : Module.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_9 : Module.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, w} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_9)))) (SMulZeroClass.toSMul.{u, w} k W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} k W (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_8))))], (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) -> G -> (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4)
Case conversion may be inaccurate. Consider using '#align linear_map.conjugate LinearMap.conjugateₓ'. -/
/-- We define the conjugate of `π` by `g`, as a `k`-linear map.
-/
def conjugate (g : G) : W →ₗ[k] V :=
  ((GroupSmul.linearMap k V g⁻¹).comp π).comp (GroupSmul.linearMap k W g)
#align linear_map.conjugate LinearMap.conjugate

variable (i : V →ₗ[MonoidAlgebra k G] W) (h : ∀ v : V, π (i v) = v)

section

include h

/- warning: linear_map.conjugate_i -> LinearMap.conjugate_i is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] {G : Type.{u}} [_inst_2 : Group.{u} G] {V : Type.{u}} [_inst_3 : AddCommGroup.{u} V] [_inst_4 : Module.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_5 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_5)))) (SMulZeroClass.toHasSmul.{u, u} k V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} k V (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_4))))] {W : Type.{u}} [_inst_7 : AddCommGroup.{u} W] [_inst_8 : Module.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_9 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_9)))) (SMulZeroClass.toHasSmul.{u, u} k W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} k W (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_8))))] (π : LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) (i : LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9), (forall (v : V), Eq.{succ u} V (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) (fun (_x : LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) => W -> V) (LinearMap.hasCoeToFun.{u, u, u, u} k k W V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4 (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))))) π (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) (fun (_x : LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) => V -> W) (LinearMap.hasCoeToFun.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v) -> (forall (g : G) (v : V), Eq.{succ u} V (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) (fun (_x : LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) => W -> V) (LinearMap.hasCoeToFun.{u, u, u, u} k k W V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4 (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))))) (LinearMap.conjugate.{u} k _inst_1 G _inst_2 V _inst_3 _inst_4 _inst_5 _inst_6 W _inst_7 _inst_8 _inst_9 _inst_10 π g) (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) (fun (_x : LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) => V -> W) (LinearMap.hasCoeToFun.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v)
but is expected to have type
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] {G : Type.{u}} [_inst_2 : Group.{u} G] {V : Type.{v}} [_inst_3 : AddCommGroup.{v} V] [_inst_4 : Module.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_5 : Module.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, v} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_5)))) (SMulZeroClass.toSMul.{u, v} k V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} k V (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_4))))] {W : Type.{w}} [_inst_7 : AddCommGroup.{w} W] [_inst_8 : Module.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_9 : Module.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, w} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_9)))) (SMulZeroClass.toSMul.{u, w} k W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} k W (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_8))))] (π : LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) (i : LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9), (forall (v : V), Eq.{succ v} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (a : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) a) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) (FunLike.coe.{max (succ v) (succ w), succ w, succ v} (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) W (fun (_x : W) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) _x) (LinearMap.instFunLikeLinearMap.{u, u, w, v} k k W V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4 (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))) π (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) _x) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v) -> (forall (g : G) (v : V), Eq.{succ v} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (a : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) a) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) (FunLike.coe.{max (succ v) (succ w), succ w, succ v} (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) W (fun (_x : W) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) _x) (LinearMap.instFunLikeLinearMap.{u, u, w, v} k k W V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4 (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))) (LinearMap.conjugate.{u, v, w} k _inst_1 G _inst_2 V _inst_3 _inst_4 _inst_5 _inst_6 W _inst_7 _inst_8 _inst_9 _inst_10 π g) (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) _x) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v)
Case conversion may be inaccurate. Consider using '#align linear_map.conjugate_i LinearMap.conjugate_iₓ'. -/
theorem conjugate_i (g : G) (v : V) : (conjugate π g) (i v) = v :=
  by
  dsimp [conjugate]
  simp only [← i.map_smul, h, ← mul_smul, single_mul_single, mul_one, mul_left_inv]
  change (1 : MonoidAlgebra k G) • v = v
  simp
#align linear_map.conjugate_i LinearMap.conjugate_i

end

variable (G) [Fintype G]

/- warning: linear_map.sum_of_conjugates -> LinearMap.sumOfConjugates is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{u}} [_inst_3 : AddCommGroup.{u} V] [_inst_4 : Module.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_5 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_5)))) (SMulZeroClass.toHasSmul.{u, u} k V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} k V (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_4))))] {W : Type.{u}} [_inst_7 : AddCommGroup.{u} W] [_inst_8 : Module.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_9 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_9)))) (SMulZeroClass.toHasSmul.{u, u} k W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} k W (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_8))))], (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) -> (forall [_inst_11 : Fintype.{u} G], LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4)
but is expected to have type
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{v}} [_inst_3 : AddCommGroup.{v} V] [_inst_4 : Module.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_5 : Module.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, v} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_5)))) (SMulZeroClass.toSMul.{u, v} k V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} k V (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_4))))] {W : Type.{w}} [_inst_7 : AddCommGroup.{w} W] [_inst_8 : Module.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_9 : Module.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, w} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_9)))) (SMulZeroClass.toSMul.{u, w} k W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} k W (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_8))))], (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) -> (forall [_inst_11 : Fintype.{u} G], LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4)
Case conversion may be inaccurate. Consider using '#align linear_map.sum_of_conjugates LinearMap.sumOfConjugatesₓ'. -/
/-- The sum of the conjugates of `π` by each element `g : G`, as a `k`-linear map.

(We postpone dividing by the size of the group as long as possible.)
-/
def sumOfConjugates : W →ₗ[k] V :=
  ∑ g : G, π.conjugate g
#align linear_map.sum_of_conjugates LinearMap.sumOfConjugates

/- warning: linear_map.sum_of_conjugates_equivariant -> LinearMap.sumOfConjugatesEquivariant is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{u}} [_inst_3 : AddCommGroup.{u} V] [_inst_4 : Module.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_5 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_5)))) (SMulZeroClass.toHasSmul.{u, u} k V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} k V (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_4))))] {W : Type.{u}} [_inst_7 : AddCommGroup.{u} W] [_inst_8 : Module.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_9 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_9)))) (SMulZeroClass.toHasSmul.{u, u} k W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} k W (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_8))))], (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) -> (forall [_inst_11 : Fintype.{u} G], LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_9 _inst_5)
but is expected to have type
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{v}} [_inst_3 : AddCommGroup.{v} V] [_inst_4 : Module.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_5 : Module.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, v} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_5)))) (SMulZeroClass.toSMul.{u, v} k V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} k V (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_4))))] {W : Type.{w}} [_inst_7 : AddCommGroup.{w} W] [_inst_8 : Module.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_9 : Module.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, w} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_9)))) (SMulZeroClass.toSMul.{u, w} k W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} k W (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_8))))], (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) -> (forall [_inst_11 : Fintype.{u} G], LinearMap.{u, u, w, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_9 _inst_5)
Case conversion may be inaccurate. Consider using '#align linear_map.sum_of_conjugates_equivariant LinearMap.sumOfConjugatesEquivariantₓ'. -/
/-- In fact, the sum over `g : G` of the conjugate of `π` by `g` is a `k[G]`-linear map.
-/
def sumOfConjugatesEquivariant : W →ₗ[MonoidAlgebra k G] V :=
  MonoidAlgebra.equivariantOfLinearOfComm (π.sumOfConjugates G) fun g v =>
    by
    simp only [sum_of_conjugates,
      LinearMap.sum_apply,-- We have a `module (monoid_algebra k G)` instance but are working with `finsupp`s,
        -- so help the elaborator unfold everything correctly.
        @Finset.smul_sum
        (MonoidAlgebra k G)]
    dsimp [conjugate]
    conv_lhs =>
      rw [← Finset.univ_map_embedding (mulRightEmbedding g⁻¹)]
      simp only [mulRightEmbedding]
    simp only [← mul_smul, single_mul_single, mul_inv_rev, mul_one, Function.Embedding.coeFn_mk,
      Finset.sum_map, inv_inv, inv_mul_cancel_right]
#align linear_map.sum_of_conjugates_equivariant LinearMap.sumOfConjugatesEquivariant

section

variable [inv : Invertible (Fintype.card G : k)]

include inv

/- warning: linear_map.equivariant_projection -> LinearMap.equivariantProjection is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{u}} [_inst_3 : AddCommGroup.{u} V] [_inst_4 : Module.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_5 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_5)))) (SMulZeroClass.toHasSmul.{u, u} k V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} k V (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_4))))] {W : Type.{u}} [_inst_7 : AddCommGroup.{u} W] [_inst_8 : Module.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_9 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_9)))) (SMulZeroClass.toHasSmul.{u, u} k W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} k W (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_8))))], (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) -> (forall [_inst_11 : Fintype.{u} G] [inv : Invertible.{u} k (Distrib.toHasMul.{u} k (Ring.toDistrib.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoidWithOne.toOne.{u} k (AddGroupWithOne.toAddMonoidWithOne.{u} k (AddCommGroupWithOne.toAddGroupWithOne.{u} k (Ring.toAddCommGroupWithOne.{u} k (CommRing.toRing.{u} k _inst_1))))) ((fun (a : Type) (b : Type.{u}) [self : HasLiftT.{1, succ u} a b] => self.0) Nat k (HasLiftT.mk.{1, succ u} Nat k (CoeTCₓ.coe.{1, succ u} Nat k (Nat.castCoe.{u} k (AddMonoidWithOne.toNatCast.{u} k (AddGroupWithOne.toAddMonoidWithOne.{u} k (AddCommGroupWithOne.toAddGroupWithOne.{u} k (Ring.toAddCommGroupWithOne.{u} k (CommRing.toRing.{u} k _inst_1)))))))) (Fintype.card.{u} G _inst_11))], LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_9 _inst_5)
but is expected to have type
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{v}} [_inst_3 : AddCommGroup.{v} V] [_inst_4 : Module.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_5 : Module.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, v} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_5)))) (SMulZeroClass.toSMul.{u, v} k V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} k V (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_4))))] {W : Type.{w}} [_inst_7 : AddCommGroup.{w} W] [_inst_8 : Module.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_9 : Module.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, w} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_9)))) (SMulZeroClass.toSMul.{u, w} k W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} k W (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_8))))], (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) -> (forall [_inst_11 : Fintype.{u} G] [inv : Invertible.{u} k (NonUnitalNonAssocRing.toMul.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) (NonAssocRing.toOne.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))) (Nat.cast.{u} k (NonAssocRing.toNatCast.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))) (Fintype.card.{u} G _inst_11))], LinearMap.{u, u, w, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_9 _inst_5)
Case conversion may be inaccurate. Consider using '#align linear_map.equivariant_projection LinearMap.equivariantProjectionₓ'. -/
/-- We construct our `k[G]`-linear retraction of `i` as
$$ \frac{1}{|G|} \sum_{g \in G} g⁻¹ • π(g • -). $$
-/
def equivariantProjection : W →ₗ[MonoidAlgebra k G] V :=
  ⅟ (Fintype.card G : k) • π.sumOfConjugatesEquivariant G
#align linear_map.equivariant_projection LinearMap.equivariantProjection

include h

/- warning: linear_map.equivariant_projection_condition -> LinearMap.equivariantProjection_condition is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{u}} [_inst_3 : AddCommGroup.{u} V] [_inst_4 : Module.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_5 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_5)))) (SMulZeroClass.toHasSmul.{u, u} k V (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (SMulWithZero.toSmulZeroClass.{u, u} k V (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (MulActionWithZero.toSMulWithZero.{u, u} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} V (AddMonoid.toAddZeroClass.{u} V (AddCommMonoid.toAddMonoid.{u} V (AddCommGroup.toAddCommMonoid.{u} V _inst_3)))) (Module.toMulActionWithZero.{u, u} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_4))))] {W : Type.{u}} [_inst_7 : AddCommGroup.{u} W] [_inst_8 : Module.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_9 : Module.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (SMulZeroClass.toHasSmul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoid.toAddZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddCommMonoid.toAddMonoid.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.addCommMonoid.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MonoidAlgebra.smulZeroClass.{u, u, u} k G k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (SMulWithZero.toSmulZeroClass.{u, u} k k (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toHasZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (MulZeroClass.toSMulWithZero.{u} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))))))) (SMulZeroClass.toHasSmul.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MulZeroClass.toHasZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MulZeroOneClass.toMulZeroClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_9)))) (SMulZeroClass.toHasSmul.{u, u} k W (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (SMulWithZero.toSmulZeroClass.{u, u} k W (MulZeroClass.toHasZero.{u} k (MulZeroOneClass.toMulZeroClass.{u} k (MonoidWithZero.toMulZeroOneClass.{u} k (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (MulActionWithZero.toSMulWithZero.{u, u} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (AddZeroClass.toHasZero.{u} W (AddMonoid.toAddZeroClass.{u} W (AddCommMonoid.toAddMonoid.{u} W (AddCommGroup.toAddCommMonoid.{u} W _inst_7)))) (Module.toMulActionWithZero.{u, u} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_8))))] (π : LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) (i : LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9), (forall (v : V), Eq.{succ u} V (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) (fun (_x : LinearMap.{u, u, u, u} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4) => W -> V) (LinearMap.hasCoeToFun.{u, u, u, u} k k W V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_8 _inst_4 (RingHom.id.{u} k (Semiring.toNonAssocSemiring.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))))) π (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) (fun (_x : LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) => V -> W) (LinearMap.hasCoeToFun.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v) -> (forall [_inst_11 : Fintype.{u} G] [inv : Invertible.{u} k (Distrib.toHasMul.{u} k (Ring.toDistrib.{u} k (CommRing.toRing.{u} k _inst_1))) (AddMonoidWithOne.toOne.{u} k (AddGroupWithOne.toAddMonoidWithOne.{u} k (AddCommGroupWithOne.toAddGroupWithOne.{u} k (Ring.toAddCommGroupWithOne.{u} k (CommRing.toRing.{u} k _inst_1))))) ((fun (a : Type) (b : Type.{u}) [self : HasLiftT.{1, succ u} a b] => self.0) Nat k (HasLiftT.mk.{1, succ u} Nat k (CoeTCₓ.coe.{1, succ u} Nat k (Nat.castCoe.{u} k (AddMonoidWithOne.toNatCast.{u} k (AddGroupWithOne.toAddMonoidWithOne.{u} k (AddCommGroupWithOne.toAddGroupWithOne.{u} k (Ring.toAddCommGroupWithOne.{u} k (CommRing.toRing.{u} k _inst_1)))))))) (Fintype.card.{u} G _inst_11))] (v : V), Eq.{succ u} V (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_9 _inst_5) (fun (_x : LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) W V (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_9 _inst_5) => W -> V) (LinearMap.hasCoeToFun.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) _inst_9 _inst_5 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) (LinearMap.equivariantProjection.{u} k _inst_1 G _inst_2 V _inst_3 _inst_4 _inst_5 _inst_6 W _inst_7 _inst_8 _inst_9 _inst_10 π _inst_11 inv) (coeFn.{succ u, succ u} (LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) (fun (_x : LinearMap.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9) => V -> W) (LinearMap.hasCoeToFun.{u, u, u, u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{u} V _inst_3) (AddCommGroup.toAddCommMonoid.{u} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toNonAssocSemiring.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v)
but is expected to have type
  forall {k : Type.{u}} [_inst_1 : CommRing.{u} k] (G : Type.{u}) [_inst_2 : Group.{u} G] {V : Type.{v}} [_inst_3 : AddCommGroup.{v} V] [_inst_4 : Module.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_5 : Module.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3)] [_inst_6 : IsScalarTower.{u, u, v} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_5)))) (SMulZeroClass.toSMul.{u, v} k V (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (SMulWithZero.toSMulZeroClass.{u, v} k V (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (MulActionWithZero.toSMulWithZero.{u, v} k V (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{v} V (SubNegZeroMonoid.toNegZeroClass.{v} V (SubtractionMonoid.toSubNegZeroMonoid.{v} V (SubtractionCommMonoid.toSubtractionMonoid.{v} V (AddCommGroup.toDivisionAddCommMonoid.{v} V _inst_3))))) (Module.toMulActionWithZero.{u, v} k V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_4))))] {W : Type.{w}} [_inst_7 : AddCommGroup.{w} W] [_inst_8 : Module.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_9 : Module.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7)] [_inst_10 : IsScalarTower.{u, u, w} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Algebra.toSMul.{u, u} k (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (CommRing.toCommSemiring.{u} k _inst_1) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.algebra.{u, u, u} k G k (CommRing.toCommSemiring.{u} k _inst_1) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Algebra.id.{u} k (CommRing.toCommSemiring.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (SMulZeroClass.toSMul.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidWithZero.toZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (Semiring.toMonoidWithZero.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_9)))) (SMulZeroClass.toSMul.{u, w} k W (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (SMulWithZero.toSMulZeroClass.{u, w} k W (CommMonoidWithZero.toZero.{u} k (CommSemiring.toCommMonoidWithZero.{u} k (CommRing.toCommSemiring.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (MulActionWithZero.toSMulWithZero.{u, w} k W (Semiring.toMonoidWithZero.{u} k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (NegZeroClass.toZero.{w} W (SubNegZeroMonoid.toNegZeroClass.{w} W (SubtractionMonoid.toSubNegZeroMonoid.{w} W (SubtractionCommMonoid.toSubtractionMonoid.{w} W (AddCommGroup.toDivisionAddCommMonoid.{w} W _inst_7))))) (Module.toMulActionWithZero.{u, w} k W (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_8))))] (π : LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) (i : LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9), (forall (v : V), Eq.{succ v} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (a : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) a) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) (FunLike.coe.{max (succ v) (succ w), succ w, succ v} (LinearMap.{u, u, w, v} k k (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4) W (fun (_x : W) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) _x) (LinearMap.instFunLikeLinearMap.{u, u, w, v} k k W V (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_8 _inst_4 (RingHom.id.{u} k (NonAssocRing.toNonAssocSemiring.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))))) π (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) _x) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v) -> (forall [_inst_11 : Fintype.{u} G] [inv : Invertible.{u} k (NonUnitalNonAssocRing.toMul.{u} k (NonAssocRing.toNonUnitalNonAssocRing.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1)))) (NonAssocRing.toOne.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))) (Nat.cast.{u} k (NonAssocRing.toNatCast.{u} k (Ring.toNonAssocRing.{u} k (CommRing.toRing.{u} k _inst_1))) (Fintype.card.{u} G _inst_11))] (v : V), Eq.{succ v} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (a : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) a) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) (FunLike.coe.{max (succ v) (succ w), succ w, succ v} (LinearMap.{u, u, w, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) W V (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_9 _inst_5) W (fun (_x : W) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : W) => V) _x) (LinearMap.instFunLikeLinearMap.{u, u, w, v} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) W V (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) _inst_9 _inst_5 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) (LinearMap.equivariantProjection.{u, v, w} k _inst_1 G _inst_2 V _inst_3 _inst_4 _inst_5 _inst_6 W _inst_7 _inst_8 _inst_9 _inst_10 π _inst_11 inv) (FunLike.coe.{max (succ v) (succ w), succ v, succ w} (LinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))))) V W (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => W) _x) (LinearMap.instFunLikeLinearMap.{u, u, v, w} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) V W (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (MonoidAlgebra.semiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2))) (AddCommGroup.toAddCommMonoid.{v} V _inst_3) (AddCommGroup.toAddCommMonoid.{w} W _inst_7) _inst_5 _inst_9 (RingHom.id.{u} (MonoidAlgebra.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1))) (MonoidAlgebra.nonAssocSemiring.{u, u} k G (Ring.toSemiring.{u} k (CommRing.toRing.{u} k _inst_1)) (Monoid.toMulOneClass.{u} G (DivInvMonoid.toMonoid.{u} G (Group.toDivInvMonoid.{u} G _inst_2)))))) i v)) v)
Case conversion may be inaccurate. Consider using '#align linear_map.equivariant_projection_condition LinearMap.equivariantProjection_conditionₓ'. -/
theorem equivariantProjection_condition (v : V) : (π.equivariantProjection G) (i v) = v :=
  by
  rw [equivariant_projection, smul_apply, sum_of_conjugates_equivariant,
    equivariant_of_linear_of_comm_apply, sum_of_conjugates]
  rw [LinearMap.sum_apply]
  simp only [conjugate_i π i h]
  rw [Finset.sum_const, Finset.card_univ, nsmul_eq_smul_cast k, ← mul_smul,
    Invertible.invOf_mul_self, one_smul]
#align linear_map.equivariant_projection_condition LinearMap.equivariantProjection_condition

end

end LinearMap

end

namespace CharZero

variable {k : Type u} [Field k] {G : Type u} [Fintype G] [Group G] [CharZero k]

instance : Invertible (Fintype.card G : k) :=
  invertibleOfRingCharNotDvd (by simp [Fintype.card_eq_zero_iff])

end CharZero

namespace MonoidAlgebra

-- Now we work over a `[field k]`.
variable {k : Type u} [Field k] {G : Type u} [Fintype G] [Invertible (Fintype.card G : k)]

variable [Group G]

variable {V : Type u} [AddCommGroup V] [Module k V] [Module (MonoidAlgebra k G) V]

variable [IsScalarTower k (MonoidAlgebra k G) V]

variable {W : Type u} [AddCommGroup W] [Module k W] [Module (MonoidAlgebra k G) W]

variable [IsScalarTower k (MonoidAlgebra k G) W]

/- warning: monoid_algebra.exists_left_inverse_of_injective -> MonoidAlgebra.exists_leftInverse_of_injective is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u1}} [_inst_1 : Field.{u1} k] {G : Type.{u1}} [_inst_2 : Fintype.{u1} G] [_inst_3 : Invertible.{u1} k (Distrib.toHasMul.{u1} k (Ring.toDistrib.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddMonoidWithOne.toOne.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat k (HasLiftT.mk.{1, succ u1} Nat k (CoeTCₓ.coe.{1, succ u1} Nat k (Nat.castCoe.{u1} k (AddMonoidWithOne.toNatCast.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))))) (Fintype.card.{u1} G _inst_2))] [_inst_4 : Group.{u1} G] {V : Type.{u1}} [_inst_5 : AddCommGroup.{u1} V] [_inst_6 : Module.{u1, u1} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_7 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_8 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (SMulZeroClass.toHasSmul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.addCommMonoid.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MonoidAlgebra.smulZeroClass.{u1, u1, u1} k G k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (SMulWithZero.toSmulZeroClass.{u1, u1} k k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toSMulWithZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))))))))) (SMulZeroClass.toHasSmul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (SMulWithZero.toSmulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MulZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MulZeroOneClass.toMulZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))) (SMulZeroClass.toHasSmul.{u1, u1} k V (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (SMulWithZero.toSmulZeroClass.{u1, u1} k V (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (MulActionWithZero.toSMulWithZero.{u1, u1} k V (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (Module.toMulActionWithZero.{u1, u1} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_6))))] {W : Type.{u1}} [_inst_9 : AddCommGroup.{u1} W] [_inst_10 : Module.{u1, u1} k W (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)] [_inst_11 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) W (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)] [_inst_12 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) W (SMulZeroClass.toHasSmul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.addCommMonoid.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MonoidAlgebra.smulZeroClass.{u1, u1, u1} k G k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (SMulWithZero.toSmulZeroClass.{u1, u1} k k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toSMulWithZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))))))))) (SMulZeroClass.toHasSmul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) W (AddZeroClass.toHasZero.{u1} W (AddMonoid.toAddZeroClass.{u1} W (AddCommMonoid.toAddMonoid.{u1} W (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)))) (SMulWithZero.toSmulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) W (MulZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MulZeroOneClass.toMulZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))))) (AddZeroClass.toHasZero.{u1} W (AddMonoid.toAddZeroClass.{u1} W (AddCommMonoid.toAddMonoid.{u1} W (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) W (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (AddZeroClass.toHasZero.{u1} W (AddMonoid.toAddZeroClass.{u1} W (AddCommMonoid.toAddMonoid.{u1} W (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) W (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_11)))) (SMulZeroClass.toHasSmul.{u1, u1} k W (AddZeroClass.toHasZero.{u1} W (AddMonoid.toAddZeroClass.{u1} W (AddCommMonoid.toAddMonoid.{u1} W (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)))) (SMulWithZero.toSmulZeroClass.{u1, u1} k W (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (AddZeroClass.toHasZero.{u1} W (AddMonoid.toAddZeroClass.{u1} W (AddCommMonoid.toAddMonoid.{u1} W (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)))) (MulActionWithZero.toSMulWithZero.{u1, u1} k W (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} W (AddMonoid.toAddZeroClass.{u1} W (AddCommMonoid.toAddMonoid.{u1} W (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)))) (Module.toMulActionWithZero.{u1, u1} k W (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_10))))] (f : LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) V W (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11), (Eq.{succ u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (LinearMap.ker.{u1, u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V W (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11 (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) V W (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11) (LinearMap.semilinearMapClass.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V W (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11 (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))))) f) (Bot.bot.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.hasBot.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))) -> (Exists.{succ u1} (LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) W V (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_11 _inst_7) (fun (g : LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) W V (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_11 _inst_7) => Eq.{succ u1} (LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) V V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7 _inst_7) (LinearMap.comp.{u1, u1, u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V W V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7 _inst_11 _inst_7 (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (RingHomCompTriple.right_ids.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toNonAssocSemiring.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))))) g f) (LinearMap.id.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))
but is expected to have type
  forall {k : Type.{u1}} [_inst_1 : Field.{u1} k] {G : Type.{u1}} [_inst_2 : Fintype.{u1} G] [_inst_3 : Invertible.{u1} k (NonUnitalNonAssocRing.toMul.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))) (NonAssocRing.toOne.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Nat.cast.{u1} k (NonAssocRing.toNatCast.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Fintype.card.{u1} G _inst_2))] [_inst_4 : Group.{u1} G] {V : Type.{u1}} [_inst_5 : AddCommGroup.{u1} V] [_inst_6 : Module.{u1, u1} k V (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_7 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_8 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (Algebra.toSMul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.algebra.{u1, u1, u1} k G k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Algebra.id.{u1} k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (SMulZeroClass.toSMul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (SMulWithZero.toSMulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidWithZero.toZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))) (SMulZeroClass.toSMul.{u1, u1} k V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (SMulWithZero.toSMulZeroClass.{u1, u1} k V (CommMonoidWithZero.toZero.{u1} k (CommGroupWithZero.toCommMonoidWithZero.{u1} k (Semifield.toCommGroupWithZero.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (MulActionWithZero.toSMulWithZero.{u1, u1} k V (Semiring.toMonoidWithZero.{u1} k (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (Module.toMulActionWithZero.{u1, u1} k V (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_6))))] {W : Type.{u1}} [_inst_9 : AddCommGroup.{u1} W] [_inst_10 : Module.{u1, u1} k W (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)] [_inst_11 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) W (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9)] [_inst_12 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) W (Algebra.toSMul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.algebra.{u1, u1, u1} k G k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Algebra.id.{u1} k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (SMulZeroClass.toSMul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) W (NegZeroClass.toZero.{u1} W (SubNegZeroMonoid.toNegZeroClass.{u1} W (SubtractionMonoid.toSubNegZeroMonoid.{u1} W (SubtractionCommMonoid.toSubtractionMonoid.{u1} W (AddCommGroup.toDivisionAddCommMonoid.{u1} W _inst_9))))) (SMulWithZero.toSMulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) W (MonoidWithZero.toZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (NegZeroClass.toZero.{u1} W (SubNegZeroMonoid.toNegZeroClass.{u1} W (SubtractionMonoid.toSubNegZeroMonoid.{u1} W (SubtractionCommMonoid.toSubtractionMonoid.{u1} W (AddCommGroup.toDivisionAddCommMonoid.{u1} W _inst_9))))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) W (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (NegZeroClass.toZero.{u1} W (SubNegZeroMonoid.toNegZeroClass.{u1} W (SubtractionMonoid.toSubNegZeroMonoid.{u1} W (SubtractionCommMonoid.toSubtractionMonoid.{u1} W (AddCommGroup.toDivisionAddCommMonoid.{u1} W _inst_9))))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) W (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_11)))) (SMulZeroClass.toSMul.{u1, u1} k W (NegZeroClass.toZero.{u1} W (SubNegZeroMonoid.toNegZeroClass.{u1} W (SubtractionMonoid.toSubNegZeroMonoid.{u1} W (SubtractionCommMonoid.toSubtractionMonoid.{u1} W (AddCommGroup.toDivisionAddCommMonoid.{u1} W _inst_9))))) (SMulWithZero.toSMulZeroClass.{u1, u1} k W (CommMonoidWithZero.toZero.{u1} k (CommGroupWithZero.toCommMonoidWithZero.{u1} k (Semifield.toCommGroupWithZero.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} W (SubNegZeroMonoid.toNegZeroClass.{u1} W (SubtractionMonoid.toSubNegZeroMonoid.{u1} W (SubtractionCommMonoid.toSubtractionMonoid.{u1} W (AddCommGroup.toDivisionAddCommMonoid.{u1} W _inst_9))))) (MulActionWithZero.toSMulWithZero.{u1, u1} k W (Semiring.toMonoidWithZero.{u1} k (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} W (SubNegZeroMonoid.toNegZeroClass.{u1} W (SubtractionMonoid.toSubNegZeroMonoid.{u1} W (SubtractionCommMonoid.toSubtractionMonoid.{u1} W (AddCommGroup.toDivisionAddCommMonoid.{u1} W _inst_9))))) (Module.toMulActionWithZero.{u1, u1} k W (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_10))))] (f : LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) V W (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11), (Eq.{succ u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (LinearMap.ker.{u1, u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V W (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11 (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) V W (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V W (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) _inst_7 _inst_11 (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))))) f) (Bot.bot.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.instBotSubmodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))) -> (Exists.{succ u1} (LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) W V (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_11 _inst_7) (fun (g : LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) W V (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_11 _inst_7) => Eq.{succ u1} (LinearMap.{u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) V V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7 _inst_7) (LinearMap.comp.{u1, u1, u1, u1, u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V W V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) (AddCommGroup.toAddCommMonoid.{u1} W _inst_9) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7 _inst_11 _inst_7 (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (RingHomCompTriple.ids.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (RingHom.id.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.nonAssocSemiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))))) g f) (LinearMap.id.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))
Case conversion may be inaccurate. Consider using '#align monoid_algebra.exists_left_inverse_of_injective MonoidAlgebra.exists_leftInverse_of_injectiveₓ'. -/
theorem exists_leftInverse_of_injective (f : V →ₗ[MonoidAlgebra k G] W) (hf : f.ker = ⊥) :
    ∃ g : W →ₗ[MonoidAlgebra k G] V, g.comp f = LinearMap.id :=
  by
  obtain ⟨φ, hφ⟩ :=
    (f.restrict_scalars k).exists_leftInverse_of_injective
      (by simp only [hf, Submodule.restrictScalars_bot, LinearMap.ker_restrictScalars])
  refine' ⟨φ.equivariant_projection G, _⟩
  apply LinearMap.ext
  intro v
  simp only [LinearMap.id_coe, id.def, LinearMap.comp_apply]
  apply LinearMap.equivariantProjection_condition
  intro v
  have := congr_arg LinearMap.toFun hφ
  exact congr_fun this v
#align monoid_algebra.exists_left_inverse_of_injective MonoidAlgebra.exists_leftInverse_of_injective

namespace Submodule

/- warning: monoid_algebra.submodule.exists_is_compl -> MonoidAlgebra.Submodule.exists_isCompl is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u1}} [_inst_1 : Field.{u1} k] {G : Type.{u1}} [_inst_2 : Fintype.{u1} G] [_inst_3 : Invertible.{u1} k (Distrib.toHasMul.{u1} k (Ring.toDistrib.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddMonoidWithOne.toOne.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat k (HasLiftT.mk.{1, succ u1} Nat k (CoeTCₓ.coe.{1, succ u1} Nat k (Nat.castCoe.{u1} k (AddMonoidWithOne.toNatCast.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))))) (Fintype.card.{u1} G _inst_2))] [_inst_4 : Group.{u1} G] {V : Type.{u1}} [_inst_5 : AddCommGroup.{u1} V] [_inst_6 : Module.{u1, u1} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_7 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_8 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (SMulZeroClass.toHasSmul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.addCommMonoid.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MonoidAlgebra.smulZeroClass.{u1, u1, u1} k G k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (SMulWithZero.toSmulZeroClass.{u1, u1} k k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toSMulWithZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))))))))) (SMulZeroClass.toHasSmul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (SMulWithZero.toSmulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MulZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MulZeroOneClass.toMulZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))) (SMulZeroClass.toHasSmul.{u1, u1} k V (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (SMulWithZero.toSmulZeroClass.{u1, u1} k V (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (MulActionWithZero.toSMulWithZero.{u1, u1} k V (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (Module.toMulActionWithZero.{u1, u1} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_6))))] (p : Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7), Exists.{succ u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (fun (q : Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) => IsCompl.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (CompleteSemilatticeInf.toPartialOrder.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))) (CompleteLattice.toBoundedOrder.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)) p q)
but is expected to have type
  forall {k : Type.{u1}} [_inst_1 : Field.{u1} k] {G : Type.{u1}} [_inst_2 : Fintype.{u1} G] [_inst_3 : Invertible.{u1} k (NonUnitalNonAssocRing.toMul.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))) (NonAssocRing.toOne.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Nat.cast.{u1} k (NonAssocRing.toNatCast.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Fintype.card.{u1} G _inst_2))] [_inst_4 : Group.{u1} G] {V : Type.{u1}} [_inst_5 : AddCommGroup.{u1} V] [_inst_6 : Module.{u1, u1} k V (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_7 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_8 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (Algebra.toSMul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.algebra.{u1, u1, u1} k G k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Algebra.id.{u1} k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (SMulZeroClass.toSMul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (SMulWithZero.toSMulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidWithZero.toZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))) (SMulZeroClass.toSMul.{u1, u1} k V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (SMulWithZero.toSMulZeroClass.{u1, u1} k V (CommMonoidWithZero.toZero.{u1} k (CommGroupWithZero.toCommMonoidWithZero.{u1} k (Semifield.toCommGroupWithZero.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (MulActionWithZero.toSMulWithZero.{u1, u1} k V (Semiring.toMonoidWithZero.{u1} k (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (Module.toMulActionWithZero.{u1, u1} k V (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_6))))] (p : Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7), Exists.{succ u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (fun (q : Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) => IsCompl.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (OmegaCompletePartialOrder.toPartialOrder.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (CompleteLattice.instOmegaCompletePartialOrder.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))) (CompleteLattice.toBoundedOrder.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)) p q)
Case conversion may be inaccurate. Consider using '#align monoid_algebra.submodule.exists_is_compl MonoidAlgebra.Submodule.exists_isComplₓ'. -/
theorem exists_isCompl (p : Submodule (MonoidAlgebra k G) V) :
    ∃ q : Submodule (MonoidAlgebra k G) V, IsCompl p q :=
  let ⟨f, hf⟩ := MonoidAlgebra.exists_leftInverse_of_injective p.Subtype p.ker_subtype
  ⟨f.ker, LinearMap.isCompl_of_proj <| LinearMap.ext_iff.1 hf⟩
#align monoid_algebra.submodule.exists_is_compl MonoidAlgebra.Submodule.exists_isCompl

/- warning: monoid_algebra.submodule.complemented_lattice -> MonoidAlgebra.Submodule.complementedLattice is a dubious translation:
lean 3 declaration is
  forall {k : Type.{u1}} [_inst_1 : Field.{u1} k] {G : Type.{u1}} [_inst_2 : Fintype.{u1} G] [_inst_3 : Invertible.{u1} k (Distrib.toHasMul.{u1} k (Ring.toDistrib.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddMonoidWithOne.toOne.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat k (HasLiftT.mk.{1, succ u1} Nat k (CoeTCₓ.coe.{1, succ u1} Nat k (Nat.castCoe.{u1} k (AddMonoidWithOne.toNatCast.{u1} k (AddGroupWithOne.toAddMonoidWithOne.{u1} k (AddCommGroupWithOne.toAddGroupWithOne.{u1} k (Ring.toAddCommGroupWithOne.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))))) (Fintype.card.{u1} G _inst_2))] [_inst_4 : Group.{u1} G] {V : Type.{u1}} [_inst_5 : AddCommGroup.{u1} V] [_inst_6 : Module.{u1, u1} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_7 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_8 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (SMulZeroClass.toHasSmul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.addCommMonoid.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MonoidAlgebra.smulZeroClass.{u1, u1, u1} k G k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (SMulWithZero.toSmulZeroClass.{u1, u1} k k (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toHasZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} k (Semiring.toNonAssocSemiring.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (MulZeroClass.toSMulWithZero.{u1} k (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} k (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))))))))) (SMulZeroClass.toHasSmul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (SMulWithZero.toSmulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MulZeroClass.toHasZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MulZeroOneClass.toMulZeroClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidWithZero.toMulZeroOneClass.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))) (SMulZeroClass.toHasSmul.{u1, u1} k V (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (SMulWithZero.toSmulZeroClass.{u1, u1} k V (MulZeroClass.toHasZero.{u1} k (MulZeroOneClass.toMulZeroClass.{u1} k (MonoidWithZero.toMulZeroOneClass.{u1} k (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (MulActionWithZero.toSMulWithZero.{u1, u1} k V (Semiring.toMonoidWithZero.{u1} k (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (AddZeroClass.toHasZero.{u1} V (AddMonoid.toAddZeroClass.{u1} V (AddCommMonoid.toAddMonoid.{u1} V (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)))) (Module.toMulActionWithZero.{u1, u1} k V (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_6))))], ComplementedLattice.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (ConditionallyCompleteLattice.toLattice.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))) (CompleteLattice.toBoundedOrder.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (Ring.toSemiring.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))
but is expected to have type
  forall {k : Type.{u1}} [_inst_1 : Field.{u1} k] {G : Type.{u1}} [_inst_2 : Fintype.{u1} G] [_inst_3 : Invertible.{u1} k (NonUnitalNonAssocRing.toMul.{u1} k (NonAssocRing.toNonUnitalNonAssocRing.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1))))) (NonAssocRing.toOne.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Nat.cast.{u1} k (NonAssocRing.toNatCast.{u1} k (Ring.toNonAssocRing.{u1} k (DivisionRing.toRing.{u1} k (Field.toDivisionRing.{u1} k _inst_1)))) (Fintype.card.{u1} G _inst_2))] [_inst_4 : Group.{u1} G] {V : Type.{u1}} [_inst_5 : AddCommGroup.{u1} V] [_inst_6 : Module.{u1, u1} k V (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_7 : Module.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5)] [_inst_8 : IsScalarTower.{u1, u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (Algebra.toSMul.{u1, u1} k (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (MonoidAlgebra.algebra.{u1, u1, u1} k G k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)) (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (Algebra.id.{u1} k (Semifield.toCommSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (SMulZeroClass.toSMul.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (SMulWithZero.toSMulZeroClass.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidWithZero.toZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (MulActionWithZero.toSMulWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (Semiring.toMonoidWithZero.{u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (Module.toMulActionWithZero.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7)))) (SMulZeroClass.toSMul.{u1, u1} k V (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (SMulWithZero.toSMulZeroClass.{u1, u1} k V (CommMonoidWithZero.toZero.{u1} k (CommGroupWithZero.toCommMonoidWithZero.{u1} k (Semifield.toCommGroupWithZero.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (MulActionWithZero.toSMulWithZero.{u1, u1} k V (Semiring.toMonoidWithZero.{u1} k (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) (NegZeroClass.toZero.{u1} V (SubNegZeroMonoid.toNegZeroClass.{u1} V (SubtractionMonoid.toSubNegZeroMonoid.{u1} V (SubtractionCommMonoid.toSubtractionMonoid.{u1} V (AddCommGroup.toDivisionAddCommMonoid.{u1} V _inst_5))))) (Module.toMulActionWithZero.{u1, u1} k V (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_6))))], ComplementedLattice.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (ConditionallyCompleteLattice.toLattice.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (CompleteLattice.toConditionallyCompleteLattice.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))) (CompleteLattice.toBoundedOrder.{u1} (Submodule.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7) (Submodule.completeLattice.{u1, u1} (MonoidAlgebra.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1)))) V (MonoidAlgebra.semiring.{u1, u1} k G (DivisionSemiring.toSemiring.{u1} k (Semifield.toDivisionSemiring.{u1} k (Field.toSemifield.{u1} k _inst_1))) (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_4))) (AddCommGroup.toAddCommMonoid.{u1} V _inst_5) _inst_7))
Case conversion may be inaccurate. Consider using '#align monoid_algebra.submodule.complemented_lattice MonoidAlgebra.Submodule.complementedLatticeₓ'. -/
/-- This also implies an instance `is_semisimple_module (monoid_algebra k G) V`. -/
instance complementedLattice : ComplementedLattice (Submodule (MonoidAlgebra k G) V) :=
  ⟨exists_isCompl⟩
#align monoid_algebra.submodule.complemented_lattice MonoidAlgebra.Submodule.complementedLattice

end Submodule

end MonoidAlgebra