analysis.inner_product_space.lax_milgram
⟷
Mathlib.Analysis.InnerProductSpace.LaxMilgram
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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[ℝ] ℝ`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -45,7 +45,7 @@ open IsROrC LinearMap ContinuousLinearMap InnerProductSpace
open LinearMap (ker range)
-open RealInnerProductSpace NNReal
+open scoped RealInnerProductSpace NNReal
universe u
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/55d771df074d0dd020139ee1cd4b95521422df9f
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a313d8bba1bad05faba71a4a4e9742ab5bd9efd
@@ -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:
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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
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
.
@@ -33,7 +33,7 @@ dual, Lax-Milgram
noncomputable section
-open IsROrC LinearMap ContinuousLinearMap InnerProductSpace
+open RCLike LinearMap ContinuousLinearMap InnerProductSpace
open LinearMap (ker range)
All these lemmas refer to the range of some function being open/range (i.e. isOpen
or isClosed
).
@@ -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
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)
@@ -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 _ _ _ _
Split the 2300-line behemoth OperatorNorm.lean
into 8 smaller files, of which the largest is 600 lines.
@@ -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"
@@ -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
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).
@@ -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
@@ -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
@@ -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*
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file