pub trait RiemannMap<P: HKT4Unbound> {
// Required methods
fn curvature<A, B, C, D>(tensor: P::Type<A, B, C, D>, u: A, v: B, w: C) -> D;
fn scatter<A, B, C, D>(
interaction: P::Type<A, B, C, D>,
in_1: A,
in_2: B,
) -> (C, D);
}Expand description
The RiemannMap trait models high-arity geometric interactions, specifically the
Riemann Curvature Tensor and Scattering Matrices.
§Category Theory
This corresponds to a Multilinear Map in a Tensor Category. Specifically, the Curvature Tensor is a map $R: V \otimes V \otimes V \to V$.
§Mathematical Definition
The Riemann Curvature Tensor $R$ is defined in terms of the covariant derivative $\nabla$: $$ R(u, v)w = \nabla_u \nabla_v w - \nabla_v \nabla_u w - \nabla_{[u, v]} w $$ It measures the non-commutativity of parallel transport around a loop defined by $u$ and $v$.
§Use Cases
- General Relativity: Calculating gravity as spacetime curvature.
- Particle Physics: Scattering matrices (S-Matrix) taking 2 inputs and producing 2 outputs.
- Differential Geometry: Measuring the holonomy of a connection.
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.