Kalmer Apinis
Formal Verification of an Algorithm in Rocq
Thanks to AI, it is nowadays rather easy to formally prove the correctness of many algorithms. One such system is the Rocq Prover, where you can implement an algorithm, prove properties about it, and extract the algorithm to OCaml or Haskell.
It is best if you propose your own algorithm, but we may be able to find tasks related to static analysis.
Topics
- Prove the correctness of an algorithm of your choice
- Prove something related to static analysis.
Static Analysis of Java Bytecode
Our research group has extensive experience with static program analysis of the C language. Now we would like to extend this to analyzing programs in the Java world. Static program analysis computes invariants of a program based on its code. On this basis, one can make assessments about the program’s (correctness). Of course, this depends on which analyses are run (i.e., which invariants are sought).
According to the theory of abstract interpretation, static program analysis was essentially solved already in the 1970s. Our research group members have also been writing scientific papers and programs on program analysis for 20 years. However, practically usable tools for everyday users are hard to find.
Since this topic is related to our PRG project, we may also discuss the possibility of paying a scholarship for these topics.
Topics
- Explanation of relational analysis results (suitable for a scientific paper)
- General improvements to the Põder analyzer
Teaching Materials for Functional Programming
There are many different directions to start from, but in the end, our goal is to obtain more high-quality, meaningful, and challenging assignments for the FP course. For example, translating some reactive programming solution from Haskell to Idris, studying/solving a typical data science problem in Idris, or exploring an interesting algorithm.
Topics
- Project work on developing teaching materials for the FP course
- Any other topic that makes the FP course better
Functional Programming
We know that FP is nice in theory. But is it actually nice to use in practice? To explore such questions, we are willing to supervise a task proposed by you, provided that its solution involves functional programming on a sufficiently large scale.
There is also the possibility of supplementing the FP textbook.
Topics
- projektitööd õppematerjalide loomine kursusele FP
- mingi muu teema, mis teeb FP kursust paremaksSolving a problem you propose with a modern FP language (e.g., Elm or Elixir)
- Solving a problem you propose with a classic FP language (e.g., Haskell or OCaml)
- Making tasks for FP textbook
- Additional chapters of FP textbook — OCaml, Elm, Haskell
Contact: Kalmer Apinis ([kalmer.apinis@ut.ee](kalmer.apinis@ut.ee))
Completed theses
- Otto-Cristofer Vanasaun, “Push-relabel algoritmi optimeeritud ekstraheerimine Rocq raamistikust keelde OCaml”, 2026
- Aksel Õim, “Formal Proof of the Push-relabel Algorithm in Coq”, 2024
- Kadi Sammul, “Constraint Solving via Combined Widening and Narrowing in Coq”, 2024
- Maarika Markus, “Veebirakendus funktsionaalprogrammeerimise ja -keele Idris õppimiseks”, 2022
- Karoliine Holter, “Funktsionaalprogrammeerimise õpetamine Idrises “, 2021
- Peter Kallaste, “Efektisüsteemide õpetamine Haskellis”, 2021
- Karl Marten Mägi, “Modulaarne staatiline programmianalüüs”, 2021
- Halliki Mullari, “Java baitkoodi sünkroniseerimise analüüs raamistikus Põder”, 2020
- Liem Radita Tapaning Hesti, “Autotööstuse tarkvara mudelipõhine arendamine ja analüüs”, 2019
- Raul Redpap, “Kahni algoritmi tõestamine Coq raamistikus”, 2019
- Mirjam Iher, “Nõrgima eeltingimuse staatiline analüüs pinukeeltele”, 2019
- Andre Sinisalu, “Java programmide staatiline intervallanalüüs raamistikus Põder”, 2019
- Simmo Saan, “Abstraktsete domeenide omaduspõhine testimine”, 2018
- Liisi Kerik, ” Funktsionaalse programmeerimiskeele liigisüsteem”, 2018
- Tenno Veber, “Haskelli FRP teegi uurimine: Reactive-banana”, 2017
- Karl-Martin Uiga, “Tüübiohutu FRP teegi uurimine: Grapefruit”, 2017
- Kaarel Tinn, “Veebirakenduse loomine funktsionaalses programmeerimiskeeles Elixir”, 2017
- Marti Mutso, “Haxl teegi uurimine”, 2017
- Margus Pollmann, “Haskelli teegi Euterpea uurimine”, 2017
- Sebastian Wiesner, “Implementing Widening as an Abstract Domain”, 2014
- Stefan Dangl, “State space reduction by injecting external invariants into the internal program representation of Goblint”
- Yannick Scherer, “Signed agnostic interval analysis for Gobint”, 2013