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)

PQ,P  Q

e l'obiettivo della prova

(ab)(cd),ab !cd

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)=abφ(Q)=cd

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

(ab)(cd),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.PQPPPQ


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.