Localized V2 rewrite for this language is in progress. Showing English-first content for now.

Incerteza

Como Sounio representa e (eventualmente) propaga incerteza de medição.

Incerteza

Código científico é cheio de medições, e medições nunca são exatas. Sounio trata incerteza como dado de primeira classe, em vez de algo que você acompanha em comentários ou planilhas.

O que Funciona Hoje (Realidade do Compilador)

O compilador aplica a regra de “sem unwrap silencioso” para Knowledge<T> (veja Knowledge<T>). Isso te dá uma fronteira confiável onde a informação epistêmica é descartada de forma intencional.

Além disso, a propagação automática completa de incerteza depende de quanto da stdlib epistêmica você usa e de quais features/backends do compilador estão habilitados.

Na Spec / Semântica Pretendida

O modelo pretendido segue práticas padrão de metrologia (propagação estilo GUM para entradas independentes):

  • Para c = a ± b:
    • u(c) = sqrt(u(a)^2 + u(b)^2)
  • Para c = a * b ou c = a / b (forma relativa):
    • u_rel(c) = sqrt(u_rel(a)^2 + u_rel(b)^2), onde u_rel(x) = u(x) / x

No nível da linguagem, o objetivo é que operações em Knowledge<T>:

  • calculem a nova estimativa pontual
  • propaguem incerteza
  • atualizem confiança (quando aplicável)
  • anexem proveniência

Orientação Prática

  • Mantenha valores como Knowledge<T> pelo maior tempo possível.
  • Quando precisar cruzar para “dados puros”, use unwrap(reason) e registre o motivo.
  • Para código de domínio (PK/PD, neuroimagem, etc.), prefira módulos da stdlib que já modelam incerteza e proveniência explicitamente.

Próximo