topology.algebra.module.character_space ⟷ Mathlib.Topology.Algebra.Module.CharacterSpace

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -95,7 +95,7 @@ theorem coe_toCLM (Ο† : characterSpace π•œ A) : ⇑(toCLM Ο†) = Ο† :=
 -/
 
 /-- Elements of the character space are non-unital algebra homomorphisms. -/
-instance : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
+instance : NonUnitalAlgSemiHomClass (characterSpace π•œ A) π•œ A π•œ :=
   {
     characterSpace.continuousLinearMapClass with
     map_smul := fun Ο† => map_smul Ο†
Diff
@@ -225,7 +225,7 @@ theorem ext_ker {Ο† ψ : characterSpace π•œ A} (h : RingHom.ker Ο† = RingHom.ke
   ext
   have : x - algebraMap π•œ A (ψ x) ∈ RingHom.ker Ο† := by
     simpa only [h, RingHom.mem_ker, map_sub, AlgHomClass.commutes] using sub_self (ψ x)
-  Β· rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this 
+  Β· rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this
 #align weak_dual.character_space.ext_ker WeakDual.CharacterSpace.ext_ker
 -/
 
Diff
@@ -80,18 +80,18 @@ theorem ext {Ο† ψ : characterSpace π•œ A} (h : βˆ€ x, Ο† x = ψ x) : Ο† = ψ :
 #align weak_dual.character_space.ext WeakDual.CharacterSpace.ext
 -/
 
-#print WeakDual.CharacterSpace.toClm /-
+#print WeakDual.CharacterSpace.toCLM /-
 /-- An element of the character space, as a continuous linear map. -/
-def toClm (Ο† : characterSpace π•œ A) : A β†’L[π•œ] π•œ :=
+def toCLM (Ο† : characterSpace π•œ A) : A β†’L[π•œ] π•œ :=
   (Ο† : WeakDual π•œ A)
-#align weak_dual.character_space.to_clm WeakDual.CharacterSpace.toClm
+#align weak_dual.character_space.to_clm WeakDual.CharacterSpace.toCLM
 -/
 
-#print WeakDual.CharacterSpace.coe_toClm /-
+#print WeakDual.CharacterSpace.coe_toCLM /-
 @[simp]
-theorem coe_toClm (Ο† : characterSpace π•œ A) : ⇑(toClm Ο†) = Ο† :=
+theorem coe_toCLM (Ο† : characterSpace π•œ A) : ⇑(toCLM Ο†) = Ο† :=
   rfl
-#align weak_dual.character_space.coe_to_clm WeakDual.CharacterSpace.coe_toClm
+#align weak_dual.character_space.coe_to_clm WeakDual.CharacterSpace.coe_toCLM
 -/
 
 /-- Elements of the character space are non-unital algebra homomorphisms. -/
Diff
@@ -76,7 +76,7 @@ instance : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ
 #print WeakDual.CharacterSpace.ext /-
 @[ext]
 theorem ext {Ο† ψ : characterSpace π•œ A} (h : βˆ€ x, Ο† x = ψ x) : Ο† = ψ :=
-  FunLike.ext _ _ h
+  DFunLike.ext _ _ h
 #align weak_dual.character_space.ext WeakDual.CharacterSpace.ext
 -/
 
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2022 FrΓ©dΓ©ric Dupuis. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: FrΓ©dΓ©ric Dupuis
 -/
-import Mathbin.Topology.Algebra.Module.WeakDual
-import Mathbin.Algebra.Algebra.Spectrum
-import Mathbin.Topology.ContinuousFunction.Algebra
+import Topology.Algebra.Module.WeakDual
+import Algebra.Algebra.Spectrum
+import Topology.ContinuousFunction.Algebra
 
 #align_import topology.algebra.module.character_space from "leanprover-community/mathlib"@"6b31d1eebd64eab86d5bd9936bfaada6ca8b5842"
 
Diff
@@ -100,7 +100,7 @@ instance : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
     characterSpace.continuousLinearMapClass with
     map_smul := fun Ο† => map_smul Ο†
     map_zero := fun Ο† => map_zero Ο†
-    map_mul := fun Ο† => Ο†.Prop.2 }
+    map_hMul := fun Ο† => Ο†.Prop.2 }
 
 #print WeakDual.CharacterSpace.toNonUnitalAlgHom /-
 /-- An element of the character space, as an non-unital algebra homomorphism. -/
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 FrΓ©dΓ©ric Dupuis. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: FrΓ©dΓ©ric Dupuis
-
-! This file was ported from Lean 3 source module topology.algebra.module.character_space
-! leanprover-community/mathlib commit 6b31d1eebd64eab86d5bd9936bfaada6ca8b5842
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Algebra.Module.WeakDual
 import Mathbin.Algebra.Algebra.Spectrum
 import Mathbin.Topology.ContinuousFunction.Algebra
 
+#align_import topology.algebra.module.character_space from "leanprover-community/mathlib"@"6b31d1eebd64eab86d5bd9936bfaada6ca8b5842"
+
 /-!
 # Character space of a topological algebra
 
Diff
@@ -42,12 +42,14 @@ character space, Gelfand transform, functional calculus
 
 namespace WeakDual
 
+#print WeakDual.characterSpace /-
 /-- The character space of a topological algebra is the subset of elements of the weak dual that
 are also algebra homomorphisms. -/
 def characterSpace (π•œ : Type _) (A : Type _) [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ]
     [ContinuousConstSMul π•œ π•œ] [NonUnitalNonAssocSemiring A] [TopologicalSpace A] [Module π•œ A] :=
   {Ο† : WeakDual π•œ A | Ο† β‰  0 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y}
 #align weak_dual.character_space WeakDual.characterSpace
+-/
 
 variable {π•œ : Type _} {A : Type _}
 
@@ -58,10 +60,12 @@ section NonUnitalNonAssocSemiring
 variable [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ] [ContinuousConstSMul π•œ π•œ]
   [NonUnitalNonAssocSemiring A] [TopologicalSpace A] [Module π•œ A]
 
+#print WeakDual.CharacterSpace.coe_coe /-
 @[simp, norm_cast, protected]
 theorem coe_coe (Ο† : characterSpace π•œ A) : ⇑(Ο† : WeakDual π•œ A) = Ο† :=
   rfl
 #align weak_dual.character_space.coe_coe WeakDual.CharacterSpace.coe_coe
+-/
 
 /-- Elements of the character space are continuous linear maps. -/
 instance : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ
@@ -72,20 +76,26 @@ instance : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ
   map_add Ο† := (Ο† : WeakDual π•œ A).map_add
   map_continuous Ο† := (Ο† : WeakDual π•œ A).cont
 
+#print WeakDual.CharacterSpace.ext /-
 @[ext]
 theorem ext {Ο† ψ : characterSpace π•œ A} (h : βˆ€ x, Ο† x = ψ x) : Ο† = ψ :=
   FunLike.ext _ _ h
 #align weak_dual.character_space.ext WeakDual.CharacterSpace.ext
+-/
 
+#print WeakDual.CharacterSpace.toClm /-
 /-- An element of the character space, as a continuous linear map. -/
 def toClm (Ο† : characterSpace π•œ A) : A β†’L[π•œ] π•œ :=
   (Ο† : WeakDual π•œ A)
 #align weak_dual.character_space.to_clm WeakDual.CharacterSpace.toClm
+-/
 
+#print WeakDual.CharacterSpace.coe_toClm /-
 @[simp]
 theorem coe_toClm (Ο† : characterSpace π•œ A) : ⇑(toClm Ο†) = Ο† :=
   rfl
 #align weak_dual.character_space.coe_to_clm WeakDual.CharacterSpace.coe_toClm
+-/
 
 /-- Elements of the character space are non-unital algebra homomorphisms. -/
 instance : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
@@ -95,6 +105,7 @@ instance : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
     map_zero := fun Ο† => map_zero Ο†
     map_mul := fun Ο† => Ο†.Prop.2 }
 
+#print WeakDual.CharacterSpace.toNonUnitalAlgHom /-
 /-- An element of the character space, as an non-unital algebra homomorphism. -/
 def toNonUnitalAlgHom (Ο† : characterSpace π•œ A) : A →ₙₐ[π•œ] π•œ
     where
@@ -104,11 +115,14 @@ def toNonUnitalAlgHom (Ο† : characterSpace π•œ A) : A →ₙₐ[π•œ] π•œ
   map_zero' := map_zero Ο†
   map_add' := map_add Ο†
 #align weak_dual.character_space.to_non_unital_alg_hom WeakDual.CharacterSpace.toNonUnitalAlgHom
+-/
 
+#print WeakDual.CharacterSpace.coe_toNonUnitalAlgHom /-
 @[simp]
 theorem coe_toNonUnitalAlgHom (Ο† : characterSpace π•œ A) : ⇑(toNonUnitalAlgHom Ο†) = Ο† :=
   rfl
 #align weak_dual.character_space.coe_to_non_unital_alg_hom WeakDual.CharacterSpace.coe_toNonUnitalAlgHom
+-/
 
 instance [Subsingleton A] : IsEmpty (characterSpace π•œ A) :=
   ⟨fun Ο† =>
@@ -116,13 +130,16 @@ instance [Subsingleton A] : IsEmpty (characterSpace π•œ A) :=
 
 variable (π•œ A)
 
+#print WeakDual.CharacterSpace.union_zero /-
 theorem union_zero :
     characterSpace π•œ A βˆͺ {0} = {Ο† : WeakDual π•œ A | βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y} :=
   le_antisymm
     (by rintro φ (hφ | h₀); · exact hφ.2; · exact fun x y => by simp [Set.eq_of_mem_singleton h₀])
     fun Ο† hΟ† => Or.elim (em <| Ο† = 0) (fun hβ‚€ => Or.inr hβ‚€) fun hβ‚€ => Or.inl ⟨hβ‚€, hΟ†βŸ©
 #align weak_dual.character_space.union_zero WeakDual.CharacterSpace.union_zero
+-/
 
+#print WeakDual.CharacterSpace.union_zero_isClosed /-
 /-- The `character_space π•œ A` along with `0` is always a closed set in `weak_dual π•œ A`. -/
 theorem union_zero_isClosed [T2Space π•œ] [ContinuousMul π•œ] : IsClosed (characterSpace π•œ A βˆͺ {0}) :=
   by
@@ -132,6 +149,7 @@ theorem union_zero_isClosed [T2Space π•œ] [ContinuousMul π•œ] : IsClosed (char
       isClosed_iInter fun y =>
         isClosed_eq (eval_continuous _) <| (eval_continuous _).mul (eval_continuous _)
 #align weak_dual.character_space.union_zero_is_closed WeakDual.CharacterSpace.union_zero_isClosed
+-/
 
 end NonUnitalNonAssocSemiring
 
@@ -158,6 +176,7 @@ instance : AlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
       change ((Ο† : WeakDual π•œ A) : A β†’L[π•œ] π•œ) (r β€’ 1) = r
       rw [map_smul, Algebra.id.smul_eq_mul, character_space.coe_coe, map_one' Ο†, mul_one] }
 
+#print WeakDual.CharacterSpace.toAlgHom /-
 /-- An element of the character space of a unital algebra, as an algebra homomorphism. -/
 @[simps]
 def toAlgHom (Ο† : characterSpace π•œ A) : A →ₐ[π•œ] π•œ :=
@@ -165,7 +184,9 @@ def toAlgHom (Ο† : characterSpace π•œ A) : A →ₐ[π•œ] π•œ :=
     map_one' := map_one Ο†
     commutes' := AlgHomClass.commutes Ο† }
 #align weak_dual.character_space.to_alg_hom WeakDual.CharacterSpace.toAlgHom
+-/
 
+#print WeakDual.CharacterSpace.eq_set_map_one_map_mul /-
 theorem eq_set_map_one_map_mul [Nontrivial π•œ] :
     characterSpace π•œ A = {Ο† : WeakDual π•œ A | Ο† 1 = 1 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y} :=
   by
@@ -174,7 +195,9 @@ theorem eq_set_map_one_map_mul [Nontrivial π•œ] :
   rintro rfl
   simpa using h.1
 #align weak_dual.character_space.eq_set_map_one_map_mul WeakDual.CharacterSpace.eq_set_map_one_map_mul
+-/
 
+#print WeakDual.CharacterSpace.isClosed /-
 /-- under suitable mild assumptions on `π•œ`, the character space is a closed set in
 `weak_dual π•œ A`. -/
 protected theorem isClosed [Nontrivial π•œ] [T2Space π•œ] [ContinuousMul π•œ] :
@@ -184,6 +207,7 @@ protected theorem isClosed [Nontrivial π•œ] [T2Space π•œ] [ContinuousMul π•œ]
   refine' IsClosed.inter (isClosed_eq (eval_continuous _) continuous_const) _
   simpa only [(union_zero π•œ A).symm] using union_zero_is_closed _ _
 #align weak_dual.character_space.is_closed WeakDual.CharacterSpace.isClosed
+-/
 
 end Unital
 
@@ -192,10 +216,13 @@ section Ring
 variable [CommRing π•œ] [NoZeroDivisors π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ]
   [ContinuousConstSMul π•œ π•œ] [TopologicalSpace A] [Ring A] [Algebra π•œ A]
 
+#print WeakDual.CharacterSpace.apply_mem_spectrum /-
 theorem apply_mem_spectrum [Nontrivial π•œ] (Ο† : characterSpace π•œ A) (a : A) : Ο† a ∈ spectrum π•œ a :=
   AlgHom.apply_mem_spectrum Ο† a
 #align weak_dual.character_space.apply_mem_spectrum WeakDual.CharacterSpace.apply_mem_spectrum
+-/
 
+#print WeakDual.CharacterSpace.ext_ker /-
 theorem ext_ker {Ο† ψ : characterSpace π•œ A} (h : RingHom.ker Ο† = RingHom.ker ψ) : Ο† = ψ :=
   by
   ext
@@ -203,6 +230,7 @@ theorem ext_ker {Ο† ψ : characterSpace π•œ A} (h : RingHom.ker Ο† = RingHom.ke
     simpa only [h, RingHom.mem_ker, map_sub, AlgHomClass.commutes] using sub_self (ψ x)
   Β· rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this 
 #align weak_dual.character_space.ext_ker WeakDual.CharacterSpace.ext_ker
+-/
 
 end Ring
 
@@ -214,11 +242,13 @@ variable [Field π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ] [ContinuousCo
 
 variable [Ring A] [TopologicalSpace A] [Algebra π•œ A]
 
+#print WeakDual.ker_isMaximal /-
 /-- The `ring_hom.ker` of `Ο† : character_space π•œ A` is maximal. -/
 instance ker_isMaximal (Ο† : characterSpace π•œ A) : (RingHom.ker Ο†).IsMaximal :=
   RingHom.ker_isMaximal_of_surjective Ο† fun z =>
     ⟨algebraMap π•œ A z, by simp only [AlgHomClass.commutes, Algebra.id.map_eq_id, RingHom.id_apply]⟩
 #align weak_dual.ker_is_maximal WeakDual.ker_isMaximal
+-/
 
 end Kernel
 
@@ -229,6 +259,7 @@ open ContinuousMap
 variable (π•œ A) [CommRing π•œ] [NoZeroDivisors π•œ] [TopologicalSpace π•œ] [TopologicalRing π•œ]
   [TopologicalSpace A] [Semiring A] [Algebra π•œ A]
 
+#print WeakDual.gelfandTransform /-
 /-- The **Gelfand transform** is an algebra homomorphism (over `π•œ`) from a topological `π•œ`-algebra
 `A` into the `π•œ`-algebra of continuous `π•œ`-valued functions on the `character_space π•œ A`.
 The character space itself consists of all algebra homomorphisms from `A` to `π•œ`.  -/
@@ -246,6 +277,7 @@ def gelfandTransform : A →ₐ[π•œ] C(characterSpace π•œ A, π•œ)
     simp only [AlgHomClass.commutes, Algebra.id.map_eq_id, RingHom.id_apply, coe_mk,
       algebraMap_apply, Algebra.id.smul_eq_mul, mul_one]
 #align weak_dual.gelfand_transform WeakDual.gelfandTransform
+-/
 
 end GelfandTransform
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: FrΓ©dΓ©ric Dupuis
 
 ! This file was ported from Lean 3 source module topology.algebra.module.character_space
-! leanprover-community/mathlib commit a148d797a1094ab554ad4183a4ad6f130358ef64
+! leanprover-community/mathlib commit 6b31d1eebd64eab86d5bd9936bfaada6ca8b5842
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Topology.ContinuousFunction.Algebra
 /-!
 # Character space of a topological algebra
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 The character space of a topological algebra is the subset of elements of the weak dual that
 are also algebra homomorphisms. This space is used in the Gelfand transform, which gives an
 isomorphism between a commutative C⋆-algebra and continuous functions on the character space
Diff
@@ -58,7 +58,7 @@ variable [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ] [Conti
 @[simp, norm_cast, protected]
 theorem coe_coe (Ο† : characterSpace π•œ A) : ⇑(Ο† : WeakDual π•œ A) = Ο† :=
   rfl
-#align weak_dual.character_space.coe_coe WeakDual.characterSpace.coe_coe
+#align weak_dual.character_space.coe_coe WeakDual.CharacterSpace.coe_coe
 
 /-- Elements of the character space are continuous linear maps. -/
 instance : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ
@@ -72,17 +72,17 @@ instance : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ
 @[ext]
 theorem ext {Ο† ψ : characterSpace π•œ A} (h : βˆ€ x, Ο† x = ψ x) : Ο† = ψ :=
   FunLike.ext _ _ h
-#align weak_dual.character_space.ext WeakDual.characterSpace.ext
+#align weak_dual.character_space.ext WeakDual.CharacterSpace.ext
 
 /-- An element of the character space, as a continuous linear map. -/
 def toClm (Ο† : characterSpace π•œ A) : A β†’L[π•œ] π•œ :=
   (Ο† : WeakDual π•œ A)
-#align weak_dual.character_space.to_clm WeakDual.characterSpace.toClm
+#align weak_dual.character_space.to_clm WeakDual.CharacterSpace.toClm
 
 @[simp]
 theorem coe_toClm (Ο† : characterSpace π•œ A) : ⇑(toClm Ο†) = Ο† :=
   rfl
-#align weak_dual.character_space.coe_to_clm WeakDual.characterSpace.coe_toClm
+#align weak_dual.character_space.coe_to_clm WeakDual.CharacterSpace.coe_toClm
 
 /-- Elements of the character space are non-unital algebra homomorphisms. -/
 instance : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
@@ -100,12 +100,12 @@ def toNonUnitalAlgHom (Ο† : characterSpace π•œ A) : A →ₙₐ[π•œ] π•œ
   map_smul' := map_smul Ο†
   map_zero' := map_zero Ο†
   map_add' := map_add Ο†
-#align weak_dual.character_space.to_non_unital_alg_hom WeakDual.characterSpace.toNonUnitalAlgHom
+#align weak_dual.character_space.to_non_unital_alg_hom WeakDual.CharacterSpace.toNonUnitalAlgHom
 
 @[simp]
 theorem coe_toNonUnitalAlgHom (Ο† : characterSpace π•œ A) : ⇑(toNonUnitalAlgHom Ο†) = Ο† :=
   rfl
-#align weak_dual.character_space.coe_to_non_unital_alg_hom WeakDual.characterSpace.coe_toNonUnitalAlgHom
+#align weak_dual.character_space.coe_to_non_unital_alg_hom WeakDual.CharacterSpace.coe_toNonUnitalAlgHom
 
 instance [Subsingleton A] : IsEmpty (characterSpace π•œ A) :=
   ⟨fun Ο† =>
@@ -118,7 +118,7 @@ theorem union_zero :
   le_antisymm
     (by rintro φ (hφ | h₀); · exact hφ.2; · exact fun x y => by simp [Set.eq_of_mem_singleton h₀])
     fun Ο† hΟ† => Or.elim (em <| Ο† = 0) (fun hβ‚€ => Or.inr hβ‚€) fun hβ‚€ => Or.inl ⟨hβ‚€, hΟ†βŸ©
-#align weak_dual.character_space.union_zero WeakDual.characterSpace.union_zero
+#align weak_dual.character_space.union_zero WeakDual.CharacterSpace.union_zero
 
 /-- The `character_space π•œ A` along with `0` is always a closed set in `weak_dual π•œ A`. -/
 theorem union_zero_isClosed [T2Space π•œ] [ContinuousMul π•œ] : IsClosed (characterSpace π•œ A βˆͺ {0}) :=
@@ -128,7 +128,7 @@ theorem union_zero_isClosed [T2Space π•œ] [ContinuousMul π•œ] : IsClosed (char
     isClosed_iInter fun x =>
       isClosed_iInter fun y =>
         isClosed_eq (eval_continuous _) <| (eval_continuous _).mul (eval_continuous _)
-#align weak_dual.character_space.union_zero_is_closed WeakDual.characterSpace.union_zero_isClosed
+#align weak_dual.character_space.union_zero_is_closed WeakDual.CharacterSpace.union_zero_isClosed
 
 end NonUnitalNonAssocSemiring
 
@@ -161,7 +161,7 @@ def toAlgHom (Ο† : characterSpace π•œ A) : A →ₐ[π•œ] π•œ :=
   { toNonUnitalAlgHom Ο† with
     map_one' := map_one Ο†
     commutes' := AlgHomClass.commutes Ο† }
-#align weak_dual.character_space.to_alg_hom WeakDual.characterSpace.toAlgHom
+#align weak_dual.character_space.to_alg_hom WeakDual.CharacterSpace.toAlgHom
 
 theorem eq_set_map_one_map_mul [Nontrivial π•œ] :
     characterSpace π•œ A = {Ο† : WeakDual π•œ A | Ο† 1 = 1 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y} :=
@@ -170,7 +170,7 @@ theorem eq_set_map_one_map_mul [Nontrivial π•œ] :
   refine' ⟨fun h => ⟨map_one (⟨x, h⟩ : character_space π•œ A), h.2⟩, fun h => ⟨_, h.2⟩⟩
   rintro rfl
   simpa using h.1
-#align weak_dual.character_space.eq_set_map_one_map_mul WeakDual.characterSpace.eq_set_map_one_map_mul
+#align weak_dual.character_space.eq_set_map_one_map_mul WeakDual.CharacterSpace.eq_set_map_one_map_mul
 
 /-- under suitable mild assumptions on `π•œ`, the character space is a closed set in
 `weak_dual π•œ A`. -/
@@ -180,7 +180,7 @@ protected theorem isClosed [Nontrivial π•œ] [T2Space π•œ] [ContinuousMul π•œ]
   rw [eq_set_map_one_map_mul, Set.setOf_and]
   refine' IsClosed.inter (isClosed_eq (eval_continuous _) continuous_const) _
   simpa only [(union_zero π•œ A).symm] using union_zero_is_closed _ _
-#align weak_dual.character_space.is_closed WeakDual.characterSpace.isClosed
+#align weak_dual.character_space.is_closed WeakDual.CharacterSpace.isClosed
 
 end Unital
 
@@ -191,7 +191,7 @@ variable [CommRing π•œ] [NoZeroDivisors π•œ] [TopologicalSpace π•œ] [Continuo
 
 theorem apply_mem_spectrum [Nontrivial π•œ] (Ο† : characterSpace π•œ A) (a : A) : Ο† a ∈ spectrum π•œ a :=
   AlgHom.apply_mem_spectrum Ο† a
-#align weak_dual.character_space.apply_mem_spectrum WeakDual.characterSpace.apply_mem_spectrum
+#align weak_dual.character_space.apply_mem_spectrum WeakDual.CharacterSpace.apply_mem_spectrum
 
 theorem ext_ker {Ο† ψ : characterSpace π•œ A} (h : RingHom.ker Ο† = RingHom.ker ψ) : Ο† = ψ :=
   by
@@ -199,7 +199,7 @@ theorem ext_ker {Ο† ψ : characterSpace π•œ A} (h : RingHom.ker Ο† = RingHom.ke
   have : x - algebraMap π•œ A (ψ x) ∈ RingHom.ker Ο† := by
     simpa only [h, RingHom.mem_ker, map_sub, AlgHomClass.commutes] using sub_self (ψ x)
   Β· rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this 
-#align weak_dual.character_space.ext_ker WeakDual.characterSpace.ext_ker
+#align weak_dual.character_space.ext_ker WeakDual.CharacterSpace.ext_ker
 
 end Ring
 
Diff
@@ -43,7 +43,7 @@ namespace WeakDual
 are also algebra homomorphisms. -/
 def characterSpace (π•œ : Type _) (A : Type _) [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ]
     [ContinuousConstSMul π•œ π•œ] [NonUnitalNonAssocSemiring A] [TopologicalSpace A] [Module π•œ A] :=
-  { Ο† : WeakDual π•œ A | Ο† β‰  0 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y }
+  {Ο† : WeakDual π•œ A | Ο† β‰  0 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y}
 #align weak_dual.character_space WeakDual.characterSpace
 
 variable {π•œ : Type _} {A : Type _}
@@ -114,7 +114,7 @@ instance [Subsingleton A] : IsEmpty (characterSpace π•œ A) :=
 variable (π•œ A)
 
 theorem union_zero :
-    characterSpace π•œ A βˆͺ {0} = { Ο† : WeakDual π•œ A | βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y } :=
+    characterSpace π•œ A βˆͺ {0} = {Ο† : WeakDual π•œ A | βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y} :=
   le_antisymm
     (by rintro φ (hφ | h₀); · exact hφ.2; · exact fun x y => by simp [Set.eq_of_mem_singleton h₀])
     fun Ο† hΟ† => Or.elim (em <| Ο† = 0) (fun hβ‚€ => Or.inr hβ‚€) fun hβ‚€ => Or.inl ⟨hβ‚€, hΟ†βŸ©
@@ -164,7 +164,7 @@ def toAlgHom (Ο† : characterSpace π•œ A) : A →ₐ[π•œ] π•œ :=
 #align weak_dual.character_space.to_alg_hom WeakDual.characterSpace.toAlgHom
 
 theorem eq_set_map_one_map_mul [Nontrivial π•œ] :
-    characterSpace π•œ A = { Ο† : WeakDual π•œ A | Ο† 1 = 1 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y } :=
+    characterSpace π•œ A = {Ο† : WeakDual π•œ A | Ο† 1 = 1 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y} :=
   by
   ext x
   refine' ⟨fun h => ⟨map_one (⟨x, h⟩ : character_space π•œ A), h.2⟩, fun h => ⟨_, h.2⟩⟩
Diff
@@ -198,7 +198,7 @@ theorem ext_ker {Ο† ψ : characterSpace π•œ A} (h : RingHom.ker Ο† = RingHom.ke
   ext
   have : x - algebraMap π•œ A (ψ x) ∈ RingHom.ker Ο† := by
     simpa only [h, RingHom.mem_ker, map_sub, AlgHomClass.commutes] using sub_self (ψ x)
-  Β· rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this
+  Β· rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this 
 #align weak_dual.character_space.ext_ker WeakDual.characterSpace.ext_ker
 
 end Ring
Diff
@@ -64,9 +64,7 @@ theorem coe_coe (Ο† : characterSpace π•œ A) : ⇑(Ο† : WeakDual π•œ A) = Ο† :=
 instance : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ
     where
   coe Ο† := (Ο† : A β†’ π•œ)
-  coe_injective' Ο† ψ h := by
-    ext
-    exact congr_fun h x
+  coe_injective' Ο† ψ h := by ext; exact congr_fun h x
   map_smulβ‚›β‚— Ο† := (Ο† : WeakDual π•œ A).map_smul
   map_add Ο† := (Ο† : WeakDual π•œ A).map_add
   map_continuous Ο† := (Ο† : WeakDual π•œ A).cont
@@ -118,10 +116,7 @@ variable (π•œ A)
 theorem union_zero :
     characterSpace π•œ A βˆͺ {0} = { Ο† : WeakDual π•œ A | βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y } :=
   le_antisymm
-    (by
-      rintro φ (hφ | h₀)
-      · exact hφ.2
-      Β· exact fun x y => by simp [Set.eq_of_mem_singleton hβ‚€])
+    (by rintro φ (hφ | h₀); · exact hφ.2; · exact fun x y => by simp [Set.eq_of_mem_singleton h₀])
     fun Ο† hΟ† => Or.elim (em <| Ο† = 0) (fun hβ‚€ => Or.inr hβ‚€) fun hβ‚€ => Or.inl ⟨hβ‚€, hΟ†βŸ©
 #align weak_dual.character_space.union_zero WeakDual.characterSpace.union_zero
 
@@ -240,20 +235,11 @@ def gelfandTransform : A →ₐ[π•œ] C(characterSpace π•œ A, π•œ)
   toFun a :=
     { toFun := fun Ο† => Ο† a
       continuous_toFun := (eval_continuous a).comp continuous_induced_dom }
-  map_one' := by
-    ext
-    simp only [coe_mk, coe_one, Pi.one_apply, map_one a]
-  map_mul' a b := by
-    ext
-    simp only [map_mul, coe_mk, coe_mul, Pi.mul_apply]
-  map_zero' := by
-    ext
-    simp only [map_zero, coe_mk, coe_mul, coe_zero, Pi.zero_apply]
-  map_add' a b := by
-    ext
-    simp only [map_add, coe_mk, coe_add, Pi.add_apply]
-  commutes' k := by
-    ext
+  map_one' := by ext; simp only [coe_mk, coe_one, Pi.one_apply, map_one a]
+  map_mul' a b := by ext; simp only [map_mul, coe_mk, coe_mul, Pi.mul_apply]
+  map_zero' := by ext; simp only [map_zero, coe_mk, coe_mul, coe_zero, Pi.zero_apply]
+  map_add' a b := by ext; simp only [map_add, coe_mk, coe_add, Pi.add_apply]
+  commutes' k := by ext;
     simp only [AlgHomClass.commutes, Algebra.id.map_eq_id, RingHom.id_apply, coe_mk,
       algebraMap_apply, Algebra.id.smul_eq_mul, mul_one]
 #align weak_dual.gelfand_transform WeakDual.gelfandTransform
Diff
@@ -130,8 +130,8 @@ theorem union_zero_isClosed [T2Space π•œ] [ContinuousMul π•œ] : IsClosed (char
   by
   simp only [union_zero, Set.setOf_forall]
   exact
-    isClosed_interα΅’ fun x =>
-      isClosed_interα΅’ fun y =>
+    isClosed_iInter fun x =>
+      isClosed_iInter fun y =>
         isClosed_eq (eval_continuous _) <| (eval_continuous _).mul (eval_continuous _)
 #align weak_dual.character_space.union_zero_is_closed WeakDual.characterSpace.union_zero_isClosed
 
Diff
@@ -148,7 +148,7 @@ instance : AlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
     by
     have h₁ : Ο† 1 * (1 - Ο† 1) = 0 := by rw [mul_sub, sub_eq_zero, mul_one, ← map_mul Ο†, one_mul]
     rcases mul_eq_zero.mp h₁ with (hβ‚‚ | hβ‚‚)
-    Β· have : βˆ€ a, Ο† (a * 1) = 0 := fun a => by simp only [map_mul Ο†, hβ‚‚, mul_zero]
+    Β· have : βˆ€ a, Ο† (a * 1) = 0 := fun a => by simp only [map_mul Ο†, hβ‚‚, MulZeroClass.mul_zero]
       exact False.elim (Ο†.prop.1 <| ContinuousLinearMap.ext <| by simpa only [mul_one] using this)
     Β· exact (sub_eq_zero.mp hβ‚‚).symm
   {

Changes in mathlib4

mathlib3
mathlib4
feat: MulActionHom in the semilinear style (#6057)

Generalize MulActionHom so that it allows two different monoids acting, related by a morphism. This is inspired by the treatment of (semi)linear maps in mathlib, and allows to refactor them.

Let M, N, X, Y be types, with SMul M X and SMul N Y, and let Ο† : M β†’ N be a map.

  • MulActionHom Ο† X Y, the type of equivariant functions from X to Y, consists of functions f : X β†’ Y such that f (m β€’ x) = (Ο† m) β€’ (f x) for all m : M and x : X.

Assume that we have Monoid M, Monoid N and that Ο† : M β†’* N. For A, B by types with AddMonoid A and AddMonoid B, endowed with DistribMulAction M A and DistribMulAction M B:

  • DistribMulActionHom Ο† A B is the type of equivariant additive monoid homomorphisms from A to B.

Similarly, when R and S are types with Semiring R, Semiring S, MulSemiringAction M R and MulSemiringAction N S

  • SMulSemiringHom Ο† R S is the type of equivariant ring homomorphisms from R to S.

The above types have corresponding classes:

  • MulActionHomClass F Ο† X Y states that F is a type of bundled X β†’ Y homs which are Ο†-equivariant
  • DistribMulActionHomClass F Ο† A B states that F is a type of bundled A β†’ B homs preserving the additive monoid structure and Ο†-equivariant
  • SMulSemiringHomClass F Ο† R S states that F is a type of bundled R β†’ S homs preserving the ring structure and Ο†-equivariant

Notation

We introduce the following notation to code equivariant maps (the subscript index β‚‘ is for equivariant) :

  • X β†’β‚‘[Ο†] Y is MulActionHom Ο† X Y.
  • A β†’β‚‘+[Ο†] B is DistribMulActionHom Ο† A B.
  • R β†’β‚‘+*[Ο†] S is MulSemiringActionHom Ο† R S.

When M = N and Ο† = MonoidHom.id M, we provide the backward compatible notation :

  • X β†’[M] Y is MulActionHom ([@id](https://github.com/id) M) X Y
  • A β†’+[M] B is DistribMulActionHom (MonoidHom.id M) A B
  • R β†’+*[M] S is MulSemiringActionHom (MonoidHom.id M) R S

This more general definition is propagated all over mathlib, in particular to LinearMap.

The treatment of composition of equivariant maps is inspired by that of semilinear maps. We provide classes CompTriple and MonoidHom.CompTriple of β€œcomposable triples`, and various instances for them.

Diff
@@ -90,7 +90,7 @@ theorem coe_toCLM (Ο† : characterSpace π•œ A) : ⇑(toCLM Ο†) = Ο† :=
 /-- Elements of the character space are non-unital algebra homomorphisms. -/
 instance instNonUnitalAlgHomClass : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
   { CharacterSpace.instContinuousLinearMapClass with
-    map_smul := fun Ο† => map_smulβ‚›β‚— Ο†
+    map_smulβ‚›β‚— := fun Ο† => map_smul Ο†
     map_zero := fun Ο† => map_zero Ο†
     map_mul := fun Ο† => Ο†.prop.2 }
 
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -210,7 +210,6 @@ end CharacterSpace
 section Kernel
 
 variable [Field π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ] [ContinuousConstSMul π•œ π•œ]
-
 variable [Ring A] [TopologicalSpace A] [Algebra π•œ A]
 
 /-- The `RingHom.ker` of `Ο† : characterSpace π•œ A` is maximal. -/
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -46,7 +46,7 @@ def characterSpace (π•œ : Type*) (A : Type*) [CommSemiring π•œ] [TopologicalSp
 
 variable {π•œ : Type*} {A : Type*}
 
--- porting note: even though the capitalization of the namespace differs, it doesn't matter
+-- Porting note: even though the capitalization of the namespace differs, it doesn't matter
 -- because there is no dot notation since `characterSpace` is only a type via `CoeSort`.
 namespace CharacterSpace
 
@@ -65,7 +65,7 @@ instance instContinuousLinearMapClass : ContinuousLinearMapClass (characterSpace
   map_add Ο† := (Ο† : WeakDual π•œ A).map_add
   map_continuous Ο† := (Ο† : WeakDual π•œ A).cont
 
--- porting note: moved because Lean 4 doesn't see the `DFunLike` instance on `characterSpace π•œ A`
+-- Porting note: moved because Lean 4 doesn't see the `DFunLike` instance on `characterSpace π•œ A`
 -- until the `ContinuousLinearMapClass` instance is declared
 @[simp, norm_cast]
 protected theorem coe_coe (Ο† : characterSpace π•œ A) : ⇑(Ο† : WeakDual π•œ A) = (Ο† : A β†’ π•œ) :=
chore(Order/*): move SupSet, Set.sUnion etc to a new file (#10232)
Diff
@@ -6,6 +6,7 @@ Authors: FrΓ©dΓ©ric Dupuis
 import Mathlib.Topology.Algebra.Module.WeakDual
 import Mathlib.Algebra.Algebra.Spectrum
 import Mathlib.Topology.ContinuousFunction.Algebra
+import Mathlib.Data.Set.Lattice
 
 #align_import topology.algebra.module.character_space from "leanprover-community/mathlib"@"a148d797a1094ab554ad4183a4ad6f130358ef64"
 
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : βˆ€ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : βˆ€ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulβ‚›β‚— and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulβ‚›β‚— successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A β†’* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulβ‚›β‚— not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulβ‚›β‚— a simp lemma instead of the generic map_smulβ‚›β‚—. Writing simp [map_smulβ‚›β‚— _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -54,10 +54,12 @@ section NonUnitalNonAssocSemiring
 variable [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ] [ContinuousConstSMul π•œ π•œ]
   [NonUnitalNonAssocSemiring A] [TopologicalSpace A] [Module π•œ A]
 
-/-- Elements of the character space are continuous linear maps. -/
-instance instContinuousLinearMapClass : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ where
+instance instFunLike : FunLike (characterSpace π•œ A) A π•œ where
   coe Ο† := ((Ο† : WeakDual π•œ A) : A β†’ π•œ)
   coe_injective' Ο† ψ h := by ext1; apply DFunLike.ext; exact congr_fun h
+
+/-- Elements of the character space are continuous linear maps. -/
+instance instContinuousLinearMapClass : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ where
   map_smulβ‚›β‚— Ο† := (Ο† : WeakDual π•œ A).map_smul
   map_add Ο† := (Ο† : WeakDual π•œ A).map_add
   map_continuous Ο† := (Ο† : WeakDual π•œ A).cont
@@ -87,7 +89,7 @@ theorem coe_toCLM (Ο† : characterSpace π•œ A) : ⇑(toCLM Ο†) = Ο† :=
 /-- Elements of the character space are non-unital algebra homomorphisms. -/
 instance instNonUnitalAlgHomClass : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
   { CharacterSpace.instContinuousLinearMapClass with
-    map_smul := fun Ο† => map_smul Ο†
+    map_smul := fun Ο† => map_smulβ‚›β‚— Ο†
     map_zero := fun Ο† => map_zero Ο†
     map_mul := fun Ο† => Ο†.prop.2 }
 
fix: Clm -> CLM, Cle -> CLE (#10018)

Rename

  • Complex.equivRealProdClm β†’ Complex.equivRealProdCLM;
    • TODO: should this one use CLE?
  • Complex.reClm β†’ Complex.reCLM;
  • Complex.imClm β†’ Complex.imCLM;
  • Complex.conjLie β†’ Complex.conjLIE;
  • Complex.conjCle β†’ Complex.conjCLE;
  • Complex.ofRealLi β†’ Complex.ofRealLI;
  • Complex.ofRealClm β†’ Complex.ofRealCLM;
  • fderivInnerClm β†’ fderivInnerCLM;
  • LinearPMap.adjointDomainMkClm β†’ LinearPMap.adjointDomainMkCLM;
  • LinearPMap.adjointDomainMkClmExtend β†’ LinearPMap.adjointDomainMkCLMExtend;
  • IsROrC.reClm β†’ IsROrC.reCLM;
  • IsROrC.imClm β†’ IsROrC.imCLM;
  • IsROrC.conjLie β†’ IsROrC.conjLIE;
  • IsROrC.conjCle β†’ IsROrC.conjCLE;
  • IsROrC.ofRealLi β†’ IsROrC.ofRealLI;
  • IsROrC.ofRealClm β†’ IsROrC.ofRealCLM;
  • MeasureTheory.condexpL1Clm β†’ MeasureTheory.condexpL1CLM;
  • algebraMapClm β†’ algebraMapCLM;
  • WeakDual.CharacterSpace.toClm β†’ WeakDual.CharacterSpace.toCLM;
  • BoundedContinuousFunction.evalClm β†’ BoundedContinuousFunction.evalCLM;
  • ContinuousMap.evalClm β†’ ContinuousMap.evalCLM;
  • TrivSqZeroExt.fstClm β†’ TrivSqZeroExt.fstClm;
  • TrivSqZeroExt.sndClm β†’ TrivSqZeroExt.sndCLM;
  • TrivSqZeroExt.inlClm β†’ TrivSqZeroExt.inlCLM;
  • TrivSqZeroExt.inrClm β†’ TrivSqZeroExt.inrCLM

and related theorems.

Diff
@@ -23,7 +23,7 @@ C⋆-algebras.
 
 We define `WeakDual.characterSpace π•œ A` as a subset of the weak dual, which automatically puts the
 correct topology on the space. We then define `WeakDual.CharacterSpace.toAlgHom` which provides the
-algebra homomorphism corresponding to any element. We also provide `WeakDual.CharacterSpace.toClm`
+algebra homomorphism corresponding to any element. We also provide `WeakDual.CharacterSpace.toCLM`
 which provides the element as a continuous linear map. (Even though `WeakDual π•œ A` is a type copy of
 `A β†’L[π•œ] π•œ`, this is often more convenient.)
 
@@ -75,14 +75,14 @@ theorem ext {Ο† ψ : characterSpace π•œ A} (h : βˆ€ x, Ο† x = ψ x) : Ο† = ψ :
 #align weak_dual.character_space.ext WeakDual.CharacterSpace.ext
 
 /-- An element of the character space, as a continuous linear map. -/
-def toClm (Ο† : characterSpace π•œ A) : A β†’L[π•œ] π•œ :=
+def toCLM (Ο† : characterSpace π•œ A) : A β†’L[π•œ] π•œ :=
   (Ο† : WeakDual π•œ A)
-#align weak_dual.character_space.to_clm WeakDual.CharacterSpace.toClm
+#align weak_dual.character_space.to_clm WeakDual.CharacterSpace.toCLM
 
 @[simp]
-theorem coe_toClm (Ο† : characterSpace π•œ A) : ⇑(toClm Ο†) = Ο† :=
+theorem coe_toCLM (Ο† : characterSpace π•œ A) : ⇑(toCLM Ο†) = Ο† :=
   rfl
-#align weak_dual.character_space.coe_to_clm WeakDual.CharacterSpace.coe_toClm
+#align weak_dual.character_space.coe_to_clm WeakDual.CharacterSpace.coe_toCLM
 
 /-- Elements of the character space are non-unital algebra homomorphisms. -/
 instance instNonUnitalAlgHomClass : NonUnitalAlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
chore(*): rename FunLike to DFunLike (#9785)

This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.

This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:

sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean     
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean

Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -57,12 +57,12 @@ variable [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ] [Conti
 /-- Elements of the character space are continuous linear maps. -/
 instance instContinuousLinearMapClass : ContinuousLinearMapClass (characterSpace π•œ A) π•œ A π•œ where
   coe Ο† := ((Ο† : WeakDual π•œ A) : A β†’ π•œ)
-  coe_injective' Ο† ψ h := by ext1; apply FunLike.ext; exact congr_fun h
+  coe_injective' Ο† ψ h := by ext1; apply DFunLike.ext; exact congr_fun h
   map_smulβ‚›β‚— Ο† := (Ο† : WeakDual π•œ A).map_smul
   map_add Ο† := (Ο† : WeakDual π•œ A).map_add
   map_continuous Ο† := (Ο† : WeakDual π•œ A).cont
 
--- porting note: moved because Lean 4 doesn't see the `FunLike` instance on `characterSpace π•œ A`
+-- porting note: moved because Lean 4 doesn't see the `DFunLike` instance on `characterSpace π•œ A`
 -- until the `ContinuousLinearMapClass` instance is declared
 @[simp, norm_cast]
 protected theorem coe_coe (Ο† : characterSpace π•œ A) : ⇑(Ο† : WeakDual π•œ A) = (Ο† : A β†’ π•œ) :=
@@ -71,7 +71,7 @@ protected theorem coe_coe (Ο† : characterSpace π•œ A) : ⇑(Ο† : WeakDual π•œ
 
 @[ext]
 theorem ext {Ο† ψ : characterSpace π•œ A} (h : βˆ€ x, Ο† x = ψ x) : Ο† = ψ :=
-  FunLike.ext _ _ h
+  DFunLike.ext _ _ h
 #align weak_dual.character_space.ext WeakDual.CharacterSpace.ext
 
 /-- An element of the character space, as a continuous linear map. -/
chore: drop MulZeroClass. in mul_zero/zero_mul (#6682)

Search&replace MulZeroClass.mul_zero -> mul_zero, MulZeroClass.zero_mul -> zero_mul.

These were introduced by Mathport, as the full name of mul_zero is actually MulZeroClass.mul_zero (it's exported with the short name).

Diff
@@ -143,7 +143,7 @@ instance instAlgHomClass : AlgHomClass (characterSpace π•œ A) π•œ A π•œ :=
   haveI map_one' : βˆ€ Ο† : characterSpace π•œ A, Ο† 1 = 1 := fun Ο† => by
     have h₁ : Ο† 1 * (1 - Ο† 1) = 0 := by rw [mul_sub, sub_eq_zero, mul_one, ← map_mul Ο†, one_mul]
     rcases mul_eq_zero.mp h₁ with (hβ‚‚ | hβ‚‚)
-    Β· have : βˆ€ a, Ο† (a * 1) = 0 := fun a => by simp only [map_mul Ο†, hβ‚‚, MulZeroClass.mul_zero]
+    Β· have : βˆ€ a, Ο† (a * 1) = 0 := fun a => by simp only [map_mul Ο†, hβ‚‚, mul_zero]
       exact False.elim (Ο†.prop.1 <| ContinuousLinearMap.ext <| by simpa only [mul_one] using this)
     Β· exact (sub_eq_zero.mp hβ‚‚).symm
   { CharacterSpace.instNonUnitalAlgHomClass with
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -38,12 +38,12 @@ namespace WeakDual
 
 /-- The character space of a topological algebra is the subset of elements of the weak dual that
 are also algebra homomorphisms. -/
-def characterSpace (π•œ : Type _) (A : Type _) [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ]
+def characterSpace (π•œ : Type*) (A : Type*) [CommSemiring π•œ] [TopologicalSpace π•œ] [ContinuousAdd π•œ]
     [ContinuousConstSMul π•œ π•œ] [NonUnitalNonAssocSemiring A] [TopologicalSpace A] [Module π•œ A] :=
   {Ο† : WeakDual π•œ A | Ο† β‰  0 ∧ βˆ€ x y : A, Ο† (x * y) = Ο† x * Ο† y}
 #align weak_dual.character_space WeakDual.characterSpace
 
-variable {π•œ : Type _} {A : Type _}
+variable {π•œ : Type*} {A : Type*}
 
 -- porting note: even though the capitalization of the namespace differs, it doesn't matter
 -- because there is no dot notation since `characterSpace` is only a type via `CoeSort`.
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 FrΓ©dΓ©ric Dupuis. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: FrΓ©dΓ©ric Dupuis
-
-! This file was ported from Lean 3 source module topology.algebra.module.character_space
-! leanprover-community/mathlib commit a148d797a1094ab554ad4183a4ad6f130358ef64
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Algebra.Module.WeakDual
 import Mathlib.Algebra.Algebra.Spectrum
 import Mathlib.Topology.ContinuousFunction.Algebra
 
+#align_import topology.algebra.module.character_space from "leanprover-community/mathlib"@"a148d797a1094ab554ad4183a4ad6f130358ef64"
+
 /-!
 # Character space of a topological algebra
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -109,7 +109,7 @@ theorem coe_toNonUnitalAlgHom (Ο† : characterSpace π•œ A) : ⇑(toNonUnitalAlgH
 #align weak_dual.character_space.coe_to_non_unital_alg_hom WeakDual.CharacterSpace.coe_toNonUnitalAlgHom
 
 instance instIsEmpty [Subsingleton A] : IsEmpty (characterSpace π•œ A) :=
-  ⟨fun Ο† =>  Ο†.prop.1 <|
+  ⟨fun Ο† => Ο†.prop.1 <|
     ContinuousLinearMap.ext fun x => by
       rw [show x = 0 from Subsingleton.elim x 0, map_zero, map_zero] ⟩
 
chore: tidy various files (#5355)
Diff
@@ -25,10 +25,10 @@ C⋆-algebras.
 ## Implementation notes
 
 We define `WeakDual.characterSpace π•œ A` as a subset of the weak dual, which automatically puts the
-correct topology on the space. We then define `to_alg_hom` which provides the algebra homomorphism
-corresponding to any element. We also provide `to_clm` which provides the element as a
-continuous linear map. (Even though `WeakDual π•œ A` is a type copy of `A β†’L[π•œ] π•œ`, this is
-often more convenient.)
+correct topology on the space. We then define `WeakDual.CharacterSpace.toAlgHom` which provides the
+algebra homomorphism corresponding to any element. We also provide `WeakDual.CharacterSpace.toClm`
+which provides the element as a continuous linear map. (Even though `WeakDual π•œ A` is a type copy of
+`A β†’L[π•œ] π•œ`, this is often more convenient.)
 
 ## Tags
 
@@ -200,7 +200,7 @@ theorem ext_ker {Ο† ψ : characterSpace π•œ A} (h : RingHom.ker Ο† = RingHom.ke
   ext x
   have : x - algebraMap π•œ A (ψ x) ∈ RingHom.ker Ο† := by
     simpa only [h, RingHom.mem_ker, map_sub, AlgHomClass.commutes] using sub_self (ψ x)
-  Β· rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this
+  rwa [RingHom.mem_ker, map_sub, AlgHomClass.commutes, sub_eq_zero] at this
 #align weak_dual.character_space.ext_ker WeakDual.CharacterSpace.ext_ker
 
 end Ring
chore: fix grammar 3/3 (#5003)

Part 3 of #5001

Diff
@@ -94,7 +94,7 @@ instance instNonUnitalAlgHomClass : NonUnitalAlgHomClass (characterSpace π•œ A)
     map_zero := fun Ο† => map_zero Ο†
     map_mul := fun Ο† => Ο†.prop.2 }
 
-/-- An element of the character space, as an non-unital algebra homomorphism. -/
+/-- An element of the character space, as a non-unital algebra homomorphism. -/
 def toNonUnitalAlgHom (Ο† : characterSpace π•œ A) : A →ₙₐ[π•œ] π•œ where
   toFun := (Ο† : A β†’ π•œ)
   map_mul' := map_mul Ο†
feat: port Topology.Algebra.Module.CharacterSpace (#4819)

Dependencies 9 + 557

558 files ported (98.4%)
243109 lines ported (98.0%)
Show graph

The unported dependencies are