Falsification of Hybrid Systems Using Adaptive Probabilistic Search.

Prof. Dr. Gidon Ernst

Junior Professor, Software Verification

Picture of Prof. Dr. Gidon Ernst

Software and Computational Systems Lab
Department of Computer Science
Ludwig-Maximilians-Universität München (LMU Munich)
Oettingenstraße 67
80538 Munich (Germany)

Room F 007, Oettingenstr. 67
Office hours
By appointment, via https://meet.lrz.de/gidon
+49 (89) 2180-9376
Zulip (LMU/IFI internal)


Please send me encrypted mails!
My GPG key: 0x43E74A64
Fingerprint: 2936 1F81 7F7E 77FC 114F E87D 864B 9E41 43E7 4A64

Consider using the keyserver at https://keys.openpgp.org/.


CV, Google Scholar, Semantic Scholar, DBLP, ORCID, GitHub, Twitter

  • formal methods for software engineering
  • software testing
  • interactive and automated proofs
  • hybrid systems falsification

This Page

Recent, Teaching, Thesis Mentoring, Research, Software, Service


Lehrveranstaltungen (siehe auch)

Wintersemester 2021/22 (Vorlesungszeitraum: 18.10.-11.2.)

In diesem Semester können wir voraussichtlich zumindest teilweise Präsenzveranstaltungen anbieten. Eine Teilnahme online oder hybrid in meinen Veranstaltungen wird auf jeden Fall möglich sein. Vorlesungsaufzeichnung aus vorigen Semestern mit gleichen Inhalten sind jeweils verfügbar.

Sommersemester 2021 (Vorlesungszeitraum: 12.4.-16.7.)

Mentoring, Bachelor-/Master Theses (see also)

Currently assigned topics
Simplification and solving strategies for SMT
Inference of Invariants over Algebraic Data Types
Test-case generation for protocol implementations via fuzzing
Concolic Testing for Liskov's substitution principle (working title)
Studie: PBT Driven Design am Beispiel eines Embedded Software Projekts
Finished topics
Specifying Loops with Contracts. [1]
Information flow testing for PGP keyservers
Implement Fuzzing in CPAchecker
SMT-based checking and synthesis of formal refinements
Rely/Guarantee Reasoning for Separation Logic in SecC
Loop Contracts for Boogie and Dafny
Frontends for a deductive verifier (Python)
Frontends for a deductive verifier (Boogie)
Guided fuzz testing with stochastic optimization
Interactive verification debugging
Development of an interactive theorem prover for untyped logic

Further topics can be discussed on request.

Before contacting me with your own topic proposal, please think about this first: What would be the scientific question leading your project? Does the topic fit well with the research and teaching area of Prof. Ernst?

See also: Merkblatt für externe Arbeiten des Prüfungsamtes.


Relational Proofs

The goal is to infer simulation relations and invariants to prove that two implementations of the same interface exhibit the same external behavior (i.e., Liskov and Wing’s substitution principle).

Notably, we focus on complex data types such as Arrays and Lists in combination where simulation relations often need to be defined by recursion with the help of quantifiers.

Joint work with Grigory Fedyukovich.

Softare Testing

Legion is a software tester based on a tight integration of concolic execution and fuzzing, mediated by Monte-Carlo tree search. Input values to target a specific part of the program are generated by approximate path-preserving fuzzing, a variant of constrained random sampling, using an adaption of the Quicksampler algorithm.

Joint work with Dongge Liu, Ben Rubinstein, Toby Murray.

See also the competition on software testing.

Concurrent Information Flow

Security Concurrent Separation Logic (SecCSL) combines reasoning about expressive, value-dependent security classifications with concurrency and low-level code.
The approach is implemented in the tool SecC (code on bitbucket).

Joint work with Toby Murray (University of Melbourne).


Falsification of temporal logic requirements for hybrid systems. See FalStar and the ARCH competition on falsification.

Joint work with Ichiro Hasuo, Sean Sedwards, Zhenya Zhang (NII Tokyo, University of Waterloo).

Previous Projects

PhD Students


  • Korn: Horn-clause based verifier for C, draft.
  • Legion: tight integration of concolic execution and fuzzing.
  • Cuvée: SMT-LIB with programs and weakest preconditions, draft.
  • Arse: LL parsing for Scala case classes made simple.
  • SecC: verified information flow for C.
  • FalStar: hybrid systems falsification.