Proposals
There are several possible projects on disparate topics, categorised below. Roughly, each first-level dot corresponds to a project.
- MAS programming and simulation
- tuProlog in Kotlin (2P-Kt)
- Logic Programming, and Automatic Reasoning
- Coordination
- Probability and Uncertainty
- Machine Learning and Software Engineering
- Explainable AI
- Planning
- Blockchain and Logic Contracts
MAS programming and simulation
Making programming frameworks simulable
MakeAgentSpeak(L) systems simulable through discrete event simulators:
- Make Jason-based systems simulable over Alchemist
Designing a simulable framework for agent programming
- Design and prototyping a simulable framework for behavioural (JADE-like) agent programming as a Kotlin DSL
Design and prototyping of an AgentSpeak(L) implementation as a Kotlin DSL, in TuSoW- done by Marco Galassi
tuProlog in Kotlin (2P-Kt)
General references
- Siboni, Enrico. "2p-Kt: A Kotlin-based, Multi-Platform Framework for Symbolic AI"
- 2P-Kt: A Logic-Based Ecosystem for Symbolic AI
- 2P-Kt Repository
- 2P-Kt Homepage
- 2P-Kt Issues
Clauses storage
Design and prototyping of efficient data structures for clause storaging, optimised for either retrieval and modification of clauses- done by Manuel Bonarrigo
- Design and prototyping of storage layers backed by DBMS technologies (1 project per technology)
- E.g. Neo4J
- E.g. Cassandra
- E.g. MongoDB
- E.g. PostgreSQL
(Bechmarks should be defined for each implementation)
Support for other platforms
References
- Kotlin Docs. "Multiplatform Programming"
- Kotlin Docs. "Building Multiplatform Projects with Gradle"
- Kotlin Docs. "Platform-Specific Declarations"
- Caldara, Mariano. "Gradle, Kotlin e lo Sviluppo di un’Applicazione Multipiattaforma" (Italian)
JS-Browser support
- Make 2P-Kt compilable and testable over JS via the new Kotlin/JS IR transpiler
Native support
- Make 2P-Kt compilable and testable over Native Platforms (Win, Linux, MacOS), through Kotlin/Native compiler
Python support
General references:
- 2ppy: the Python-ported version of 2P-Kt
- SciKit-learn
Projects:
- Write tests and benchmarks for 2ppy
- Bridge LP and ML by making 2ppy and SciKit-learn interoperable
.NET support
- Make 2P-Kt interoperable with .NET (ad means should be studied)
- cf. IKVM
Design and implementation of libraries
- Complete support for Standard library
- some prior work is available (cf. module solve of 2P-Kt)
- Design, and prototype the Standard IO library
- some prior work is available (cf. module io-lib of 2P-Kt)
- Design, and prototype a novel OO library
- some prior work is available (cf. module oop-lib of 2P-Kt)
- Design, and prototype a list manipulation library
- Design, and prototype a set manipulation library
- Design, and prototype a DFG manipulation library
- some prior work is available (cf. old tuProlog-Java codebase)
- Propose, design, and prototype your own library
Design and implementation of tools/features
Language-oriented features
- Design, and prototype integration of 2P-Kt with the IntelliJ IDE
- Design, and prototype integration of 2P-Kt with the Eclipse IDE
- Design, and prototype integration of 2P-Kt with the Atom IDE
- Design, and prototype integration of 2P-Kt with the Visual Studio Code IDE
Utility features or optimizations
- Design, and prototype a novel Web-based IDE for 2P-Kt
Design, and prototype an extension for the 2P-Kt solver supporting tail-recursion optimisationDesign, and prototype a multi-platform module for 2P-Kt supporting JSON/YAML (de)serialization- Design, and prototype a Web Service for accessing 2P-Kt facilities remotely
Tabled Prolog
- SLR on Tableb tesolution in Prolog
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype an extension for the 2P-Kt solver supporting tabled resolution
Labelled Variables in Logic Programming (LVLP)
References
Projects
- Extend 2P-Kt to support LVLP
Concurrent Resolution
SLR on concurrent resolution in Prolog- done by Cerami and Giordano
Design, and prototype an extension for the 2P-Kt ecosystem supporting OR-concurrent resolution- done by Giordano
Logic Programming, and Automatic Reasoning
References:
- 'Deduction' vs. 'Induction' vs. 'Abduction'
- Riguzzi, Fabrizio. "Extension of Logic Programming as Representation Languages for Machine Learning"
Inductive Logic Programming (ILP)
- SLR on Inductive Logic Programming
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype an implementation for the resolution inversion approach
- Consider integration in 2P-Kt
- Design, and prototype an implementation for the "construction of relative least general generalisations" approach
- Consider integration in 2P-Kt
- Design, and prototype an implementation for the "inverting entailment" approach
- Consider integration in 2P-Kt
Abductive Logic Program
- SLR on Abduction in Logic Programming
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design and implementation of a 2P-Kt library for Abduction
- possibly based on Silvio Disanti's Prolog library
Answer Set Programming (ASP)
- SLR on Answer Set Programming in Logic Programming
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design and implementation of a 2P-Kt library for ASP
Constraint Logic Programming (CLP)
- SLR on Constraint Logic Programming
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design and implementation of a 2P-Kt library for CLP (possibly wrapping some pre-existing CP tool)
Constraint Handling Rules (CHR)
- SLR on Constraint Handling Rules
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design and implementation of a 2P-Kt library for CHR
Defeasible Reasoning (DR)
- SLR on Defeasible Resoning
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
Argumentation
- SLR on argumentation algorithms
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype an argumentation algorithm of choice
- Arg-2P from meta-solver to solver in 2P-Kt
(Arg-2P è un meta-interprete che poggia su 2P e data una teoria costruisce grafo di argomentazione e labelling associato)
- Arg-2P implement other argumentation semantics (other than the grounded one)
Modularity in Argumentation
- SLR on Modularity in Argumentation
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype a technological reification for the "Modularity in Argumentation" theory
Dialogical Argumentation
- SLR on dialogical argumentation protocols
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype an argumentation protocol of choice in Jason
Coordination
Referecens:
- TuSoW Repository
- TuCSoN Repository
- Omicini A., Denti E. "From Tuple Spaces to Tuple Centres"
- Mariani S., Omicini A. "Coordination Mechanisms for the Modelling and Simulation of Stochastic Systems: The Case of Uniform Primitives"
Parallel and Distributed Algorithrms in TuSoW
Projects:
- Design and experiment parallel/distributed algorithms in TuSoW, e.g.
- stochastic gradient descent, as suggested in [Tootoonchian2018]
References:
- [Tootoonchian2018] Tootoonchian, A. and al., "Distributed Shared Memory for Machine Learning"
Tuple centres in TuSoW
Extend TuSoW model and technology to support Tuple Centres- done by ???
Uniform primitives in TuSoW
- Extend TuSoW model and technology to support Uniform Primitives
Probability and Uncertainty
- Design, and prototype a JVM-based framework for filtering problems
- may support either (Extended) Kalman Filters or Particle Filters, or both
- Design, and prototype a JVM-based framework simulating systems based on distributed particle filtering
- possibly based on Alchemist
Machine Learning and Software Engineering
References:
- Ciatto, G. "Machine Learning: Classification and Regression (From the Software Engineer Perspective)"
- Feurer, M. et Al. "Efficient and Robust Automated Machine Learning "
AutoML
- SLR on the state of the art in AutoML
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
PMML, PFA
- SLR on the state of the art of predictive model interchange formats
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
Explainable AI
Symbolic knowledge extraction
Activities
- SLR on the symbolic knowledge extraction techniques
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, prototype, and assess a Symbolic knowledge extraction algorithms from the literature
- Explore the exploitation of abductive reasoning for explaining ML-trained predictors by reproducing the study in [Ignatiev2018]
References
[Ignatiev2018] Alexey Ignatiev, Nina Narodytska, Joao Marques-Silva. "Abduction-Based Explanations for Machine Learning Models"
Symbolic knowledge injection
- SLR on the symbolic knowledge injection techniques
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, prototype, and assess a Symbolic knowledge injection approach from the literature
Neural symbolic computation
- TODO
Planning
- SLR on the state of the art of Planning
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype a planning library leveraging on some approach of choice from the literature
Blockchain and Logic Contracts
- TODO