Klauzula rogu - Horn clause

W logice matematycznej i programowania logicznego , o Klauzula Horna jest logiczną formuły określonej formy regułach jak co daje użyteczne właściwości do zastosowania w programowaniu logicznym, formalnej specyfikacji i teorii modeli . Klauzule Horn zostały nazwane na cześć logika Alfreda Horna , który jako pierwszy wskazał na ich znaczenie w 1951 roku.

Definicja

Klauzula klaksonu jest klauzula (a alternatywą z literałów ) z co najwyżej jednym pozytywny, tzn unnegated , dosłowne.

I odwrotnie, alternatywa literałów z co najwyżej jednym literałem zanegowanym nazywana jest klauzulą ​​dual-horn .

Klauzula Horn z dokładnie jednym pozytywnym literałem jest klauzulą ​​określoną lub ścisłą klauzulą ​​Horn ; klauzula określona bez literałów ujemnych jest klauzulą ​​jednostkową , a klauzula jednostkowa bez zmiennych jest faktem ;. Klauzula Horn bez pozytywnego literału jest klauzulą ​​celu . Zauważ, że pusta klauzula, składająca się z żadnych literałów (co jest odpowiednikiem false ) jest klauzulą ​​celu. Te trzy rodzaje klauzul Horn ilustruje następujący przykład zdaniowy :

Klauzula typu Horn Forma alternatywna Formularz implikacyjny Czytaj intuicyjnie, jak
Klauzula ostateczna ¬ p ∨ ¬ q ∨ ... ∨ ¬ tu upq ∧ ... ∧ t załóżmy, że
jeśli p i q oraz ... i t wszystkie są spełnione , wtedy również u zachodzi
Fakt ty typrawda Zakładamy, że
u posiada
Klauzula celu ¬ p ∨ ¬ q ∨ ... ∨ ¬ t fałszpq ∧ ... ∧ t pokaż, że
p i q oraz ... i t wszystkie mają miejsce

Wszystkie zmienne w klauzuli są niejawnie uniwersalnie kwantyfikowane, a zakresem jest cała klauzula. Na przykład:

¬ człowiek ( X ) ∨ śmiertelny ( X )

oznacza:

∀X( ¬ człowiek ( X ) ∨ śmiertelny ( X ) )

co jest logicznym odpowiednikiem:

∀X ( człowiek ( X ) → śmiertelny ( X ))

Znaczenie

Klauzule Horn odgrywają podstawową rolę w logice konstruktywnej i logice obliczeniowej . Są one ważne w automatycznym dowodzeniu twierdzeń przez rozwiązanie pierwszego rzędu , ponieważ resolwenta dwóch klauzul Horna sama w sobie jest klauzulą ​​Horna, a resolwenta klauzuli celu i klauzuli określonej jest klauzulą ​​celu. Te właściwości klauzul Horna mogą prowadzić do większej skuteczności dowodzenia twierdzenia: klauzula celu jest negacją tego twierdzenia; patrz klauzula Cel w powyższej tabeli. Intuicyjnie, jeśli chcemy udowodnić φ, zakładamy ¬φ (cel) i sprawdzamy, czy takie założenie nie prowadzi do sprzeczności. Jeśli tak, to φ musi zostać utrzymane. W ten sposób mechaniczne narzędzie dowodzenia musi utrzymywać tylko jeden zestaw formuł (założeń), a nie dwa zestawy (założenia i (pod)cele).

Klauzule zdaniowe Horn są również interesujące w złożoności obliczeniowej . Problem znajdowania przypisań prawdziwościowych w celu uczynienia koniunkcji zdań zdaniowych Horna prawdziwymi jest znany jako HORNSAT . Problem ten jest P-zupełny i można go rozwiązać w czasie liniowym . Zauważ, że nieograniczony problem spełnialności logicznej jest problemem NP-zupełnym .

Programowanie logiczne

Klauzule Horn są również podstawą programowania logicznego , gdzie powszechne jest pisanie klauzul określonych w formie implikacji :

( pq ∧ ... ∧ t ) → u

W rzeczywistości rozwiązanie klauzuli celu z klauzulą ​​określoną w celu utworzenia nowej klauzuli celu jest podstawą reguły wnioskowania rozdzielczości SLD , używanej w implementacji języka programowania logicznego Prolog .

W programowaniu logicznym klauzula określona zachowuje się jak procedura redukcji celu. Na przykład klauzula Horn napisana powyżej zachowuje się jak procedura:

aby pokazać u , pokaż p i pokaż q i ... i pokaż t .

Aby podkreślić to odwrotne użycie klauzuli, często zapisuje się ją w odwrotnej formie:

u ← ( pq ∧ ... ∧ t )

W Prologu jest to zapisane jako:

u :- p, q, ..., t.

W programowaniu logicznym obliczenia i ocena zapytań są wykonywane przez reprezentację negacji problemu do rozwiązania jako klauzulę celu. Na przykład problem rozwiązania egzystencjalnie skwantyfikowanej koniunkcji literałów pozytywnych:

X ( pq ∧ ... ∧ t )

jest reprezentowana przez negację problemu (zaprzeczanie, że ma rozwiązanie) i przedstawienie go w logicznie równoważnej formie klauzuli celu:

X ( fałszpq ∧ ... ∧ t )

W Prologu jest to zapisane jako:

:- p, q, ..., t.

Rozwiązanie problemu sprowadza się do wyprowadzenia sprzeczności, którą reprezentuje zdanie puste (lub „fałsz”). Rozwiązaniem problemu jest zastąpienie zmiennych w klauzuli celu terminami, które można wydobyć z dowodu sprzeczności. Używane w ten sposób klauzule celu są podobne do zapytań łączących w relacyjnych bazach danych, a logika klauzuli Horn jest równoważna mocy obliczeniowej z uniwersalną maszyną Turinga .

Notacja Prologu jest w rzeczywistości niejednoznaczna, a termin „klauzula celu” jest czasami używany niejednoznacznie. Zmienne w klauzuli celu można odczytywać jako uniwersalnie lub egzystencjalnie skwantyfikowane, a wyprowadzenie „fałszu” może być zinterpretowane jako wyprowadzenie sprzeczności lub wyprowadzenie pomyślnego rozwiązania problemu do rozwiązania.

Van Emden i Kowalski (1976) zbadali własności modelu teoretycznego klauzul Horna w kontekście programowania logicznego, wykazując, że każdy zestaw określonych klauzul D ma unikalny minimalny model M . Formuła atomowa A jest logicznie implikowana przez D wtedy i tylko wtedy, gdy A jest prawdziwe w M . Wynika z tego, że problem P reprezentowany przez egzystencjalnie skwantyfikowaną koniunkcję literałów dodatnich jest logicznie implikowany przez D wtedy i tylko wtedy, gdy P jest prawdziwe w M . Semantyka modelu minimalnego klauzul Horna stanowi podstawę semantyki modelu stabilnego programów logicznych.

Uwagi

Bibliografia