|
|
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.
keywords
Prolog; tuProlog; Logic programming; Kotlin; Multi-platform; JVM; JavaScript; 2p-kt; Symbolic manipulation; Modular