Who we are
The MiST research group focuses on the areas of programming languages, software engineering, and artificial intelligence, combining both theoretical developments and practical applications. Since its creation, the members of the group have often collaborated with renowned researchers both from Spain and abroad, participating regularly in R&D projects and conferences.
- Declarative formalisms. Declarative formalisms are known for their higher level of abstraction. They can be considered both as specification languages and, often, as programming languages. Among others, we consider term rewriting, logic programming (Prolog), functional programming (e.g., Haskell), and the actor model (e.g., Erlang).
- Symbolic artificial intelligence. Symbolic AI typically uses some form of logic for knowledge representation, learning, and inference. In this context, we focus on logic programming languages like Prolog or Datalog, and their probabilistic extensions (e.g., ProbLog), as well as their application in the context of interpretable and explainable AI (XAI).
- Software verification, testing and debugging. Ensuring the reliability of critical software is one of the major challenges today. In our group, we consider different approaches, like formal verification (e.g., model checking) and software testing (e.g., concolic testing). In this context, debugging techniques (like program slicing) are also essential to locate bugs in faulty code.
- Reversible computation. Besides its theoretical interest, reversible computation is a fundamental concept that is relevant in many different areas like cellular automata, bidirectional program transformation, or quantum computing, to name a few.
- Web information retrieval. Extracting information from the web is useful for humans. For instance, to extract the news from a newspaper by removing the boilerplate content such as advertisements, templates, banners, etc). It is also useful for many automated processes such as the indexing of webpages by only considering the words that appear in the main content.
- Static analysis and program transformation techniques. These techniques can be used for computing program properties as well as for improving its efficiency, readability, etc. Moreover, they have a rigorous mathematical foundation, which allows us to formally prove their correctness (and other useful properties).