Sei sulla pagina 1di 19

Operatore Informatico Giuridico

Informatica Giuridica Avanzata


A.A. 2006/2007
I Semestre

Il Linguaggio Prolog: sintassi

Ing. Rossella Rubino – CIRSFID


rrubino@cirsfid.unibo.it
17 Ottobre 2006
Caratteristiche del Prolog (1)
PROgramming in LOGic
Nato nel 1973 è il più noto linguaggio di
Programmazione Logica
Manipolatore di simboli e non di numeri
Linguaggio ad altissimo livello
 utilizzabile anche da non programmatori (si
“conversa” con il computer)
Applicazioni di Intelligenza Artificiale
 sistemi esperti
 sistemi di analisi del linguaggio naturale

2
Programmi in Prolog

Un programma in PROLOG consiste in una base


di conoscenza espressa in clausole di Horn
estese.
L’interprete del linguaggio, cioè il programma
che fa eseguire (dal sistema di calcolo) i
programmi in PROLOG, è un motore
inferenziale.
Le risposte dell’interprete alle domande
dell’utente sono conseguenze logiche del
programma eseguito, programma che
costituisce una base di conoscenza.
3
Clausole di Horn

X1… Xm( A ← ( B1 … Bn))


Nella sintassi di Edimburgo i quantificatori
rimangono impliciti e, per il condizionale si usa il
simbolo “:-”, e per la congiunzione, la virgola
“,”.
Pertanto, le clausole di Horn predicative si
formulano nella sintassi
A :- B1, …, Bn.
Il conseguente “A” costituisce la testa della
clausola
L’antecedente “B1, …, Bn” il corpo
4
Sintassi
La sintassi di un linguaggio descrive come
devono essere combinate insieme le parole
affinché abbiano un significato corretto.
Esempio: in italiano, la sintassi della frase “io
vedo una zebra” è corretta, ma la sintassi
“zebra vedo io una” non è corretta.

5
La sintassi del Prolog
I programmi in Prolog sono costituiti da
termini.
Ogni termine è scritto come una sequenza
di caratteri.
Il Prolog riconosce due tipi di caratteri
 caratteri stampabili
lettere maiuscole (ABCDE……XYZ)
lettere minuscole (abcde……….xyz)
cifre (0123456789)
simboli (+ - * / \ ^ < > = ‘ “ : . ? @ # $ &)
 caratteri non stampabili
spazio bianco
return
6
I termini

Un termine può essere:


 una costante
 una variabile
 una struttura
 una lista
(le vedremo nella prossima lezione)

7
Le costanti
Le costanti sono pensate per dare il nome ad
un oggetto specifico o a una relazione specifica.
Ci sono due tipi di costanti: gli atomi e gli interi.
Esempi di atomi sono
piace antonio tiziano francesco
pasta vino strudel pizza gelato
sorella genitori

8
Tipi di costanti

Costanti individuali
 denotano specifici elementi del dominio
 Esempi: marco, sabrina, 1, 2900, italia,
francia, françois, danielle.
Costanti funzionali
 denotano funzioni sugli individui (o n-uple di
individui) del dominio
 Esempi: il_padre_di, la_madre_di, età_di,
il_presidente_di, +, ∗.
Costanti relazionali (simboli di predicato)
 designano proprietà degli individui dell’universo del
discorso o relazioni tra di essi.
 Esempi: cittadino, persona_fisica,
nato_in, lavora_per. 9
Gli atomi
Ci sono due tipi di atomi:
1. quelli costituiti da lettere e cifre: devono
cominciare con la lettera minuscola;
2. quelli costituiti da simboli: normalmente
sono costituiti solamente da simboli.
Se è necessario che un atomo cominci con
una lettera maiuscola, con una cifra o
contiene dei simboli deve essere racchiuso tra
apici (‘).
‘Maria’ ‘rossi@tin.it’ ‘33trentini’
I simboli speciali che il Prolog usa per indicare
domande (?-) e regole (:-) sono anch’essi
degli atomi. 10
Gli interi
Gli interi sono usati per rappresentare i numeri,
sono costituiti da cifre e non possono contenere
decimali.

0 1 999 512 8192 14765 6224

11
Le variabili
Oltre a dare un nome univoco ad un oggetto,
possiamo usare nomi quali “X” al posto di
oggetti che devono essere determinati dal
Prolog attraverso domande. Nomi di questo
tipo sono chiamati variabili.
Le variabili devono cominciare con la lettera
maiuscola.
Le variabili possono essere:
 istanziate, quando il loro valore corrisponde
ad un oggetto esistente nel database
 non istanziate, quando il loro valore non è
noto
12
Le variabili
Le variabili si presentano come gli atomi, ma
cominciano con una lettera maiuscola o un
segno di underline “_”.
Le variabili possono denotare solo individui
dell’universo del discorso, non relazioni o
funzioni
 vi sono, quindi, variabili corrispondenti alle costanti
individuali, ma mancano variabili corrispondenti ai
simboli di predicato e di funzione
Può essere necessario usare una variabile,
senza che il suo nome venga mai usato. In
questo caso è più comodo usare la variabile
anonima.
13
Esempio di variabili
La variabile anonima è il carattere di underline
“_”.

?- piace(_,antonio).

Se si utilizzano contemporaneamente più


variabili anonime, esse non rappresentano lo
stesso oggetto.

?- piace (antonio,_), piace(maria,_).

14
Le strutture
Il terzo tipo di termine adoperabile in Prolog è
la struttura. Una struttura è un singolo oggetto
che consiste di un insieme di altri oggetti,
chiamati componenti.
Le strutture aiutano ad organizzare i dati in un
programma, perché permettono di trattare un
gruppo di informazioni correlate come un
singolo oggetto, senza ricorrere ad entità
separate.

15
Le strutture (continua)
Le strutture sono utili quando all’interno di un
programma c’è un tipo di oggetto di cui
esistono molte istanze.
Una struttura si scrive specificando il suo
funtore e i suoi componenti.
Il funtore è scritto prima della parentesi
tonda, i componenti sono racchiusi fra
parentesi tonde e separati da virgole.

16
Esempio di struttura
possiede(antonio,libro(malavoglia,autore(giovanni,verga))).

“libro” è il funtore, “malavoglia” e “autore” sono i


componenti. A sua volta “autore” è una struttura
innestata.

Le strutture possono essere presenti nelle


domande. Per esempio, possiamo domandare se
Antonio possiede un libro di Verga.

?- possiede(antonio,libro(X,autore(giovanni,verga))).

17
A questo punto potremmo domandarci:

qual è la differenza tra una struttura e un fatto?

Non c’è nessuna differenza: i fatti sono


strutture.
Un predicato di un fatto o di una regola è in
pratica il funtore di una struttura
Gli argomenti sono i componenti.
18
Conclusioni

I programmi in Prolog sono costituiti da termini.


Oggi abbiamo esaminato
 costanti
per dare il nome ad un oggetto specifico o a una relazione specifica
 variabili
il cui valore viene determinato dall’inferenze del motore Prolog
 strutture
esprime relazioni composte
Oltre ai caratteri stampabili, il Prolog riconosce caratteri
non stampabili come lo spazio bianco e il return.

19

Potrebbero piacerti anche