Il 0% ha trovato utile questo documento (0 voti)
1 visualizzazioni9 pagine

Prolog

Il documento tratta delle clausole di Horn in Prolog, evidenziando la struttura delle regole composte da un antecedente e un conseguente. Viene spiegato come formulare query e come utilizzare variabili e costanti all'interno delle clausole. Inoltre, si discute l'uso di liste, ricorsione e predicati, inclusi esempi pratici di query e operazioni su liste.

Caricato da

Luigi Puca
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
1 visualizzazioni9 pagine

Prolog

Il documento tratta delle clausole di Horn in Prolog, evidenziando la struttura delle regole composte da un antecedente e un conseguente. Viene spiegato come formulare query e come utilizzare variabili e costanti all'interno delle clausole. Inoltre, si discute l'uso di liste, ricorsione e predicati, inclusi esempi pratici di query e operazioni su liste.

Caricato da

Luigi Puca
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 9

Prolog

Clausole di Horn ( Regole ) : e hs 1h21 .


.
1hm

Antecedente :
congiunzione di zero o
più condizioni

conseguente : formula atomica in


logica dei predicati
Non i H
ci sono
per ogni ,
non ci

gli ori e
sono non ci son i Not .

Abbiamo solo
" " " "
" "
: -

, .
, ,
.

Se abbiamo una clausola senza la testa


,
ovvero la c ←
,
ma

solo letterale abbiamo una QUERY .

Per letterale intendo le & ( i predicati ) .

Esempio
D senza testa male ( albert ) .

predicato
② con la coda fatture ( albert ,
edward ) : -

male ( albert ) , parenti albert ,


edward ) .

"
albert padre di edward se albert
è è maschio ed è
genitore
"
di edward questa è la regola
, .

Questa non sono clausole di Non


"

perché
"
sono disgiunzione V e non

delle AND come visto prima .

Con le formule di de Morgan


le
possa rendere
clausole di Horn .
I predicati hanno attributi che possono essere

variabili o costanti che possono apparire nella coda


antecedente
o nella Testa .

conseguente

× è una madre se

kx femmina
] y : × è
genitore di 9

X e 9 non sono unificate ad avere lo stesso


" " "

valore indicato con


t diverso
"
.

J w
genitore di ×

,
7 K genitore di w ed è
genitore di z
} Z è
genitore di Y

K è il nonno quindi l genitore di w che è genitore di x ) .

Se non voglio usare il nonno dico che × e


y sono
cugini se
} w e z che w è sorella / fratello di z
,
con w genitore di X e
7 genitore di y .

Mettere le clausole insieme


significa avere una OR
,
o vale una

o l' altra
, qui ho 3
regole ,
3 clausole ,
con stessa testa e dunque
le code sono in OR
,
o accade una o l' alta o entrambe le
ultime due .
Esempio di
Query
D Chi sono i maschi ?

Risultato

Query

Facendo noi ottengo le


successive unioni tra X e

gli altri individui maschi

Prolog
se "
online fa mettendo il
" " "
usassi non il Next si j dopo i
vari risultati ottenuti .

2) Chiediamo chi sono i


genitori di Alice ?

con Nat uscirà anche Victoria

③ Chi sono i nonni di Alice ?

Non ci sono nonni di Alice .

④ Esiste qualcuno con dei nonni ?

Doug nonno di William

C' è un solo nonno con un


nipote quindi non ci sono
cugini .

lo
verifico con ? -
camion H 9) ,
.
Per attirare il
debugger grafico uso :

? -

trace .
Il risultato sarà True .

?
grand fotter (X 9)
-

,
.

Con
questo voglio produrre l' AND di 3
predicati evidenziati in foto .

In realtà avrò 2 grandi fattori

2 ( Not Grand father)


1

dove 1 è debugger
del 2 è della
query questi due
e
,
non

sono equivalenti
per renderli equivalenti devo unificare
,
le

variabili , ovvero X GP I GC ( unificazione )


=
e =
.

In Bindi
ngs vedo le unificazioni la oppure sotto i
goal at .

In ordine unifica GP a × ma
,
automatic ,

infatti basta premere ¥ show unification


e usciranno .

Con verde ha successo .

col rosso ha fallito .

albert
" "

A fianco a esce una barra


che indica che stiamo unificando
con lui .
Variabili
" "
anonime -

Il trattino basso serve ad

aiutare l' interprete a fare


unificazioni solo su 9 in

questo caso .

Il prolog usa una


procedura ben definita per fare il
natehing ,

la 1a regola la
ma usa
prima e

espande .

Predicato ricorsivo

Predicati mitologici
Fattoriale
Il fattoriale si basa sulla ricorsione

Il fattoriale di 0 è 1 .

le liste

Sono l' unica struttura derivata in Prolog .

Si rappresentano con i
funtore ciò

con le funzioni .

Può contenere elementi differenti a

differenza dell' deve contenere


array che
elementi tirati .

La lista può essere vista come insieme di costanti ,


variabili ,

fanterie altre liste .

.
[ elementi separati da virgole]
La lista è un termine e non un predicato .


[ a 1 E b , e] ] richiedo l' elemento a e in
più la lista
→ ←
lista
di b e e

°
[ al post J richiedo a e la lista di resti .

Esempi :

D se faccio ? [ cat I [ X I 43
=
-
.

il risultato sarà X =
cat e 9= E ] lista vuota ( è il resto
della lista)
2) Se faccio ? -
[ 1 23
,
=
[ X I 93 .

avrà X =L e 9 =
E 2J X è 1 e 9 è la lista di 2
3) [ a
,
lo , e ] =
[ X I 9] .

avrò X =
a elemento e 9 =
E lo, e] lista

⑨ [ e lo 173 = [ X 193
,
.

avrò X =
a elemento e Y =
[ lo IET >
resto della lista
talmente
③ Per manipolare stringhe
[ ×
,
alte , 97 [ X , a bel 93 .

avrò X =
X
i
9=59 ] lista

③ number [ b , Ea , lo, e] 3 .

sto richiedendo se lo è un membro della lista e il risultato

sarà TRUE

7) membra Ix ,
Ea , lo, e] 3 -

chi sono i membri della lista ?


eotò × > ai
×= lei
× =
e

8 appendila le ] , ,
te , d ,
e,
FJ ,
× ) .

La X sarà la concatenazione delle due liste ovvero

E lo d
× =
a
, ,
e
,
e
, ,
e
, f ]
⑨ appendi X Iafet ,
,
te , d ,
e,
ft ) .

FALSE perché sto dicendo chi è il risultato della manipolata


18 appendila le ] , ,
×
,
[a. b, e d. ,
efg ] ) -

X =
Ed ,
e
, f ,
g] ovvero ci da tutto ciò che non è in

comune .

19 appeal ( ×
,
9 ,
E a
,
lo , e
,
d. e
, fig ] ) .

Sono tutti i modi di X e 9 di avere un risultato tutte le combini


, .

× [3 4 [ lo ] =L a J
d
f X
=
=
e e e ecc
g
-

,
-

, ,
-

, , , , ,
NOT

Vogliamo capire se un

predicato è falso .

Si usa lt per proseguire .

Il NOTT è un predicato del

2° ordine
,
ha come unico

attributo un altro predicato ,


cioè se il goal ( cioè il 1°

predicato fallisce 1 allora il Not è vero .

Non è un vero e
proprio Not logico quindi .

Ovoelap
sa esr due liste Un predicato overlap è vero se

ad
esempio date due liste si e Se
queste hanno elementi in comune .

Se 3 × membro sia di Xs che di

Xz allora over
lap è vero .

Se definisco 2 liste disgiunte avrò un


negato di averlap ,

ovvero faccio il It (Not ) di over lap .

Usi di Noi

Domando lo è unito con tutte costanti

Es : piove oggi ×

se dico :
piove oggi Aversa .

Not
e :
piove oggi Aversa .

Se ad Aversa non piove allora posso dire che è vero che

non piove ,
ma se ×
¥ Aversa allora dico che non
piove
da nessuna parte e lt G significa Gran ha avuto successo .
② Non c' è alcun valore di × cui GH ) abbia
per successo,

ovvero le variabili di G sono uniche in G .

Potrebbero piacerti anche