Formální ověření

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 16. ledna 2018; kontroly vyžadují 10 úprav .

Formální ověření nebo formální důkaz je formální důkaz shody nebo nesouladu předmětu ověřování s jeho formálním popisem. Předmětem jsou algoritmy, programy a další důkazy.

Vzhledem k rutinnosti i jednoduché formální verifikace a teoretické možnosti jejich úplné automatizace, formální verifikace obvykle znamená automatickou verifikace pomocí programu .

Odůvodnění

Testování softwaru nemůže prokázat, že systém, algoritmus nebo program neobsahuje žádné chyby a defekty a splňuje určitou vlastnost. To lze provést formálním ověřením.

Aplikace

Formální verifikaci lze použít k ověření systémů, jako je software zdrojového kódu, kryptografické protokoly , kombinatorické logické obvody , digitální obvody s vnitřní pamětí.

Teoretické základy

Verifikace je formálním důkazem na abstraktním matematickém modelu systému za předpokladu, že korespondence mezi matematickým modelem a povahou systému je považována za původně danou. Například k sestavení modelu nebo matematické analýzy a důkazu správnosti algoritmů a programů.

Příklady matematických objektů často používaných pro modelování a formální ověřování programů a systémů jsou:

Přístupy k formálnímu ověřování

Existují následující přístupy k formálnímu ověření:

Programování založené na důkazech

Evidence-based programování je technologie používaná v akademických kruzích v 80. letech 20. století pro vývoj programů pro počítače s důkazy správnosti - důkazy o absenci chyb v programech (v rámci této teorie chyby chápány jako nesrovnalosti mezi koncipovaným algoritmem a skutečný algoritmus implementovaný programem).

Automatické ověřování důkazů

Důkaz lze plně zautomatizovat jen pro velmi malý okruh jednoduchých teorií, proto se stává důležitým jeho automatické ověřování a k tomu i transformace do ověřitelné podoby. Značné množství prakticky důležitých problémů, včetně např. problému zastavení , je algoritmicky neřešitelných .

Aby se zachovala přísnost při kontrole důkazu ověřovatelem, měli byste zkontrolovat také ověřovatele, pro který je potřeba ještě jeden ověřovatel atd. Výsledný nekonečný řetězec ověřovatelů by se mohl zhroutit vytvořením samoověřovacího ověřovače, který má schopnost rozvinout se do praktického.

Viz také

Literatura