diff -r b4a47e8e80d1 -r fd9dba51afd3 src/convex.rs --- 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: Mapping { - type Prox<'a>: Mapping + type Prox<'a>: Mapping where Self: 'a; @@ -65,15 +65,15 @@ fn prox_mapping(&self, τ: Self::Codomain) -> Self::Prox<'_>; /// Calculate the proximal mapping with weight τ - fn prox>(&self, τ: Self::Codomain, z: I) -> Domain::OwnedSpace { + fn prox>(&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, - for<'a> &'a Domain::OwnedSpace: Instance, + for<'a> &'a Domain::Principal: Instance, { *y = self.prox(τ, &*y); } @@ -98,7 +98,7 @@ impl Mapping for NormConstraint where Domain: Space, - Domain::OwnedSpace: Norm, + Domain::Principal: Norm, F: Float, E: NormExponent, { @@ -127,7 +127,7 @@ E: HasDualExponent, F: Float, Domain: HasDual, - Domain::OwnedSpace: Norm, + Domain::Principal: Norm, >::DualSpace: Norm, { type Conjugate<'a> @@ -146,7 +146,7 @@ E: HasDualExponent, F: Float, Domain: HasDual, - Domain::OwnedSpace: Norm, + Domain::Principal: Norm, >::DualSpace: Norm, { type Conjugate<'a> @@ -165,10 +165,10 @@ impl Prox for NormConstraint where Domain: Space, - Domain::OwnedSpace: Norm, + Domain::Principal: Norm, E: NormExponent, F: Float, - NormProjection: Mapping, + NormProjection: Mapping, { type Prox<'a> = NormProjection @@ -206,11 +206,11 @@ impl Mapping for NormProjection where Domain: Space, - Domain::OwnedSpace: ClosedSpace + Projection, + Domain::Principal: ClosedSpace + Projection, F: Float, E: NormExponent, { - type Codomain = Domain::OwnedSpace; + type Codomain = Domain::Principal; fn apply>(&self, d: I) -> Self::Codomain { d.own().proj_ball(self.radius, self.exponent) @@ -253,7 +253,7 @@ impl Preconjugable for Zero where Domain: Normed, - Predual: HasDual, + Predual: HasDual, { type Preconjugate<'a> = ZeroIndicator @@ -292,7 +292,7 @@ where F: Float, Domain: Space, - Domain::OwnedSpace: Normed, + Domain::Principal: Normed, { type Codomain = F; @@ -305,7 +305,7 @@ impl ConvexMapping for ZeroIndicator where Domain: Space, - Domain::OwnedSpace: Normed, + Domain::Principal: Normed, { fn factor_of_strong_convexity(&self) -> F { F::INFINITY @@ -315,7 +315,7 @@ impl Conjugable for ZeroIndicator where Domain: HasDual, - Domain::Owned: Normed, + Domain::PrincipalV: Normed, { type Conjugate<'a> = Zero @@ -331,7 +331,7 @@ impl Preconjugable for ZeroIndicator where Domain: Space, - Domain::OwnedSpace: Normed, + Domain::Principal: Normed, Predual: HasDual, { type Preconjugate<'a> @@ -347,7 +347,7 @@ impl Prox for ZeroIndicator where - Domain: AXPY + Normed, + Domain: AXPY + Normed, F: Float, { type Prox<'a> @@ -430,7 +430,7 @@ F: Float, X: Euclidean, { - type Derivative = X::Owned; + type Derivative = X::PrincipalV; fn differential_impl>(&self, x: I) -> Self::Derivative { x.into_owned()