Student projects/theses

AC simplifications in Vampire
(supervisor: Márton Hajdu, co-supervisor: Robin Coutelier)

The goal of this project is to implement and combine existing simplifications in Vampire to handle AC (associative-commutative) symbols efficiently, or devise new approaches.

Circuit Verification meets Machine Learning
(supervisor: Daniela Kaufmann)

Circuit verification is a key bottleneck in modern hardware design. This project/thesis explores how machine learning can support automated reasoning techniques used in verification, e.g., by guiding solvers or improving reasoning over circuit constraints.

Observing the Insides of SAT Solvers
(supervisor: Laura Kovács, co-supervisor: Robin Coutelier)

NapSAT is a prototypical SAT solver developed for fast design and implementation of advanced backtracking algorithms. As such, it is equipped with an observer module able to display and replay the solver’s execution. We are searching for a bachelor student proficient with C++ to generalize and improve this architecture.

Finding the shortest Polynomial
(supervisor: Daniela Kaufmann)

Finding compact representations of pseudo-Boolean polynomials is important for efficient reasoning in verification and optimization. This thesis/project studies how to represent integer pseudo-Boolean polynomials using flipped variables in order to obtain the shortest equivalent formulation.

Datastructures and algorithms optimization in NapSAT
(supervisor: Laura Kovács, co-supervisor: Robin Coutelier)

NapSAT is a research SAT solver designed to support multiple backtracking strategies. This project aims at implementing missing state-of-the-art techniques to make NapSAT more competitive and analyze their impact on backtracking variants. We are searching for a master student familiar with C++ and eager to learn sharp and precise algorithms and adapt them in a medium size solver.

String solving
(supervisor: Laura Kovács, co-supervisor: Clemens Eisenhofer)

This project involves the following possible topics in the area of string solving:

  • investigating reduction or simplification rules for extended string operations,
  • optimisation of regex (including simplifying regex in general or skipping redundant cases in terms of regex membership constraints solving),
  • algorithmic improvements of the string/Nielsen datastructures (efficiently detecting unit propagation cases, tracking integer lengths, variable substitution, etc.)