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.
Optegnelsen over, hvad der skete, bevaret så den kan læses igen.
En SMT-løser med et certifikat knyttet til svaret.
Regler som navngivne artefakter med grunden til, at en kontrol fejlede.
Vælg den numeriske kontrakt før den første beregning, behold den ræsonnering, der fulgte med, og giv enhver, der spørger, en optegnelse, de kan køre igen på deres egen maskine.
Det, du får, er summen udført præcist, det samme tal overalt, og en optegnelse over, hvordan den blev nået.
Det er bygget i Europa, under europæiske regler, og kilden udgives under Apache-2.0-vilkår i anden runde af Dweves fondsudgivelsesprogram. Tilsynsmyndigheder og forbrugerorganisationer vil kunne inspicere regnestykket direkte den dag, det går live.
Om en regel er rigtig, forbliver et spørgsmål for mennesker, og du har ret til at rejse det. Det, dette giver dig, er noget solidt at rejse det med: et tal, der kommer ud ens, når nogen kontrollerer det, en skriftlig optegnelse over, hvordan det blev nået, som ikke hviler på nogens hukommelse, og en kontrol, der siger, om optegnelsen blev ændret bagefter.
Hvis reglen, der anvendes på dig, er unfair, vil dette anvende den præcist, til øret, på alle, hver gang. Det gør ikke reglen fair, og det kan ikke se, at reglen er unfair. Alt, det gør, er at sikre, at tallet heller ikke er forkert, hvilket er et mindre løfte, end du håbede på, og et, der faktisk holdes.
Intet af dette ændrer den ene ting, du bør høre direkte.
Så det, der når dig, er et tal med sin egen margin knyttet, eller et tomt felt, hvor et opfundet tal ville have stået. Hvor maskinen står, betyder også noget, og mere end folk forventer. Det samme arbejde udført i Frankrig og i Tyskland kommer ud med meget forskellige klimatal, fordi elektriciteten er lavet forskelligt.
Tællingen er ikke perfekt, og softwaren siger det uden at blive spurgt. Job, der er for små til at registreres, efterlader ingen spor på den overhovedet. Det samme job kørt to gange kommer tilbage lidt forskelligt afhængigt af, hvor varm maskinen var. På nogle lejede computere kan den ikke se noget, og den siger det i stedet for at gætte.
Computere bruger elektricitet til at tænke. Det ved alle, og ingen har nogensinde kunnet fortælle dig, hvor meget af det, der gik til et enkelt job. Processorer holder deres egen løbende optælling af den energi, de har brugt, og den optælling kan læses. Så et stykke arbejde kan komme tilbage med den elektricitet, det tog, skrevet ved siden af, og hvor maskinen ikke kan sige det, med intet i stedet for et gæt.
Den kan også svare på noget, ingen kunne spørge om for få år siden: hvad summen kostede i elektricitet.
Og intet af det behøver at ringe hjem. Aflæsningen, dosis, bremselængden: tallet beregnes, hvor det måles, så der er ingen kopi af det på en andens computer, og intet venter på en forbindelse. Det betyder mere, når tallet handler om din krop, end når det handler om dit vand.
En måler er billig, delvist fordi den slet ikke kan håndtere brøker, så den tæller i hele tal. Det er tilfældigvis den samme tælling, der giver et identisk svar på enhver maskine. Så summen i dit skab er ikke en grovere version af bankens sum, fordi boksen var lille. Det er den samme sum.
Måleren i dit skab afgør, hvad du skylder for vand. En pumpe på en hospitalsafdeling afgør, hvor meget af et lægemiddel, der går ind. En boks bag et bils hjul afgør, hvor hårdt der bremses. Ingen overvåger nogen af dem, og hver eneste laver den samme slags regnestykke, som en bank laver med dine penge. Det kan gøres til samme standard, og svaret behøver aldrig at forlade det rum, det blev regnet ud i.
en organisation, der beholdt arbejdet, kan aflevere det samme eftermiddag
du beder om beregningen, og det er en helt normal ting at bede om
og i hvert enkelt tilfælde selve beregningen, ikke et resumé af den
et offentligt organ, for en afgørelse om dine penge
et hospital, for en dosis, der blev beregnet
dit energiselskab, for en regning, du bestrider
Gjort på denne måde er svaret ikke nogens bedste erindring. Tallene, der blev startet ud fra, blev gemt, og det samme gjorde det, der blev gjort ved dem, og i hvilken rækkefølge. Kør det igen, og det kommer ud identisk frem for tæt på. Hvis registreringen blev ændret undervejs, viser det sig først, før nogen kører noget igen.
Du har sikkert spurgt om det og fået et dårligt svar tilbage. Nogen slår den aktuelle version af beregningen op, kører den på nutidens tal og fortæller dig, at den cirka passer. Ingen er undvigende. Det, der producerede dit tal sidste forår, findes ikke længere, så der er ikke noget at pege på.
Intet af det besvarer det spørgsmål, som enhver ville stille som det næste.
Sidste marts kommer ud af det nye system præcis, som det kom ud af det gamle, så den selvangivelse, du indsendte, står stadig ved magt, og der er ingen eftermiddag at miste. Spørg, hvordan et tal blev nået, og du får beregningen frem for et skuldertræk. Du behøver heller ikke at stole på, at beregningen blev efterladt urørt, fordi alt, der blev ændret bagefter, viser sig.
Intet af svaret kommer fra maskinen. Der er ingen afrunding, der går den ene vej på en chip og den anden vej på den næste, og ingen genvej, som en hurtigere computer tager, som en langsommere ikke gør. Skift maskinen, og tallet flytter sig ikke, og det gør den formular, du indsendte med den, eller det brev, der citerede det, heller ikke.
Et sted bag din bank, dit energiselskab eller skatteforvaltningen bliver softwaren udskiftet. Ingen fortæller dig det, og normalt ville du ikke bekymre dig. Du bekymrer dig den dag, det nye system lægger sidste år sammen og får et andet svar, fordi den formular, du allerede indsendte, ikke længere matcher det system, der producerede den, og den person, der skal forklare det, er dig.
En regning bliver afgjort på en uge. Papirerne bliver læst igen et år senere.
Her er afrundingspunktet skrevet ned én gang, før noget bliver lagt sammen, og hver kopi af din regning følger det. Så der er ingen telefonsamtale, ingen blokering af kontoen og ingen tre uger. Kopierne stemmer, fordi de blev udregnet på samme måde, ikke fordi nogen satte sig ned bagefter og fik dem til at stemme.
Årsagen er mindre, end den lyder. Skat kommer ud i brøkdele af en cent, og nogen skal beslutte, hvor de brøkdele bliver rundet af. Det ene system runder på hver linje. Det andet runder én gang, på totalen. Begge er rimelige, og de kan ende en cent fra hinanden uden at nogen af dem tager fejl.
Én regning, tre kopier: kvitteringen i din hånd, butikkens kasseapparat og din banks. Af og til ender to af dem på en anden cent. Intet blev stjålet, og ingen var skødesløs, og det er stadig dig, der tager telefonsamtalen, og dig, der venter tre uger, mens nogen beslutter, hvilken kopi der havde ret.
Lille nok til at ignorere, lige indtil tallet er det, du skylder.
Dette tæller i hele tal i stedet, som du ville tælle mønter, så der er intet tilovers, og intet driver. Det, det giver dig, er kedeligt og værd at have. Din telefon, kortlæseren på butiksdisken og en computer i et andet land ender alle på samme tal, og den ældste af de tre er ikke mindre korrekt end den nyeste.
En computer skriver en tiendedel, som du ville skrive en tredjedel som decimaltal, hvilket vil sige ikke helt. Alene er afstanden alt for lille til at se. Den forbliver ikke alene: en regning har linjer, et år har tolv regninger, og hver eneste af de afstande sidder stadig i totalen nederst, som er det tal, du bliver bedt om at betale.
Det tal, du fik udleveret, kom ud af en maskine, og en anden maskine kunne have givet dig et lidt andet. Bed en computer om en tiendedel plus to tiendedele, og hvis du får den til at vise hvert ciffer, den holder, ender svaret med en løs fire. Enhver maskine gør det, så ingen lægger mærke til det. Hver enkelt rydder den løse fire væk på sin egen måde, og sådan ender én sum, udregnet her og udregnet i et andet land, to forskellige steder.
Det, du får, er et tal, der svarer for sig selv, og en afgørelse om det med en dato på.
Certificeringspakken starter samtalen med en revisor, og det, der afslutter den, er din indsendelse mod dit eget produkt, som ingen kan give dig. Og hvis intet tal, din organisation producerer, nogensinde skal forsvares over for nogen uden for den, er det ærlige svar, at intet af dette er værd at ændre.
Energimåleren dækker ét operativsystem på én arkitektur, og andre steder afviser den i stedet for at estimere. At bevise en egenskab kræver en ekstern solver installeret, og uden den får du grænser og intervaller, som er nyttige, men ikke beviser.
Intet gør. Den producerer dokumentation, og et menneske vurderer dokumentationen. Den vil holde en dårligt valgt numerisk kontrakt med fuldstændig konsistens og producere en fejlfri registrering af at have gjort det, og registreringen er den nyttige del snarere end et løfte om korrekthed, fordi et løfte ikke kan kontrolleres, mens en registrering kan.
Og det er værd at være lige så klar om, hvad dette ikke giver dig.
Ingen af de fire er frafaldet. De gælder ikke, hvilket er en væsentligt stærkere position end et frafald, og det er forskellen mellem et bibliotek og en tjeneste forklædt som ét. Dit release-artefakt fastlåser versionen og licensen, og en kendt build kan beholdes til en hændelse uden at spørge nogen.