I teach several CS subjects at the
Escola Tècnica Superior d'Enginyeria Informàtica
(ETSINF)
and at the Department
DSIC
(within the
Master's
program in Software systems engineering and technology),
UPV.
My current homepage: https://gvidal.webs.upv.es/
My research focuses on the areas of programming languages, artificial intelligence
and software engineering, combining both theoretical developments and
practical applications. I am a member of the
VRAIN research institute, where
I lead the MiST group
on multi-paradigm software technology.
We often have positions available for graduate students interested
in pursuing a PhD or Master's degree. Check the topics below and
get in touch if you are interested
(gvidal@dsic.upv.es).
***Job offer available! (in Spanish) ***
I'm mostly interested in the following research areas:
- Declarative formalisms, which
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).
- 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. In particular, we have defined a reversible semantics for the message-passing concurrent language Erlang in order to design a causal consistent reversible debugger, to improve fault-tolerance, etc.
- 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). We also consider reversible debugging of
message-passing concurrent programming languages, as mentioned above.
- 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).
Most of my research has been done in collaboration with other people, e.g.,
Elvira Albert,
Jesús Almendros,
María Alpuente,
Sergio Antoy,
Gustavo Arroyo,
Bernd Brassel, Diego Cheda,
Moreno Falaschi,
Cèsar Ferri,
Sebastian Fischer,
Sophie Fortz,
Juan José González-Abril,
Michael Hanus,
James Hoey,
Frank Huch,
José Iborra,
Pascual Julián,
Ivan Lanese,
Michael Leuschel,
Marisa Llorens,
Salvador Lucas,
Fred Mesnard,
Ginés Moreno,
Naoki Nishida,
Claudio Ochoa,
Javier Oliver,
Adrián Palacios,
Étienne Payet,
Jaime Penabad,
Gilles Perrouin,
María José Ramis,
J. Guadalupe Ramos,
José Antonio Riaza,
Josep Silva,
Frank Steiner,
Salvador Tamarit,
Irek Ulidowski,
Wim Vanhoof, and
Akihisa Yamada,
among others.