Skip to content

Commit d93e2c4

Browse files
committed
lift to unitization lemmas
1 parent 4cfb4af commit d93e2c4

File tree

3 files changed

+29
-45
lines changed

3 files changed

+29
-45
lines changed

Mathlib/Algebra/Algebra/Unitization.lean

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -405,20 +405,23 @@ theorem linearMap_ext {N} [CommSemiring S] [AddCommMonoid R] [AddCommMonoid A] [
405405
(linearEquiv S R A).arrowCongr (.refl ..) |>.injective <|
406406
LinearMap.prod_ext (LinearMap.ext hl) (LinearMap.ext hr)
407407

408-
variable (S R A)
408+
variable [Semiring S] [Semiring R] [AddCommMonoid A] [SMul R A] [Module S R] [Module S A]
409409

410+
variable (S R A) in
410411
/-- The canonical `S`-linear inclusion `A → Unitization R A`. -/
411412
@[simps apply]
412-
def inrHom [Semiring S] [Semiring R] [AddCommMonoid A] [SMul R A] [Module S R] [Module S A]
413-
[IsScalarTower S R A] : A →ₗ[S] Unitization R A where
413+
def inrHom : A →ₗ[S] Unitization R A where
414414
toFun := (↑)
415415
map_add' := inr_add R
416416
map_smul' := inr_smul R
417417

418+
omit [SMul R A] in
419+
lemma inrHom_injective : Function.Injective (inrHom S R A) := Unitization.inr_injective
420+
421+
variable (S R A) in
418422
/-- The canonical `S`-linear projection `Unitization R A → A`. -/
419423
@[simps apply]
420-
def sndHom [Semiring S] [Semiring R] [AddCommMonoid A] [SMul R A] [Module S R] [Module S A] :
421-
Unitization R A →ₗ[S] A where
424+
def sndHom : Unitization R A →ₗ[S] A where
422425
toFun a := a.snd
423426
map_add' := snd_add
424427
map_smul' := snd_smul

Mathlib/Analysis/CStarAlgebra/ContinuousFunctionalCalculus/Order.lean

Lines changed: 20 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -526,11 +526,7 @@ instance : OrderClosedTopology A where
526526
open Unitization in
527527
lemma convexOn_cfcₙ_of_convexOn_cfc {f : ℝ → ℝ} {s : Set A}
528528
(hf : ConvexOn ℝ (inr (R := ℂ) '' s) (cfc f)) : ConvexOn ℝ s (cfcₙ f) := by
529-
let inrl : A →ₗ[ℝ] Unitization ℂ A :=
530-
{ toFun := inr
531-
map_add' := by simp
532-
map_smul' := by simp }
533-
have inrl_injective : Function.Injective inrl := Unitization.inr_injective
529+
let inrl : A →ₗ[ℝ] A⁺¹ := inrHom ℝ ℂ A
534530
by_cases hf₀ : f 0 = 0
535531
case neg =>
536532
have : (cfcₙ f : A → A) = fun _ => 0 := by
@@ -539,29 +535,20 @@ lemma convexOn_cfcₙ_of_convexOn_cfc {f : ℝ → ℝ} {s : Set A}
539535
rw [this]
540536
refine convexOn_const _ ?_
541537
have : Convex ℝ (inrl ⁻¹' (inrl '' s)) := Convex.linear_preimage hf.1 _
542-
rwa [Set.preimage_image_eq _ inrl_injective] at this
543-
refine convexOn_of_convexOn_inr_comp ?_ ?_
544-
· grind only [!IsSelfAdjoint.cfcₙ] -- add grind tag
545-
· have h₁ : inr (R := ℂ) ∘ (cfcₙ f) = fun x : A => ((cfcₙ f x : A) : Unitization ℂ A) := by rfl
546-
rw [h₁]
547-
have h₂ : (fun x : A => ((cfcₙ f x : A) : Unitization ℂ A))
548-
= fun x : A => cfc f (x : Unitization ℂ A) := by
549-
ext1
550-
rw [real_cfcₙ_eq_cfc_inr ..]
551-
rfl
552-
rw [h₂]
553-
have h₂ : ConvexOn ℝ (inrl ⁻¹' (inrl '' s)) ((cfc f) ∘ inrl) :=
554-
ConvexOn.comp_linearMap (g := inrl) hf
555-
rwa [Set.preimage_image_eq _ inrl_injective] at h₂
538+
rwa [Set.preimage_image_eq _ inrHom_injective] at this
539+
refine convexOn_of_convexOn_inr_comp (fun _ => IsSelfAdjoint.cfcₙ) ?_
540+
have h₁ : inr (R := ℂ) ∘ (cfcₙ f) = fun x : A => ((cfcₙ f x : A) : A⁺¹) := rfl
541+
have h₂ : (fun x : A => ((cfcₙ f x : A) : A⁺¹))
542+
= fun x : A => cfc f (x : A⁺¹) := by ext1; rw [real_cfcₙ_eq_cfc_inr ..]; rfl
543+
rw [h₁, h₂]
544+
have h₃ : ConvexOn ℝ (inrl ⁻¹' (inrl '' s)) ((cfc f) ∘ inrl) :=
545+
ConvexOn.comp_linearMap (g := inrl) hf
546+
rwa [Set.preimage_image_eq _ inrHom_injective] at h₃
556547

557548
open Unitization in
558549
lemma concaveOn_cfcₙ_of_concaveOn_cfc {f : ℝ → ℝ} {s : Set A}
559550
(hf : ConcaveOn ℝ (inr (R := ℂ) '' s) (cfc f)) : ConcaveOn ℝ s (cfcₙ f) := by
560-
let inrl : A →ₗ[ℝ] Unitization ℂ A :=
561-
{ toFun := inr
562-
map_add' := by simp
563-
map_smul' := by simp }
564-
have inrl_injective : Function.Injective inrl := Unitization.inr_injective
551+
let inrl : A →ₗ[ℝ] A⁺¹ := inrHom ℝ ℂ A
565552
by_cases hf₀ : f 0 = 0
566553
case neg =>
567554
have : (cfcₙ f : A → A) = fun _ => 0 := by
@@ -570,21 +557,15 @@ lemma concaveOn_cfcₙ_of_concaveOn_cfc {f : ℝ → ℝ} {s : Set A}
570557
rw [this]
571558
refine concaveOn_const _ ?_
572559
have : Convex ℝ (inrl ⁻¹' (inrl '' s)) := Convex.linear_preimage hf.1 _
573-
rwa [Set.preimage_image_eq _ inrl_injective] at this
574-
refine concaveOn_of_concaveOn_inr_comp ?_ ?_
575-
· grind only [!IsSelfAdjoint.cfcₙ] -- add grind tag
576-
· have h₁ : inr (R := ℂ) ∘ (cfcₙ f) = fun x : A => ((cfcₙ f x : A) : Unitization ℂ A) := by rfl
577-
rw [h₁]
578-
have h₂ : (fun x : A => ((cfcₙ f x : A) : Unitization ℂ A))
579-
= fun x : A => cfc f (x : Unitization ℂ A) := by
580-
ext1
581-
rw [real_cfcₙ_eq_cfc_inr ..]
582-
rfl
583-
rw [h₂]
584-
have h₂ : ConcaveOn ℝ (inrl ⁻¹' (inrl '' s)) ((cfc f) ∘ inrl) :=
585-
ConcaveOn.comp_linearMap (g := inrl) hf
586-
rwa [Set.preimage_image_eq _ inrl_injective] at h₂
587-
560+
rwa [Set.preimage_image_eq _ inrHom_injective] at this
561+
refine concaveOn_of_concaveOn_inr_comp (fun _ => IsSelfAdjoint.cfcₙ) ?_
562+
have h₁ : inr (R := ℂ) ∘ (cfcₙ f) = fun x : A => ((cfcₙ f x : A) : A⁺¹) := rfl
563+
have h₂ : (fun x : A => ((cfcₙ f x : A) : A⁺¹))
564+
= fun x : A => cfc f (x : A⁺¹) := by ext1; rw [real_cfcₙ_eq_cfc_inr ..]; rfl
565+
rw [h₁, h₂]
566+
have h₃ : ConcaveOn ℝ (inrl ⁻¹' (inrl '' s)) ((cfc f) ∘ inrl) :=
567+
ConcaveOn.comp_linearMap (g := inrl) hf
568+
rwa [Set.preimage_image_eq _ inrHom_injective] at h₃
588569

589570
section Icc
590571

Mathlib/Analysis/Normed/Algebra/UnitizationL1.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ lemma unitization_nnnorm_inr (x : A) : ‖toLp 1 (x : Unitization 𝕜 A)‖₊
8080

8181
lemma unitization_isometry_inr : Isometry fun x : A ↦ toLp 1 (x : Unitization 𝕜 A) :=
8282
AddMonoidHomClass.isometry_of_norm
83-
((WithLp.linearEquiv 1 𝕜 (Unitization 𝕜 A)).symm.comp <| Unitization.inrHom 𝕜 A)
83+
((WithLp.linearEquiv 1 𝕜 (Unitization 𝕜 A)).symm.comp <| Unitization.inrHom 𝕜 𝕜 A)
8484
unitization_norm_inr
8585

8686
variable [IsScalarTower 𝕜 A A] [SMulCommClass 𝕜 A A]

0 commit comments

Comments
 (0)