--- a/src/norms.rs Mon May 12 20:40:14 2025 -0500 +++ b/src/norms.rs Mon May 12 23:29:17 2025 -0500 @@ -3,6 +3,7 @@ */ use crate::euclidean::*; +use crate::linops::AXPY; use crate::mapping::{Instance, Mapping, Space}; use crate::types::*; use serde::{Deserialize, Serialize}; @@ -231,8 +232,10 @@ } } -pub trait HasDual<F: Num = f64>: Normed<F> { - type DualSpace: Normed<F>; +pub trait HasDual<F: Num = f64>: Normed<F> + AXPY<Field = F> { + type DualSpace: Normed<F> + AXPY<Field = F>; + + fn dual_origin(&self) -> <Self::DualSpace as AXPY>::Owned; } /// Automatically implemented trait for reflexive spaces