Research Prototypes and Frameworks

I have been coding for different kind of projects. For some types of problems, tool support or an implementation is crucial – like the shell script parallelization framework PaSh. But some of my research has quite a theoretical focus so this is not necessarily the case. I still usually implement a prototype to play around with our ideas and evaluate them.

  • For our work on asynchronous multiparty session types, I developed the prototype AMGC [code] which implements our technique to generate verified participant specifications from global protocol specifications. For the theoretical foundations, check out our CONCUR21 paper.

  • I have contributed to the shell script parallelization framework PaSh [code]. Mainly, I designed, implemented and integrated an annotation library for command invocations [code, PyPI] that provides means to specify command invocation behaviours in the form of annotations. For PaSh, it provides parallelizability and input-output information. The accuracy of this information is crucial both for correctness and performance. Input-output information is required for the translation between actual shell scripts and our internal model for transformations.

  • Together with Julian Haas, I have built Heimdall [code] which provides message interception and scheduling utilities for Erlang applications. Erlang has built-in primitives to send and receive messages as well as standard libraries for message-passing programs. We instrumented these libraries to intercept and control the delivery of messages with different schedulers. This can be used to test Erlang programs with different scheduling algorithms.

  • The prototype Lemma9 [code] implements our approach for verifying cryptographic protocols that we presented at CONCUR20. It can infer and check inductive invariants for protocols with an unbounded number of sessions.

  • As an undergraduate assistant, I helped with the initial version of PROSA, which is a Coq framework of and for definitions and proofs for real-time schedulability analysis.