Mathlib v3 is deprecated. Go to Mathlib v4

Commit 2022-02-12 08:07 71e90063

View on Github →

chore(topology/algebra/module/multilinear): relax typeclass arguments (#11972) Previously module R' (continuous_multilinear_map A M₁ M₂) required algebra R' A, but now it only requires smul_comm_class A R' M₂. The old instance required (modulo argument reordering):

def continuous_multilinear_map.module {ι : Type v} {M₁ : ι → Type w₁} {M₂ : Type w₂} [decidable_eq ι]
  [Π i, add_comm_monoid (M₁ i)] [add_comm_monoid M₂] [Π i, topological_space (M₁ i)]
  [topological_space M₂] [has_continuous_add M₂] 
  {R' : Type u_1} {A : Type u_2} [comm_semiring R'] [semiring A] [topological_space R']
  [Π i, module A (M₁ i)]  [module A M₂] [module R' M₂] [has_continuous_smul R' M₂]
  [algebra R' A] [is_scalar_tower R' A M₂] :
    module R' (continuous_multilinear_map A M₁ M₂)

while the new one requires

def continuous_multilinear_map.module {ι : Type v} {M₁ : ι → Type w₁} {M₂ : Type w₂} [decidable_eq ι]
  [Π i, add_comm_monoid (M₁ i)] [add_comm_monoid M₂] [Π i, topological_space (M₁ i)]
  [topological_space M₂] [has_continuous_add M₂]
  {R' : Type u_1} {A : Type u_2} [semiring R'] [semiring A] [topological_space R']  -- note: `R'` not commutative any more
  [Π i, module A (M₁ i)] [module A M₂] [module R' M₂] [has_continuous_smul R' M₂]
  [smul_comm_class A R' M₂] :  -- note: `R'` needs no action at all on `A`
    module R' (continuous_multilinear_map A M₁ M₂)

This change also adds intermediate mul_action and distrib_mul_action instances which apply in weaker situations. As a result of this weakening, the typeclass arguments to continuous_multilinear_map.to_normed_space can also be weakened, and a weird instance workaround can be removed.

Estimated changes