Moreau decomposition
TheoremVariational characterization of projection onto a convex cone#✓fully proved
Variational characterization of the projection onto a cone with complete carrier:
p is the projection of x iff the residual pairs nonpositively with the
cone and is orthogonal to p. The ambient space need not be complete.
theorem convexProjection_eq_iff (C : PointedCone ℝ E) (hC : IsComplete (C : Set E))
(x p : E) (hp : p ∈ C) :
convexProjection (C : Set E) x = p ↔
(∀ y ∈ C, ⟪x - p, y⟫_ℝ ≤ 0) ∧ ⟪x - p, p⟫_ℝ = 0
noncomputable def convexProjection (K : Set F) (x : F) : F :=
Classical.choose (exists_convexProjection_spec K x)
MathlibExt/Analysis/InnerProductSpace/ConvexProjection.lean:107
Uses 3 · Used by 3
TheoremCone projection residual pairs nonpositively with the cone#✓fully proved
The residual of the cone projection pairs nonpositively with every point of the cone.
theorem convexProjection_inner_le_zero (C : PointedCone ℝ E)
(hC : IsComplete (C : Set E)) (x y : E) (hy : y ∈ C) :
⟪x - convexProjection (C : Set E) x, y⟫_ℝ ≤ 0
noncomputable def convexProjection (K : Set F) (x : F) : F :=
Classical.choose (exists_convexProjection_spec K x)
MathlibExt/Analysis/InnerProductSpace/ConvexProjection.lean:107
Uses 3 · Used by 1
TheoremCone projection residual is orthogonal to the projection#✓fully proved
The residual of the cone projection is orthogonal to the projection.
theorem convexProjection_inner_self (C : PointedCone ℝ E) (hC : IsComplete (C : Set E))
(x : E) :
⟪x - convexProjection (C : Set E) x, convexProjection (C : Set E) x⟫_ℝ = 0
noncomputable def convexProjection (K : Set F) (x : F) : F :=
Classical.choose (exists_convexProjection_spec K x)
MathlibExt/Analysis/InnerProductSpace/ConvexProjection.lean:107
Uses 3 · Used by 2
TheoremVariational characterization determines the cone projection#✓fully proved
A point satisfying the cone variational characterization is the projection.
theorem convexProjection_eq_of_forall_inner_le_zero (C : PointedCone ℝ E)
(hC : IsComplete (C : Set E)) {x p : E} (hp : p ∈ C)
(h1 : ∀ y ∈ C, ⟪x - p, y⟫_ℝ ≤ 0) (h2 : ⟪x - p, p⟫_ℝ = 0) :
convexProjection (C : Set E) x = p
noncomputable def convexProjection (K : Set F) (x : F) : F :=
Classical.choose (exists_convexProjection_spec K x)
MathlibExt/Analysis/InnerProductSpace/ConvexProjection.lean:107
Uses 2 · Used by 1
DefinitionNegative polar cone#✓fully proved
The negative polar is the standard dual cone of the negated set. Continuity makes its carrier closed without requiring completeness of the ambient space.
def polarCone (K : Set E) : ProperCone ℝ E where
toSubmodule := PointedCone.dual (innerₗ E) (-K)
isClosed' := PointedCone.isClosed_dual fun x => (innerSL ℝ x).continuous
TheoremMembership in the negative polar cone#✓fully proved
Membership in the negative polar uses the nonpositive inner-product convention.
theorem mem_polarCone {K : Set E} {y : E} :
y ∈ polarCone K ↔ ∀ x ∈ K, ⟪x, y⟫_ℝ ≤ 0
def polarCone (K : Set E) : ProperCone ℝ E where
toSubmodule := PointedCone.dual (innerₗ E) (-K)
isClosed' := PointedCone.isClosed_dual fun x => (innerSL ℝ x).continuous
MathlibExt/Analysis/Convex/MoreauDecomposition.lean:118
Uses 1 · Used by 3
TheoremCone projection residual lies in the negative polar#✓fully proved
The residual of a cone projection lies in its negative polar.
theorem sub_convexProjection_mem_polarCone (C : PointedCone ℝ E)
(hC : IsComplete (C : Set E)) (x : E) :
x - convexProjection (C : Set E) x ∈ polarCone (C : Set E)
noncomputable def convexProjection (K : Set F) (x : F) : F :=
Classical.choose (exists_convexProjection_spec K x)
MathlibExt/Analysis/InnerProductSpace/ConvexProjection.lean:107
def polarCone (K : Set E) : ProperCone ℝ E where
toSubmodule := PointedCone.dual (innerₗ E) (-K)
isClosed' := PointedCone.isClosed_dual fun x => (innerSL ℝ x).continuous
MathlibExt/Analysis/Convex/MoreauDecomposition.lean:118
Uses 4 · Used by 1
TheoremNegative polar agrees with the inner dual of the negated cone#✓fully proved
In a complete ambient space, the negative polar agrees with Mathlib's inner dual of the negated carrier.
theorem polarCone_eq_innerDual_neg (K : Set E) :
polarCone K = ProperCone.innerDual (-K)
def polarCone (K : Set E) : ProperCone ℝ E where
toSubmodule := PointedCone.dual (innerₗ E) (-K)
isClosed' := PointedCone.isClosed_dual fun x => (innerSL ℝ x).continuous
MathlibExt/Analysis/Convex/MoreauDecomposition.lean:118
Uses 1
TheoremMoreau decomposition, polar form#✓fully proved
The cone projection's residual is the projection onto its negative polar. This accepts a Mathlib proper cone directly.
theorem convexProjection_polarCone (C : ProperCone ℝ E) (x : E) :
convexProjection (polarCone (C : Set E)) x = x - convexProjection (C : Set E) x
noncomputable def convexProjection (K : Set F) (x : F) : F :=
Classical.choose (exists_convexProjection_spec K x)
MathlibExt/Analysis/InnerProductSpace/ConvexProjection.lean:107
def polarCone (K : Set E) : ProperCone ℝ E where
toSubmodule := PointedCone.dual (innerₗ E) (-K)
isClosed' := PointedCone.isClosed_dual fun x => (innerSL ℝ x).continuous
MathlibExt/Analysis/Convex/MoreauDecomposition.lean:118
Uses 7 · Used by 1
TheoremMoreau decomposition#✓fully proved
A point is the sum of its projections onto a proper cone and its negative polar, and the projections are orthogonal.
theorem moreau_decomposition (C : ProperCone ℝ E) (x : E) :
x = convexProjection (C : Set E) x + convexProjection (polarCone (C : Set E)) x ∧
⟪convexProjection (C : Set E) x, convexProjection (polarCone (C : Set E)) x⟫_ℝ = 0
noncomputable def convexProjection (K : Set F) (x : F) : F :=
Classical.choose (exists_convexProjection_spec K x)
MathlibExt/Analysis/InnerProductSpace/ConvexProjection.lean:107
def polarCone (K : Set E) : ProperCone ℝ E where
toSubmodule := PointedCone.dual (innerₗ E) (-K)
isClosed' := PointedCone.isClosed_dual fun x => (innerSL ℝ x).continuous
MathlibExt/Analysis/Convex/MoreauDecomposition.lean:118
Uses 4
TheoremBipolar theorem for closed convex cones#✓fully proved
The negative bipolar of a proper cone is itself, by Mathlib's inner-dual bipolar theorem.
theorem polarCone_polarCone (C : ProperCone ℝ E) :
polarCone (polarCone (C : Set E) : Set E) = C
def polarCone (K : Set E) : ProperCone ℝ E where
toSubmodule := PointedCone.dual (innerₗ E) (-K)
isClosed' := PointedCone.isClosed_dual fun x => (innerSL ℝ x).continuous
MathlibExt/Analysis/Convex/MoreauDecomposition.lean:118
Uses 2
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.