@@ -9,6 +9,8 @@ Di seguito verrà riportato il design dettagliato della libreria.
9
9
10
10
## Term
11
11
12
+ ![ ] ( /img/diagrams/Term.png )
13
+
12
14
Il trait Term rappresenta il concetto di termine in Prolog. Costituisce l'entità fondamentale dalla quale ereditano tutti
13
15
gli altri costrutti del linguaggio prolog.
14
16
@@ -17,6 +19,8 @@ determina se si tratta o meno di un termine base.
17
19
18
20
## Constant
19
21
22
+ ![ ] ( /img/diagrams/constant.png )
23
+
20
24
Una costante è un termine che racchiude un valore che può essere alfanumerico o numerico.
21
25
Le costanti alfanumeriche sono atomi rappresentati dal trai Atom, mentre le costanti numeriche sono
22
26
rappresentate dal trait Numeric.
@@ -25,10 +29,14 @@ Un atomo è un caso particolare di termine composto.
25
29
26
30
## Variabili
27
31
32
+ ![ ] ( /img/diagrams/Variable.png )
33
+
28
34
Una variabile ha un nome particolare oppure è anonima (il suo nome è ` _ ` ).
29
35
30
36
## Struct
31
37
38
+ ![ ] ( /img/diagrams/Struct.png )
39
+
32
40
I termini composti, detti anche strutture, sono rappresentati dal trait Struct. Ogni termine è caratterizzato da un funtore, ossia un nome di
33
41
predicato, e dai sui argomenti, che sono a loro volta dei termini. Il numero di argomenti di cui è costituito un termine
34
42
composto determina l'arità del termine composto.
@@ -51,6 +59,8 @@ considerato una regola il cui corpo è il l'atomo `true`.
51
59
52
60
### RecursiveStruct
53
61
62
+ ![ ] ( /img/diagrams/RecursiveStructs.png )
63
+
54
64
Alcuni termini composti hanno una struttura ricorsiva. Sono strutture i cui argomenti includono in maniera ricorsiva
55
65
strutture con lo stesso predicato.
56
66
Da una struttura è sempre possibile ottenere la lista lineare degli argomenti.
@@ -64,12 +74,16 @@ La maggior parte delle strutture ricorsive sono binarie (BinaryRecursiveStruct).
64
74
65
75
## Theory
66
76
77
+ ![ ] ( /img/diagrams/Theory.png )
78
+
67
79
Una teoria è rappresentata dal trait Theory. Una teoria è una lista di clausole.
68
80
69
81
## Modello del dominio riconciliato
70
82
71
83
## PrologProgram
72
84
85
+ ![ ] ( /img/diagrams/PrologProgram.png )
86
+
73
87
Un programma prolog (PrologProgram) comprende:
74
88
75
89
* Una teoria dinamica
@@ -78,6 +92,8 @@ Un programma prolog (PrologProgram) comprende:
78
92
79
93
## Solver
80
94
95
+ ![ ] ( /img/diagrams/Solver.png )
96
+
81
97
Un Solver risolve un goal o un programma prolog e restituisce le sue soluzioni.
82
98
Un solver può:
83
99
@@ -86,6 +102,8 @@ Un solver può:
86
102
87
103
### Solution
88
104
105
+ ![ ] ( /img/diagrams/Solution.png )
106
+
89
107
Una soluzione di un programma prolog può:
90
108
91
109
* Essere una soluzione positiva (Yes) (il goal è una conseguenza logica della teoria).
@@ -94,11 +112,15 @@ Una soluzione di un programma prolog può:
94
112
95
113
### Substitution
96
114
115
+ ![ ] ( /img/diagrams/Substitution.png )
116
+
97
117
In caso di soluzione positiva è possibile che il solver fornisca una sostituzione. Una sostituzione
98
118
mappa variabili a termini.
99
119
100
120
## PrologDSL
101
121
122
+ ![ ] ( /img/diagrams/PrologDSL.png )
123
+
102
124
Il trait PrologDSL contiene i metodi e i meccanismi per poter esprimere i concetti appartenenti al mondo Prolog.
103
125
Include infatti dei metodi per costruire fatti, regole, atomi e variabili ma anche liste, congiunzioni e disgiunzioni
104
126
di goal.
@@ -112,3 +134,6 @@ termine prolog.
112
134
113
135
TermVisitor è il trait che, se implementato da un termine o da un oggetto convertibile, permette di visitare l'albero
114
136
della struttura del termine.
137
+
138
+
139
+ ![ ] ( /img/diagrams/TermConverterAndVisitor.png )
0 commit comments