A B formális nyelv (B-method, B formal method)

Helyességbizonyítás

Általános értékadások és helyettesítések

B-ben a műveletek specifikációi úgynevezett általános értékadások. Az általános értékadások szemantikája pontosan definiálva van helyettesítések segítségével. Ennek a szemantikának a segítségével lehet helyességbizonyítást végezni.

A helyettesítéseket [S] P alakban írjuk le, ahol a P egy predikátum, S pedig egy általános értékadás; a helyettesítés értéke egy újabb predikátum. A helyettesítés szemléletes jelentése, hogy az [S]P predikátum az állapottérnek pontosan azon pontjaira igaz, amelyere igaz az, hogy az S általános értékadás után P biztosan teljesülni fog; vagy formálisabban az ⌈ [S]P ⌉ azon pontok halmaza, amiket az S általános értékadás ⌈ P ⌉-be visz. (A ⌈ P ⌉ a P predikátum igazsághalmaza az állapottérben.)

A helyettesítés tehát definiálva van minden S B-beli általános értékadásra. Például:

Bizonyítás

A bizonyítás során ezen definíciók alapján lesz legenerálva a bizonyítandó tételek.

A B-ben elválasztják egymástól a bizonyítandó tételek generálását és a bizonyítás elvégzését. Ez a két tevékenység valóban teljesen más jellegű, hiszen az elsőt a B szemantikájának ismeretében automatikusan el tudják végezni a fejlesztőeszközök. A bizonyításhoz viszont sokszor emberi beavatkozásra van szükség; ez viszont már nem kapcsolódik szorosan a B-hez, itt "mindössze" elsőrendű logikai formulákról kell belátnunk, hogy az logikailag igazak.

Azt az eszközt, ami a bizonyítandó tételeket generálja a forráskódból, Proof Obligation Generatornak nevezzük. A bizonyítást végző programot egyszerűen bizonyítónak (prover) nevezzük.