Active automata learning is emerging as an effective technique for obtaining state machine models of software and hardware systems. In this introductory lecture, I will start with the famous L* algorithm proposed by Dana Angluin in 1987, and explain how this algorithm approximates the Nerode congruence by means of refinement. Next, I will present an overview of work at Radboud University in which we used automata learning to find standard violations and security vulnerabilities in implementations of network protocols such as TCP, TLS, and SSH. Also, I will discuss the application of automata learning to support refactoring of legacy embedded control software. Finally, I will introduce L#, a new and simple approach to active automata learning. Instead of focusing on equivalence of observations, like the L* algorithm and its descendants, L# takes a different perspective: it tries to establish apartness, a constructive form of inequality.
Join at http://imt.lu/seminar