src/convex.rs

branch
dev
changeset 129
d2994e34a5f5
parent 124
6aa955ad8122
child 131
8264d72aa347
child 132
89371dc4d637
--- 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>);

mercurial