Deterministic Fixed Point Arithmetic | Dweve Numerus

Numerus: deterministic fixed-point, decimal and integer arithmetic in Rust; same bits under a declared execution contract. Publishing in round two.

O registo do que aconteceu, guardado para poder ser relido.

Um resolvedor SMT, com um certificado anexado à resposta.

Regras como artefactos nomeados, com o motivo pelo qual uma verificação falhou.

Escolha o contrato numérico antes do primeiro cálculo, mantenha o raciocínio que o acompanhou e entregue a quem perguntar um registo que possa ser executado novamente na sua própria máquina.

O que obtém é a soma feita exatamente, o mesmo valor em todo o lado, e um registo de como foi alcançada.

É construído na Europa, sob regras europeias, e o seu código-fonte é publicado sob os termos Apache-2.0 na segunda ronda do programa de lançamento da fundação da Dweve. Os reguladores e os organismos de defesa do consumidor poderão inspecionar a aritmética diretamente, no dia em que entrar em funcionamento.

Se uma regra é correta continua a ser uma questão para as pessoas, e tem o direito de a levantar. O que isto lhe dá é algo sólido com que a levantar: um valor que sai igual quando qualquer pessoa o verifica, um registo escrito de como foi alcançado que não depende da memória de ninguém, e uma verificação que diz se esse registo foi alterado depois.

Se a regra que lhe está a ser aplicada for injusta, isto aplicá-la-á exatamente, ao cêntimo, a todos, todas as vezes. Não torna a regra justa e não consegue dizer que a regra é injusta. Tudo o que faz é garantir que o valor também não está errado, o que é uma promessa menor do que a que esperava e uma que é realmente cumprida.

Nada disto muda a única coisa que deve ouvir diretamente.

Portanto, o que chega até si é um valor com a sua própria margem anexada, ou um espaço em branco onde um número inventado teria sido colocado. Onde a máquina está também importa, e mais do que as pessoas esperam. O mesmo trabalho feito em França e na Alemanha resulta em valores de carbono muito diferentes, porque a eletricidade é produzida de forma diferente.

A contagem não é perfeita, e o software diz isso sem ser perguntado. Trabalhos demasiado pequenos para serem registados não deixam qualquer rasto nele. O mesmo trabalho executado duas vezes volta um pouco diferente dependendo do quão quente a máquina estava. Em alguns computadores alugados não consegue ver nada, e diz isso em vez de adivinhar.

Os computadores usam eletricidade para pensar. Toda a gente sabe isso, e ninguém alguma vez conseguiu dizer-lhe quanto disso foi gasto em qualquer trabalho. Os processadores mantêm a sua própria contagem contínua da energia que gastaram, e essa contagem pode ser lida. Assim, um trabalho pode voltar com a eletricidade que consumiu escrita ao lado, e onde a máquina não consegue dizer, com nada em vez de uma suposição.

Também pode responder a algo que ninguém podia perguntar há alguns anos: quanto custou a soma em eletricidade.

E nada disto precisa de telefonar para lado nenhum. A leitura, a dose, a distância de travagem: o valor é calculado onde é medido, por isso não há uma cópia dele sentada no computador de outra pessoa, e nada está à espera de uma ligação. Isso importa bastante mais quando o número é sobre o seu corpo do que quando é sobre a sua água.

Um contador é barato em parte porque não consegue lidar com frações, por isso conta em números inteiros. Isso acontece ser a mesma contagem que dá uma resposta idêntica em todas as máquinas. Portanto, a soma no seu armário não é uma versão mais grosseira da soma do banco porque a caixa era pequena. É a mesma soma.

O contador no seu armário decide o que deve pela água. Uma bomba numa enfermaria decide quanto de um medicamento entra. Uma caixa atrás do volante de um carro decide com que força travar. Ninguém está a vigiar nenhum deles, e todos estão a fazer o mesmo tipo de aritmética que um banco faz com o seu dinheiro. Pode ser feito com o mesmo padrão, e a resposta nunca tem de sair da sala onde foi calculada.

uma organização que mantivesse o trabalho poderia entregá-lo na mesma tarde

estás a pedir o cálculo, e é normal pedi-lo

e, em cada caso, o cálculo, não um resumo dele

a um organismo público, por uma decisão sobre o teu dinheiro

a um hospital, por uma dose que foi calculada

ao teu fornecedor de energia, por uma fatura que contestas

ao teu banco, por um valor no teu extrato

Feito assim, a resposta não é a melhor recordação de alguém. Os números de onde partiu foram guardados, e também o que lhes foi feito e em que ordem. Volta a executar e sai idêntico, não aproximado. Se o registo foi alterado entretanto, isso aparece primeiro, antes de alguém voltar a executar seja o que for.

Provavelmente já pediste e recebeste uma resposta fraca. Alguém consulta a versão atual do cálculo, executa-a com os números de hoje e diz-te que dá aproximadamente certo. Ninguém está a fugir à questão. A coisa que produziu o teu valor na primavera passada já não existe, por isso não há nada para apontar.

Nada disto responde à pergunta que qualquer pessoa faria a seguir.

O último mês de março sai do novo sistema exatamente como saía do antigo, por isso a declaração que entregaste continua válida e não há tarde para perder. Pergunta como se chegou a um valor e recebes o cálculo, não um encolher de ombros. Também não tens de confiar que o cálculo ficou intacto, porque qualquer alteração posterior aparece.

Nenhuma parte da resposta vem da máquina. Não há arredondamento que funcione de uma forma num chip e de outra no seguinte, nem atalho que um computador mais rápido tome e um mais lento não tome. Muda a máquina e o valor não se move, e também não se move o formulário que entregaste com ele nem a carta que o citou.

Em algum lugar por detrás do teu banco, do teu fornecedor de energia ou das finanças, o software é substituído. Ninguém te avisa, e normalmente não te importarias. Importas-te no dia em que o novo sistema soma o ano passado e obtém uma resposta diferente, porque o formulário que já entregaste deixa de corresponder ao sistema que o produziu, e quem tem de explicar isso és tu.

Uma fatura é liquidada numa semana. Os documentos são relidos um ano depois.

Aqui, o ponto de arredondamento é escrito uma vez, antes de qualquer soma, e todas as cópias da tua fatura seguem-no. Por isso, não há chamada telefónica, nem suspensão da conta, nem três semanas. As cópias correspondem porque foram calculadas da mesma forma, não porque alguém se sentou depois e as fez concordar.

A razão é mais pequena do que parece. Os impostos saem em frações de cêntimo, e alguém tem de decidir onde essas frações são arredondadas. Um sistema arredonda em cada linha. O outro arredonda uma vez, no total. Ambos são razoáveis, e podem ficar a um cêntimo de distância sem que nenhum esteja errado.

Uma fatura, três cópias: o recibo na tua mão, a caixa da loja e o teu banco. De vez em quando, duas delas terminam num cêntimo diferente. Nada foi roubado e ninguém foi descuidado, e mesmo assim és tu quem atende a chamada, e tu quem espera três semanas enquanto alguém decide qual cópia estava certa.

Pequeno o suficiente para ignorar, até ao momento em que o valor é o que deves.

Isto conta em números inteiros, como contarias moedas, por isso não sobra nada e nada se desvia. O que isso te compra é aborrecido e vale a pena. O teu telemóvel, o leitor de cartões no balcão da loja e um computador noutro país terminam todos no mesmo valor, e o mais antigo dos três não está menos certo do que o mais recente.

Um computador escreve um décimo como escreverias um terço em decimal, ou seja, não exatamente. Por si só, a diferença é demasiado pequena para se ver. Mas não fica por si só: uma fatura tem linhas, um ano tem doze faturas, e cada uma dessas diferenças ainda está no total no fundo, que é o valor que te pedem para pagar.

O valor que te deram saiu de uma máquina, e uma máquina diferente poderia ter-te dado um ligeiramente diferente. Pede a um computador um décimo mais dois décimos e, se fizeres com que mostre todos os dígitos que está a guardar, a resposta termina num quatro perdido. Todas as máquinas fazem isso, por isso ninguém nota. Cada uma limpa o quatro perdido à sua maneira, e é assim que uma soma, calculada aqui e calculada noutro país, termina em dois lugares diferentes.

O que recebes é um valor que responde por si próprio, e uma decisão sobre ele com uma data.

O pacote de certificação começa a conversa com um auditor, e o que a fecha é a tua submissão contra o teu próprio produto, que ninguém te pode dar. E se nenhum valor que a tua organização produz tiver de ser defendido perante alguém de fora, a resposta honesta é que nada disto vale a mudança.

O medidor de energia cobre um sistema operativo numa arquitetura e, noutros casos, recusa em vez de estimar. Provar uma propriedade requer um solucionador externo instalado e, sem ele, obtém limites e intervalos, que são úteis e não são provas.

Nada o faz. Produz evidência, e uma pessoa avalia a evidência. Manterá um contrato numérico mal escolhido com total consistência e produzirá um registo impecável de o ter feito, e o registo é a parte útil, em vez de uma promessa de correção, porque uma promessa não é verificável e um registo é.