Hannes Mehnert
Contact
- Office: 4D12 (view from my office
)
- Mail: hame at domain
Research Interest
- PhD student in the Tools and Methods for Scalable Software Verification Project at ITU (May 2010 - May 2013) (supervisors Peter Sestoft and Lars Birkedal)
- Software Verification (separation logic)
- Gradual Typing
- Type Systems
- Programming languages
- Compiler implementations, optimizations
- Programing tools
Teaching
- Project: Development of a browser-based IDE (Spring 2011)
- Project: An Eclipse Plug-In for Coq (Spring 2011)
- TA Programs as data (Fall 2010)
- Programming languages seminar (Fall 2010)
Publications
- 06/2012 FTfJP: Encoding Featherweight Java with Assignment and Immutability using The Coq Proof Assistant Coq formalization
- 05/2012 TOOLS: Verification of Snapshotable Trees using Access Permissions and Typestate Java code
- 01/2012 Verified Software: Theories, Tools and Experiments: Formalized Verification of Snapshotable Trees: Separation and Sharing Coq formalization
- 04/2011 Third NASA Formal Methods Symposium: Kopitiam: modular incremental interactive full functional static verification of Java code Slides Screencast
- 10/2010 International Lisp Conference 2010: Extending Dylan's Type System for Better Type Inference and Error Detection
- 10/2009 Diplomarbeit: Extending Dylan's Type System for Better Type Inference and Error Detection
- 03/2009 International Lisp Conference 2009: Automatically generated type-safe GTK+ binding for Dylan
- 2007 Design and implementation of the middleware of Sputnik
- 04/2007 International Lisp Conference 2007: A Domain-Specific Language for manipulation of binary data in Dylan
- 10/2006 Nedap/Groenendaal ES3B voting computer - a security analysis
- 08/2006 Secure networking
- 09/2005 International Conference on Functional Programming Programming Contest : 2nd und Judge's Prize with the Dylan Hackers team (writeup local copy)
Possible Bachelor/Master Projects (some ideas)
- Scala
- Implement a parser library similar to camlp5 (to allow correct parsing of Coq)
- Implement a parser library similar to camlp5 (to allow correct parsing of Coq)
- Kopitiam
- Improve Coq perspective of Eclipse
The Coq perspective is currently shipped with Eclipse. It would be good to separate it into a disjoint plugin. Also some features are missing like Search/SearchAbout and other useful stuff. Once that is done, a content assistant (completion) could be developed. - Translate specifications (JML, Plural, …) into higher-order separation logic specification
Parse the JML (or Plural or some other) specification and transform it to our higher-order separation logic specification. With this in place, we could reuse and proof case studies developed with JML or Plural. - Port to 64 bit
- Improve Windows port (especially sending interrupt to coqtop)
- https://github.com/hannesm/Kopitiam/blob/master/TODO.org
- Improve Coq perspective of Eclipse
- Dylan
More ideas are at http://opendylan.org/community/gsoc/2012/- Interactive Code Browser (CodeBubbles) via Web (JavaScript)
The compiler provides an amazing amount of data via an API, it would be nice to have an interface via a web browser for this. A nice case study what can be achieved with HTML5 and Javascript. http://www.cs.brown.edu/people/acb/codebubbles_site.htmThis has been worked on http://turbolent.github.com/hula-presentation/
- Replace frontend with different syntax (LISP / PLOT)
The syntax of Dylan is Algol-like. PLOT looks similar, apart from the macro system. The amount of punctation needed is lower. http://users.rcn.com/david-moon/PLOT/ Another project would be to write a compiler frontend which is able to parse the old Dylan syntax (LISP-style). - Implement Link Time Optimization for Open Dylan
Inter-library dependencies can be resolved at link time solely. Currently every library contains every defined method, initialized constants, etc. The idea of link time optimization is to remove the unreachable code, resulting in a smaller binary and a faster startup time. Since the Open Dylan compiler has all the information which application to build, it could, instead of building a lot of shared objects, build a statically linked library with only those definitions and initializations required.A rough sketch for LLVM is available: http://llvm.org/docs/LinkTimeOptimization.html
- Speedup generic function dispatch
More efficient dispatch (by being deterministic), as mentioned in Eric Kidd's 'Efficient Compression of Generic Function Dispatch Tables', should be possible now that C3 is integrated. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.68.9146&rep=rep1&type=pdf - Speedup runtime
Yoav Zibin PhD thesis has a great collection of efficient algorithms for object-oriented runtime. http://www.flashtogether.com/yoavzibin/publications/my-thesis.pdf - Implement 'hot code update' for UNIX
Compiling and uploading expressions into a running binary. There is already support on Windows, but UNIX lacks this support. - Implement elisp frontend for deuce
Deuce is an editor similar to emacs, but has for example polymorphic buffer pointers. This editor should be enhanced to be able to use elisp code, and thus running a huge amount of modes from emacs natively. - Design and implement test suite for compiler
Testing compiler optimizations and typist is a non-trivial task. The frontend is not so much of interest, but rather are optimization and type inference. The input and output of these phases are in the intermediate language, which doesn't have a reader by now.
- Interactive Code Browser (CodeBubbles) via Web (JavaScript)
Projects
- Kopitiam Eclipse plugin for side-by-side development of Java code and Coq proofs
- Dylan compiler hacker and maintainer (Open Dylan)
An object-centered dynamically typed programming language. Related to LISP, but with an ALGOL syntax and a clear separation of compile and run time. Dylan supports higher order functions, multiple inheritance, multiple dispatch, meta programming, exceptions, optional keyword arguments, …There are two open source implementations, both written in Dylan: Gwydion Dylan (originally developed at CMU) which compiles Dylan to C, but has no thread support; and Open Dylan (formerly Functional Developer, developed at Harlequin), which compiles Dylan to either x86 assembly or C code. Open Dylan has an IDE (currently only on Windows) which supports debugging, REPL, etc.
- Live control and data flow visualization for the Open Dylan compiler short demo
Served as a debug tool for my Diplom thesis (to see what is going on during compilation) - Network night vision - network protocol analyzer and TCP/IP stack
- (no longer maintained) KPortage - Gentoo package management KDE frontend
- (no longer maintained) Buddha - DNS and DHCP configuration management (used in 2005/2006 for 4000 people network)
- (no longer maintained) Sputnik - RFID tracking middleware (used in 2006/2007 to track 1000 people during 4 days at a conference)
Date: 2012-05-25 14:16:26 CEST