Anthropicův Frontier Red Team a společnost Theorem, která se věnuje formálním metodám, uvádějí, že Claude vytvořil strojově kontrolované důkazy pro 239 vstupních bodů fuzzovacích testů ve 123 open-source knihovnách. Důkazy se vztahují na konkrétní vlastnosti bezpečnosti paměti a pádu programů přeložených pro RISC-V za přesně vymezených podmínek. Neprokazují, že jsou celé knihovny bez chyb.
9
5
Podle týmu práce trvala několik týdnů a vzniklo při ní přibližně 180 milionů řádků důkazového kódu v systému Rocq. Význam výsledku spočívá v možnosti využít AI k formálnímu ověřování většího množství reálného softwaru. Rozhodující ale zůstává, co přesně důkaz stanoví a za jakých podmínek platí.
3
13
Co důkazy skutečně potvrzují
Anthropic uvádí, že ověřované programy při každém vstupu menším než 64 MB řádně skončí, aniž dojde k chybě bezpečnosti paměti nebo selhání kontrolního tvrzení. Platí to pro modelované reakce operačního systému Linux a uspořádání paměti a za stanovených předpokladů. Předmětem důkazu jsou zkompilované programy pro RISC-V, nikoli obecná záruka pro všechny verze knihovny nebo každé její nasazení.
9
12
Tým využil existující vstupní body testů z projektu Google OSS-Fuzz jako formální specifikace. Fuzzing zkouší program na velkém množství vstupů; formální důkaz oproti tomu může potvrdit vlastnost pro všechny vstupy zahrnuté do vymezeného tvrzení.
3
13
Anthropic označuje projekt za první rozsáhlý pokus o formální ověřování produkčního softwaru na úrovni strojového kódu s pomocí AI. Jde o charakteristiku novosti ze strany týmu, nikoli o nezávisle potvrzený historický konsenzus.
7
13
Proč je důležitý kontrolní systém Rocq
Důkazy vytvářel Claude, ale jejich platnost kontrolovalo jádro systému Rocq. Vývojář proto nemusí spoléhat na samotné uvažování modelu ani ručně pročítat každý řádek důkazu, aby proběhla mechanická kontrola. Ani ta však neodstraňuje všechny předpoklady: důkaz musí popisovat vlastnost, na které vývojářům záleží, a formální modely i kontrolní systém zůstávají součástí základů, jimž je třeba důvěřovat.
9
5
Anthropic a další zdroje uvádějí zhruba 180 milionů řádků důkazů Rocq, v průměru přibližně 600 tisíc řádků na jeden binární program. Rozsah těchto výstupů dokládá velikost projektu, samotný počet řádků ale neříká, jak široce se daná vlastnost uplatní ani zda odpovídá potřebám konkrétního nasazení.
3
12
Co může testování přehlédnout
Fuzzing prověřuje mnoho různých vstupů, ale sám o sobě nedokazuje chování pro každý možný vstup v dané oblasti. Zprávy o projektu uvádějí, že Claude našel a opravil stovky chyb, včetně problémů, které unikly bilionům fuzzovacích běhů. Jde o údaje uváděné v souvislosti s tímto projektem, nikoli o nezávislé měření toho, jak často formální ověřování předčí testování v jiných projektech.
2
11
Praktický závěr tedy není, že by se mělo přestat testovat. Formální důkaz přináší jiný druh opory: pro přesně stanovenou vlastnost a rozsah může potvrdit chování napříč všemi vstupy, které odpovídají specifikaci, místo pouhých případů zahrnutých v testech.
9
2
Proč „ověřeno“ neznamená „bez chyb“
Záruky se týkají vybraných vstupních bodů a konkrétních zkompilovaných programů. Automaticky se nevztahují na všechny funkce knihovny, nastavení sestavení, architektury ani způsoby použití.
9
5
Záleží i na podmínkách, za kterých se důkazy vytvářely. Zprávy popisují jednovláknové statické programy pro RISC-V spuštěné v modelovaném prostředí Linuxu s pevně stanovenou pamětí. Většina uživatelů pracuje s verzemi zkompilovanými pro jiné architektury nebo konfigurace, takže výsledek nelze chápat jako záruku pro tato nasazení.
12
27
34
Důkaz navíc potvrzuje tvrzení, které bylo skutečně formulováno — ne všechny vlastnosti, které by vývojář mohl požadovat. Chyby mohou zůstat mimo jeho rozsah nebo ve formálních modelech a základech systému, který důkazy kontroluje.
5
31
Co si z výsledku mohou odnést vývojáři
Hlavním přínosem projektu je ukázka, že AI může pomoci zpřístupnit formální ověřování na úrovni strojového kódu pro větší množství reálného softwaru, než bývalo možné bez rozsáhlé práce specialistů. Výsledek ale neurčuje univerzální cenu ani nezaručuje, že stejný postup uspěje u každého kódu.
7
13
Veřejně jsou dostupné jen některé důkazové artefakty. Jeden ze zdrojů popisuje zveřejněnou část jako soubor důkazů pro 25 knihoven a 60 vstupních bodů, nikoli jako kompletní výsledky projektu. Theorem také oznámil program OSS Verify určený správcům open-source projektů.
32
16
38
Pro vývojáře je užitečné chápat důkaz jako ujištění s přesně vymezeným rozsahem: před jeho použitím je třeba ověřit konkrétní vstupní bod, zkompilovaný program, předpoklady i samotnou dokazovanou vlastnost. Výsledky dávají smysl posuzovat vedle testování, ne jako důvod testy opustit nebo předpokládat, že software už neobsahuje chyby.
9
5