The MiST research group is focused on different aspects of
programming languages, combining both theoretical developments and
practical applications. You can find below a summary of our main
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 (Haskell), and
the actor model (Erlang).
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).
Software verification, testing and debugging
- Ensuring the reliability of critical software is one of the
major challenges today. In this context, we consider different
approaches, like formal verification (e.g., model checking) and
software testing (e.g., concolic testing). Furthermore, debugging
techniques are essential to locate bugs in faulty code.
- Besides its theoretical interest, reversible computation is a
fundamental concept which is relevant in many different areas like
cellular automata, bidirectional program transformation, or quantum
computing, to name a few. In particular, we use a reversible
semantics for the concurrent language Erlang in order to design a
causal consistent reversible debugger, to improve fault-tolerance,
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.). But 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. Another interesting example is detecting the template of a website to speed up the processing of its webpages.