--- a/src/convex.rs Sun May 11 02:03:45 2025 -0500 +++ b/src/convex.rs Mon May 12 15:42:48 2025 -0500 @@ -5,7 +5,7 @@ use crate::error::DynResult; use crate::euclidean::Euclidean; use crate::instance::{DecompositionMut, Instance, InstanceMut}; -use crate::linops::{IdOp, Scaled}; +use crate::linops::{IdOp, Scaled, SimpleZeroOp, AXPY}; use crate::mapping::{DifferentiableImpl, LipschitzDifferentiableImpl, Mapping, Space}; use crate::norms::*; use crate::operator_arithmetic::{Constant, Weighted}; @@ -333,6 +333,22 @@ } } +impl<Domain, F> Prox<Domain> for ZeroIndicator<Domain, F> +where + Domain: AXPY<Field = F, Owned = Domain> + Normed<F>, + F: Float, +{ + type Prox<'a> + = SimpleZeroOp + where + Self: 'a; + + /// Returns a proximal mapping with weight τ + fn prox_mapping(&self, _τ: F) -> Self::Prox<'_> { + return SimpleZeroOp; + } +} + /// The squared Euclidean norm divided by two #[derive(Copy, Clone, Serialize, Deserialize)] pub struct Norm222<F: Float>(PhantomData<F>);