<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Constraint Solving | Pedro Orvalho</title><link>https://pmorvalho.github.io/tags/constraint-solving/</link><atom:link href="https://pmorvalho.github.io/tags/constraint-solving/index.xml" rel="self" type="application/rss+xml"/><description>Constraint Solving</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Tue, 01 Sep 2026 00:00:00 +0000</lastBuildDate><image><url>https://pmorvalho.github.io/media/icon_hu_449091aa0565028d.png</url><title>Constraint Solving</title><link>https://pmorvalho.github.io/tags/constraint-solving/</link></image><item><title>Neuro-Symbolic AI for Reliable Reasoning</title><link>https://pmorvalho.github.io/projects/ai4reasoning/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://pmorvalho.github.io/projects/ai4reasoning/</guid><description>&lt;p&gt;Modern &lt;strong&gt;foundation models&lt;/strong&gt;, including &lt;strong&gt;Large Language Models (LLMs)&lt;/strong&gt; and &lt;strong&gt;Vision-Language Models (VLMs)&lt;/strong&gt;, have remarkable capabilities for understanding natural language, code, and visual information. However, their outputs remain fundamentally &lt;strong&gt;probabilistic&lt;/strong&gt;: even highly capable models can produce solutions that violate logical constraints, generate incorrect programs, or fail to reason reliably about structured problems.&lt;/p&gt;
&lt;p&gt;My research on &lt;strong&gt;Neuro-Symbolic AI for Reliable Reasoning&lt;/strong&gt; explores how &lt;strong&gt;Automated Reasoning (AR)&lt;/strong&gt; and &lt;strong&gt;Formal Methods&lt;/strong&gt; can be combined with neural models to make their reasoning processes &lt;strong&gt;more reliable, verifiable, and correct&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The central idea is simple:&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;Let neural models interpret, generate, and learn — and let symbolic methods reason, verify, diagnose, and optimise.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rather than relying exclusively on a neural model to solve a problem end-to-end, I investigate architectures in which &lt;strong&gt;neural and symbolic components collaborate&lt;/strong&gt;, exploiting their complementary strengths.&lt;/p&gt;
&lt;p&gt;This research spans reasoning over &lt;strong&gt;natural language, visual information, and programs&lt;/strong&gt;, with symbolic techniques such as &lt;strong&gt;Maximum Satisfiability (MaxSAT)&lt;/strong&gt;, &lt;strong&gt;
&lt;/strong&gt;, constraint solving, model checking, and formal verification acting as &lt;strong&gt;solvers, verifiers, or feedback mechanisms&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At a high level, the objective is to answer a fundamental question:&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;How can symbolic reasoning make neural AI systems more reliable?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="---neural-and-symbolic-reasoning"&gt;🧠 + ⚙️ Neural and Symbolic Reasoning&lt;/h2&gt;
&lt;p&gt;Neural and symbolic approaches provide complementary strengths.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Neural models&lt;/strong&gt; are particularly effective at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;understanding natural language and visual inputs;&lt;/li&gt;
&lt;li&gt;extracting semantic information from unstructured data;&lt;/li&gt;
&lt;li&gt;generating programs and structured representations;&lt;/li&gt;
&lt;li&gt;adapting to new tasks from instructions and examples.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Symbolic methods&lt;/strong&gt;, in contrast, provide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;explicit representations of constraints;&lt;/li&gt;
&lt;li&gt;logically consistent reasoning;&lt;/li&gt;
&lt;li&gt;exact optimisation;&lt;/li&gt;
&lt;li&gt;independent verification of candidate solutions;&lt;/li&gt;
&lt;li&gt;fault localisation and diagnosis;&lt;/li&gt;
&lt;li&gt;formal guarantees about properties of a system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal is therefore not to replace neural models with symbolic systems, or symbolic systems with neural models.&lt;/p&gt;
&lt;p&gt;Instead, I investigate architectures in which neural models handle the &lt;strong&gt;semantic and generative aspects&lt;/strong&gt; of a problem, while symbolic methods provide the &lt;strong&gt;reasoning, verification, optimisation, and feedback&lt;/strong&gt; needed to improve reliability.&lt;/p&gt;
&lt;p&gt;A general abstraction of this research direction is:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unstructured Input → Neural Model → Symbolic Representation → Automated Reasoning → Verification / Feedback → Neural Model&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The symbolic component can therefore play different roles: it may act as the &lt;strong&gt;solver&lt;/strong&gt;, as a &lt;strong&gt;verifier&lt;/strong&gt;, as a &lt;strong&gt;diagnostic engine&lt;/strong&gt;, or as an &lt;strong&gt;oracle that provides feedback&lt;/strong&gt; to the neural model.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-reliable-reasoning-from-natural-language"&gt;🗣️ Reliable Reasoning from Natural Language&lt;/h2&gt;
&lt;p&gt;One direction of my research investigates whether &lt;strong&gt;LLMs can make formal optimisation and constraint-solving technologies accessible through natural language&lt;/strong&gt;, while delegating exact reasoning to symbolic solvers.&lt;/p&gt;
&lt;p&gt;Traditional symbolic solvers are extremely powerful, but using them typically requires expertise in formal modelling and the ability to manually translate a problem into variables, constraints, and objective functions.&lt;/p&gt;
&lt;p&gt;LLMs provide a potential bridge between these two worlds.&lt;/p&gt;
&lt;p&gt;In our recent
, we study a hybrid approach in which an LLM translates a natural-language problem into executable Python code that encodes user-defined constraints and preferences as a &lt;strong&gt;preference-based Maximum Satisfiability (MaxSAT)&lt;/strong&gt; problem.&lt;/p&gt;
&lt;p&gt;The overall pipeline is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;📝 A user describes an optimisation problem in &lt;strong&gt;natural language&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;🧠 An &lt;strong&gt;LLM interprets the problem&lt;/strong&gt; and constructs a formal modelling strategy.&lt;/li&gt;
&lt;li&gt;🐍 The model generates executable &lt;strong&gt;Python / PySAT code&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;⚙️ The generated program constructs a &lt;strong&gt;weighted partial MaxSAT instance&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;🔎 An exact MaxSAT solver, such as &lt;strong&gt;RC2&lt;/strong&gt;, computes a solution.&lt;/li&gt;
&lt;li&gt;✅ The result is &lt;strong&gt;independently verified&lt;/strong&gt; for feasibility and optimality using a canonical MaxSAT encoding.&lt;/li&gt;
&lt;li&gt;💬 The solution is returned in the required output format.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This division of responsibilities is important.&lt;/p&gt;
&lt;p&gt;Instead of asking the LLM to internally perform combinatorial optimisation, the neural model handles &lt;strong&gt;natural-language understanding and semantic modelling&lt;/strong&gt;, while an exact symbolic solver performs the optimisation.&lt;/p&gt;
&lt;p&gt;The resulting architecture provides a path towards &lt;strong&gt;natural-language interfaces for formal reasoning systems&lt;/strong&gt;, making technologies such as SAT and MaxSAT more accessible while retaining solver-based guarantees.&lt;/p&gt;
&lt;p&gt;The corresponding full paper is available as an
.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-reliable-reasoning-from-visual-information"&gt;👁️ Reliable Reasoning from Visual Information&lt;/h2&gt;
&lt;p&gt;A complementary direction asks a different question:&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 symbolic reasoning help neural models recognise and correct their own mistakes?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In
, we investigate this question using &lt;strong&gt;Sudoku as a controlled visual reasoning benchmark&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;VLMs can interpret Sudoku boards and attempt to solve them directly from images. However, candidate solutions generated by VLMs may contain assignments that violate the underlying logical constraints.&lt;/p&gt;
&lt;p&gt;Rather than replacing the VLM with a conventional Sudoku solver, our approach introduces a &lt;strong&gt;MaxSAT oracle&lt;/strong&gt; that acts as a consistency validator and refinement engine.&lt;/p&gt;
&lt;p&gt;The interaction can be viewed as:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sudoku Image → VLM → Candidate Solution → MaxSAT Oracle → Feedback → VLM → Revised Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Candidate placements generated by the VLM are encoded as &lt;strong&gt;soft clauses&lt;/strong&gt;, while the Sudoku rules are represented as &lt;strong&gt;hard clauses&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When inconsistencies arise, the MaxSAT solver identifies a &lt;strong&gt;largest mutually consistent subset of assignments&lt;/strong&gt;. This symbolic result is then translated into &lt;strong&gt;structured textual and visual feedback&lt;/strong&gt;, which is provided to the VLM to guide subsequent refinement.&lt;/p&gt;
&lt;p&gt;This creates an iterative neuro-symbolic reasoning loop:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;👁️ The &lt;strong&gt;VLM interprets the visual problem&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;🧠 The VLM proposes candidate assignments.&lt;/li&gt;
&lt;li&gt;⚙️ A &lt;strong&gt;MaxSAT oracle checks logical consistency&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;❌ Inconsistent assignments are identified.&lt;/li&gt;
&lt;li&gt;💬 Symbolic information is transformed into &lt;strong&gt;targeted feedback&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;🔄 The VLM uses the feedback to revise its prediction.&lt;/li&gt;
&lt;li&gt;✅ The process continues towards a logically consistent solution.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Experiments across multiple open-source and closed-access VLMs show that &lt;strong&gt;MaxSAT-based feedback improves logical consistency and increases the number of solved Sudoku instances&lt;/strong&gt;, particularly when refining the full board.&lt;/p&gt;
&lt;p&gt;This
has been presented at &lt;strong&gt;the 25th EPIA Conference on Artificial Intelligence (EPIA 2026)&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-reliable-reasoning-about-programs"&gt;💻 Reliable Reasoning about Programs&lt;/h2&gt;
&lt;p&gt;A third and particularly important direction of my research applies the same neuro-symbolic principles to &lt;strong&gt;programs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Code generated by LLMs is often syntactically plausible but can nevertheless be &lt;strong&gt;semantically incorrect&lt;/strong&gt;. Conversely, formal methods can provide strong guarantees about program behaviour but generally require structured models, specifications, and specialised tooling.&lt;/p&gt;
&lt;p&gt;This creates a natural opportunity for collaboration between neural code generation and symbolic program analysis.&lt;/p&gt;
&lt;h3 id="-llm-driven-program-repair-with-formal-fault-localisation"&gt;🤖 LLM-Driven Program Repair with Formal Fault Localisation&lt;/h3&gt;
&lt;p&gt;In
, and in
, we combine &lt;strong&gt;Large Language Models&lt;/strong&gt; with &lt;strong&gt;MaxSAT-based fault localisation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Rather than asking an LLM to rewrite an entire faulty program, the symbolic component first identifies the likely buggy statements.&lt;/p&gt;
&lt;p&gt;The LLM is then presented with a &lt;strong&gt;program sketch in which the faulty statements have been removed&lt;/strong&gt;, and is asked to synthesise replacements.&lt;/p&gt;
&lt;p&gt;The process follows a &lt;strong&gt;Counterexample-Guided Inductive Synthesis (CEGIS)&lt;/strong&gt; loop:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Program → MaxSAT Fault Localisation → Program Sketch → LLM Synthesis → Test Suite → Counterexample → LLM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If the generated program is incorrect, counterexamples from the test suite are fed back to the LLM to guide subsequent repairs.&lt;/p&gt;
&lt;p&gt;In experiments on &lt;strong&gt;1,431 incorrect student programs&lt;/strong&gt;, this hybrid approach improved the repair capabilities of the evaluated LLMs, while also producing &lt;strong&gt;smaller fixes&lt;/strong&gt; than approaches relying solely on LLM-based rewriting.&lt;/p&gt;
&lt;p&gt;This work illustrates a key principle of my research:&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 symbolic reasoning to constrain where a neural model needs to act, and use neural generation to fill the remaining gaps.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="-llm-based-transpilation-and-formal-verification"&gt;🐍 LLM-Based Transpilation and Formal Verification&lt;/h3&gt;
&lt;p&gt;The same idea can be extended beyond program repair.&lt;/p&gt;
&lt;p&gt;In
, we investigate whether LLMs can act as a bridge between a high-level programming language and mature formal verification technologies.&lt;/p&gt;
&lt;p&gt;Python has relatively limited support for automated formal verification compared with languages such as C, where powerful model checkers such as
are available.&lt;/p&gt;
&lt;p&gt;PyVeritas therefore uses an &lt;strong&gt;LLM for high-level transpilation from Python to C&lt;/strong&gt;, after which the generated C program can be analysed using &lt;strong&gt;bounded model checking&lt;/strong&gt; and &lt;strong&gt;MaxSAT-based fault localisation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The architecture can be summarised as:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Python Program → LLM-Based Transpilation → C Program → Model Checking → MaxSAT Fault Localisation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This approach demonstrates how neural models can serve as a &lt;strong&gt;semantic bridge&lt;/strong&gt; to existing symbolic verification infrastructure.&lt;/p&gt;
&lt;p&gt;Experimental results on two Python benchmarks show that LLM-based transpilation can reach &lt;strong&gt;80–90% accuracy for some evaluated models&lt;/strong&gt;, enabling assertion-based verification and interpretable fault diagnosis for small but non-trivial Python programs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-from-symbolic-solvers-to-symbolic-oracles"&gt;🔄 From Symbolic Solvers to Symbolic Oracles&lt;/h2&gt;
&lt;p&gt;These projects explore several complementary ways in which symbolic reasoning can interact with neural models.&lt;/p&gt;
&lt;p&gt;In one setting, the neural model translates an informal problem into a representation that can be handled by a &lt;strong&gt;symbolic solver&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Natural Language → LLM → Formalisation → MaxSAT → Solution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In another, the neural model proposes a solution and the symbolic system acts as an &lt;strong&gt;oracle that evaluates and improves it&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Visual Input → VLM → Candidate → MaxSAT → Feedback → VLM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For program reasoning, the symbolic component can instead &lt;strong&gt;localise faults, constrain generation, or verify behaviour&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Program → Formal Analysis → Fault / Constraint Information → LLM → Revised Program → Verification&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Together, these architectures illustrate a broader research agenda in which symbolic reasoning components serve as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solvers&lt;/strong&gt;, computing exact solutions to problems formalised by neural models;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifiers&lt;/strong&gt;, checking whether neural outputs satisfy formal specifications;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Diagnostic engines&lt;/strong&gt;, identifying faults or inconsistencies in neural outputs or generated programs;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracles&lt;/strong&gt;, determining which parts of a candidate solution are mutually consistent;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback generators&lt;/strong&gt;, converting symbolic reasoning results into information that neural models can use for refinement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rather than treating symbolic reasoning as a final validation step, I am interested in systems where &lt;strong&gt;symbolic reasoning actively participates in the neural reasoning process&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-foundations-model-based-diagnosis-and-automated-reasoning"&gt;🔬 Foundations: Model-Based Diagnosis and Automated Reasoning&lt;/h2&gt;
&lt;p&gt;This research builds on my broader work in &lt;strong&gt;Automated Reasoning, Model-Based Diagnosis, Maximum Satisfiability, and Formal Methods&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In
, I developed a MaxSAT-based approach to &lt;strong&gt;formula-based fault localisation for C programs with multiple test cases&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;CFaults uses &lt;strong&gt;Model-Based Diagnosis (MBD)&lt;/strong&gt; and aggregates all failing test cases into a unified MaxSAT formulation. This enables consistent reasoning across multiple observations and guarantees that the generated diagnoses are &lt;strong&gt;subset-minimal&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;These symbolic techniques provide an important foundation for the later neuro-symbolic work.&lt;/p&gt;
&lt;p&gt;The underlying idea is the same: rather than relying solely on heuristic or probabilistic reasoning, we can formulate a problem explicitly in terms of &lt;strong&gt;constraints, observations, diagnoses, and optimisation objectives&lt;/strong&gt;, and then use an exact reasoning engine to obtain trustworthy results.&lt;/p&gt;
&lt;p&gt;Neuro-Symbolic AI extends this principle by placing such symbolic reasoning mechanisms &lt;strong&gt;inside an interaction loop with neural models&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-towards-reliable-and-trustworthy-ai"&gt;🎯 Towards Reliable and Trustworthy AI&lt;/h2&gt;
&lt;p&gt;The broader goal of this research is to develop AI systems that preserve the &lt;strong&gt;flexibility and generalisation capabilities of neural models&lt;/strong&gt; while providing stronger guarantees about their outputs and reasoning processes.&lt;/p&gt;
&lt;p&gt;I am particularly interested in questions such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;How can neural models reliably translate natural-language problems into formal constraints?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How can symbolic solvers detect and explain errors made by neural models?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What forms of symbolic feedback are most effective for guiding LLMs and VLMs?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How can formal methods constrain neural code generation and program repair?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How should neural and symbolic components interact in iterative reasoning loops?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can exact reasoning mechanisms provide stronger correctness guarantees for AI-generated solutions?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How can these approaches scale beyond controlled benchmarks to real-world AI systems?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The long-term vision is to move beyond the paradigm of simply asking a neural model for an answer.&lt;/p&gt;
&lt;p&gt;Instead, I am interested in &lt;strong&gt;collaborative AI systems&lt;/strong&gt; in which neural models and symbolic reasoners continuously complement one another:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Neural AI provides learning, perception, language, and generation.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Symbolic AI provides logic, constraints, optimisation, diagnosis, verification, and guarantees.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By bringing these capabilities together, &lt;strong&gt;Neuro-Symbolic AI for Reliable Reasoning&lt;/strong&gt; aims to develop AI systems that are not only capable, but also &lt;strong&gt;reliable, verifiable, interpretable, and trustworthy&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pedro Orvalho&lt;/strong&gt;, Marta Kwiatkowska, Guillem Alenyà, and Felip Manyà (2026). &lt;em&gt;Reliable Reasoning with Large Language Models via Preference-Based Maximum Satisfiability&lt;/em&gt;.
.&lt;/p&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 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;
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;
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;
(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;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;
(2025).
&lt;a href="https://pmorvalho.github.io/publications/phd-thesis/" class="underline"&gt;MENTOR: Automated Feedback for Introductory Programming Exercises&lt;/a&gt;.
PhD Thesis.
&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/theses/81151-pedro-silva_phd-thesis.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://scholar.tecnico.ulisboa.pt/records/-46XUfm_Dnqujesg0AlTNUPh7pZZIs55KWI0" 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;
IST
&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/phd-thesis/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;I am always excited to explore new ideas together. &lt;strong&gt;Feel free to reach out&lt;/strong&gt; 📧 if you are interested in collaborating on &lt;strong&gt;Neuro-Symbolic AI&lt;/strong&gt;, &lt;strong&gt;Automated Reasoning&lt;/strong&gt;, and &lt;strong&gt;Reliable and Trustworthy AI&lt;/strong&gt;!&lt;/p&gt;</description></item></channel></rss>