Incertidumbre
Cómo Sounio representa y (eventualmente) propaga la incertidumbre de medición.
Incertidumbre
El código científico está lleno de mediciones, y las mediciones nunca son exactas. Sounio trata la incertidumbre como dato de primera clase, en lugar de algo que rastreas en comentarios o hojas de cálculo.
Lo que Funciona Hoy (Realidad del Compilador)
El compilador aplica la regla de “sin unwrap silencioso” para Knowledge<T> (ver Knowledge<T>). Esto te da un límite confiable donde la información epistémica se descarta de forma intencional.
Más allá de eso, la propagación automática completa de incertidumbre depende de cuánto uses la stdlib epistémica y de qué features/backends del compilador estén habilitados.
En la Spec / Semántica Intencionada
El modelo intencionado sigue la práctica estándar de metrología (propagación estilo GUM para entradas independientes):
- Para
c = a ± b:u(c) = sqrt(u(a)^2 + u(b)^2)
- Para
c = a * boc = a / b(forma relativa):u_rel(c) = sqrt(u_rel(a)^2 + u_rel(b)^2), dondeu_rel(x) = u(x) / x
A nivel de lenguaje, el objetivo es que las operaciones sobre Knowledge<T>:
- calculen la nueva estimación puntual
- propaguen la incertidumbre
- actualicen la confianza (cuando aplique)
- anexen la procedencia
Guía Práctica
- Mantén los valores como
Knowledge<T>tanto como puedas. - Cuando debas cruzar a “datos planos”, usa
unwrap(reason)y registra el motivo. - Para código de dominio (PK/PD, neuroimagen, etc.), prefiere módulos de la stdlib que ya modelan incertidumbre y procedencia explícitamente.