APICe » Theses » 2p-Kt: A Kotlin-based, Multi-Platform Framework for Symbolic AI

2p-Kt: A Kotlin-based, Multi-Platform Framework for Symbolic AI 

Enrico Siboni


Al giorno d'oggi i sistemi software complessi sono tipicamente costruiti come aggregati di componenti eterogenee, in cui l'applicazione di AI simbolica può aiutare efficacemente ad affrontare problemi chiave come l'intelligenza delle componenti e la gestione delle interazioni. Tuttavia, la maggior parte delle soluzioni per la manipolazione simbolica sono attualmente in versione prototipale "proof of concept" oppure sono dei "runtime" monolitici, sviluppati principalmente per una piattaforma specifica o un problema specifico. Tra i tanti, tuProlog, due decenni fa, propose un'architettura flessibile e modulare implementata su di una piattaforma portatile – vale a dire la JVM (Java Virtual Machine) – che avrebbe dovuto superare i suddetti problemi. Purtroppo, la tecnologia del tempo costrinse alcune scelte di design che oggi stanno limitando il suo sviluppo e la sua portabilità su altre piattaforme – fondamentali per l'AI moderna – come JavaScript (JS) o iOS. Per tali motivi in questa tesi proponiamo (il design e lo sviluppo di) 2p-kt, un motore Prolog modulare "object-oriented" per la manipolazione simbolica, scritto in Kotlin puro – supportando così la compilazione su diverse piattaforme, tra cui JVM e JS – con un supporto naturale alla risoluzione Prolog SLD (Selective Linear Definite) ma potenzialmente aperto ad altre strategie di risoluzione. Il design di 2p-kt è concepito per massimizzare la modularità, la configurabilità, la leggerezza e la facilità di utilizzo delle sue componenti, minimizzando al contempo la loro mutabilità e mantenendo aperta la possibilità di iniettare nuove librerie Prolog o strategie di risoluzione.

Keywords: Prolog; tuProlog; Logic programming; Kotlin; Multi-platform; JVM; JavaScript; 2p-kt; Symbolic manipulation; Modular


Andrea Omicini (Supervisor)
Giovanni Ciatto (Co-supervisors)