@@ -2432,9 +2432,8 @@ variables (𝕜 : Type*) [nondiscrete_normed_field 𝕜]
2432
2432
{𝕜' : Type *} [nondiscrete_normed_field 𝕜'] [normed_algebra 𝕜 𝕜']
2433
2433
{E : Type *} [normed_group E] [normed_space 𝕜' E]
2434
2434
{F : Type *} [normed_group F] [normed_space 𝕜' F]
2435
- {f : E → F} {f' : E →L[𝕜'] F} {s : set E} {x : E}
2436
-
2437
- local attribute [instance] normed_space.restrict_scalars
2435
+ {f : module.restrict_scalars 𝕜 𝕜' E → module.restrict_scalars 𝕜 𝕜' F}
2436
+ {f' : module.restrict_scalars 𝕜 𝕜' E →L[𝕜'] module.restrict_scalars 𝕜 𝕜' F} {s : set E} {x : E}
2438
2437
2439
2438
lemma has_strict_fderiv_at.restrict_scalars (h : has_strict_fderiv_at f f' x) :
2440
2439
has_strict_fderiv_at f (f'.restrict_scalars 𝕜) x := h
@@ -2462,3 +2461,158 @@ lemma differentiable.restrict_scalars (h : differentiable 𝕜' f) :
2462
2461
λx, (h x).restrict_scalars 𝕜
2463
2462
2464
2463
end restrict_scalars
2464
+
2465
+ /-!
2466
+ ### Multiplying by a complex function respects real differentiability
2467
+
2468
+ Consider two functions `c : E → ℂ` and `f : E → F` where `F` is a complex vector space. If both
2469
+ `c` and `f` are differentiable over `ℝ`, then so is their product. This paragraph proves this
2470
+ statement, in the general version where `ℝ` is replaced by a field `𝕜`, and `ℂ` is replaced
2471
+ by a normed algebra `𝕜'` over `𝕜`.
2472
+ -/
2473
+ section smul_algebra
2474
+
2475
+ variables {𝕜 : Type *} [nondiscrete_normed_field 𝕜]
2476
+ {𝕜' : Type *} [nondiscrete_normed_field 𝕜'] [normed_algebra 𝕜 𝕜']
2477
+ {E : Type *} [normed_group E] [normed_space 𝕜 E]
2478
+ {F : Type *} [normed_group F] [normed_space 𝕜' F]
2479
+ {f : E → module.restrict_scalars 𝕜 𝕜' F}
2480
+ {f' : E →L[𝕜] module.restrict_scalars 𝕜 𝕜' F} {s : set E} {x : E}
2481
+ {c : E → 𝕜'} {c' : E →L[𝕜] 𝕜'} {L : filter E}
2482
+
2483
+ theorem has_strict_fderiv_at.smul_algebra (hc : has_strict_fderiv_at c c' x)
2484
+ (hf : has_strict_fderiv_at f f' x) :
2485
+ has_strict_fderiv_at (λ y, c y • f y) (c x • f' + c'.smul_algebra_right (f x)) x :=
2486
+ (is_bounded_bilinear_map_smul_algebra.has_strict_fderiv_at (c x, f x)).comp x $
2487
+ hc.prod hf
2488
+
2489
+ theorem has_fderiv_within_at.smul_algebra
2490
+ (hc : has_fderiv_within_at c c' s x) (hf : has_fderiv_within_at f f' s x) :
2491
+ has_fderiv_within_at (λ y, c y • f y) (c x • f' + c'.smul_algebra_right (f x)) s x :=
2492
+ (is_bounded_bilinear_map_smul_algebra.has_fderiv_at (c x, f x)).comp_has_fderiv_within_at x $
2493
+ hc.prod hf
2494
+
2495
+ theorem has_fderiv_at.smul_algebra (hc : has_fderiv_at c c' x) (hf : has_fderiv_at f f' x) :
2496
+ has_fderiv_at (λ y, c y • f y) (c x • f' + c'.smul_algebra_right (f x)) x :=
2497
+ (is_bounded_bilinear_map_smul_algebra.has_fderiv_at (c x, f x)).comp x $
2498
+ hc.prod hf
2499
+
2500
+ lemma differentiable_within_at.smul_algebra
2501
+ (hc : differentiable_within_at 𝕜 c s x) (hf : differentiable_within_at 𝕜 f s x) :
2502
+ differentiable_within_at 𝕜 (λ y, c y • f y) s x :=
2503
+ (hc.has_fderiv_within_at.smul_algebra hf.has_fderiv_within_at).differentiable_within_at
2504
+
2505
+ @[simp] lemma differentiable_at.smul_algebra
2506
+ (hc : differentiable_at 𝕜 c x) (hf : differentiable_at 𝕜 f x) :
2507
+ differentiable_at 𝕜 (λ y, c y • f y) x :=
2508
+ (hc.has_fderiv_at.smul_algebra hf.has_fderiv_at).differentiable_at
2509
+
2510
+ lemma differentiable_on.smul_algebra (hc : differentiable_on 𝕜 c s) (hf : differentiable_on 𝕜 f s) :
2511
+ differentiable_on 𝕜 (λ y, c y • f y) s :=
2512
+ λx hx, (hc x hx).smul_algebra (hf x hx)
2513
+
2514
+ @[simp] lemma differentiable.smul_algebra (hc : differentiable 𝕜 c) (hf : differentiable 𝕜 f) :
2515
+ differentiable 𝕜 (λ y, c y • f y) :=
2516
+ λx, (hc x).smul_algebra (hf x)
2517
+
2518
+ lemma fderiv_within_smul_algebra (hxs : unique_diff_within_at 𝕜 s x)
2519
+ (hc : differentiable_within_at 𝕜 c s x) (hf : differentiable_within_at 𝕜 f s x) :
2520
+ fderiv_within 𝕜 (λ y, c y • f y) s x =
2521
+ c x • fderiv_within 𝕜 f s x + (fderiv_within 𝕜 c s x).smul_algebra_right (f x) :=
2522
+ (hc.has_fderiv_within_at.smul_algebra hf.has_fderiv_within_at).fderiv_within hxs
2523
+
2524
+ lemma fderiv_smul_algebra (hc : differentiable_at 𝕜 c x) (hf : differentiable_at 𝕜 f x) :
2525
+ fderiv 𝕜 (λ y, c y • f y) x =
2526
+ c x • fderiv 𝕜 f x + (fderiv 𝕜 c x).smul_algebra_right (f x) :=
2527
+ (hc.has_fderiv_at.smul_algebra hf.has_fderiv_at).fderiv
2528
+
2529
+ theorem has_strict_fderiv_at.smul_algebra_const
2530
+ (hc : has_strict_fderiv_at c c' x) (f : module.restrict_scalars 𝕜 𝕜' F) :
2531
+ has_strict_fderiv_at (λ y, c y • f) (c'.smul_algebra_right f) x :=
2532
+ by simpa only [smul_zero, zero_add] using hc.smul_algebra (has_strict_fderiv_at_const f x)
2533
+
2534
+ theorem has_fderiv_within_at.smul_algebra_const
2535
+ (hc : has_fderiv_within_at c c' s x) (f : module.restrict_scalars 𝕜 𝕜' F) :
2536
+ has_fderiv_within_at (λ y, c y • f) (c'.smul_algebra_right f) s x :=
2537
+ by simpa only [smul_zero, zero_add] using hc.smul_algebra (has_fderiv_within_at_const f x s)
2538
+
2539
+ theorem has_fderiv_at.smul_algebra_const
2540
+ (hc : has_fderiv_at c c' x) (f : module.restrict_scalars 𝕜 𝕜' F) :
2541
+ has_fderiv_at (λ y, c y • f) (c'.smul_algebra_right f) x :=
2542
+ by simpa only [smul_zero, zero_add] using hc.smul_algebra (has_fderiv_at_const f x)
2543
+
2544
+ lemma differentiable_within_at.smul_algebra_const
2545
+ (hc : differentiable_within_at 𝕜 c s x) (f : module.restrict_scalars 𝕜 𝕜' F) :
2546
+ differentiable_within_at 𝕜 (λ y, c y • f) s x :=
2547
+ (hc.has_fderiv_within_at.smul_algebra_const f).differentiable_within_at
2548
+
2549
+ lemma differentiable_at.smul_algebra_const
2550
+ (hc : differentiable_at 𝕜 c x) (f : module.restrict_scalars 𝕜 𝕜' F) :
2551
+ differentiable_at 𝕜 (λ y, c y • f) x :=
2552
+ (hc.has_fderiv_at.smul_algebra_const f).differentiable_at
2553
+
2554
+ lemma differentiable_on.smul_algebra_const
2555
+ (hc : differentiable_on 𝕜 c s) (f : module.restrict_scalars 𝕜 𝕜' F) :
2556
+ differentiable_on 𝕜 (λ y, c y • f) s :=
2557
+ λx hx, (hc x hx).smul_algebra_const f
2558
+
2559
+ lemma differentiable.smul_algebra_const
2560
+ (hc : differentiable 𝕜 c) (f : module.restrict_scalars 𝕜 𝕜' F) :
2561
+ differentiable 𝕜 (λ y, c y • f) :=
2562
+ λx, (hc x).smul_algebra_const f
2563
+
2564
+ lemma fderiv_within_smul_algebra_const (hxs : unique_diff_within_at 𝕜 s x)
2565
+ (hc : differentiable_within_at 𝕜 c s x) (f : module.restrict_scalars 𝕜 𝕜' F) :
2566
+ fderiv_within 𝕜 (λ y, c y • f) s x =
2567
+ (fderiv_within 𝕜 c s x).smul_algebra_right f :=
2568
+ (hc.has_fderiv_within_at.smul_algebra_const f).fderiv_within hxs
2569
+
2570
+ lemma fderiv_smul_algebra_const
2571
+ (hc : differentiable_at 𝕜 c x) (f : module.restrict_scalars 𝕜 𝕜' F) :
2572
+ fderiv 𝕜 (λ y, c y • f) x = (fderiv 𝕜 c x).smul_algebra_right f :=
2573
+ (hc.has_fderiv_at.smul_algebra_const f).fderiv
2574
+
2575
+ theorem has_strict_fderiv_at.const_smul_algebra (h : has_strict_fderiv_at f f' x) (c : 𝕜') :
2576
+ has_strict_fderiv_at (λ x, c • f x) (c • f') x :=
2577
+ (c • (1 : (module.restrict_scalars 𝕜 𝕜' F) →L[𝕜] ((module.restrict_scalars 𝕜 𝕜' F))))
2578
+ .has_strict_fderiv_at.comp x h
2579
+
2580
+ theorem has_fderiv_at_filter.const_smul_algebra (h : has_fderiv_at_filter f f' x L) (c : 𝕜') :
2581
+ has_fderiv_at_filter (λ x, c • f x) (c • f') x L :=
2582
+ (c • (1 : (module.restrict_scalars 𝕜 𝕜' F) →L[𝕜] ((module.restrict_scalars 𝕜 𝕜' F))))
2583
+ .has_fderiv_at_filter.comp x h
2584
+
2585
+ theorem has_fderiv_within_at.const_smul_algebra (h : has_fderiv_within_at f f' s x) (c : 𝕜') :
2586
+ has_fderiv_within_at (λ x, c • f x) (c • f') s x :=
2587
+ h.const_smul_algebra c
2588
+
2589
+ theorem has_fderiv_at.const_smul_algebra (h : has_fderiv_at f f' x) (c : 𝕜') :
2590
+ has_fderiv_at (λ x, c • f x) (c • f') x :=
2591
+ h.const_smul_algebra c
2592
+
2593
+ lemma differentiable_within_at.const_smul_algebra (h : differentiable_within_at 𝕜 f s x) (c : 𝕜') :
2594
+ differentiable_within_at 𝕜 (λy, c • f y) s x :=
2595
+ (h.has_fderiv_within_at.const_smul_algebra c).differentiable_within_at
2596
+
2597
+ lemma differentiable_at.const_smul_algebra (h : differentiable_at 𝕜 f x) (c : 𝕜') :
2598
+ differentiable_at 𝕜 (λy, c • f y) x :=
2599
+ (h.has_fderiv_at.const_smul_algebra c).differentiable_at
2600
+
2601
+ lemma differentiable_on.const_smul_algebra (h : differentiable_on 𝕜 f s) (c : 𝕜') :
2602
+ differentiable_on 𝕜 (λy, c • f y) s :=
2603
+ λx hx, (h x hx).const_smul_algebra c
2604
+
2605
+ lemma differentiable.const_smul_algebra (h : differentiable 𝕜 f) (c : 𝕜') :
2606
+ differentiable 𝕜 (λy, c • f y) :=
2607
+ λx, (h x).const_smul_algebra c
2608
+
2609
+ lemma fderiv_within_const_smul_algebra (hxs : unique_diff_within_at 𝕜 s x)
2610
+ (h : differentiable_within_at 𝕜 f s x) (c : 𝕜') :
2611
+ fderiv_within 𝕜 (λy, c • f y) s x = c • fderiv_within 𝕜 f s x :=
2612
+ (h.has_fderiv_within_at.const_smul_algebra c).fderiv_within hxs
2613
+
2614
+ lemma fderiv_const_smul_algebra (h : differentiable_at 𝕜 f x) (c : 𝕜') :
2615
+ fderiv 𝕜 (λy, c • f y) x = c • fderiv 𝕜 f x :=
2616
+ (h.has_fderiv_at.const_smul_algebra c).fderiv
2617
+
2618
+ end smul_algebra
0 commit comments