--- 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()