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

   page       BibTeX_logo.png       attach   
@mastersthesis{2pktsiboni2019,
    abstract = {Today complex software systems are typically built as aggregates of hetero- geneous components, where symbolic AI may effectively help facing key issues such as intelligence of components and management of interaction. However, most solutions for symbolic manipulation are currently either proof of concept imple- mentations or full-fledged monolithic runtimes, mostly targeting a single platform or a specific problem. Among the many, two decades ago, the tuProlog engine proposed a flexible and modular architecture on top of a portable platform -- namely, the JVM -- which should have overcome the aforementioned problems. Sadly, the technology of the time forced some design choices which are nowadays limiting its development and its porting on other platforms -- critical for modern AI --, such as JavaScript (JS) or iOS. For such reasons in this thesis we propose (the design and development of) 2p-kt, an object-oriented, modular engine for symbolic manipulation written in pure Kotlin -- thus supporting compilation on several platforms, there including JVM, and JS --, coming with a natural support for Prolog-like SLD resolution but virtually open to other resolution strategies. 2p-kt design is conceived to maximise components deployability, lightweightness, reusability and configurability, while minimising their mutability, and keeping its architecture open to the injection of new Prolog libraries or resolution strategies.},
    amspractice = {1540018},
    author = {Siboni, Enrico},
    contact = {Ciatto, Giovanni},
    cosupervisor = {Ciatto, Giovanni},
    cycle = {LM},
    keywords = {Prolog; tuProlog; Logic programming; Kotlin; Multi-platform; JVM; JavaScript; 2p-kt; Symbolic manipulation; Modular},
    language = {en},
    month = dec,
    supervisor = {Omicini, Andrea},
    title = {2p-Kt: A Kotlin-based, Multi-Platform Framework for Symbolic AI},
    translatedabstract = {Al giorno d'oggi i sistemi software complessi sono tipicamente costruiti come aggregati di componenti eterogenee, in cui l'applicazione di AI simbolica pu\`{o} 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\`{a} 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\`{i} 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 \`{e} concepito per massimizzare la modularit\`{a}, la configurabilit\`{a}, la leggerezza e la facilit\`{a} di utilizzo delle sue componenti, minimizzando al contempo la loro mutabilit\`{a} e mantenendo aperta la possibilit\`{a} di iniettare nuove librerie Prolog o strategie di risoluzione.},
    type = {Master's thesis},
    year = 2019
}