@@ -50,19 +50,19 @@ Le constanti sono ciò che danno il nome agli oggetti o alle relazioni. Possono
50
50
Non ci sono vincoli sulla composizione della sequenza di caratteri se questa è racchiusa tra apici ` '' ` .
51
51
Gli atomi possono contenere anche i simboli ` + ` , ` - ` ` * ` ,` / ` , ` \ ` ,` ~ ` , ` ^ ` ,` < ` , ` > ` , ` : ` , ` . ` , ` ? ` , ` @ ` ,
52
52
` # ` , ` $ ` , ` & ` . La sequenza di caratteri può contenere il carattere ` _ ` per aumentare la leggibilità.
53
- * La rappresentazione dei numeri è quella dei numeri reali ed ammette la notazione esponenziale (es. * -2.67e2* ).
53
+ * Le costanti numeriche hanno la rappresentazione dei numeri reali ed ammette la notazione esponenziale (es. * -2.67e2* ).
54
54
55
55
### Variabili
56
56
57
57
Permettono di riferirsi ad un termine senza specificarlo direttamente. Un termine che non contiene variabili si dice
58
- * termine base* (o termine ground).
59
- La sintassi delle varibili è come quella degli atomi con la differenza che le variabili hanno come carattere iniziale una lettera
60
- maiuscola o il carattere ` _ ` . Non si racchiudono le varibili tra apici. Il solo carattere ` _ ` denota una variabile anonima.
58
+ * termine base* (o * termine ground* ).
59
+ La sintassi delle varibili è la stessa degli atomi con la differenza che il carattere iniziale delle variabili è
60
+ una lettera maiuscola oppure il carattere ` _ ` . Non è possibile racchiudere le varibili tra apici.
61
+ Il solo carattere ` _ ` denota una variabile anonima.
61
62
62
63
#### Sostituzioni di variabili
63
- Una * sostituzione* è una mappa che dato un insieme di variabili, ne associa ciascuna
64
- ad un termine. In una sostituzione i termini non possono contenere nessuna delle variabili considerate nella
65
- sostituzione.
64
+ Una * sostituzione* è una mappa che dato un insieme di variabili, associa a ciascuna di esse un termine.
65
+ In una sostituzione i termini non possono contenere nessuna delle variabili considerate nella sostituzione.
66
66
Le sostituzioni possono essere applicate a dei termini. L'applicazione di una sostituzione ` S ` ad un termine ` t0 `
67
67
consiste nella sostitutzione di tutte le variabili ` X ` che appaiono in ` t0 ` con i rispettivi termini ` t ` , per ciascuna
68
68
delle coppie ` X=t ` nella sostituzione ` S ` . Il risultato di una sostituione prende il nome di * istanza* .
@@ -162,20 +162,30 @@ Alcuni predicati potrebbero richiedere particolari tipi di argomenti (es. per il
162
162
che gli argomenti siano dei numeri). Cosa succede nel caso in cui questi requisiti non vengano rispettati dipende dalla
163
163
specifica implementazione del motore che eseguira il programma.
164
164
165
+ * ** ':-'(X, Y)** infix
166
+ * ** ','(X, Y)** infix
167
+
165
168
#### Predicati dinamici
166
169
167
170
#### Predicati
168
171
169
- * ** consult(X)** --> X is the path of the file
172
+ ##### Inserimento di nuove clausole
173
+
174
+ * ** consult(X)**
175
+
176
+ ##### Risoluzione
177
+
170
178
* ** true**
171
179
* ** fail**
180
+
172
181
* ** var(X)**
173
182
* ** nonvar(X)**
174
183
* ** atom(X)**
175
184
* ** number(X)**
176
185
* ** atomic(X)**
177
- * ** ':-'(X, Y)** infix
178
- * ** ','(X, Y)** infix
186
+
187
+ ##### Classificatione dei termini
188
+
179
189
* ** clause(X, Y)**
180
190
* ** asserta(X)**
181
191
* ** assertz(X)**
@@ -186,21 +196,36 @@ specifica implementazione del motore che eseguira il programma.
186
196
* ** '=..'(X, L)** infix
187
197
* ** atom_chars(A, L)**
188
198
* ** number_chars(A, L)**
199
+
200
+ ##### Backtracking
201
+
189
202
* ** !**
190
203
* ** repeat**
204
+
205
+ ##### Costruzione di termini composti
206
+
191
207
* ** ';'(X, Y)** infix
192
208
* ** call(X)**
193
209
* ** '\\ +'(X)** prefix
210
+
211
+ ##### Uguaglianza
212
+
194
213
* ** '='(X, Y)** infix
195
214
* ** '=='(X, Y)** infix
196
215
* ** op(X, Y, Z)** --> atoms fx, fy, xf, yf, xfx, yfx, yfy
197
216
* ** is(X, Y)** infix
217
+
218
+ ##### Aritmetici
219
+
198
220
* ** '+'(X, Y)** infix
199
221
* ** '-'(X, Y)** infix
200
222
* ** '* '(X, Y)** infix
201
223
* ** '/'(X, Y)** infix
202
224
* ** '//'(X, Y)** infix
203
225
* ** mod(X, Y)** infix
226
+
227
+ ##### Confronto fra termini
228
+
204
229
* ** '=:='(X, Y)** infix
205
230
* ** '=\\ ='(X, Y)** infix
206
231
* ** '<'(X, Y)** infix
@@ -211,6 +236,9 @@ specifica implementazione del motore che eseguira il programma.
211
236
* ** '@>'(X, Y)** infix
212
237
* ** '@>='(X, Y)** infix
213
238
* ** '@=<'(X, Y)** infix
239
+
240
+ ##### Ispezione di un programma Prolog
241
+
214
242
* ** trace**
215
243
* ** notrace**
216
244
* ** spy P** prefix
0 commit comments