Forma preneksowa

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Forma preneksowa (ang. prenex form lub prenex normal form) to taka postać formuły logicznej, w której wszystkie kwantyfikatory przesunięte są na początek formuły. Inna jej nazwa to przedrostkowa postać normalna.

Każde zdanie rachunku predykatów pierwszego rzędu można sprowadzić do postaci preneksowej. Najpierw należy zmienić nazwy wszystkim zmiennym, które kolidują, na przykład:

(\forall x . R(x)) \implies (\exists x. R(x)) na (\forall x . R(x)) \implies (\exists y. R(y))


co w żaden sposób nie zmienia znaczenia formuły. Następnie należy przenosić kwantyfikatory coraz wyżej, zmieniając je na przeciwny za każdym razem, gdy napotkają negację:

(\forall x . R(x)) \implies (\exists y. R(y))
(\neg \forall x . R(x)) \or (\exists y. R(y))
\exists x . (\neg R(x) \or (\exists y. R(y))
\exists x . \exists y . (\neg R(x) \or R(y))

Jeśli p \or (\forall x . q(x)) czy też p \and (\forall x . q(x)), i x nie występuje w p (co sobie zagwarantowaliśmy zmieniając nazwy wszystkich kolidujących zmiennych), przeniesienie kwantyfikatora wyżej nie zmienia znaczenia formuły. Można to uogólnić na ogólny operator koniunkcyjny i dysjunkcyjny.

Forma preneksowa jest bardzo wygodna dla komputera, w mniejszym zaś stopniu dla ludzi.

Przykłady[edytuj | edytuj kod]

  • \forall x . \exists y . y > x jest w formie preneksowej
  • (\forall x . R(x)) \implies (\exists x. R(x)) nie jest w formie preneksowej.