analysis.inner_product_space.dualMathlib.Analysis.InnerProductSpace.Dual

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -48,11 +48,11 @@ universe u v
 
 namespace InnerProductSpace
 
-open IsROrC ContinuousLinearMap
+open RCLike ContinuousLinearMap
 
 variable (𝕜 : Type _)
 
-variable (E : Type _) [IsROrC 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
+variable (E : Type _) [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
 
 local notation "⟪" x ", " y "⟫" => @inner 𝕜 E _ x y
 
Diff
@@ -126,13 +126,13 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
       by_cases htriv : Y = ⊤
       · have hℓ : ℓ = 0 := by
           have h' := linear_map.ker_eq_top.mp htriv
-          rw [← coe_zero] at h' 
+          rw [← coe_zero] at h'
           apply coe_injective
           exact h'
         exact ⟨0, by simp [hℓ]⟩
-      · rw [← Submodule.orthogonal_eq_bot_iff] at htriv 
-        change Yᗮ ≠ ⊥ at htriv 
-        rw [Submodule.ne_bot_iff] at htriv 
+      · rw [← Submodule.orthogonal_eq_bot_iff] at htriv
+        change Yᗮ ≠ ⊥ at htriv
+        rw [Submodule.ne_bot_iff] at htriv
         obtain ⟨z : E, hz : z ∈ Yᗮ, z_ne_0 : z ≠ 0⟩ := htriv
         refine' ⟨(ℓ z† / ⟪z, z⟫) • z, _⟩
         ext x
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2020 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.Analysis.InnerProductSpace.Projection
-import Mathbin.Analysis.NormedSpace.Dual
-import Mathbin.Analysis.NormedSpace.Star.Basic
+import Analysis.InnerProductSpace.Projection
+import Analysis.NormedSpace.Dual
+import Analysis.NormedSpace.Star.Basic
 
 #align_import analysis.inner_product_space.dual from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2020 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 analysis.inner_product_space.dual
-! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.InnerProductSpace.Projection
 import Mathbin.Analysis.NormedSpace.Dual
 import Mathbin.Analysis.NormedSpace.Star.Basic
 
+#align_import analysis.inner_product_space.dual from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
+
 /-!
 # The Fréchet-Riesz representation theorem
 
Diff
@@ -57,10 +57,8 @@ variable (𝕜 : Type _)
 
 variable (E : Type _) [IsROrC 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
 
--- mathport name: «expr⟪ , ⟫»
 local notation "⟪" x ", " y "⟫" => @inner 𝕜 E _ x y
 
--- mathport name: «expr †»
 local postfix:90 "†" => starRingEnd _
 
 #print InnerProductSpace.toDualMap /-
@@ -77,17 +75,22 @@ def toDualMap : E →ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
 
 variable {E}
 
+#print InnerProductSpace.toDualMap_apply /-
 @[simp]
 theorem toDualMap_apply {x y : E} : toDualMap 𝕜 E x y = ⟪x, y⟫ :=
   rfl
 #align inner_product_space.to_dual_map_apply InnerProductSpace.toDualMap_apply
+-/
 
+#print InnerProductSpace.innerSL_norm /-
 theorem innerSL_norm [Nontrivial E] : ‖(innerSL 𝕜 : E →L⋆[𝕜] E →L[𝕜] 𝕜)‖ = 1 :=
   show ‖(toDualMap 𝕜 E).toContinuousLinearMap‖ = 1 from LinearIsometry.norm_toContinuousLinearMap _
 #align inner_product_space.innerSL_norm InnerProductSpace.innerSL_norm
+-/
 
 variable {𝕜}
 
+#print InnerProductSpace.ext_inner_left_basis /-
 theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪b i, x⟫ = ⟪b i, y⟫) : x = y :=
   by
@@ -99,7 +102,9 @@ theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
   nth_rw_rhs 1 [← inner_conj_symm]
   exact congr_arg conj (h i)
 #align inner_product_space.ext_inner_left_basis InnerProductSpace.ext_inner_left_basis
+-/
 
+#print InnerProductSpace.ext_inner_right_basis /-
 theorem ext_inner_right_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪x, b i⟫ = ⟪y, b i⟫) : x = y :=
   by
@@ -108,6 +113,7 @@ theorem ext_inner_right_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
   nth_rw_rhs 1 [← inner_conj_symm]
   exact congr_arg conj (h i)
 #align inner_product_space.ext_inner_right_basis InnerProductSpace.ext_inner_right_basis
+-/
 
 variable (𝕜) (E) [CompleteSpace E]
 
@@ -157,17 +163,21 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
 
 variable {𝕜} {E}
 
+#print InnerProductSpace.toDual_apply /-
 @[simp]
 theorem toDual_apply {x y : E} : toDual 𝕜 E x y = ⟪x, y⟫ :=
   rfl
 #align inner_product_space.to_dual_apply InnerProductSpace.toDual_apply
+-/
 
+#print InnerProductSpace.toDual_symm_apply /-
 @[simp]
 theorem toDual_symm_apply {x : E} {y : NormedSpace.Dual 𝕜 E} : ⟪(toDual 𝕜 E).symm y, x⟫ = y x :=
   by
   rw [← to_dual_apply]
   simp only [LinearIsometryEquiv.apply_symm_apply]
 #align inner_product_space.to_dual_symm_apply InnerProductSpace.toDual_symm_apply
+-/
 
 variable {E 𝕜}
 
@@ -181,16 +191,18 @@ def continuousLinearMapOfBilin (B : E →L⋆[𝕜] E →L[𝕜] 𝕜) : E →L[
 #align inner_product_space.continuous_linear_map_of_bilin InnerProductSpace.continuousLinearMapOfBilin
 -/
 
--- mathport name: «expr ♯»
 local postfix:1024 "♯" => continuousLinearMapOfBilin
 
 variable (B : E →L⋆[𝕜] E →L[𝕜] 𝕜)
 
+#print InnerProductSpace.continuousLinearMapOfBilin_apply /-
 @[simp]
 theorem continuousLinearMapOfBilin_apply (v w : E) : ⟪B♯ v, w⟫ = B v w := by
   simp [continuous_linear_map_of_bilin]
 #align inner_product_space.continuous_linear_map_of_bilin_apply InnerProductSpace.continuousLinearMapOfBilin_apply
+-/
 
+#print InnerProductSpace.unique_continuousLinearMapOfBilin /-
 theorem unique_continuousLinearMapOfBilin {v f : E} (is_lax_milgram : ∀ w, ⟪f, w⟫ = B v w) :
     f = B♯ v := by
   refine' ext_inner_right 𝕜 _
@@ -198,6 +210,7 @@ theorem unique_continuousLinearMapOfBilin {v f : E} (is_lax_milgram : ∀ w, ⟪
   rw [continuous_linear_map_of_bilin_apply]
   exact is_lax_milgram w
 #align inner_product_space.unique_continuous_linear_map_of_bilin InnerProductSpace.unique_continuousLinearMapOfBilin
+-/
 
 end InnerProductSpace
 
Diff
@@ -144,7 +144,6 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
               0 = ⟪z, ℓ z • x - ℓ x • z⟫ := by rw [(Y.mem_orthogonal' z).mp hz]; exact h₁
               _ = ⟪z, ℓ z • x⟫ - ⟪z, ℓ x • z⟫ := by rw [inner_sub_right]
               _ = ℓ z * ⟪z, x⟫ - ℓ x * ⟪z, z⟫ := by simp [inner_smul_right]
-              
           sub_eq_zero.mp (Eq.symm h₃)
         have h₄ :=
           calc
@@ -152,7 +151,6 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
             _ = ℓ z * ⟪z, x⟫ / ⟪z, z⟫ := by rw [← div_mul_eq_mul_div]
             _ = ℓ x * ⟪z, z⟫ / ⟪z, z⟫ := by rw [h₂]
             _ = ℓ x := by field_simp [inner_self_ne_zero.2 z_ne_0]
-            
         exact h₄)
 #align inner_product_space.to_dual InnerProductSpace.toDual
 -/
Diff
@@ -123,13 +123,13 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
       by_cases htriv : Y = ⊤
       · have hℓ : ℓ = 0 := by
           have h' := linear_map.ker_eq_top.mp htriv
-          rw [← coe_zero] at h'
+          rw [← coe_zero] at h' 
           apply coe_injective
           exact h'
         exact ⟨0, by simp [hℓ]⟩
-      · rw [← Submodule.orthogonal_eq_bot_iff] at htriv
-        change Yᗮ ≠ ⊥ at htriv
-        rw [Submodule.ne_bot_iff] at htriv
+      · rw [← Submodule.orthogonal_eq_bot_iff] at htriv 
+        change Yᗮ ≠ ⊥ at htriv 
+        rw [Submodule.ne_bot_iff] at htriv 
         obtain ⟨z : E, hz : z ∈ Yᗮ, z_ne_0 : z ≠ 0⟩ := htriv
         refine' ⟨(ℓ z† / ⟪z, z⟫) • z, _⟩
         ext x
Diff
@@ -45,7 +45,7 @@ dual, Fréchet-Riesz
 
 noncomputable section
 
-open Classical ComplexConjugate
+open scoped Classical ComplexConjugate
 
 universe u v
 
Diff
@@ -77,26 +77,17 @@ def toDualMap : E →ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
 
 variable {E}
 
-/- warning: inner_product_space.to_dual_map_apply -> InnerProductSpace.toDualMap_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.to_dual_map_apply InnerProductSpace.toDualMap_applyₓ'. -/
 @[simp]
 theorem toDualMap_apply {x y : E} : toDualMap 𝕜 E x y = ⟪x, y⟫ :=
   rfl
 #align inner_product_space.to_dual_map_apply InnerProductSpace.toDualMap_apply
 
-/- warning: inner_product_space.innerSL_norm -> InnerProductSpace.innerSL_norm is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.innerSL_norm InnerProductSpace.innerSL_normₓ'. -/
 theorem innerSL_norm [Nontrivial E] : ‖(innerSL 𝕜 : E →L⋆[𝕜] E →L[𝕜] 𝕜)‖ = 1 :=
   show ‖(toDualMap 𝕜 E).toContinuousLinearMap‖ = 1 from LinearIsometry.norm_toContinuousLinearMap _
 #align inner_product_space.innerSL_norm InnerProductSpace.innerSL_norm
 
 variable {𝕜}
 
-/- warning: inner_product_space.ext_inner_left_basis -> InnerProductSpace.ext_inner_left_basis is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.ext_inner_left_basis InnerProductSpace.ext_inner_left_basisₓ'. -/
 theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪b i, x⟫ = ⟪b i, y⟫) : x = y :=
   by
@@ -109,9 +100,6 @@ theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
   exact congr_arg conj (h i)
 #align inner_product_space.ext_inner_left_basis InnerProductSpace.ext_inner_left_basis
 
-/- warning: inner_product_space.ext_inner_right_basis -> InnerProductSpace.ext_inner_right_basis is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.ext_inner_right_basis InnerProductSpace.ext_inner_right_basisₓ'. -/
 theorem ext_inner_right_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪x, b i⟫ = ⟪y, b i⟫) : x = y :=
   by
@@ -171,17 +159,11 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
 
 variable {𝕜} {E}
 
-/- warning: inner_product_space.to_dual_apply -> InnerProductSpace.toDual_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.to_dual_apply InnerProductSpace.toDual_applyₓ'. -/
 @[simp]
 theorem toDual_apply {x y : E} : toDual 𝕜 E x y = ⟪x, y⟫ :=
   rfl
 #align inner_product_space.to_dual_apply InnerProductSpace.toDual_apply
 
-/- warning: inner_product_space.to_dual_symm_apply -> InnerProductSpace.toDual_symm_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.to_dual_symm_apply InnerProductSpace.toDual_symm_applyₓ'. -/
 @[simp]
 theorem toDual_symm_apply {x : E} {y : NormedSpace.Dual 𝕜 E} : ⟪(toDual 𝕜 E).symm y, x⟫ = y x :=
   by
@@ -206,17 +188,11 @@ local postfix:1024 "♯" => continuousLinearMapOfBilin
 
 variable (B : E →L⋆[𝕜] E →L[𝕜] 𝕜)
 
-/- warning: inner_product_space.continuous_linear_map_of_bilin_apply -> InnerProductSpace.continuousLinearMapOfBilin_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.continuous_linear_map_of_bilin_apply InnerProductSpace.continuousLinearMapOfBilin_applyₓ'. -/
 @[simp]
 theorem continuousLinearMapOfBilin_apply (v w : E) : ⟪B♯ v, w⟫ = B v w := by
   simp [continuous_linear_map_of_bilin]
 #align inner_product_space.continuous_linear_map_of_bilin_apply InnerProductSpace.continuousLinearMapOfBilin_apply
 
-/- warning: inner_product_space.unique_continuous_linear_map_of_bilin -> InnerProductSpace.unique_continuousLinearMapOfBilin is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align inner_product_space.unique_continuous_linear_map_of_bilin InnerProductSpace.unique_continuousLinearMapOfBilinₓ'. -/
 theorem unique_continuousLinearMapOfBilin {v f : E} (is_lax_milgram : ∀ w, ⟪f, w⟫ = B v w) :
     f = B♯ v := by
   refine' ext_inner_right 𝕜 _
Diff
@@ -153,10 +153,7 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
         have h₂ : ℓ z * ⟪z, x⟫ = ℓ x * ⟪z, z⟫ :=
           haveI h₃ :=
             calc
-              0 = ⟪z, ℓ z • x - ℓ x • z⟫ :=
-                by
-                rw [(Y.mem_orthogonal' z).mp hz]
-                exact h₁
+              0 = ⟪z, ℓ z • x - ℓ x • z⟫ := by rw [(Y.mem_orthogonal' z).mp hz]; exact h₁
               _ = ⟪z, ℓ z • x⟫ - ⟪z, ℓ x • z⟫ := by rw [inner_sub_right]
               _ = ℓ z * ⟪z, x⟫ - ℓ x * ⟪z, z⟫ := by simp [inner_smul_right]
               
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 analysis.inner_product_space.dual
-! leanprover-community/mathlib commit 46b633fd842bef9469441c0209906f6dddd2b4f5
+! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Analysis.NormedSpace.Star.Basic
 /-!
 # The Fréchet-Riesz representation theorem
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We consider an inner product space `E` over `𝕜`, which is either `ℝ` or `ℂ`. We define
 `to_dual_map`, a conjugate-linear isometric embedding of `E` into its dual, which maps an element
 `x` of the space to `λ y, ⟪x, y⟫`.
@@ -60,6 +63,7 @@ local notation "⟪" x ", " y "⟫" => @inner 𝕜 E _ x y
 -- mathport name: «expr †»
 local postfix:90 "†" => starRingEnd _
 
+#print InnerProductSpace.toDualMap /-
 /-- An element `x` of an inner product space `E` induces an element of the dual space `dual 𝕜 E`,
 the map `λ y, ⟪x, y⟫`; moreover this operation is a conjugate-linear isometric embedding of `E`
 into `dual 𝕜 E`.
@@ -69,20 +73,30 @@ see `to_dual`.
 def toDualMap : E →ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
   { innerSL 𝕜 with norm_map' := innerSL_apply_norm _ }
 #align inner_product_space.to_dual_map InnerProductSpace.toDualMap
+-/
 
 variable {E}
 
+/- warning: inner_product_space.to_dual_map_apply -> InnerProductSpace.toDualMap_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.to_dual_map_apply InnerProductSpace.toDualMap_applyₓ'. -/
 @[simp]
 theorem toDualMap_apply {x y : E} : toDualMap 𝕜 E x y = ⟪x, y⟫ :=
   rfl
 #align inner_product_space.to_dual_map_apply InnerProductSpace.toDualMap_apply
 
+/- warning: inner_product_space.innerSL_norm -> InnerProductSpace.innerSL_norm is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.innerSL_norm InnerProductSpace.innerSL_normₓ'. -/
 theorem innerSL_norm [Nontrivial E] : ‖(innerSL 𝕜 : E →L⋆[𝕜] E →L[𝕜] 𝕜)‖ = 1 :=
   show ‖(toDualMap 𝕜 E).toContinuousLinearMap‖ = 1 from LinearIsometry.norm_toContinuousLinearMap _
 #align inner_product_space.innerSL_norm InnerProductSpace.innerSL_norm
 
 variable {𝕜}
 
+/- warning: inner_product_space.ext_inner_left_basis -> InnerProductSpace.ext_inner_left_basis is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.ext_inner_left_basis InnerProductSpace.ext_inner_left_basisₓ'. -/
 theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪b i, x⟫ = ⟪b i, y⟫) : x = y :=
   by
@@ -95,6 +109,9 @@ theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
   exact congr_arg conj (h i)
 #align inner_product_space.ext_inner_left_basis InnerProductSpace.ext_inner_left_basis
 
+/- warning: inner_product_space.ext_inner_right_basis -> InnerProductSpace.ext_inner_right_basis is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.ext_inner_right_basis InnerProductSpace.ext_inner_right_basisₓ'. -/
 theorem ext_inner_right_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪x, b i⟫ = ⟪y, b i⟫) : x = y :=
   by
@@ -106,6 +123,7 @@ theorem ext_inner_right_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
 
 variable (𝕜) (E) [CompleteSpace E]
 
+#print InnerProductSpace.toDual /-
 /-- Fréchet-Riesz representation: any `ℓ` in the dual of a Hilbert space `E` is of the form
 `λ u, ⟪y, u⟫` for some `y : E`, i.e. `to_dual_map` is surjective.
 -/
@@ -152,14 +170,21 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
             
         exact h₄)
 #align inner_product_space.to_dual InnerProductSpace.toDual
+-/
 
 variable {𝕜} {E}
 
+/- warning: inner_product_space.to_dual_apply -> InnerProductSpace.toDual_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.to_dual_apply InnerProductSpace.toDual_applyₓ'. -/
 @[simp]
 theorem toDual_apply {x y : E} : toDual 𝕜 E x y = ⟪x, y⟫ :=
   rfl
 #align inner_product_space.to_dual_apply InnerProductSpace.toDual_apply
 
+/- warning: inner_product_space.to_dual_symm_apply -> InnerProductSpace.toDual_symm_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.to_dual_symm_apply InnerProductSpace.toDual_symm_applyₓ'. -/
 @[simp]
 theorem toDual_symm_apply {x : E} {y : NormedSpace.Dual 𝕜 E} : ⟪(toDual 𝕜 E).symm y, x⟫ = y x :=
   by
@@ -169,6 +194,7 @@ theorem toDual_symm_apply {x : E} {y : NormedSpace.Dual 𝕜 E} : ⟪(toDual 
 
 variable {E 𝕜}
 
+#print InnerProductSpace.continuousLinearMapOfBilin /-
 /-- Maps a bounded sesquilinear form to its continuous linear map,
 given by interpreting the form as a map `B : E →L⋆[𝕜] normed_space.dual 𝕜 E`
 and dualizing the result using `to_dual`.
@@ -176,17 +202,24 @@ and dualizing the result using `to_dual`.
 def continuousLinearMapOfBilin (B : E →L⋆[𝕜] E →L[𝕜] 𝕜) : E →L[𝕜] E :=
   comp (toDual 𝕜 E).symm.toContinuousLinearEquiv.toContinuousLinearMap B
 #align inner_product_space.continuous_linear_map_of_bilin InnerProductSpace.continuousLinearMapOfBilin
+-/
 
 -- mathport name: «expr ♯»
 local postfix:1024 "♯" => continuousLinearMapOfBilin
 
 variable (B : E →L⋆[𝕜] E →L[𝕜] 𝕜)
 
+/- warning: inner_product_space.continuous_linear_map_of_bilin_apply -> InnerProductSpace.continuousLinearMapOfBilin_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.continuous_linear_map_of_bilin_apply InnerProductSpace.continuousLinearMapOfBilin_applyₓ'. -/
 @[simp]
 theorem continuousLinearMapOfBilin_apply (v w : E) : ⟪B♯ v, w⟫ = B v w := by
   simp [continuous_linear_map_of_bilin]
 #align inner_product_space.continuous_linear_map_of_bilin_apply InnerProductSpace.continuousLinearMapOfBilin_apply
 
+/- warning: inner_product_space.unique_continuous_linear_map_of_bilin -> InnerProductSpace.unique_continuousLinearMapOfBilin is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align inner_product_space.unique_continuous_linear_map_of_bilin InnerProductSpace.unique_continuousLinearMapOfBilinₓ'. -/
 theorem unique_continuousLinearMapOfBilin {v f : E} (is_lax_milgram : ∀ w, ⟪f, w⟫ = B v w) :
     f = B♯ v := by
   refine' ext_inner_right 𝕜 _
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 analysis.inner_product_space.dual
-! leanprover-community/mathlib commit c78cad350eb321c81e1eacf68d14e3d3ba1e17f7
+! leanprover-community/mathlib commit 46b633fd842bef9469441c0209906f6dddd2b4f5
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -52,7 +52,7 @@ open IsROrC ContinuousLinearMap
 
 variable (𝕜 : Type _)
 
-variable (E : Type _) [IsROrC 𝕜] [InnerProductSpace 𝕜 E]
+variable (E : Type _) [IsROrC 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
 
 -- mathport name: «expr⟪ , ⟫»
 local notation "⟪" x ", " y "⟫" => @inner 𝕜 E _ x y
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 analysis.inner_product_space.dual
-! leanprover-community/mathlib commit a37865088599172dc923253bb7b31998297d9c8a
+! leanprover-community/mathlib commit c78cad350eb321c81e1eacf68d14e3d3ba1e17f7
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -67,7 +67,7 @@ If `E` is complete, this operation is surjective, hence a conjugate-linear isome
 see `to_dual`.
 -/
 def toDualMap : E →ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
-  { innerSL with norm_map' := fun _ => innerSL_apply_norm }
+  { innerSL 𝕜 with norm_map' := innerSL_apply_norm _ }
 #align inner_product_space.to_dual_map InnerProductSpace.toDualMap
 
 variable {E}
@@ -77,7 +77,7 @@ theorem toDualMap_apply {x y : E} : toDualMap 𝕜 E x y = ⟪x, y⟫ :=
   rfl
 #align inner_product_space.to_dual_map_apply InnerProductSpace.toDualMap_apply
 
-theorem innerSL_norm [Nontrivial E] : ‖(innerSL : E →L⋆[𝕜] E →L[𝕜] 𝕜)‖ = 1 :=
+theorem innerSL_norm [Nontrivial E] : ‖(innerSL 𝕜 : E →L⋆[𝕜] E →L[𝕜] 𝕜)‖ = 1 :=
   show ‖(toDualMap 𝕜 E).toContinuousLinearMap‖ = 1 from LinearIsometry.norm_toContinuousLinearMap _
 #align inner_product_space.innerSL_norm InnerProductSpace.innerSL_norm
 
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 analysis.inner_product_space.dual
-! leanprover-community/mathlib commit 3fc0b254310908f70a1a75f01147d52e53e9f8a2
+! leanprover-community/mathlib commit a37865088599172dc923253bb7b31998297d9c8a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -148,12 +148,7 @@ def toDual : E ≃ₗᵢ⋆[𝕜] NormedSpace.Dual 𝕜 E :=
             ⟪(ℓ z† / ⟪z, z⟫) • z, x⟫ = ℓ z / ⟪z, z⟫ * ⟪z, x⟫ := by simp [inner_smul_left, conj_conj]
             _ = ℓ z * ⟪z, x⟫ / ⟪z, z⟫ := by rw [← div_mul_eq_mul_div]
             _ = ℓ x * ⟪z, z⟫ / ⟪z, z⟫ := by rw [h₂]
-            _ = ℓ x :=
-              by
-              have : ⟪z, z⟫ ≠ 0 := by
-                change z = 0 → False at z_ne_0
-                rwa [← inner_self_eq_zero] at z_ne_0
-              field_simp [this]
+            _ = ℓ x := by field_simp [inner_self_ne_zero.2 z_ne_0]
             
         exact h₄)
 #align inner_product_space.to_dual InnerProductSpace.toDual
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 analysis.inner_product_space.dual
-! leanprover-community/mathlib commit a148d797a1094ab554ad4183a4ad6f130358ef64
+! leanprover-community/mathlib commit 3fc0b254310908f70a1a75f01147d52e53e9f8a2
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -90,8 +90,8 @@ theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
   refine' (Function.Injective.eq_iff ContinuousLinearMap.coe_injective).mp (Basis.ext b _)
   intro i
   simp only [to_dual_map_apply, ContinuousLinearMap.coe_coe]
-  rw [← inner_conj_sym]
-  nth_rw_rhs 1 [← inner_conj_sym]
+  rw [← inner_conj_symm]
+  nth_rw_rhs 1 [← inner_conj_symm]
   exact congr_arg conj (h i)
 #align inner_product_space.ext_inner_left_basis InnerProductSpace.ext_inner_left_basis
 
@@ -99,8 +99,8 @@ theorem ext_inner_right_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪x, b i⟫ = ⟪y, b i⟫) : x = y :=
   by
   refine' ext_inner_left_basis b fun i => _
-  rw [← inner_conj_sym]
-  nth_rw_rhs 1 [← inner_conj_sym]
+  rw [← inner_conj_symm]
+  nth_rw_rhs 1 [← inner_conj_symm]
   exact congr_arg conj (h i)
 #align inner_product_space.ext_inner_right_basis InnerProductSpace.ext_inner_right_basis
 

Changes in mathlib4

mathlib3
mathlib4
chore: Rename IsROrC to RCLike (#10819)

IsROrC contains data, which goes against the expectation that classes prefixed with Is are prop-valued. People have been complaining about this on and off, so this PR renames IsROrC to RCLike.

Diff
@@ -46,10 +46,10 @@ universe u v
 
 namespace InnerProductSpace
 
-open IsROrC ContinuousLinearMap
+open RCLike ContinuousLinearMap
 
 variable (𝕜 : Type*)
-variable (E : Type*) [IsROrC 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
+variable (E : Type*) [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
 
 local notation "⟪" x ", " y "⟫" => @inner 𝕜 E _ x y
 
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
@@ -49,7 +49,6 @@ namespace InnerProductSpace
 open IsROrC ContinuousLinearMap
 
 variable (𝕜 : Type*)
-
 variable (E : Type*) [IsROrC 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
 
 local notation "⟪" x ", " y "⟫" => @inner 𝕜 E _ x y
@@ -101,7 +100,6 @@ theorem ext_inner_right_basis {ι : Type*} {x y : E} (b : Basis ι 𝕜 E)
 #align inner_product_space.ext_inner_right_basis InnerProductSpace.ext_inner_right_basis
 
 variable (𝕜) (E)
-
 variable [CompleteSpace E]
 
 /-- Fréchet-Riesz representation: any `ℓ` in the dual of a Hilbert space `E` is of the form
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -39,7 +39,8 @@ dual, Fréchet-Riesz
 
 noncomputable section
 
-open Classical ComplexConjugate
+open scoped Classical
+open ComplexConjugate
 
 universe u v
 
feat (NormedSpace.Dual): make Dual reducible (#6998)

Following LinearAlgebra.Dual this makes NormedSpace.Dual reducible.

Diff
@@ -174,7 +174,8 @@ variable (B : E →L⋆[𝕜] E →L[𝕜] 𝕜)
 
 @[simp]
 theorem continuousLinearMapOfBilin_apply (v w : E) : ⟪B♯ v, w⟫ = B v w := by
-  simp [continuousLinearMapOfBilin]
+  rw [continuousLinearMapOfBilin, coe_comp', ContinuousLinearEquiv.coe_coe,
+    LinearIsometryEquiv.coe_toContinuousLinearEquiv, Function.comp_apply, toDual_symm_apply]
 #align inner_product_space.continuous_linear_map_of_bilin_apply InnerProductSpace.continuousLinearMapOfBilin_apply
 
 theorem unique_continuousLinearMapOfBilin {v f : E} (is_lax_milgram : ∀ w, ⟪f, w⟫ = B v w) :
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
@@ -47,9 +47,9 @@ namespace InnerProductSpace
 
 open IsROrC ContinuousLinearMap
 
-variable (𝕜 : Type _)
+variable (𝕜 : Type*)
 
-variable (E : Type _) [IsROrC 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
+variable (E : Type*) [IsROrC 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
 
 local notation "⟪" x ", " y "⟫" => @inner 𝕜 E _ x y
 
@@ -79,7 +79,7 @@ set_option linter.uppercaseLean3 false in
 
 variable {𝕜}
 
-theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
+theorem ext_inner_left_basis {ι : Type*} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪b i, x⟫ = ⟪b i, y⟫) : x = y := by
   apply (toDualMap 𝕜 E).map_eq_iff.mp
   refine' (Function.Injective.eq_iff ContinuousLinearMap.coe_injective).mp (Basis.ext b _)
@@ -91,7 +91,7 @@ theorem ext_inner_left_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
   exact congr_arg conj (h i)
 #align inner_product_space.ext_inner_left_basis InnerProductSpace.ext_inner_left_basis
 
-theorem ext_inner_right_basis {ι : Type _} {x y : E} (b : Basis ι 𝕜 E)
+theorem ext_inner_right_basis {ι : Type*} {x y : E} (b : Basis ι 𝕜 E)
     (h : ∀ i : ι, ⟪x, b i⟫ = ⟪y, b i⟫) : x = y := by
   refine' ext_inner_left_basis b fun i => _
   rw [← inner_conj_symm]
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) 2020 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 analysis.inner_product_space.dual
-! leanprover-community/mathlib commit 46b633fd842bef9469441c0209906f6dddd2b4f5
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.InnerProductSpace.Projection
 import Mathlib.Analysis.NormedSpace.Dual
 import Mathlib.Analysis.NormedSpace.Star.Basic
 
+#align_import analysis.inner_product_space.dual from "leanprover-community/mathlib"@"46b633fd842bef9469441c0209906f6dddd2b4f5"
+
 /-!
 # The Fréchet-Riesz representation theorem
 
feat: port Analysis.InnerProductSpace.Dual (#4402)

Dependencies 12 + 874

875 files ported (98.6%)
387894 lines ported (98.6%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file