src/convex.rs

branch
dev
changeset 164
fd9dba51afd3
parent 163
b4a47e8e80d1
child 168
93daa824c04a
--- a/src/convex.rs	Wed Sep 03 09:52:30 2025 -0500
+++ b/src/convex.rs	Wed Sep 03 10:08:28 2025 -0500
@@ -57,7 +57,7 @@
 /// The conjugate type has to implement [`ConvexMapping`], but a `Conjugable` mapping need
 /// not be convex.
 pub trait Prox<Domain: Space>: Mapping<Domain> {
-    type Prox<'a>: Mapping<Domain, Codomain = Domain::OwnedSpace>
+    type Prox<'a>: Mapping<Domain, Codomain = Domain::Principal>
     where
         Self: 'a;
 
@@ -65,15 +65,15 @@
     fn prox_mapping(&self, τ: Self::Codomain) -> Self::Prox<'_>;
 
     /// Calculate the proximal mapping with weight τ
-    fn prox<I: Instance<Domain>>(&self, τ: Self::Codomain, z: I) -> Domain::OwnedSpace {
+    fn prox<I: Instance<Domain>>(&self, τ: Self::Codomain, z: I) -> Domain::Principal {
         self.prox_mapping(τ).apply(z)
     }
 
     /// Calculate the proximal mapping with weight τ in-place
-    fn prox_mut<'b>(&self, τ: Self::Codomain, y: &'b mut Domain::OwnedSpace)
+    fn prox_mut<'b>(&self, τ: Self::Codomain, y: &'b mut Domain::Principal)
     where
         Domain::Decomp: DecompositionMut<Domain>,
-        for<'a> &'a Domain::OwnedSpace: Instance<Domain>,
+        for<'a> &'a Domain::Principal: Instance<Domain>,
     {
         *y = self.prox(τ, &*y);
     }
@@ -98,7 +98,7 @@
 impl<F, E, Domain> Mapping<Domain> for NormConstraint<F, E>
 where
     Domain: Space,
-    Domain::OwnedSpace: Norm<E, F>,
+    Domain::Principal: Norm<E, F>,
     F: Float,
     E: NormExponent,
 {
@@ -127,7 +127,7 @@
     E: HasDualExponent,
     F: Float,
     Domain: HasDual<F>,
-    Domain::OwnedSpace: Norm<E, F>,
+    Domain::Principal: Norm<E, F>,
     <Domain as HasDual<F>>::DualSpace: Norm<E::DualExp, F>,
 {
     type Conjugate<'a>
@@ -146,7 +146,7 @@
     E: HasDualExponent,
     F: Float,
     Domain: HasDual<F>,
-    Domain::OwnedSpace: Norm<E, F>,
+    Domain::Principal: Norm<E, F>,
     <Domain as HasDual<F>>::DualSpace: Norm<E::DualExp, F>,
 {
     type Conjugate<'a>
@@ -165,10 +165,10 @@
 impl<Domain, E, F> Prox<Domain> for NormConstraint<F, E>
 where
     Domain: Space,
-    Domain::OwnedSpace: Norm<E, F>,
+    Domain::Principal: Norm<E, F>,
     E: NormExponent,
     F: Float,
-    NormProjection<F, E>: Mapping<Domain, Codomain = Domain::OwnedSpace>,
+    NormProjection<F, E>: Mapping<Domain, Codomain = Domain::Principal>,
 {
     type Prox<'a>
         = NormProjection<F, E>
@@ -206,11 +206,11 @@
 impl<F, E, Domain> Mapping<Domain> for NormProjection<F, E>
 where
     Domain: Space,
-    Domain::OwnedSpace: ClosedSpace + Projection<F, E>,
+    Domain::Principal: ClosedSpace + Projection<F, E>,
     F: Float,
     E: NormExponent,
 {
-    type Codomain = Domain::OwnedSpace;
+    type Codomain = Domain::Principal;
 
     fn apply<I: Instance<Domain>>(&self, d: I) -> Self::Codomain {
         d.own().proj_ball(self.radius, self.exponent)
@@ -253,7 +253,7 @@
 impl<Domain, Predual, F: Float> Preconjugable<Domain, Predual, F> for Zero<Domain, F>
 where
     Domain: Normed<F>,
-    Predual: HasDual<F, Owned = Predual>,
+    Predual: HasDual<F, PrincipalV = Predual>,
 {
     type Preconjugate<'a>
         = ZeroIndicator<Predual, F>
@@ -292,7 +292,7 @@
 where
     F: Float,
     Domain: Space,
-    Domain::OwnedSpace: Normed<F>,
+    Domain::Principal: Normed<F>,
 {
     type Codomain = F;
 
@@ -305,7 +305,7 @@
 impl<Domain, F: Float> ConvexMapping<Domain, F> for ZeroIndicator<Domain, F>
 where
     Domain: Space,
-    Domain::OwnedSpace: Normed<F>,
+    Domain::Principal: Normed<F>,
 {
     fn factor_of_strong_convexity(&self) -> F {
         F::INFINITY
@@ -315,7 +315,7 @@
 impl<Domain, F: Float> Conjugable<Domain, F> for ZeroIndicator<Domain, F>
 where
     Domain: HasDual<F>,
-    Domain::Owned: Normed<F>,
+    Domain::PrincipalV: Normed<F>,
 {
     type Conjugate<'a>
         = Zero<Domain::DualSpace, F>
@@ -331,7 +331,7 @@
 impl<Domain, Predual, F: Float> Preconjugable<Domain, Predual, F> for ZeroIndicator<Domain, F>
 where
     Domain: Space,
-    Domain::OwnedSpace: Normed<F>,
+    Domain::Principal: Normed<F>,
     Predual: HasDual<F>,
 {
     type Preconjugate<'a>
@@ -347,7 +347,7 @@
 
 impl<Domain, F> Prox<Domain> for ZeroIndicator<Domain, F>
 where
-    Domain: AXPY<Field = F, Owned = Domain> + Normed<F>,
+    Domain: AXPY<Field = F, PrincipalV = Domain> + Normed<F>,
     F: Float,
 {
     type Prox<'a>
@@ -430,7 +430,7 @@
     F: Float,
     X: Euclidean<F>,
 {
-    type Derivative = X::Owned;
+    type Derivative = X::PrincipalV;
 
     fn differential_impl<I: Instance<X>>(&self, x: I) -> Self::Derivative {
         x.into_owned()

mercurial