Possui graduação em Engenharia de Computação (1992), Mestrado (1996) e Doutorado (2001) em Informática pela Pontifícia Universidade Católica do Rio de Janeiro. Durante seu doutoramento, foi International Fellow (1998-2000) no Computer Science Laboratory do Stanford Research Institute (SRI International). Desenvolveu pesquisa pós-doutoral na University of Illinois at Urbana-Champaign (2002), Universidad Complutense de Madrid, no grupo UCMaude de pesquisa em lógica de reescrita (2006-2008) e na PUC-Rio (2016). Coordenou o comitê de programa do Simpósio Brasileiro de Linguagens de Programação em 2011, do Simpósio Brasileiro de Métodos Formais em 2014 e o Formal Aspects of Component Software em 2015.
Atuou e atua em importantes conferências internacionais e nacionais como International Colloquium on Theoretical Computer Science, Formal Aspects of Component Software, Simpósio Brasileiro de Linguagens de Programação e Simpósio Brasileiro de Métodos Formais. Contribui a periódicos e conferências internacionais como Logic Journal of the IGPL, Journal of Systems and Software, Science of Computer Programming, Information and Software Technology, Mathematical Reviews, Theoretical Computer Science e Algebraic Methodology and Software Technology.
Atualmente é Professor Associado da Universidade Federal Fluminense, coordenador do Theoretical Computer Science research group da UFF, pesquisador colaborador do grupo de pesquisa Formal Analysis and Design of Software Systems (FADoSS), da Universidad Complutense de Madrid, pesquisador colaborador do grupo de pesquisa TecMF da PUC-Rio, e pesquisador do Laboratório de Métodos Formais, Inteligência Artificial e Lógica em Ciência da Computação da UFF (FR∀M∃ Lab). Tem experiência na área de Ciência da Computação, com ênfase em Lógicas e Semântica de Programas. Seus interesses em pesquisa incluem métodos formais, semântica de linguagens de programação e lógica aplicada à Ciência da Computação.