Logo dell'Università di Catania: Siciliae Studium Generale 1434 Logo DMI, Fondamenti di informatica
matite e gomma
Loghi istituzionali: Siciliae Studium Generale 1434, Università di Catania, Facoltà di Scienze Matematiche, Fisiche, Naturali, Insegnamento di Fondamenti di Informatica

Programmazione logica
e linguaggi formali

Lezione 19 di Fondamenti di informatica

Docente: Giuseppe Scollo

Università di Catania
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Informatica, I livello, AA 2009-10

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0 Validazione XHTML 1.0 Validazione CSS 3

Indice

  1. Programmazione logica e linguaggi formali
  2. clausole Horn strettamente positive
  3. elementi della programmazione logica
  4. un esempio di programma Prolog
  5. calcolare = dedurre
  6. regole DCG in Prolog
  7. vincoli sintattici con regole DCG
  8. analisi sintattica con regole DCG
  9. automazione dell'analisi sintattica

clausole Horn strettamente positive

base della programmazione logica è una forma ristretta della logica predicativa, che limita le formule alle clausole Horn strettamente positive:

il letterale positivo è detto testa della clausola

per qualche buona ragione, nella sintassi della programmazione logica è invalso l'uso di invertire l'ordine di antecedente e conseguente nella presentazione di tali implicazioni

le teorie Horn non richiedono Skolemizzazione per la trasformazione in forma clausale

elementi della programmazione logica

primitive:

l'ordine di fatti e regole dovrebbe essere irrilevante

un programma determina implicitamente una segnatura algebrica:

con un dato programma, una query può avere una o più soluzioni, o nessuna

un esempio di programma Prolog

convenzioni sintattiche Prolog:

ecco ad es. un programma Prolog per il calcolo del fattoriale:

compilazione del programma ed esecuzione di una query:

calcolare = dedurre

l'esecuzione di una query inizia con il tentativo di sua unificazione con la testa di una clausola del programma

non è difficile riconoscere nel processo così delineato l'applicazione del principio di risoluzione quale meccanismo deduttivo

N.B. una query può ben essere priva di variabili

è ben possibile che il processo non termini...

regole DCG in Prolog

le liste sono una struttura dati predefinita in Prolog:

si possono inoltre rappresentare regole di una grammatica libera, dette Definite Clause Grammar (DCG) rules, o semplicemente grammar rules, automaticamente tradotte in clausole Horn positive secondo una tecnica detta delle liste-differenza

esempio 1: (i lessemi terminali sono in parentesi quadre)

vincoli sintattici con regole DCG

si possono imporre vincoli di concordanza usando variabili e struttura di termini per simboli non terminali

esempio 2: così, rispetto all'esempio 1, si possono modificare le regole per soggetto, compl_oggetto, articolo e sostantivo come segue:

compilazione del programma ed esecuzione di query:

analisi sintattica con regole DCG

variabili e struttura di termini per simboli non terminali possono essere usati anche per la costruzione dell'albero sintattico di una data frase

a tal fine le regole DCG della grammatica vanno modificate così che la query phrase(frase(X), [ lista_terminali ]).
abbia come soluzione X = t, dove t sia l'albero sintattico di lista_terminali

esempio 3: ecco una modifica in tal senso rispetto all'esempio precedente:

automazione dell'analisi sintattica

la tecnica esemplificata sopra trasforma in modo relativamente meccanico una grammatica libera in una DCG Prolog che può essere compilata ed eseguita per ottenere l'analisi sintattica delle espressioni del linguaggio che essa genera

esempio: compilazione del programma ed esecuzione di query: