Maciej Bendkowski, Ph.D

I am a theoretical computer scientist, mathematician, and (functional) programmer interested in solving concrete problems though abstract and rigorous methods. I like to use theoretical results in my programming and program while doing theoretical research.

I finished my Ph.D in 2017, in the Theoretical Computer Science group at the Jagiellonian University in Kraków, advised by Marek Zaionc.

Throughout my research, I focus on statistical properties of large, random combinatorial structures, in particular λ-terms, and effective means of their generation.

Thesis: Quantitative aspects and generation of random lambda and combinatory logic terms

Email: (λx.x@gmail.com)maciej.bendkowski.

Publications

17. Maciej Bendkowski
Automatic compile-time synthesis of entropy-optimal Boltzmann samplers, arXiv (2022)

16. Maciej Bendkowski
A note on the asymptotic expressiveness of ZF and ZFC, Journal of Logic and Computation (2021)

15. Maciej Bendkowski
How to generate random lambda terms?, arXiv (2020)

14. Maciej Bendkowski, Olivier Bodini, Sergey Dovgal
Tuning as convex optimisation: a polynomial tuner for multi-parametric combinatorial samplers, Combinatorics, Probability and Computing (2021)

13. Maciej Bendkowski, Pierre Lescanne
On the enumeration of closures and environments with an application to random generation, Logical Methods in Computer Science (2019)

12. Maciej Bendkowski, Olivier Bodini, Sergey Dovgal
Statistical properties of lambda terms, Electronic Journal of Combinatorics (2019)

11. Maciej Bendkowski
Towards the average-case analysis of substitution resolution in λ-calculus, FSCD'19

10. Maciej Bendkowski, Pierre Lescanne
Combinatorics of explicit substitutions, PPDP'19

9. Maciej Bendkowski, Pierre Lescanne
Counting environments and closures, FSCD'18

8. Maciej Bendkowski, Olivier Bodini, Sergey Dovgal
Polynomial tuning of multiparametric combinatorial samplers, ANALCO'18

7. Maciej Bendkowski, Katarzyna Grygiel, Paul Tarau
Random generation of closed simply-typed λ-terms: a synergy between logic programming and Boltzmann samplers, Theory and Practice of Logic Programming (2018)

6. Maciej Bendkowski, Katarzyna Grygiel, Pierre Lescanne, Marek Zaionc
Combinatorics of λ-terms: a natural approach, Journal of Logic and Computation (2017)

5. Maciej Bendkowski
Normal-order reduction grammars, Journal of Functional Programming (2017)

4. Maciej Bendkowski, Katarzyna Grygiel, Paul Tarau
Boltzmann samplers for closed simply-typed lambda terms, PADL'17

3. Maciej Bendkowski, Katarzyna Grygiel, Marek Zaionc
On the likelihood of normalisation in combinatory logic, Journal of Logic and Computation (2017)

2. Maciej Bendkowski, Katarzyna Grygiel, Pierre Lescanne, Marek Zaionc
A natural counting of lambda terms, SOFSEM'16

1. Maciej Bendkowski, Katarzyna Grygiel, Marek Zaionc
Asymptotic properties of combinatory logic, TAMC'15

Software

Generic Boltzmann Brain, github
generic-boltzmann-brain is a template Haskell library which allows its users to automatically generate efficient multi-parametric analytic Boltzmann samplers for algebraic data types.

Paganini, github
Paganini is a lightweight python library meant for the purpose of helping with the design of combinatorial samplers. Given a combinatorial specification, expressed using a domain-specific language closely resembling Flajolet and Sedgewick's symbolic method, Paganini gives its users some additional control over the distribution of structures constructed using the designed samplers.

Paganini-hs, github
paganini-hs is an experimental EDSL (embedded domain specific language) meant as a Haskell wrapper for paganini -- a multiparametric combinatorial specification tuner written in Python. paganini-hs uses BinderAnn to capture user-defined variables and use them in the construction of paganini input specifications.

Buffon machines, github
Buffon machines is a simple, monadic implementation of Buffon machines meant for perfect simulation of discrete random variables using a discrete oracle of random bits. Buffon machines are implemented as monadic computations consuming random bits, provided by a 32-bit buffered oracle. Bit regeneration and computation composition is handled within the monad itself.

Last update: 24 May 2022