Bakalářská práce

Library for Boolean function manipulation in Rust and Python

Ondřej Hrdlička, učo 514205
Anotace

Práce s booleovskými funkcemi je základním aspektem různých disciplín v informatice. V ekosystému jazyka Python existuje citelná mezera v oblasti vysoce výkonných knihoven určených k tomuto účelu. Tato práce tuto mezeru vyplňuje implementací nové knihovny pro manipulaci s booleovskými funkcemi v jazyce Rust, která podporuje reprezentaci booleovských funkcí ve formě stromů výrazů, pravdivostních tabulek …více

Abstract

Boolean function manipulation is a fundamental aspect of various disciplines in computer science. There is a notable gap in the Python ecosystem for high-performance libraries dedicated to this purpose. This thesis addresses this gap by implementing a new Boolean function manipulation library in Rust, which supports representations of Boolean functions as expression trees, truth tables, and binary …více

Zadání práce

Efficient manipulation of Boolean functions is one of the building blocks of many algorithms in the area of formal methods and exhaustive model analysis (for example in the case of Boolean networks in systems biology). Currently, there are libraries developed for this purpose that are using a wide range of data structures across many languages [1,2,3]. However, they are often not feature-complete or suffer from poor performance.

The goal of this thesis is to develop a library in the Rust programming language that:

  • Supports manipulation of Boolean functions represented as (a) expressions, (b) tables, (c) binary decision diagrams;
  • Can be used from Python using the PyO3 tool [4];
  • Supports a reasonable subset of the relevant functionality provided by the state-of-the-art Python libraries PyEDA and SymPy [5, 6];
  • Is reasonably performant compared to the other Python counterparts on a set of benchmarks selected by the student.

[1] https://pyeda.readthedocs.io/en/latest/
[2] https://crates.io/crates/bex
[3] https://crates.io/crates/biodivine-lib-bdd
[4] https://pyo3.rs/v0.18.1/
[5] https://pyeda.readthedocs.io/en/latest/
[6] https://www.sympy.org/en/index.html

Práce zkontrolována:
28. 5. 2024 14:34, RNDr. Samuel Pastva, Ph.D., učo 410286
Jazyk práce
angličtina angličtina
Termín obhajoby
24. 6. 2024
Práce byla úspěšně obhájena

Vedoucí

RNDr. Samuel Pastva, Ph.D., učo 410286
KPSK FI MU

Oponent

RNDr. Nikola Beneš, Ph.D., učo 72525
KPSK FI MU

Masarykova univerzita Fakulta informatiky
Plán
Programování a vývoj aplikací
  • Přidání souboru

    Soubor nebo složku lze nahrát pomocí tlačítka Přidat.
  • Další operace se soubory

    Podrobnosti lze zjistit označením příslušného řádku.
  • Pohled pro experty

    Pro častou práci je možné zvolit režim Více možností.
  • Vyhledávání souborů

    Vyhledávaný výraz můžete zadat přímo do adresního řádku.
  • Rychlý přístup k souborům

    Pomocí funkce Nedávné je možné se rychle vrátit k právě prohlíženým souborům. Oblíbené soubory je také možné označit Hvězdičkou.