Proposals
- Available Projects
- 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
Available Projects
There are several possible projects on disparate topics, categorised below. Roughly, each first-level dot corresponds to a project.
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
tuProlog in Kotlin (2P-Kt)
General references
- Siboni, Enrico. "2p-Kt: A Kotlin-based, Multi-Platform Framework 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
- Bechmarks for comparisons
Design and prototyping of storage layers backed by DBMS technologies
- 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
- Complete support for 2P-Kt compilation and testing over JS Client Side, through Kotlin/JS compiler
Native support
- Make 2P-Kt compilable and testable over Native Platforms (Win, Linux, MacOS), through Kotlin/Native compiler
Python support
- Wrap the natively-compiled version of 2P-Kt into a Python library, armonising the API for Python developers
- Requires native support
- Explore, design, and prototype other solutions
.NET support
- Wrap the natively-compiled version of 2P-Kt into a .NET library, armonising the API for .NET developers
- Requires native support
- Explore, design, and prototype other solutions
Design and implementation of libraries
- Complete support for Standard library
- Design, and prototype the Standard IO library
- Design, and prototype a novel OO library
- Design, and prototype a list manipulation library
- Design, and prototype a set manipulation library
- Design, and prototype a DFG manipulation library
- Propose, design, and prototype your own library
Design and implementation of tools/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
- Design, and prototype a novel JVM-based IDE for 2P-Kt
- Design, and prototype a novel Web-based IDE for 2P-Kt
- Design, and prototype an extension for the 2P-Kt solver supporting tail-recursion optimisation
- Design, 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
- (may require a (de)serialization module)
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
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype an extension for the 2P-Kt solver some sort of concurrent resolution
Design and production of a comprehensive Orchid manual (1-2 people)
The main goal here is to produce a comprehensive Orchid manual describing 2P-Kt's architecture, design, implementation, and development/maintenance process.
Consider this as a bibliographic project focused on technologies. In the end, the student(s) will become expert with non-trivial aspects of the following technologies:
- Gradle Build System
- GitLab CI
- Maven Central / Bintray publication of Maven artifacts
- Orchid site generator
- Kotlin Multi-platform projects and their subtleties
- ANTLR
- Prolog
This project is of particular interest for students willing to exploit 2P-Kt in their master theses
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
Abduction and integrity constraints
Abductive logic programs have three components ⟨P, A, IC⟩ where: P is a logic program of exactly the same form as in logic programming, A is a set of predicate names, called the abducible predicates, IC is a set of first-order classical formulae. Normally, the logic program P does not contain any clauses whose head (or conclusion) refers to an abducible predicate. Also in practice, the integrity constraints in IC are often restricted to the form of denials, i.e. clauses of the form: false :- A1, ..., An, not B1, ..., not Bm. Such a constraint means that it is not possible for all A1, ..., An to be true and at the same time all of B1,...,Bm to be false. The domain-specific knowledge can be represented as integrity constraints.
- Design and implementation of a 2P-Kt library for Abduction
Answer Set Programming
- SLR on Answer Set Programming in Logic Programming
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- TODO
Constraint Logic Programming
- SLR on Constraint Logic Programming
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- TODO
Constraint Handling Rules
- SLR on Constraint Handling Rules
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- TODO
Defeasible Reasoning
- SLR on Defeasible Resoning
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- TODO
Argumentation
- SLR on argumentation algorithms
- theoretical background
- main approaches (+ similarities and differences)
- main technologies (+ comparisons)
- Design, and prototype an argumentation algorithm of choice
- Migration of the Arg-2P meta-solver from 2P-Java to 2P-Kotlin
- involves the creations of tests
- 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)
- 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
- 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
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