Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 70171ac

Browse files
committed
feat(topology/instances/real_vector_space): add an is_scalar_tower instance (#10490)
There is at most one topological real vector space structure on a topological additive group, so `[is_scalar_tower real A E]` holds automatically as long as `A` is a topological real algebra and `E` is a topological module over `A`.
1 parent 4efa9d8 commit 70171ac

File tree

16 files changed

+52
-70
lines changed

16 files changed

+52
-70
lines changed

src/analysis/calculus/mean_value.lean

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -469,14 +469,11 @@ end
469469
470470
Theorems in this section work both for real and complex differentiable functions. We use assumptions
471471
`[is_R_or_C 𝕜] [normed_space 𝕜 E] [normed_space 𝕜 G]` to achieve this result. For the domain `E` we
472-
also assume `[normed_space ℝ E] [is_scalar_tower ℝ 𝕜 E]` to have a notion of a `convex` set. In both
473-
interesting cases `𝕜 = ℝ` and `𝕜 = ℂ` the assumption `[is_scalar_tower ℝ 𝕜 E]` is satisfied
474-
automatically. -/
472+
also assume `[normed_space ℝ E]` to have a notion of a `convex` set. -/
475473

476474
section
477475

478-
variables {𝕜 G : Type*} [is_R_or_C 𝕜] [normed_space 𝕜 E] [is_scalar_tower ℝ 𝕜 E]
479-
[normed_group G] [normed_space 𝕜 G]
476+
variables {𝕜 G : Type*} [is_R_or_C 𝕜] [normed_space 𝕜 E] [normed_group G] [normed_space 𝕜 G]
480477

481478
namespace convex
482479

@@ -489,7 +486,6 @@ theorem norm_image_sub_le_of_norm_has_fderiv_within_le
489486
(hs : convex ℝ s) (xs : x ∈ s) (ys : y ∈ s) : ∥f y - f x∥ ≤ C * ∥y - x∥ :=
490487
begin
491488
letI : normed_space ℝ G := restrict_scalars.normed_space ℝ 𝕜 G,
492-
letI : is_scalar_tower ℝ 𝕜 G := restrict_scalars.is_scalar_tower _ _ _,
493489
/- By composition with `t ↦ x + t • (y-x)`, we reduce to a statement for functions defined
494490
on `[0,1]`, for which it is proved in `norm_image_sub_le_of_norm_deriv_le_segment`.
495491
We just have to check the differentiability of the composition and bounds on its derivative,
@@ -1283,7 +1279,6 @@ begin
12831279
{ intros x' H', rw ← dist_eq_norm, exact le_of_lt (hε H').2 },
12841280
-- apply mean value theorem
12851281
letI : normed_space ℝ G := restrict_scalars.normed_space ℝ 𝕜 G,
1286-
letI : is_scalar_tower ℝ 𝕜 G := restrict_scalars.is_scalar_tower _ _ _,
12871282
refine (convex_ball _ _).norm_image_sub_le_of_norm_has_fderiv_within_le' _ hf' h.2 h.1,
12881283
exact λ y hy, (hε hy).1.has_fderiv_within_at
12891284
end

src/analysis/calculus/parametric_integral.lean

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ open topological_space measure_theory filter metric
5757
open_locale topological_space filter
5858

5959
variables {α : Type*} [measurable_space α] {μ : measure α} {𝕜 : Type*} [is_R_or_C 𝕜]
60-
{E : Type*} [normed_group E] [normed_space ℝ E]
61-
[normed_space 𝕜 E] [is_scalar_tower ℝ 𝕜 E]
60+
{E : Type*} [normed_group E] [normed_space ℝ E] [normed_space 𝕜 E]
6261
[complete_space E] [second_countable_topology E]
6362
[measurable_space E] [borel_space E]
6463
{H : Type*} [normed_group H] [normed_space 𝕜 H] [second_countable_topology $ H →L[𝕜] E]
@@ -193,7 +192,6 @@ lemma has_fderiv_at_integral_of_dominated_of_fderiv_le {F : H → α → E} {F'
193192
has_fderiv_at (λ x, ∫ a, F x a ∂μ) (∫ a, F' x₀ a ∂μ) x₀ :=
194193
begin
195194
letI : normed_space ℝ H := normed_space.restrict_scalars ℝ 𝕜 H,
196-
haveI : is_scalar_tower ℝ 𝕜 H := restrict_scalars.is_scalar_tower ℝ 𝕜 H,
197195
have x₀_in : x₀ ∈ ball x₀ ε := mem_ball_self ε_pos,
198196
have diff_x₀ : ∀ᵐ a ∂μ, has_fderiv_at (λ x, F x a) (F' x₀ a) x₀ :=
199197
h_diff.mono (λ a ha, ha x₀ x₀_in),

src/analysis/calculus/parametric_interval_integral.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ open_locale topological_space filter interval
1818

1919
variables {α 𝕜 : Type*} [measurable_space α] [linear_order α] [topological_space α]
2020
[order_topology α] [opens_measurable_space α] {μ : measure α} [is_R_or_C 𝕜]
21-
{E : Type*} [normed_group E] [normed_space ℝ E]
22-
[normed_space 𝕜 E] [is_scalar_tower ℝ 𝕜 E]
21+
{E : Type*} [normed_group E] [normed_space ℝ E] [normed_space 𝕜 E]
2322
[complete_space E] [second_countable_topology E]
2423
[measurable_space E] [borel_space E]
2524
{H : Type*} [normed_group H] [normed_space 𝕜 H] [second_countable_topology $ H →L[𝕜] E]

src/analysis/complex/conformal.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ conj_lie.to_linear_isometry.is_conformal_map
4040
section conformal_into_complex_normed
4141

4242
variables {E : Type*} [normed_group E] [normed_space ℝ E] [normed_space ℂ E]
43-
[is_scalar_tower ℝ ℂ E] {z : ℂ} {g : ℂ →L[ℝ] E} {f : ℂ → E}
43+
{z : ℂ} {g : ℂ →L[ℝ] E} {f : ℂ → E}
4444

4545
lemma is_conformal_map_complex_linear
4646
{map : ℂ →L[ℂ] E} (nonzero : map ≠ 0) : is_conformal_map (map.restrict_scalars ℝ) :=

src/analysis/complex/real_deriv.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ variables
129129
This is a version of the Cauchy-Riemann equations. -/
130130
lemma differentiable_at.conformal_at {E : Type*}
131131
[normed_group E] [normed_space ℝ E] [normed_space ℂ E]
132-
[is_scalar_tower ℝ ℂ E] {z : ℂ} {f : ℂ → E}
132+
{z : ℂ} {f : ℂ → E}
133133
(hf' : fderiv ℝ f z ≠ 0) (h : differentiable_at ℂ f z) :
134134
conformal_at f z :=
135135
begin

src/analysis/inner_product_space/basic.lean

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,10 +1403,9 @@ product satisfies `is_bounded_bilinear_map`.
14031403
In order to state these results, we need a `normed_space ℝ E` instance. We will later establish
14041404
such an instance by restriction-of-scalars, `inner_product_space.is_R_or_C_to_real 𝕜 E`, but this
14051405
instance may be not definitionally equal to some other “natural” instance. So, we assume
1406-
`[normed_space ℝ E]` and `[is_scalar_tower ℝ 𝕜 E]`. In both interesting cases `𝕜 = ℝ` and `𝕜 = ℂ`
1407-
we have these instances.
1406+
`[normed_space ℝ E]`.
14081407
-/
1409-
lemma is_bounded_bilinear_map_inner [normed_space ℝ E] [is_scalar_tower ℝ 𝕜 E] :
1408+
lemma is_bounded_bilinear_map_inner [normed_space ℝ E] :
14101409
is_bounded_bilinear_map ℝ (λ p : E × E, ⟪p.1, p.2⟫) :=
14111410
{ add_left := λ _ _ _, inner_add_left,
14121411
smul_left := λ r x y,
@@ -1651,7 +1650,6 @@ section continuous
16511650
lemma continuous_inner : continuous (λ p : E × E, ⟪p.1, p.2⟫) :=
16521651
begin
16531652
letI : inner_product_space ℝ E := inner_product_space.is_R_or_C_to_real 𝕜 E,
1654-
letI : is_scalar_tower ℝ 𝕜 E := restrict_scalars.is_scalar_tower _ _ _,
16551653
exact is_bounded_bilinear_map_inner.continuous
16561654
end
16571655

src/analysis/inner_product_space/calculus.lean

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ import analysis.special_functions.sqrt
1212
In this file we prove that the inner product and square of the norm in an inner space are
1313
infinitely `ℝ`-smooth. In order to state these results, we need a `normed_space ℝ E`
1414
instance. Though we can deduce this structure from `inner_product_space 𝕜 E`, this instance may be
15-
not definitionally equal to some other “natural” instance. So, we assume `[normed_space ℝ E]` and
16-
`[is_scalar_tower ℝ 𝕜 E]`. In both interesting cases `𝕜 = ℝ` and `𝕜 = ℂ` we have these instances.
17-
15+
not definitionally equal to some other “natural” instance. So, we assume `[normed_space ℝ E]`.
1816
-/
1917

2018
noncomputable theory
@@ -26,7 +24,7 @@ variables {𝕜 E F : Type*} [is_R_or_C 𝕜]
2624
variables [inner_product_space 𝕜 E] [inner_product_space ℝ F]
2725
local notation `⟪`x`, `y`⟫` := @inner 𝕜 _ _ x y
2826

29-
variables [normed_space ℝ E] [is_scalar_tower ℝ 𝕜 E]
27+
variables [normed_space ℝ E]
3028

3129
/-- Derivative of the inner product. -/
3230
def fderiv_inner_clm (p : E × E) : E × E →L[ℝ] 𝕜 := is_bounded_bilinear_map_inner.deriv p

src/analysis/inner_product_space/projection.lean

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,6 @@ theorem exists_norm_eq_infi_of_complete_subspace
271271
begin
272272
letI : inner_product_space ℝ E := inner_product_space.is_R_or_C_to_real 𝕜 E,
273273
letI : module ℝ E := restrict_scalars.module ℝ 𝕜 E,
274-
letI : is_scalar_tower ℝ 𝕜 E := restrict_scalars.is_scalar_tower _ _ _,
275274
let K' : submodule ℝ E := submodule.restrict_scalars ℝ K,
276275
exact exists_norm_eq_infi_of_complete_convex ⟨0, K'.zero_mem⟩ h K'.convex
277276
end
@@ -330,7 +329,6 @@ theorem norm_eq_infi_iff_inner_eq_zero {u : E} {v : E}
330329
begin
331330
letI : inner_product_space ℝ E := inner_product_space.is_R_or_C_to_real 𝕜 E,
332331
letI : module ℝ E := restrict_scalars.module ℝ 𝕜 E,
333-
letI : is_scalar_tower ℝ 𝕜 E := restrict_scalars.is_scalar_tower _ _ _,
334332
let K' : submodule ℝ E := K.restrict_scalars ℝ,
335333
split,
336334
{ assume H,

src/analysis/inner_product_space/rayleigh.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@ lemma eq_smul_self_of_is_local_extr_on (hT : is_self_adjoint (T : E →ₗ[𝕜]
156156
T x₀ = (↑(rayleigh_quotient x₀) : 𝕜) • x₀ :=
157157
begin
158158
letI := inner_product_space.is_R_or_C_to_real 𝕜 E,
159-
letI : is_scalar_tower ℝ 𝕜 E := restrict_scalars.is_scalar_tower _ _ _,
160159
let S : E →L[ℝ] E :=
161160
@continuous_linear_map.restrict_scalars 𝕜 E E _ _ _ _ _ _ _ ℝ _ _ _ _ T,
162161
have hSA : is_self_adjoint (S : E →ₗ[ℝ] E) := λ x y, by

src/data/complex/is_R_or_C.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,6 @@ This is not an instance because it would cause a search for `finite_dimensional
639639
lemma proper_is_R_or_C [finite_dimensional K E] : proper_space E :=
640640
begin
641641
letI : normed_space ℝ E := restrict_scalars.normed_space ℝ K E,
642-
letI : is_scalar_tower ℝ K E := restrict_scalars.is_scalar_tower _ _ _,
643642
letI : finite_dimensional ℝ E := finite_dimensional.trans ℝ K E,
644643
apply_instance
645644
end

0 commit comments

Comments
 (0)