<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sherlock4Py | Pedro Orvalho</title><link>https://pmorvalho.github.io/tags/sherlock4py/</link><atom:link href="https://pmorvalho.github.io/tags/sherlock4py/index.xml" rel="self" type="application/rss+xml"/><description>Sherlock4Py</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate><image><url>https://pmorvalho.github.io/media/icon_hu_449091aa0565028d.png</url><title>Sherlock4Py</title><link>https://pmorvalho.github.io/tags/sherlock4py/</link></image><item><title>Sherlock4Py</title><link>https://pmorvalho.github.io/projects/sherlock4py/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://pmorvalho.github.io/projects/sherlock4py/</guid><description>&lt;h1 id="-sherlock4py-"&gt;🔎🐛 Sherlock4Py 🐍&lt;/h1&gt;
&lt;h2 id="maxsat-based-misbehaviour-verification-and-localisation-framework-for-python"&gt;Max&lt;span style="color:#2563eb;"&gt;S&lt;/span&gt;AT-Based Misbe&lt;span style="color:#2563eb;"&gt;h&lt;/span&gt;aviour V&lt;span style="color:#2563eb;"&gt;er&lt;/span&gt;ification and &lt;span style="color:#2563eb;"&gt;Loc&lt;/span&gt;alisation Framewor&lt;span style="color:#2563eb;"&gt;k&lt;/span&gt; for &lt;span style="color:#2563eb;"&gt;Py&lt;/span&gt;thon&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Sherlock4Py&lt;/strong&gt; is a research project investigating how &lt;strong&gt;formal reasoning&lt;/strong&gt;
and &lt;strong&gt;Large Language Models (LLMs)&lt;/strong&gt; can work together to find, explain, and
repair bugs in Python programs.&lt;/p&gt;
&lt;p&gt;The project brings together &lt;strong&gt;Maximum Satisfiability (MaxSAT)&lt;/strong&gt;,
&lt;strong&gt;formal verification&lt;/strong&gt;, &lt;strong&gt;software engineering&lt;/strong&gt;, and &lt;strong&gt;machine learning&lt;/strong&gt;
to make Python software and AI-assisted programming more reliable.&lt;/p&gt;
&lt;p&gt;Sherlock4Py is funded by the &lt;strong&gt;European Union&lt;/strong&gt; through the
&lt;strong&gt;Marie Skłodowska-Curie Actions (MSCA) Postdoctoral Fellowships&lt;/strong&gt; under
Horizon Europe (
).&lt;/p&gt;
&lt;div style="text-align:center; margin: 1.5rem auto;"&gt;
&lt;img src="logo-MSCA-PF.png"
alt="Marie Skłodowska-Curie Actions Postdoctoral Fellowship"
style="width:100%; max-width:500px; height:auto; margin:auto;"&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="-finding-bugs-with-formal-reasoning"&gt;🐛 Finding Bugs with Formal Reasoning&lt;/h2&gt;
&lt;p&gt;Given a buggy program and a set of failing test cases,
&lt;strong&gt;Formula-Based Fault Localisation (FBFL)&lt;/strong&gt; uses logical reasoning to identify
the program statements that can explain the observed failures.&lt;/p&gt;
&lt;p&gt;Program behaviour is encoded as logical constraints and techniques such as
&lt;strong&gt;Maximum Satisfiability (MaxSAT)&lt;/strong&gt; and &lt;strong&gt;Model-Based Diagnosis (MBD)&lt;/strong&gt; are
used to compute minimal sets of potentially faulty statements, known as
&lt;em&gt;diagnoses&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="formula_based-fault-localisation.png"
width="1000"
alt="Formula-Based Fault Localisation (FBFL)."
style="display:block; margin-left:auto; margin-right:auto; width:100%;"/&gt;&lt;/p&gt;
&lt;p&gt;While these techniques have been successfully applied to languages such as C,
Python remains comparatively underserved by exact fault-localisation methods.&lt;/p&gt;
&lt;p&gt;At the same time, LLMs are increasingly used to generate and repair Python
code, despite providing no guarantee that the generated programs are correct.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sherlock4Py brings these two problems together.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We are investigating &lt;strong&gt;MaxSAT-based fault localisation for Python&lt;/strong&gt;, new
solver techniques that make this reasoning more scalable, and how precise
bug diagnoses can be used to &lt;strong&gt;guide and verify LLM-generated program
repairs&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Can exact symbolic reasoning and generative AI work together to make
Python software more reliable?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-where-sherlock4py-comes-from"&gt;🧭 Where Sherlock4Py Comes From&lt;/h2&gt;
&lt;p&gt;Sherlock4Py builds on our previous research at the intersection of
&lt;strong&gt;formal methods, fault localisation, program repair, and LLMs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Our work on &lt;strong&gt;CFaults&lt;/strong&gt; introduced a MaxSAT-based approach for
formula-based fault localisation in C programs, using multiple failing test
cases simultaneously to compute precise diagnoses.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Mikoláš Janota&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;
&lt;/span&gt;
(2024).
&lt;a href="https://pmorvalho.github.io/publications/fm2024/" class="underline"&gt;CFaults: Model-Based Diagnosis for Fault Localization in C with Multiple Test Cases&lt;/a&gt;.
In &lt;strong&gt;FM 2024&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/fm24-paper.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/CFaults" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"/&gt;&lt;/svg&gt;
Code
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.5281/zenodo.12510220" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Zenodo
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/cfaults" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/posters/poster-fm24.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m2.25 15.75l5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5m10.5-11.25h.008v.008h-.008zm.375 0a.375.375 0 1 1-.75 0a.375.375 0 0 1 .75 0"/&gt;&lt;/svg&gt;
Poster
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/fm2024/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2502.07786" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.1609/aaai.v39i1.32046" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We subsequently showed that these diagnoses can guide &lt;strong&gt;Large Language Models
for automated program repair&lt;/strong&gt;: instead of asking an LLM to repair an entire
program, MaxSAT-based fault localisation first identifies where the problem
is likely to be.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Mikoláš Janota&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;
&lt;/span&gt;
(2025).
&lt;a href="https://pmorvalho.github.io/publications/aaai2025/" class="underline"&gt;Counterexample Guided Program Repair Using Zero-Shot Learning and MaxSAT-based Fault Localization&lt;/a&gt;.
In &lt;strong&gt;AAAI 2025&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/aaai25-LLM-CEGIS-Repair.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/LLM-CEGIS-Repair" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"/&gt;&lt;/svg&gt;
Code
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.5281/zenodo.14517771" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Zenodo
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/mentor" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/posters/poster-aaai25.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m2.25 15.75l5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5m10.5-11.25h.008v.008h-.008zm.375 0a.375.375 0 1 1-.75 0a.375.375 0 0 1 .75 0"/&gt;&lt;/svg&gt;
Poster
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/aaai2025/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2502.07786" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.1609/aaai.v39i1.32046" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Mikoláš Janota&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/jss2026/" class="underline"&gt;MENTOR: Fixing Introductory Programming Assignments With Formula-Based Fault Localization and LLM-Driven Program Repair&lt;/a&gt;.
In &lt;strong&gt;JSS 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/jss26-MENTOR.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/MENTOR" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"/&gt;&lt;/svg&gt;
Code
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.5281/zenodo.15678692" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Zenodo
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/C-Pack-IPAs" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"/&gt;&lt;/svg&gt;
Dataset
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/mentor" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/jss2026/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.1016/j.jss.2025.112690" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With &lt;strong&gt;PyVeritas&lt;/strong&gt;, we started extending these ideas towards Python by using
LLMs to transpile Python programs into C and then applying bounded model
checking and MaxSAT-based fault localisation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Marta Kwiatkowska&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/p-ai-fm-2026/" class="underline"&gt;PyVeritas: On Verifying Python via LLM-Based Transpilation and Bounded Model Checking for C&lt;/a&gt;.
In &lt;strong&gt;P-AI-FM @ AAAI 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4code" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/p-ai-fm-2026/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2508.08171" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sherlock4Py takes the next step: developing these formal reasoning techniques
&lt;strong&gt;for Python itself&lt;/strong&gt;, while investigating how they can provide
correctness-aware guidance to AI models.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-what-we-have-been-working-on"&gt;🔬 What We Have Been Working On&lt;/h2&gt;
&lt;p&gt;Since the beginning of Sherlock4Py, our work has explored several aspects of
the interaction between &lt;strong&gt;LLMs and symbolic reasoning&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id="-understanding-the-limits-of-llms-for-code"&gt;🧠 Understanding the Limits of LLMs for Code&lt;/h3&gt;
&lt;p&gt;We investigated whether LLMs genuinely reason about Python program semantics
or rely partly on superficial syntactic patterns.&lt;/p&gt;
&lt;p&gt;By applying &lt;strong&gt;semantics-preserving transformations&lt;/strong&gt; to Python programs, we
found that model predictions can change even when program behaviour remains
identical.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Marta Kwiatkowska&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/epia2026-1/" class="underline"&gt;Large Language Models Are Not (Yet) Robust in Understanding Code Against Semantics-Preserving Mutations&lt;/a&gt;.
In &lt;strong&gt;EPIA 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/epia2026-LLMCs-Semantic-Robustness.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4code" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/EPIA26-LLMCs-Semantic-Robustness" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
GitHub
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/epia2026-1/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2505.10443" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pedro Orvalho&lt;/strong&gt;, and Marta Kwiatkowska (2025).
. In &lt;em&gt;arXiv&lt;/em&gt; 2025.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These results reinforce one of the motivations behind Sherlock4Py:
&lt;strong&gt;plausible LLM-generated code is not necessarily reliable code&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="-combining-llms-with-maxsat"&gt;🧩 Combining LLMs with MaxSAT&lt;/h3&gt;
&lt;p&gt;We have also been exploring how LLMs and exact solvers can complement each
other.&lt;/p&gt;
&lt;p&gt;At &lt;strong&gt;LLM-Solve @ FLoC 2026&lt;/strong&gt;, we investigated using LLMs to translate
natural-language optimisation problems into executable &lt;strong&gt;PySAT&lt;/strong&gt; models,
while delegating the actual optimisation to an exact MaxSAT solver.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Marta Kwiatkowska&lt;/span&gt;, &lt;span &gt;
Guillem Alenyà&lt;/span&gt;, &lt;span &gt;
Felip Manyà&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/llm-solve-2026/" class="underline"&gt;Solving MaxSAT Problems from Natural Language Descriptions with LLMs and PySAT&lt;/a&gt;.
In &lt;strong&gt;LLM-Solve @ FLoC 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/llm-solve-2026-workshop-paper.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4reasoning" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/llm-solve-2026/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2605.29687" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The underlying philosophy is closely related to Sherlock4Py:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Use LLMs for their flexibility, and symbolic solvers for exact reasoning.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="-maxsat-based-feedback-for-ai"&gt;🤖 MaxSAT-Based Feedback for AI&lt;/h3&gt;
&lt;p&gt;We have also investigated MaxSAT as a mechanism for providing
&lt;strong&gt;correctness-aware feedback to AI models&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Using Sudoku as a controlled reasoning problem, we combine
Vision-Language Models with a MaxSAT oracle that identifies inconsistent
predictions and provides feedback that the model can use to refine its
solution.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Guillem Alenyà&lt;/span&gt;, &lt;span &gt;
Felip Manyà&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/epia2026-2/" class="underline"&gt;MaxSAT-Based Feedback for Guiding Vision-Language Models in Sudoku&lt;/a&gt;.
In &lt;strong&gt;EPIA 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/epia2026-MaxSAT-VLMs-Sudoku.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4reasoning" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/epia2026-2/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2607.12711" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This explores a broader idea central to Sherlock4Py:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Formal reasoning does not need to replace AI — it can guide it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For Python program repair, we aim to use the same principle:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;localise → generate → verify → provide feedback → repair&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="-understanding-bugs-and-useful-feedback"&gt;🎓 Understanding Bugs and Useful Feedback&lt;/h3&gt;
&lt;p&gt;Another part of our research investigates what bugs programmers actually
write and what kinds of automated feedback are useful to them.&lt;/p&gt;
&lt;p&gt;At &lt;strong&gt;ICLP 2026&lt;/strong&gt;, we studied automated feedback for students learning Prolog
and developed a data-driven taxonomy of real student bugs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span &gt;
Ricardo Brancas&lt;/span&gt;, &lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Carolina Carreira&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;, &lt;span &gt;
Ruben Martins&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/iclp2026-1/" class="underline"&gt;Can Automated Feedback Turn Students into Happy Prologians?&lt;/a&gt;.
In &lt;strong&gt;ICLP 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/iclp26-ProHelp.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4cseducation" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/iclp2026-1/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2504.16742" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.48550/arXiv.2504.16742" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span &gt;
Ricardo Brancas&lt;/span&gt;, &lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Carolina Carreira&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;, &lt;span &gt;
Ruben Martins&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/iclp2026-2/" class="underline"&gt;What Bugs Do Prolog Students Write? An Empirical Taxonomy and Data-Driven Mutation Framework&lt;/a&gt;.
In &lt;strong&gt;ICLP 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4cseducation" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/iclp26-LogMorph.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/iclp2026-2/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Although these studies focus on Prolog, they provide useful insights for the
evaluation of Sherlock4Py: fault-localisation and repair systems should be
tested against &lt;strong&gt;realistic programmer mistakes&lt;/strong&gt;, not only artificially
constructed bugs.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="-dissemination"&gt;📢 Dissemination&lt;/h1&gt;
&lt;p&gt;Sherlock4Py results and closely related research are disseminated through
conference presentations, workshops, seminars, research visits, and
open-source research artefacts.&lt;/p&gt;
&lt;h2 id="-talks--events"&gt;🎤 Talks &amp;amp; Events&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="-september-2026"&gt;📅 September 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Large Language Models Are Not (Yet) Robust in Understanding Code Against
Semantics-Preserving Mutations&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;25th EPIA Conference on Artificial Intelligence&lt;/em&gt; — Funchal, Portugal,
4 September 2026.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MaxSAT-Based Feedback for Guiding Vision-Language Models in Sudoku&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;25th EPIA Conference on Artificial Intelligence&lt;/em&gt; — Funchal, Portugal,
2 September 2026.&lt;br&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="-july-2026"&gt;📅 July 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Can Automated Feedback Turn Students into Happy Prologians?&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;42nd International Conference on Logic Programming (ICLP), FLoC 2026&lt;/em&gt; —
Lisbon, Portugal, 21 July 2026.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solving MaxSAT Problems from Natural Language Descriptions with LLMs
and PySAT&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;LLM-Solve @ FLoC 2026&lt;/em&gt; — Lisbon, Portugal, 19 July 2026.&lt;br&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="-may-2026"&gt;📅 May 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;From Brittle LLM Code Reasoning to MaxSAT-Based Verified Repairs&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Software Systems Engineering Seminars, University College London&lt;/em&gt; —
London, UK, 20 May 2026.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Towards Assessing and Repairing LLM-Generated Code via Model Checking
and MaxSAT-Based Fault Localisation&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Dagstuhl Seminar 26192 — Evaluation of AI Models in Software Engineering&lt;/em&gt; —
Schloss Dagstuhl, Germany, 5 May 2026.&lt;br&gt;
&lt;/p&gt;
&lt;div class="text-center"&gt;
&lt;a
id="button-2c07cfe7f8eb296a04248e02a61c4b68"
href="https://pmorvalho.github.io/events/"
class="inline-flex items-center gap-2 font-medium no-underline transition-all duration-300 ease-out transform-gpu focus:outline-none focus:ring-4 focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-zinc-900 disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none bg-gradient-to-br from-secondary-500 to-secondary-600 hover:from-secondary-600 hover:to-secondary-700 active:from-secondary-700 active:to-secondary-800 text-white shadow-lg shadow-secondary-500/25 hover:shadow-xl hover:shadow-secondary-500/30 hover:scale-105 active:scale-95 focus:ring-secondary-500/50 px-4 py-2 text-base rounded-full"
role="button"
aria-label="See all talks"
&gt;
&lt;span&gt;See all talks&lt;/span&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="-publications"&gt;📚 Publications&lt;/h2&gt;
&lt;h3 id="sherlock4py--related-research"&gt;Sherlock4Py &amp;amp; Related Research&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Marta Kwiatkowska&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/epia2026-1/" class="underline"&gt;Large Language Models Are Not (Yet) Robust in Understanding Code Against Semantics-Preserving Mutations&lt;/a&gt;.
In &lt;strong&gt;EPIA 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/epia2026-LLMCs-Semantic-Robustness.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4code" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/EPIA26-LLMCs-Semantic-Robustness" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
GitHub
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/epia2026-1/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2505.10443" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Guillem Alenyà&lt;/span&gt;, &lt;span &gt;
Felip Manyà&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/epia2026-2/" class="underline"&gt;MaxSAT-Based Feedback for Guiding Vision-Language Models in Sudoku&lt;/a&gt;.
In &lt;strong&gt;EPIA 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/epia2026-MaxSAT-VLMs-Sudoku.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4reasoning" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/epia2026-2/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2607.12711" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Marta Kwiatkowska&lt;/span&gt;, &lt;span &gt;
Guillem Alenyà&lt;/span&gt;, &lt;span &gt;
Felip Manyà&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/llm-solve-2026/" class="underline"&gt;Solving MaxSAT Problems from Natural Language Descriptions with LLMs and PySAT&lt;/a&gt;.
In &lt;strong&gt;LLM-Solve @ FLoC 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/llm-solve-2026-workshop-paper.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4reasoning" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/llm-solve-2026/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2605.29687" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span &gt;
Ricardo Brancas&lt;/span&gt;, &lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Carolina Carreira&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;, &lt;span &gt;
Ruben Martins&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/iclp2026-1/" class="underline"&gt;Can Automated Feedback Turn Students into Happy Prologians?&lt;/a&gt;.
In &lt;strong&gt;ICLP 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/iclp26-ProHelp.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4cseducation" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/iclp2026-1/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2504.16742" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.48550/arXiv.2504.16742" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span &gt;
Ricardo Brancas&lt;/span&gt;, &lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Carolina Carreira&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;, &lt;span &gt;
Ruben Martins&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/iclp2026-2/" class="underline"&gt;What Bugs Do Prolog Students Write? An Empirical Taxonomy and Data-Driven Mutation Framework&lt;/a&gt;.
In &lt;strong&gt;ICLP 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4cseducation" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/iclp26-LogMorph.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/iclp2026-2/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="research-foundations"&gt;Research Foundations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Marta Kwiatkowska&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/p-ai-fm-2026/" class="underline"&gt;PyVeritas: On Verifying Python via LLM-Based Transpilation and Bounded Model Checking for C&lt;/a&gt;.
In &lt;strong&gt;P-AI-FM @ AAAI 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/ai4code" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/p-ai-fm-2026/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2508.08171" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Mikoláš Janota&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;
&lt;/span&gt;
(2025).
&lt;a href="https://pmorvalho.github.io/publications/aaai2025/" class="underline"&gt;Counterexample Guided Program Repair Using Zero-Shot Learning and MaxSAT-based Fault Localization&lt;/a&gt;.
In &lt;strong&gt;AAAI 2025&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/aaai25-LLM-CEGIS-Repair.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/LLM-CEGIS-Repair" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"/&gt;&lt;/svg&gt;
Code
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.5281/zenodo.14517771" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Zenodo
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/mentor" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/posters/poster-aaai25.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m2.25 15.75l5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5m10.5-11.25h.008v.008h-.008zm.375 0a.375.375 0 1 1-.75 0a.375.375 0 0 1 .75 0"/&gt;&lt;/svg&gt;
Poster
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/aaai2025/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2502.07786" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.1609/aaai.v39i1.32046" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Mikoláš Janota&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;
&lt;/span&gt;
(2024).
&lt;a href="https://pmorvalho.github.io/publications/fm2024/" class="underline"&gt;CFaults: Model-Based Diagnosis for Fault Localization in C with Multiple Test Cases&lt;/a&gt;.
In &lt;strong&gt;FM 2024&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/fm24-paper.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/CFaults" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"/&gt;&lt;/svg&gt;
Code
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.5281/zenodo.12510220" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Zenodo
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/cfaults" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
project
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/posters/poster-fm24.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m2.25 15.75l5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5m10.5-11.25h.008v.008h-.008zm.375 0a.375.375 0 1 1-.75 0a.375.375 0 0 1 .75 0"/&gt;&lt;/svg&gt;
Poster
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/fm2024/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://arxiv.org/abs/2502.07786" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
Preprint
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.1609/aaai.v39i1.32046" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="pub-list-item view-citation" style="margin-bottom: 1rem"&gt;
&lt;i class="far fa-file-alt pub-icon" aria-hidden="true"&gt;&lt;/i&gt;
&lt;span class="article-metadata li-cite-author"&gt;
&lt;span class="font-bold"&gt;
Pedro Orvalho&lt;/span&gt;, &lt;span &gt;
Mikoláš Janota&lt;/span&gt;, &lt;span &gt;
Vasco Manquinho&lt;/span&gt;
&lt;/span&gt;
(2026).
&lt;a href="https://pmorvalho.github.io/publications/jss2026/" class="underline"&gt;MENTOR: Fixing Introductory Programming Assignments With Formula-Based Fault Localization and LLM-Driven Program Repair&lt;/a&gt;.
In &lt;strong&gt;JSS 2026&lt;/strong&gt;.
&lt;div class="flex flex-wrap space-x-3"&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/uploads/papers/jss26-MENTOR.pdf" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9"/&gt;&lt;/svg&gt;
PDF
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/MENTOR" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17.25 6.75L22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3l-4.5 16.5"/&gt;&lt;/svg&gt;
Code
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.5281/zenodo.15678692" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Zenodo
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://github.com/pmorvalho/C-Pack-IPAs" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"/&gt;&lt;/svg&gt;
Dataset
&lt;/a&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://pmorvalho.github.io/projects/mentor" &gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
Project
&lt;/a&gt;
&lt;button class="hb-attachment-link hb-attachment-link-small js-cite-clipboard cursor-pointer" type="button" data-filename="/publications/jss2026/cite.bib"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"/&gt;&lt;/svg&gt;
&lt;span&gt;Cite&lt;/span&gt;
&lt;/button&gt;
&lt;a class="hb-attachment-link hb-attachment-link-small" href="https://doi.org/10.1016/j.jss.2025.112690" target="_blank" rel="noopener"&gt;
&lt;svg style="height: 1em" class='inline-block' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"/&gt;&lt;/svg&gt;
DOI
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-project-information"&gt;🔗 Project Information&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#2563eb;"&gt;Sherlock4Py&lt;/span&gt; — Max&lt;span style="color:#2563eb;"&gt;S&lt;/span&gt;AT-Based Misbe&lt;span style="color:#2563eb;"&gt;h&lt;/span&gt;aviour V&lt;span style="color:#2563eb;"&gt;er&lt;/span&gt;ification and &lt;span style="color:#2563eb;"&gt;Loc&lt;/span&gt;alisation Framewor&lt;span style="color:#2563eb;"&gt;k&lt;/span&gt; for &lt;span style="color:#2563eb;"&gt;Py&lt;/span&gt;thon&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Marie Skłodowska-Curie Postdoctoral Fellowship&lt;/strong&gt;&lt;br&gt;
Horizon Europe · Grant Agreement &lt;strong&gt;101269051&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Researcher:&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Host:&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Supervisor:&lt;/strong&gt; Felip Manyà&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="margin-top:3rem; text-align:center;"&gt;
&lt;p style="font-size:0.85rem; text-transform:uppercase; letter-spacing:0.1em; margin-bottom:1.25rem;"&gt;
&lt;strong&gt;Funded by&lt;/strong&gt;
&lt;/p&gt;
&lt;div style="display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:3rem; margin-bottom:2.5rem;"&gt;
&lt;img src="logo-MSCA-PF.png" alt="Marie Skłodowska-Curie Actions Postdoctoral Fellowship" style="width:310px; max-width:100%; height:auto;"&gt;
&lt;/div&gt;
&lt;p style="font-size:0.85rem; text-transform:uppercase; letter-spacing:0.1em; margin-bottom:1.25rem;"&gt;
&lt;strong&gt;Hosted by&lt;/strong&gt;
&lt;/p&gt;
&lt;img src="logo-iiia_csic.png" alt="Artificial Intelligence Research Institute (IIIA-CSIC)" style="width:500px; max-width:100%; height:auto; margin:auto;"&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Interested in &lt;strong&gt;MaxSAT, fault localisation, Python verification,
program repair, or neuro-symbolic AI&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Feel free to reach out&lt;/strong&gt; 📧 if you are interested in discussing these
topics or exploring potential collaborations.&lt;/p&gt;</description></item></channel></rss>