Design Architetturale
Lo scopo della libreria è quello di risolvere programmi prolog composti da teorie e goal da soddisfare. È dunque necessario l'utilizzo di un motore di risoluzione dei programmi prolog in grado di produrre delle soluzioni a partire da questi programmi.
Per questo progetto si è scelto di utilizzare il motore 2p-Kt,
un versione del motore tuprolog scritta in Kotlin.
Tuttavia la libreria vuole rimanere aperta a eventuali altre implementazioni di motori di risoluzione. Per questo motivo
il motore 2p-Kt è stato adattato per aderire all'interfaccia Solver
. Concettualmente rappresenta un entità che prende
in ingresso un programma prolog e restituisce in uscita zero, una o più soluzioni.
In generale tutte le implementazioni di motori di risoluzione, per poter essere utilizzate nell'ambito della libreria,
dovranno aderire all'interfaccia Solver
.
Come risultato si ottiene l'estendibiltà della libreria dal punto di vista dei motori di risoluzione supportati.