--- a/src/mapping/dataterm.rs Mon Sep 01 00:04:22 2025 -0500 +++ b/src/mapping/dataterm.rs Mon Sep 01 13:51:03 2025 -0500 @@ -8,7 +8,7 @@ use super::{DifferentiableImpl, DifferentiableMapping, LipschitzDifferentiableImpl, Mapping}; use crate::convex::ConvexMapping; use crate::error::DynResult; -use crate::instance::{Instance, Space}; +use crate::instance::{ClosedSpace, Instance, Space}; use crate::linops::{BoundedLinear, Linear, Preadjointable}; use crate::norms::{Normed, L2}; use crate::types::Float; @@ -41,11 +41,7 @@ G: Mapping<A::Codomain, Codomain = F> + Clone, { fn clone(&self) -> Self { - DataTerm { - opA: self.opA.clone(), - b: self.b.clone(), - g: self.g.clone(), - } + DataTerm { opA: self.opA.clone(), b: self.b.clone(), g: self.g.clone() } } } @@ -78,7 +74,7 @@ X: Space, A: Mapping<X>, G: Mapping<A::Codomain, Codomain = F>, - A::Codomain: for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, + A::Codomain: ClosedSpace + for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, { type Codomain = F; @@ -97,7 +93,7 @@ X: Normed<F>, A: Linear<X>, G: ConvexMapping<A::Codomain, F>, - A::Codomain: Normed<F> + for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, + A::Codomain: ClosedSpace + Normed<F> + for<'a> Sub<&'a A::Codomain, Output = A::Codomain>, { } @@ -105,9 +101,11 @@ where F: Float, X: Space, - Y: Space + for<'a> Sub<&'a Y, Output = Y>, + Y: Space + Instance<Y> + for<'a> Sub<&'a Y, Output = Y>, //<A as Mapping<X>>::Codomain: Euclidean<F>, A: Linear<X, Codomain = Y> + Preadjointable<X, G::DerivativeDomain>, + G::DerivativeDomain: Instance<G::DerivativeDomain>, + A::PreadjointCodomain: ClosedSpace, //<<A as Mapping<X>>::Codomain as Euclidean<F>>::Output: Instance<<A as Mapping<X>>::Codomain>, G: DifferentiableMapping<Y, Codomain = F>, {