pub struct KaniDiamond {
pub e0: Curve2,
pub e_curve: Curve2,
pub c_curve: Curve2,
pub d: u64,
pub c: u64,
pub e: u32,
}Expand description
A Castryck–Decru Kani diamond: a secret isogeny φ: E₀ → E of degree d and an auxiliary isogeny
γ: E₀ → C of degree c, chosen so c + d = 2^e. Kani’s lemma then supplies a (2^e, 2^e)-isogeny of
the abelian surface E × C — a length-e Richelot chain — whose codomain splits into a product of
elliptic curves iff the diamond is consistent. The split-test
(crate::hyperelliptic::surface_is_reducible) is the per-digit oracle that reads that
splitting off. Honest boundary: this builds and validates the diamond’s degree structure and both
isogeny sides; constructing the surface’s 2^e-torsion kernel from the diamond and the torsion images —
the input the split-oracle consumes — is the remaining SageMath-scale research core and is not
fabricated here.
Fields§
§e0: Curve2§e_curve: Curve2Codomain of the secret isogeny φ (degree d).
c_curve: Curve2Codomain of the auxiliary isogeny γ (degree c).
d: u64§c: u64§e: u32c + d = 2^e.
Trait Implementations§
Source§impl Clone for KaniDiamond
impl Clone for KaniDiamond
Source§fn clone(&self) -> KaniDiamond
fn clone(&self) -> KaniDiamond
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more