Clausola del corno

La clausola del corno è una disgiunzione logica dei termini, dove al massimo uno dei termini è positivo e tutti gli altri sono negativi. Prende il nome da Alfred Horn che le ha descritte in un articolo del 1951.

Una clausola di corno con esattamente un letterale positivo è una clausola definitiva; una clausola definitiva senza un letterale negativo è talvolta chiamata "fatto"; e una clausola di corno senza un letterale positivo è talvolta chiamata clausola di obiettivo. Questi tre tipi di clausole di corno sono illustrati nel seguente esempio proposizionale:

clausola definitiva: ¬ p ¬ q ∨ ⋯ ∨ ¬ t ∨ u {\an8}[p ∨ \an8}[t ∨ u \an8}[neg p \an8}[neg \an8}[neg \an8}[neg \an8}[neg \an8}[neg \an8}[neg \an8}] {\displaystyle \neg p\lor \neg q\vee \cdots \vee \neg t\vee u}

fatto: u {\fatto: u {\fscx130\fscy130\frx40}- In stile "u". {\displaystyle u}

clausola dell'obiettivo: ¬ p ¬ q ∨ ⋯ ∨ ∨ ¬ t ■ t ■displaystyle \neg p \neg \neg p \neg \neg \neg \neg \neg t {\displaystyle \neg p\lor \neg q\vee \cdots \vee \neg t}

Nel caso non propositivo, tutte le variabili di una clausola sono implicitamente quantificate in modo universale con portata l'intera clausola. Così, ad esempio:

¬ Human ( X ) mortal ( X ) mortal ( X ) mortal ( X ) in stile "non-testo umano" (X)-lor-testo mortale {\displaystyle \neg {\text{human}}(X)\lor {\text{mortal}}(X)}

sta per:

X ( ¬ umano ( X ) mortale ( X ) ) per tutti gli X senza testo umano. {\displaystyle \forall X(\neg {\text{human}}(X)\lor {\text{mortal}}(X))}

il che equivale, logicamente, a:

X ( umano ( X ) → mortale ( X ) ) . Per tutti i X ( X ( X ) → mortale ( X ) ). } {\displaystyle \forall X({\text{human}}(X)\rightarrow {\text{mortal}}(X)).}

Le clausole del corno svolgono un ruolo fondamentale nella logica costruttiva e nella logica computazionale. Sono importanti nel teorema automatizzato che dimostra la risoluzione di primo ordine, perché il resolvent di due clausole di corno è di per sé una clausola di corno, e il resolvent di una clausola di obiettivo e una clausola definita è una clausola di obiettivo. Queste proprietà delle clausole di corno possono portare a maggiori efficienze nella dimostrazione di un teorema (rappresentato come la negazione di una clausola goal).

Le clausole di corno sono anche la base della programmazione logica, dove è comune scrivere clausole definite sotto forma di implicazione:

( p q ∧ ⋯ ∧ ∧ t ) → u {\a6} →displaystyle (p\wedge q \wedge \cdots \cdots \wedge t)\a6} \a6} \a6} \a6} \a6} \a6} → u {\displaystyle (p\wedge q\wedge \cdots \wedge t)\rightarrow u}

Infatti, la risoluzione di una clausola di obiettivo con una clausola definita per produrre una nuova clausola di obiettivo è la base della regola dell'inferenza di risoluzione SLD, utilizzata per implementare la programmazione logica e il linguaggio di programmazione Prolog.

Nella programmazione logica una clausola definita si comporta come una procedura di riduzione degli obiettivi. Ad esempio, la clausola Horn scritta sopra si comporta come procedura:

per mostrare lo stile di visualizzazione u{\displaystyle u}, mostrare lo stile di visualizzazione p e {\displaystyle p}mostrare q qe ⋯. {\displaystyle \cdots }e mostrare lo stile di visualizzazione t {\displaystyle t}.

Per sottolineare questo uso a ritroso della clausola, essa è spesso scritta al contrario:

 

In Prolog questo è scritto come:

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

La notazione Prolog è in realtà ambigua, e anche il termine "clausola obiettivo" è talvolta usato in modo ambiguo. Le variabili di una clausola obiettivo possono essere lette come universalmente o esistenzialmente quantificate, e derivarne "false" può essere interpretato o come derivare una contraddizione o come derivare una soluzione di successo del problema da risolvere.

Van Emden e Kowalski (1976) hanno studiato le proprietà teoriche del modello delle clausole del corno nel contesto della programmazione logica, dimostrando che ogni insieme di clausole definite D ha un modello minimo unico M. Una formula atomica A è logicamente implicita da D se e solo se A è vera in M. Ne consegue che un problema P rappresentato da una congiunzione esistenzialmente quantificata di lettere positive è logicamente implicito da D se e solo se P è vera in M. La semantica del modello minimo delle clausole del corno è la base per la semantica del modello stabile dei programmi logici.

Le clausole proposizionali del corno sono interessanti anche nella complessità computazionale, dove il problema di trovare le assegnazioni di valore di verità per rendere vera una congiunzione di clausole proposizionali del corno è un problema P-completo (di fatto risolvibile in tempo lineare), a volte chiamato HORNSAT. (Il problema della soddisfazione booleana senza restrizioni è però un problema NP-completo). La soddisfazione delle clausole Horn di primo ordine è indecidibile.

Domande e risposte

D: Che cos'è una clausola di Horn?


R: Una clausola Horn è una disgiunzione logica di letterali, dove al massimo uno dei letterali è positivo e tutti gli altri sono negativi.

D: Chi le ha descritte per la prima volta?


R: Alfred Horn le ha descritte per la prima volta in un articolo del 1951.

D: Che cos'è una clausola definita?


R: Una clausola di Horn con esattamente un letterale positivo si chiama clausola definita.

D: Che cos'è un fatto?


R: Una clausola definita senza letterali negativi viene talvolta definita un "fatto".

D: Che cos'è una clausola obiettivo?


R: Una clausola di Horn senza un letterale positivo viene talvolta chiamata clausola obiettivo.

D: Come funzionano le variabili nei casi non proposizionali?


R: Nel caso non proposizionale, tutte le variabili in una clausola sono implicitamente quantificate in modo universale, con ambito di applicazione l'intera clausola. Ciò significa che si applicano a ogni parte dell'affermazione.

D: Che ruolo hanno le clausole di Horn nella logica costruttiva e nella logica computazionale? R: Le clausole di Horn svolgono un ruolo importante nella dimostrazione automatizzata di teoremi mediante la risoluzione del primo ordine, perché la risolvenza di due clausole di Horn o tra una clausola obiettivo e una clausola definita può essere utilizzata per creare una maggiore efficienza nella dimostrazione di qualcosa rappresentato come la negazione della sua clausola obiettivo. Sono anche utilizzati come base per i linguaggi di programmazione logica come Prolog, dove si comportano come procedure di riduzione degli obiettivi.

AlegsaOnline.com - 2020 / 2023 - License CC3