Perché l'unificazione è così importante per i motori di inferenza?


Risposte:


11

L'unificazione è un concetto così fondamentale nell'informatica che forse alla volta lo diamo per scontato. Ogni volta che abbiamo una regola o equazione o modello e vogliamo applicarla ad alcuni dati, l'unificazione viene utilizzata per specializzare la regola ai dati. O se vogliamo combinare due regole generali ma sovrapposte, l'unificazione ci fornisce la regola combinata più generale. L'unificazione è al centro di

  • I dimostratori di teoremi e gli assistenti di prova ne includono alcuni basati su unificazione di ordine superiore.
  • Implementazioni Prolog (come Risoluzione).
  • Algoritmi di inferenza del tipo.
  • Linguistica computazionale / elaborazione del linguaggio naturale.
  • Sistemi di riscrittura dei termini come Maude, che possono essere utilizzati come base per la semantica del linguaggio di programmazione.
  • Database deduttivi.
  • Sistemi esperti o più in generale intelligenza artificiale.
  • Sistemi di algebra informatica.
  • Corrispondenza del modello in linguaggi funzionali (almeno in parte ... solo corrispondenza).
  • Alcuni approcci di analisi.
  • Alcuni linguaggi di query, in particolare che coinvolgono il Web semantico.

8

Assistenti di prova come Isabelle / HOL lavorano a livello sintattico su un calcolo logico. Immagina di avere la regola del modus ponens (MP)

P→Q,P ⟹ Q

e l'obiettivo della prova

(a∨b)→(c∧d),a∨b ⟹!c∧d

Noi umani vediamo immediatamente che ciò segue con modus ponens, ma la macchina deve abbinare l'obiettivo per governare sintatticamente (sia che tu lo faccia apply rule mpo apply simp), e questo è ciò che fa l'unificazione. L'algoritmo trova con φ ( P ) = a ∨ b e φ ( Q ) = c ∧ d , crea un'istanza della regola e la applica.φφ(P)=a∨bφ(Q)=c∧d

La cosa buona dei metodi degli assistenti come simpadesso è che se il tuo obiettivo è

(a∨b)→(c∧d),a ⟹!d

che troveranno una sequenza adeguata di applicazioni delle regole MP, e P ⟹ P ∨ Q con unificazioni compatibili per le rispettive fasi e risolvono l'obiettivo.P∧Q⟹PP⟹P∨Q


Notazione: con un insieme di formule logiche, la notazioneΓ={φ1,…,φn}

Γ⟹ψ

significa quanto segue:

Se ho derivato / provato tutte le formule in (cioè sono valide ), questa regola afferma che ψ è anche valido.Γψ

In un certo senso, la regola è l'ultimo passo di una (lunga) dimostrazione per ψ . Le prove non sono altro che catene di tali applicazioni di regole.Γ⟹ψψ

Si noti che le regole di solito contengono variabili schematiche ( e Q in precedenza) che possono essere sostituite da formule arbitrarie purché la stessa variabile venga sostituita con la stessa formula in tutti i casi; il risultato di quel formato è l'istanza della regola concreta (o intuitivamente, un passaggio di prova). Questa sostituzione è sopra indicata con φ che è stata trovata per unificazione.PQφ

Spesso le persone usano invece di ⟹ .⊨⟹


3
⊨⊢

2

Non penso sia importante per i motori di inferenza . L'algoritmo di unificazione è tuttavia molto utile per l' inferenza del tipo . Questi sono due tipi di inferenza molto diversi.

L'inferenza dei tipi è importante per l'informatica perché i tipi sono importanti nella teoria dei linguaggi di programmazione, che è una parte significativa dell'informatica. I tipi sono anche vicini alla logica e sono intensamente utilizzati nella dimostrazione di teoremi automatizzati. Esistono implementazioni di algoritmi di unificazione in molti, se non in tutti, assistenti di prova e risolutori SMT.

I motori di inferenza sono legati all'intelligenza artificiale, che è anche importante ma molto diversa. (Ho visto collegamenti tra apprendimento e logica, ma questo sembra recuperato.)


Non penso che la prima frase sia valida; vedi la mia risposta.
— Raffaello

1
Sono anche in disaccordo con la prima frase. La risoluzione (una specializzazione dell'unificazione) è il nucleo di Prolog, che è uno dei linguaggi di implementazione più comuni per sistemi esperti e altri motori di inferenza.
— Dave Clarke,

@Raphael and Dave: così dici che l'algoritmo di unificazione viene utilizzato direttamente nei motori di inferenza?
— jmad

@jmad: non sono sicuro che esista l' algoritmo di unificazione, e non sono nemmeno sicuro del tipo di sistemi chiamati "motore di inferenza". So che l'unificazione è ampiamente usata ovunque compaiano logiche e / o semantiche formali; vedi la risposta di Dave per un elenco.
— Raffaello

@Raphael: questo è praticamente il problema che volevo affrontare: sembra che i motori di inferenza non riguardino l'inferenza che conosco di tipo e logica.
— jmad
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.