Prolog
Prolog
Antecedente :
congiunzione di zero o
più condizioni
gli ori e
sono non ci son i Not .
Abbiamo solo
" " " "
" "
: -
, .
, ,
.
Esempio
D senza testa male ( albert ) .
predicato
② con la coda fatture ( albert ,
edward ) : -
"
albert padre di edward se albert
è è maschio ed è
genitore
"
di edward questa è la regola
, .
perché
"
sono disgiunzione V e non
conseguente
× è una madre se
kx femmina
] y : × è
genitore di 9
J w
genitore di ×
,
7 K genitore di w ed è
genitore di z
} Z è
genitore di Y
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
Prolog
se "
online fa mettendo il
" " "
usassi non il Next si j dopo i
vari risultati ottenuti .
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 .
dove 1 è debugger
del 2 è della
query questi due
e
,
non
sono equivalenti
per renderli equivalenti devo unificare
,
le
In Bindi
ngs vedo le unificazioni la oppure sotto i
goal at .
In ordine unifica GP a × ma
,
automatic ,
albert
" "
questo caso .
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
Si rappresentano con i
funtore ciò
con le funzioni .
.
[ 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 .
sarà TRUE
7) membra Ix ,
Ea , lo, e] 3 -
8 appendila le ] , ,
te , d ,
e,
FJ ,
× ) .
E lo d
× =
a
, ,
e
,
e
, ,
e
, f ]
⑨ appendi X Iafet ,
,
te , d ,
e,
ft ) .
X =
Ed ,
e
, f ,
g] ovvero ci da tutto ciò che non è in
comune .
19 appeal ( ×
,
9 ,
E a
,
lo , e
,
d. e
, fig ] ) .
× [3 4 [ lo ] =L a J
d
f X
=
=
e e e ecc
g
-
,
-
, ,
-
, , , , ,
NOT
Vogliamo capire se un
predicato è falso .
2° ordine
,
ha come unico
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 .
Xz allora over
lap è vero .
Usi di Noi
Es : piove oggi ×
se dico :
piove oggi Aversa .
Not
e :
piove oggi Aversa .
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,