tawasuyu

tawasuyu/hifas

Motor en Rust para decidir, con demostración y no a ojo, cuándo un conjunto de réplicas local-first puede operar sin coordinación y cuándo no — y, cuando la respuesta es "sí, dentro de límites", proveer el mecanismo que lo garantiza.

Rust 15Markdown 3TOML 1175 Definitions

⎇ 6595dbed856eec31669beb6db74b456faa4be9a1 src/cohomology.rs Rust · 33 lines · 1.2 KB History Who touched what raw

M0/T0: scaffold del crate sheafsync 6595dbed8 · Sergio ·

1//! `cohomology` — la única cuenta que importa (§6.4, §7).
2//!
3//! `rank δ`, `dim H⁰`, `dim H¹` y una base del cokernel para localizar el nudo.
4//! M0: forma del resultado y firma de `compute`. La cuenta llega en T1.
5
6use crate::error::{Result, SheafError};
7use crate::linalg::Scalar;
8use crate::sheaf::Sheaf;
9
10/// Resultado del cálculo cohomológico sobre un haz.
11#[derive(Debug, Clone, PartialEq)]
12pub struct Cohomology {
13    /// `dim C⁰ = Σ dim F(v)`.
14    pub dim_c0: usize,
15    /// `dim C¹ = Σ dim F(e)`.
16    pub dim_c1: usize,
17    /// `rank δ`.
18    pub rank_delta: usize,
19    /// `dim H⁰ = dim_c0 − rank_delta` (secciones globales coherentes).
20    pub dim_h0: usize,
21    /// `dim H¹ = dim_c1 − rank_delta` (obstrucciones).
22    pub dim_h1: usize,
23    /// Si `dim_h1 > 0`, una base del cokernel: cada vector señala aristas
24    /// que participan en la obstrucción (para localizar el nudo).
25    pub obstruction_basis: Vec<Vec<Scalar>>,
26}
27
28/// Calcula la cohomología del haz vía eliminación gaussiana (§7).
29///
30/// M0: no implementado; llega en T1.
31pub fn compute(_sheaf: &Sheaf) -> Result<Cohomology> {
32    Err(SheafError::NotImplemented("cohomology::compute llega en T1"))
33}