src/convex.rs

branch
dev
changeset 109
943c6b3b9414
parent 108
6be459f08b66
child 112
ed8124f1af1d
--- a/src/convex.rs	Wed Apr 30 00:48:56 2025 -0500
+++ b/src/convex.rs	Wed Apr 30 01:06:25 2025 -0500
@@ -16,10 +16,8 @@
 ///
 /// TODO: should constrain `Mapping::Codomain` to implement a partial order,
 /// but this makes everything complicated with little benefit.
-pub trait ConvexMapping<Domain: Space, F: Num = f64>: Mapping<Domain, Codomain = F> {
-    /// Returns (a lower estimate of) the factor of strong convexity.
-    ///
-    /// TODO: should include a specification of the respective norm.
+pub trait ConvexMapping<Domain: Normed<F>, F: Num = f64>: Mapping<Domain, Codomain = F> {
+    /// Returns (a lower estimate of) the factor of strong convexity in the norm of `Domain`.
     fn factor_of_strong_convexity(&self) -> F {
         F::ZERO
     }
@@ -43,7 +41,7 @@
 /// but a `Preconjugable` mapping has to be convex.
 pub trait Preconjugable<Domain, Predual, F: Num = f64>: ConvexMapping<Domain, F>
 where
-    Domain: Space,
+    Domain: Normed<F>,
     Predual: HasDual<F>,
 {
     type Preconjugate<'a>: Mapping<Predual, Codomain = F>
@@ -90,7 +88,7 @@
 
 impl<Domain, E, F> ConvexMapping<Domain, F> for NormMapping<F, E>
 where
-    Domain: Space,
+    Domain: Normed<F>,
     E: NormExponent,
     F: Float,
     Self: Mapping<Domain, Codomain = F>,
@@ -116,7 +114,7 @@
 
 impl<Domain, E, F> ConvexMapping<Domain, F> for NormConstraint<F, E>
 where
-    Domain: Space,
+    Domain: Normed<F>,
     E: NormExponent,
     F: Float,
     Self: Mapping<Domain, Codomain = F>,
@@ -127,7 +125,7 @@
 where
     E: HasDualExponent,
     F: Float,
-    Domain: HasDual<F> + Norm<F, E> + Space,
+    Domain: HasDual<F> + Norm<F, E> + Normed<F>,
     <Domain as HasDual<F>>::DualSpace: Norm<F, E::DualExp>,
 {
     type Conjugate<'a>
@@ -209,7 +207,7 @@
 
 impl<F, E, Domain> Mapping<Domain> for NormProjection<F, E>
 where
-    Domain: Space + Projection<F, E>,
+    Domain: Normed<F> + Projection<F, E>,
     F: Float,
     E: NormExponent,
 {
@@ -239,7 +237,7 @@
     }
 }
 
-impl<Domain: Space, F: Num> ConvexMapping<Domain, F> for Zero<Domain, F> {}
+impl<Domain: Normed<F>, F: Float> ConvexMapping<Domain, F> for Zero<Domain, F> {}
 
 impl<Domain: HasDual<F>, F: Float> Conjugable<Domain, F> for Zero<Domain, F> {
     type Conjugate<'a>
@@ -255,7 +253,7 @@
 
 impl<Domain, Predual, F: Float> Preconjugable<Domain, Predual, F> for Zero<Domain, F>
 where
-    Domain: Space,
+    Domain: Normed<F>,
     Predual: HasDual<F>,
 {
     type Preconjugate<'a>

mercurial