analysis.inner_product_space.lax_milgramMathlib.Analysis.InnerProductSpace.LaxMilgram

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
@@ -6,7 +6,7 @@ Authors: Daniel Roca González
 import Analysis.InnerProductSpace.Projection
 import Analysis.InnerProductSpace.Dual
 import Analysis.NormedSpace.Banach
-import Analysis.NormedSpace.OperatorNorm
+import Analysis.NormedSpace.OperatorNorm.Basic
 import Topology.MetricSpace.Antilipschitz
 
 #align_import analysis.inner_product_space.lax_milgram from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
@@ -41,7 +41,7 @@ dual, Lax-Milgram
 
 noncomputable section
 
-open IsROrC LinearMap ContinuousLinearMap InnerProductSpace
+open RCLike LinearMap ContinuousLinearMap InnerProductSpace
 
 open LinearMap (ker range)
 
Diff
@@ -95,12 +95,12 @@ theorem ker_eq_bot (coercive : IsCoercive B) : ker B♯ = ⊥ :=
 #align is_coercive.ker_eq_bot IsCoercive.ker_eq_bot
 -/
 
-#print IsCoercive.closed_range /-
-theorem closed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) :=
+#print IsCoercive.isClosed_range /-
+theorem isClosed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) :=
   by
   rcases coercive.antilipschitz with ⟨_, _, antilipschitz⟩
   exact antilipschitz.is_closed_range B♯.UniformContinuous
-#align is_coercive.closed_range IsCoercive.closed_range
+#align is_coercive.closed_range IsCoercive.isClosed_range
 -/
 
 #print IsCoercive.range_eq_top /-
Diff
@@ -3,11 +3,11 @@ Copyright (c) 2022 Daniel Roca González. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Daniel Roca González
 -/
-import Mathbin.Analysis.InnerProductSpace.Projection
-import Mathbin.Analysis.InnerProductSpace.Dual
-import Mathbin.Analysis.NormedSpace.Banach
-import Mathbin.Analysis.NormedSpace.OperatorNorm
-import Mathbin.Topology.MetricSpace.Antilipschitz
+import Analysis.InnerProductSpace.Projection
+import Analysis.InnerProductSpace.Dual
+import Analysis.NormedSpace.Banach
+import Analysis.NormedSpace.OperatorNorm
+import Topology.MetricSpace.Antilipschitz
 
 #align_import analysis.inner_product_space.lax_milgram from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
 
Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2022 Daniel Roca González. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Daniel Roca González
-
-! This file was ported from Lean 3 source module analysis.inner_product_space.lax_milgram
-! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
-! 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.InnerProductSpace.Dual
@@ -14,6 +9,8 @@ import Mathbin.Analysis.NormedSpace.Banach
 import Mathbin.Analysis.NormedSpace.OperatorNorm
 import Mathbin.Topology.MetricSpace.Antilipschitz
 
+#align_import analysis.inner_product_space.lax_milgram from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
+
 /-!
 # The Lax-Milgram Theorem
 
Diff
@@ -58,9 +58,9 @@ variable {V : Type u} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [Complete
 
 variable {B : V →L[ℝ] V →L[ℝ] ℝ}
 
--- mathport name: «expr ♯»
 local postfix:1024 "♯" => @continuousLinearMapOfBilin ℝ V _ _ _ _
 
+#print IsCoercive.bounded_below /-
 theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * ‖v‖ ≤ ‖B♯ v‖ :=
   by
   rcases coercive with ⟨C, C_ge_0, coercivity⟩
@@ -75,7 +75,9 @@ theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * 
   · have : v = 0 := by simpa using h
     simp [this]
 #align is_coercive.bounded_below IsCoercive.bounded_below
+-/
 
+#print IsCoercive.antilipschitz /-
 theorem antilipschitz (coercive : IsCoercive B) : ∃ C : ℝ≥0, 0 < C ∧ AntilipschitzWith C B♯ :=
   by
   rcases coercive.bounded_below with ⟨C, C_pos, below_bound⟩
@@ -85,13 +87,16 @@ theorem antilipschitz (coercive : IsCoercive B) : ∃ C : ℝ≥0, 0 < C ∧ Ant
     inv_mul_le_iff (inv_pos.mpr C_pos)]
   simpa using below_bound
 #align is_coercive.antilipschitz IsCoercive.antilipschitz
+-/
 
+#print IsCoercive.ker_eq_bot /-
 theorem ker_eq_bot (coercive : IsCoercive B) : ker B♯ = ⊥ :=
   by
   rw [LinearMapClass.ker_eq_bot]
   rcases coercive.antilipschitz with ⟨_, _, antilipschitz⟩
   exact antilipschitz.injective
 #align is_coercive.ker_eq_bot IsCoercive.ker_eq_bot
+-/
 
 #print IsCoercive.closed_range /-
 theorem closed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) :=
@@ -101,6 +106,7 @@ theorem closed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) :
 #align is_coercive.closed_range IsCoercive.closed_range
 -/
 
+#print IsCoercive.range_eq_top /-
 theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
   by
   haveI := coercive.closed_range.complete_space_coe
@@ -121,6 +127,7 @@ theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
     · exact mul_nonneg (mul_nonneg C_pos.le (norm_nonneg w)) (norm_nonneg w)
   exact inner_zero_left _
 #align is_coercive.range_eq_top IsCoercive.range_eq_top
+-/
 
 #print IsCoercive.continuousLinearEquivOfBilin /-
 /-- The Lax-Milgram equivalence of a coercive bounded bilinear operator:
@@ -133,16 +140,20 @@ def continuousLinearEquivOfBilin (coercive : IsCoercive B) : V ≃L[ℝ] V :=
 #align is_coercive.continuous_linear_equiv_of_bilin IsCoercive.continuousLinearEquivOfBilin
 -/
 
+#print IsCoercive.continuousLinearEquivOfBilin_apply /-
 @[simp]
 theorem continuousLinearEquivOfBilin_apply (coercive : IsCoercive B) (v w : V) :
     ⟪coercive.continuousLinearEquivOfBilin v, w⟫_ℝ = B v w :=
   continuousLinearMapOfBilin_apply ℝ B v w
 #align is_coercive.continuous_linear_equiv_of_bilin_apply IsCoercive.continuousLinearEquivOfBilin_apply
+-/
 
+#print IsCoercive.unique_continuousLinearEquivOfBilin /-
 theorem unique_continuousLinearEquivOfBilin (coercive : IsCoercive B) {v f : V}
     (is_lax_milgram : ∀ w, ⟪f, w⟫_ℝ = B v w) : f = coercive.continuousLinearEquivOfBilin v :=
   unique_continuousLinearMapOfBilin ℝ B is_lax_milgram
 #align is_coercive.unique_continuous_linear_equiv_of_bilin IsCoercive.unique_continuousLinearEquivOfBilin
+-/
 
 end IsCoercive
 
Diff
@@ -72,7 +72,6 @@ theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * 
       C * ‖v‖ * ‖v‖ ≤ B v v := coercivity v
       _ = ⟪B♯ v, v⟫_ℝ := (continuous_linear_map_of_bilin_apply ℝ B v v).symm
       _ ≤ ‖B♯ v‖ * ‖v‖ := real_inner_le_norm (B♯ v) v
-      
   · have : v = 0 := by simpa using h
     simp [this]
 #align is_coercive.bounded_below IsCoercive.bounded_below
@@ -119,7 +118,6 @@ theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
         C * ‖w‖ * ‖w‖ ≤ B w w := coercivity w
         _ = ⟪B♯ w, w⟫_ℝ := (continuous_linear_map_of_bilin_apply ℝ B w w).symm
         _ = 0 := mem_w_orthogonal _ ⟨w, rfl⟩
-        
     · exact mul_nonneg (mul_nonneg C_pos.le (norm_nonneg w)) (norm_nonneg w)
   exact inner_zero_left _
 #align is_coercive.range_eq_top IsCoercive.range_eq_top
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Daniel Roca González
 
 ! This file was ported from Lean 3 source module analysis.inner_product_space.lax_milgram
-! leanprover-community/mathlib commit 46b633fd842bef9469441c0209906f6dddd2b4f5
+! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -17,6 +17,9 @@ import Mathbin.Topology.MetricSpace.Antilipschitz
 /-!
 # The Lax-Milgram Theorem
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We consider an Hilbert space `V` over `ℝ`
 equipped with a bounded bilinear form `B : V →L[ℝ] V →L[ℝ] ℝ`.
 
Diff
@@ -45,7 +45,7 @@ open IsROrC LinearMap ContinuousLinearMap InnerProductSpace
 
 open LinearMap (ker range)
 
-open RealInnerProductSpace NNReal
+open scoped RealInnerProductSpace NNReal
 
 universe u
 
Diff
@@ -58,9 +58,6 @@ variable {B : V →L[ℝ] V →L[ℝ] ℝ}
 -- mathport name: «expr ♯»
 local postfix:1024 "♯" => @continuousLinearMapOfBilin ℝ V _ _ _ _
 
-/- warning: is_coercive.bounded_below -> IsCoercive.bounded_below is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_coercive.bounded_below IsCoercive.bounded_belowₓ'. -/
 theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * ‖v‖ ≤ ‖B♯ v‖ :=
   by
   rcases coercive with ⟨C, C_ge_0, coercivity⟩
@@ -77,9 +74,6 @@ theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * 
     simp [this]
 #align is_coercive.bounded_below IsCoercive.bounded_below
 
-/- warning: is_coercive.antilipschitz -> IsCoercive.antilipschitz is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_coercive.antilipschitz IsCoercive.antilipschitzₓ'. -/
 theorem antilipschitz (coercive : IsCoercive B) : ∃ C : ℝ≥0, 0 < C ∧ AntilipschitzWith C B♯ :=
   by
   rcases coercive.bounded_below with ⟨C, C_pos, below_bound⟩
@@ -90,9 +84,6 @@ theorem antilipschitz (coercive : IsCoercive B) : ∃ C : ℝ≥0, 0 < C ∧ Ant
   simpa using below_bound
 #align is_coercive.antilipschitz IsCoercive.antilipschitz
 
-/- warning: is_coercive.ker_eq_bot -> IsCoercive.ker_eq_bot is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_coercive.ker_eq_bot IsCoercive.ker_eq_botₓ'. -/
 theorem ker_eq_bot (coercive : IsCoercive B) : ker B♯ = ⊥ :=
   by
   rw [LinearMapClass.ker_eq_bot]
@@ -108,9 +99,6 @@ theorem closed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) :
 #align is_coercive.closed_range IsCoercive.closed_range
 -/
 
-/- warning: is_coercive.range_eq_top -> IsCoercive.range_eq_top is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_coercive.range_eq_top IsCoercive.range_eq_topₓ'. -/
 theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
   by
   haveI := coercive.closed_range.complete_space_coe
@@ -144,18 +132,12 @@ def continuousLinearEquivOfBilin (coercive : IsCoercive B) : V ≃L[ℝ] V :=
 #align is_coercive.continuous_linear_equiv_of_bilin IsCoercive.continuousLinearEquivOfBilin
 -/
 
-/- warning: is_coercive.continuous_linear_equiv_of_bilin_apply -> IsCoercive.continuousLinearEquivOfBilin_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_coercive.continuous_linear_equiv_of_bilin_apply IsCoercive.continuousLinearEquivOfBilin_applyₓ'. -/
 @[simp]
 theorem continuousLinearEquivOfBilin_apply (coercive : IsCoercive B) (v w : V) :
     ⟪coercive.continuousLinearEquivOfBilin v, w⟫_ℝ = B v w :=
   continuousLinearMapOfBilin_apply ℝ B v w
 #align is_coercive.continuous_linear_equiv_of_bilin_apply IsCoercive.continuousLinearEquivOfBilin_apply
 
-/- warning: is_coercive.unique_continuous_linear_equiv_of_bilin -> IsCoercive.unique_continuousLinearEquivOfBilin is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align is_coercive.unique_continuous_linear_equiv_of_bilin IsCoercive.unique_continuousLinearEquivOfBilinₓ'. -/
 theorem unique_continuousLinearEquivOfBilin (coercive : IsCoercive B) {v f : V}
     (is_lax_milgram : ∀ w, ⟪f, w⟫_ℝ = B v w) : f = coercive.continuousLinearEquivOfBilin v :=
   unique_continuousLinearMapOfBilin ℝ B is_lax_milgram
Diff
@@ -58,6 +58,9 @@ variable {B : V →L[ℝ] V →L[ℝ] ℝ}
 -- mathport name: «expr ♯»
 local postfix:1024 "♯" => @continuousLinearMapOfBilin ℝ V _ _ _ _
 
+/- warning: is_coercive.bounded_below -> IsCoercive.bounded_below is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align is_coercive.bounded_below IsCoercive.bounded_belowₓ'. -/
 theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * ‖v‖ ≤ ‖B♯ v‖ :=
   by
   rcases coercive with ⟨C, C_ge_0, coercivity⟩
@@ -74,6 +77,9 @@ theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * 
     simp [this]
 #align is_coercive.bounded_below IsCoercive.bounded_below
 
+/- warning: is_coercive.antilipschitz -> IsCoercive.antilipschitz is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align is_coercive.antilipschitz IsCoercive.antilipschitzₓ'. -/
 theorem antilipschitz (coercive : IsCoercive B) : ∃ C : ℝ≥0, 0 < C ∧ AntilipschitzWith C B♯ :=
   by
   rcases coercive.bounded_below with ⟨C, C_pos, below_bound⟩
@@ -84,6 +90,9 @@ theorem antilipschitz (coercive : IsCoercive B) : ∃ C : ℝ≥0, 0 < C ∧ Ant
   simpa using below_bound
 #align is_coercive.antilipschitz IsCoercive.antilipschitz
 
+/- warning: is_coercive.ker_eq_bot -> IsCoercive.ker_eq_bot is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align is_coercive.ker_eq_bot IsCoercive.ker_eq_botₓ'. -/
 theorem ker_eq_bot (coercive : IsCoercive B) : ker B♯ = ⊥ :=
   by
   rw [LinearMapClass.ker_eq_bot]
@@ -91,12 +100,17 @@ theorem ker_eq_bot (coercive : IsCoercive B) : ker B♯ = ⊥ :=
   exact antilipschitz.injective
 #align is_coercive.ker_eq_bot IsCoercive.ker_eq_bot
 
+#print IsCoercive.closed_range /-
 theorem closed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) :=
   by
   rcases coercive.antilipschitz with ⟨_, _, antilipschitz⟩
   exact antilipschitz.is_closed_range B♯.UniformContinuous
 #align is_coercive.closed_range IsCoercive.closed_range
+-/
 
+/- warning: is_coercive.range_eq_top -> IsCoercive.range_eq_top is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align is_coercive.range_eq_top IsCoercive.range_eq_topₓ'. -/
 theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
   by
   haveI := coercive.closed_range.complete_space_coe
@@ -119,6 +133,7 @@ theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
   exact inner_zero_left _
 #align is_coercive.range_eq_top IsCoercive.range_eq_top
 
+#print IsCoercive.continuousLinearEquivOfBilin /-
 /-- The Lax-Milgram equivalence of a coercive bounded bilinear operator:
 for all `v : V`, `continuous_linear_equiv_of_bilin B v` is the unique element `V`
 such that `⟪continuous_linear_equiv_of_bilin B v, w⟫ = B v w`.
@@ -127,13 +142,20 @@ The Lax-Milgram theorem states that this is a continuous equivalence.
 def continuousLinearEquivOfBilin (coercive : IsCoercive B) : V ≃L[ℝ] V :=
   ContinuousLinearEquiv.ofBijective B♯ coercive.ker_eq_bot coercive.range_eq_top
 #align is_coercive.continuous_linear_equiv_of_bilin IsCoercive.continuousLinearEquivOfBilin
+-/
 
+/- warning: is_coercive.continuous_linear_equiv_of_bilin_apply -> IsCoercive.continuousLinearEquivOfBilin_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align is_coercive.continuous_linear_equiv_of_bilin_apply IsCoercive.continuousLinearEquivOfBilin_applyₓ'. -/
 @[simp]
 theorem continuousLinearEquivOfBilin_apply (coercive : IsCoercive B) (v w : V) :
     ⟪coercive.continuousLinearEquivOfBilin v, w⟫_ℝ = B v w :=
   continuousLinearMapOfBilin_apply ℝ B v w
 #align is_coercive.continuous_linear_equiv_of_bilin_apply IsCoercive.continuousLinearEquivOfBilin_apply
 
+/- warning: is_coercive.unique_continuous_linear_equiv_of_bilin -> IsCoercive.unique_continuousLinearEquivOfBilin is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align is_coercive.unique_continuous_linear_equiv_of_bilin IsCoercive.unique_continuousLinearEquivOfBilinₓ'. -/
 theorem unique_continuousLinearEquivOfBilin (coercive : IsCoercive B) {v f : V}
     (is_lax_milgram : ∀ w, ⟪f, w⟫_ℝ = B v w) : f = coercive.continuousLinearEquivOfBilin v :=
   unique_continuousLinearMapOfBilin ℝ B is_lax_milgram
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Daniel Roca González
 
 ! This file was ported from Lean 3 source module analysis.inner_product_space.lax_milgram
-! leanprover-community/mathlib commit af8f9bc2aab1dd99a26f3dc982b7957f7762e7ba
+! leanprover-community/mathlib commit 46b633fd842bef9469441c0209906f6dddd2b4f5
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -51,12 +51,12 @@ universe u
 
 namespace IsCoercive
 
-variable {V : Type u} [InnerProductSpace ℝ V] [CompleteSpace V]
+variable {V : Type u} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [CompleteSpace V]
 
 variable {B : V →L[ℝ] V →L[ℝ] ℝ}
 
 -- mathport name: «expr ♯»
-local postfix:1024 "♯" => @continuousLinearMapOfBilin ℝ V _ _ _
+local postfix:1024 "♯" => @continuousLinearMapOfBilin ℝ V _ _ _ _
 
 theorem bounded_below (coercive : IsCoercive B) : ∃ C, 0 < C ∧ ∀ v, C * ‖v‖ ≤ ‖B♯ v‖ :=
   by
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Daniel Roca González
 
 ! This file was ported from Lean 3 source module analysis.inner_product_space.lax_milgram
-! leanprover-community/mathlib commit 17ef379e997badd73e5eabb4d38f11919ab3c4b3
+! leanprover-community/mathlib commit af8f9bc2aab1dd99a26f3dc982b7957f7762e7ba
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -116,7 +116,7 @@ theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
         _ = 0 := mem_w_orthogonal _ ⟨w, rfl⟩
         
     · exact mul_nonneg (mul_nonneg C_pos.le (norm_nonneg w)) (norm_nonneg w)
-  exact inner_zero_left
+  exact inner_zero_left _
 #align is_coercive.range_eq_top IsCoercive.range_eq_top
 
 /-- The Lax-Milgram equivalence of a coercive bounded bilinear operator:
Diff
@@ -106,7 +106,8 @@ theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ :=
   rcases coercive with ⟨C, C_pos, coercivity⟩
   obtain rfl : w = 0 :=
     by
-    rw [← norm_eq_zero, ← mul_self_eq_zero, ← mul_right_inj' C_pos.ne', mul_zero, ← mul_assoc]
+    rw [← norm_eq_zero, ← mul_self_eq_zero, ← mul_right_inj' C_pos.ne', MulZeroClass.mul_zero, ←
+      mul_assoc]
     apply le_antisymm
     ·
       calc

Changes in mathlib4

mathlib3
mathlib4
chore(Analysis): add missing deprecation dates (#12336)
Diff
@@ -82,7 +82,7 @@ theorem isClosed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V)
   exact antilipschitz.isClosed_range B♯.uniformContinuous
 #align is_coercive.closed_range IsCoercive.isClosed_range
 
-@[deprecated] alias closed_range := isClosed_range
+@[deprecated] alias closed_range := isClosed_range -- 2024-03-29
 
 theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ := by
   haveI := coercive.isClosed_range.completeSpace_coe
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
@@ -33,7 +33,7 @@ dual, Lax-Milgram
 
 noncomputable section
 
-open IsROrC LinearMap ContinuousLinearMap InnerProductSpace
+open RCLike LinearMap ContinuousLinearMap InnerProductSpace
 
 open LinearMap (ker range)
 
chore: rename open_range to isOpen_range, closed_range to isClosed_range (#11438)

All these lemmas refer to the range of some function being open/range (i.e. isOpen or isClosed).

Diff
@@ -77,13 +77,15 @@ theorem ker_eq_bot (coercive : IsCoercive B) : ker B♯ = ⊥ := by
   exact antilipschitz.injective
 #align is_coercive.ker_eq_bot IsCoercive.ker_eq_bot
 
-theorem closed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) := by
+theorem isClosed_range (coercive : IsCoercive B) : IsClosed (range B♯ : Set V) := by
   rcases coercive.antilipschitz with ⟨_, _, antilipschitz⟩
   exact antilipschitz.isClosed_range B♯.uniformContinuous
-#align is_coercive.closed_range IsCoercive.closed_range
+#align is_coercive.closed_range IsCoercive.isClosed_range
+
+@[deprecated] alias closed_range := isClosed_range
 
 theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ := by
-  haveI := coercive.closed_range.completeSpace_coe
+  haveI := coercive.isClosed_range.completeSpace_coe
   rw [← (range B♯).orthogonal_orthogonal]
   rw [Submodule.eq_top_iff']
   intro v w mem_w_orthogonal
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
@@ -44,7 +44,6 @@ universe u
 namespace IsCoercive
 
 variable {V : Type u} [NormedAddCommGroup V] [InnerProductSpace ℝ V] [CompleteSpace V]
-
 variable {B : V →L[ℝ] V →L[ℝ] ℝ}
 
 local postfix:1024 "♯" => @continuousLinearMapOfBilin ℝ V _ _ _ _
chore(Analysis/NormedSpace): split up OperatorNorm.lean (#10990)

Split the 2300-line behemoth OperatorNorm.lean into 8 smaller files, of which the largest is 600 lines.

Diff
@@ -3,11 +3,7 @@ Copyright (c) 2022 Daniel Roca González. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Daniel Roca González
 -/
-import Mathlib.Analysis.InnerProductSpace.Projection
 import Mathlib.Analysis.InnerProductSpace.Dual
-import Mathlib.Analysis.NormedSpace.Banach
-import Mathlib.Analysis.NormedSpace.OperatorNorm
-import Mathlib.Topology.MetricSpace.Antilipschitz
 
 #align_import analysis.inner_product_space.lax_milgram from "leanprover-community/mathlib"@"46b633fd842bef9469441c0209906f6dddd2b4f5"
 
chore(*): golf, mostly using gcongr/positivity (#9546)
Diff
@@ -101,7 +101,7 @@ theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ := by
         C * ‖w‖ * ‖w‖ ≤ B w w := coercivity w
         _ = ⟪B♯ w, w⟫_ℝ := (continuousLinearMapOfBilin_apply B w w).symm
         _ = 0 := mem_w_orthogonal _ ⟨w, rfl⟩
-    · exact mul_nonneg (mul_nonneg C_pos.le (norm_nonneg w)) (norm_nonneg w)
+    · positivity
   exact inner_zero_left _
 #align is_coercive.range_eq_top IsCoercive.range_eq_top
 
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
@@ -94,7 +94,7 @@ theorem range_eq_top (coercive : IsCoercive B) : range B♯ = ⊤ := by
   intro v w mem_w_orthogonal
   rcases coercive with ⟨C, C_pos, coercivity⟩
   obtain rfl : w = 0 := by
-    rw [← norm_eq_zero, ← mul_self_eq_zero, ← mul_right_inj' C_pos.ne', MulZeroClass.mul_zero, ←
+    rw [← norm_eq_zero, ← mul_self_eq_zero, ← mul_right_inj' C_pos.ne', mul_zero, ←
       mul_assoc]
     apply le_antisymm
     · calc
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,11 +2,6 @@
 Copyright (c) 2022 Daniel Roca González. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Daniel Roca González
-
-! This file was ported from Lean 3 source module analysis.inner_product_space.lax_milgram
-! 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.InnerProductSpace.Dual
@@ -14,6 +9,8 @@ import Mathlib.Analysis.NormedSpace.Banach
 import Mathlib.Analysis.NormedSpace.OperatorNorm
 import Mathlib.Topology.MetricSpace.Antilipschitz
 
+#align_import analysis.inner_product_space.lax_milgram from "leanprover-community/mathlib"@"46b633fd842bef9469441c0209906f6dddd2b4f5"
+
 /-!
 # The Lax-Milgram Theorem
 
chore: fix grammar 1/3 (#5001)

All of these are doc fixes

Diff
@@ -17,7 +17,7 @@ import Mathlib.Topology.MetricSpace.Antilipschitz
 /-!
 # The Lax-Milgram Theorem
 
-We consider an Hilbert space `V` over `ℝ`
+We consider a Hilbert space `V` over `ℝ`
 equipped with a bounded bilinear form `B : V →L[ℝ] V →L[ℝ] ℝ`.
 
 Recall that a bilinear form `B : V →L[ℝ] V →L[ℝ] ℝ` is *coercive*
feat: port Analysis.InnerProductSpace.LaxMilgram (#4415)

Dependencies 12 + 875

876 files ported (98.6%)
388026 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