src/sliding_pdps.rs

changeset 96
5ba25d740dfc
parent 95
d9318317ccac
child 97
f91f382ba4ae
--- a/src/sliding_pdps.rs	Wed Aug 05 17:50:38 2026 -0500
+++ b/src/sliding_pdps.rs	Thu Aug 06 14:33:17 2026 -0500
@@ -108,9 +108,8 @@
     I: AlgIteratorFactory<IterInfo<F>>,
     Dat: DifferentiableMapping<MeasureZ<F, Z, U>, Codomain = F, DerivativeDomain = Pair<S, Z>>
         + BoundedCurvature<F>,
-    S: DifferentiableMapping<U, Codomain = F> + ClosedMul<F> + MinMaxMapping<U, F>,
+    S: ClosedMul<F>,
     for<'a> Pair<&'a P, &'a IdOp<Z>>: StepLengthBoundPair<F, Dat>,
-    //Pair<S, Z>: ClosedMul<F>,
     DiscreteMeasure<U, F>: SpikeMerging<F>,
     Reg: SlidingRegTerm<U, F>,
     P: TransportProxPenalty<U, S, Reg, F>,
@@ -420,7 +419,7 @@
     I: AlgIteratorFactory<IterInfo<F>>,
     Dat: DifferentiableMapping<MeasureZ<F, Z, U>, Codomain = F, DerivativeDomain = Pair<S, Z>>
         + BoundedCurvature<F>,
-    S: DifferentiableMapping<U, Codomain = F> + ClosedMul<F> + MinMaxMapping<U, F>,
+    S: ClosedMul<F>,
     DiscreteMeasure<U, F>: SpikeMerging<F>,
     Reg: SlidingRegTerm<U, F>,
     P: TransportProxPenalty<U, S, Reg, F>,
@@ -429,15 +428,10 @@
     for<'b> &'b Z: Instance<Z>,
     R: Prox<Z, Codomain = F>,
     Plot: Plotter<P::ReturnMapping, S, DiscreteMeasure<U, F>>,
-    // We should not need to explicitly require this:
-    for<'b> &'b Loc<0, F>: Instance<Loc<0, F>>,
-    // Loc<0, F>: StaticEuclidean<Field = F, PrincipalE = Loc<0, F>>
-    //     + Instance<Loc<0, F>>
-    //     + VectorSpace<Field = F>,
 {
     let opKz: ZeroOp<Z, Loc<0, F>, _, _, F> =
         ZeroOp::new_dualisable(StaticEuclideanOriginGenerator, z.dual_origin());
-    let fnH = Zero::new();
+    let fnH = Zero::<Loc<0, F>, F>::new();
     // Convert config. We don't implement From (that could be done with the o2o crate), as σd0
     // needs to be chosen in a general case; for the problem of this fucntion, anything is valid.
     let &SlidingFBConfig { τ0, σp0, insertion, transport, guess } = config;
@@ -495,22 +489,11 @@
     I: AlgIteratorFactory<IterInfo<F>>,
     Dat: DifferentiableMapping<MeasureZ<F, Z, U>, Codomain = F, DerivativeDomain = Pair<S, Z>>
         + BoundedCurvature<F>,
-    S: DifferentiableMapping<U, Codomain = F> + ClosedMul<F> + MinMaxMapping<U, F>,
+    S: ClosedMul<F>,
     for<'a> Pair<&'a P, &'a IdOp<Z>>: StepLengthBoundPair<F, Dat>,
-    //Pair<S, Z>: ClosedMul<F>,
     DiscreteMeasure<U, F>: SpikeMerging<F>,
     Reg: SlidingRegTerm<U, F>,
     P: TransportProxPenalty<U, S, Reg, F>,
-    // KOpM : Linear<DiscreteMeasure<U, F>, Codomain=Y>
-    //     + GEMV<F, DiscreteMeasure<U, F>>
-    //     + Preadjointable<
-    //         DiscreteMeasure<U, F>, Y,
-    //         PreadjointCodomain = S,
-    //     >
-    //     + TransportLipschitz<L2Squared, FloatType=F>
-    //     + AdjointProductBoundedBy<DiscreteMeasure<U, F>, 𝒟, FloatType=F>,
-    // for<'b> KOpM::Preadjoint<'b> : GEMV<F, Y>,
-    // Since Z is Hilbert, we may just as well use adjoints for K_z.
     KOpZ: BoundedLinear<Z, L2, L2, F, Codomain = Y>
         + GEMV<F, Z>
         + SimplyAdjointable<Z, Y, AdjointCodomain = Z>,
@@ -569,11 +552,6 @@
     for<'b> &'b Z: Instance<Z>,
     R: Prox<Z, Codomain = F>,
     Plot: Plotter<P::ReturnMapping, S, DiscreteMeasure<U, F>>,
-    // We should not need to explicitly require this:
-    for<'b> &'b Loc<0, F>: Instance<Loc<0, F>>,
-    // Loc<0, F>: StaticEuclidean<Field = F, PrincipalE = Loc<0, F>>
-    //     + Instance<Loc<0, F>>
-    //     + VectorSpace<Field = F>,
 {
     let opKz: ZeroOp<Z, Loc<0, F>, _, _, F> =
         ZeroOp::new_dualisable(StaticEuclideanOriginGenerator, z.dual_origin());

mercurial