Jan Midtgaard |
Email: | mail@janmidtgaard.dk |
Skype: | janmidtgaard |
Profiles: | Github, LinkedIn, DBLP, Google Scholar, Orcid |
I'm a functional programmer working at Tarides. I spent 14 years in academia as a researcher in programming languages and the technology surrounding them. I have a particular expertise in functional programming languages, static analysis based on abstract interpretation, and property-based testing (aka. QuickCheck).
My course material on abstract interpretation is available here (last held as a winter school in St. Petersburg, 2015).
A newer course on QuickCheck (in OCaml) is available here (last held at SDU, revised spring 2021).
Longer bio: I hold a PhD degree from BRICS, Department of Computer Science, University of Aarhus (AU). My supervisor was Olivier Danvy. During my education I visited Patrick Cousot's group at the Département d'Informatique at Ecole Normale Supérieure in Paris and professor Norman Ramsey at the Division of Engineering and Applied Sciences at Harvard University. After graduating I moved to Rennes in France to work at IRISA / INRIA Rennes - Bretagne Atlantique with Thomas P. Jensen in the Lande (now: Celtique) project. In 2009 I was supported by the Carlsberg Foundation as a post-doc initially with John P. Gallagher in the PLIS group at CBIT, Roskilde University and later back at AU with Michael I. Schwartzbach. I was at AU for a total of five years as lecturer and researcher in the Programming Languages group, for the last 1.5 years with Anders Møller at CASA. I then worked for 2.5 years with Hanne and Flemming Nielson in the Section for Formal Methods (formerly: Language-Based Technology) at DTU Compute, Technical University of Denmark. I concluded my academic career as Associate Professor in the Software Engineering Section at the Maersk Mc-Kinney Moller Institute at the University of Southern Denmark from August 2017 until I resigned in March 2021. After leaving academia I worked briefly as a software engineer at InCommodities Apr-Jun 2021. In August 2021 I started Tail Call Development through which I work for Tarides since October 2021. I'm team lead for an R&D team of stellar software engineers working on different Compiler and Language projects.
I'm married to practicing psychologist Vibeke Bie and we have two children. My Erdős number is (at most) 4.
Academic Activities |
Organization:
|
Talks:
|
Teaching and Supervision |
I have taught and co-taught the following courses:
Furthermore I have (co-)supervised the following MSc thesis students:
Publications |
Multicoretests - Parallel Testing Libraries for OCaml 5.0
Jan Midtgaard, Olivier Nicole, Nicolas Osborne
In OCaml Users and Developers Workshop 2022,
[author version],
[code],
[video]
Stack-Driven Program Generation of WebAssembly
Árpád Perényi, Jan Midtgaard
In the 18th Asian Symposium on Programming Languages and Systems (APLAS 2020),
Lecture Notes in Computer Science,
© Springer-Verlag 2020,
[author version],
[code]
A Simple State-Machine Framework for Property-Based Testing in OCaml
Jan Midtgaard
In OCaml Workshop 2020,
[paper],
[code],
[video]
Process-Local Static Analysis of Synchronous Processes
Jan Midtgaard,
Flemming Nielson,
Hanne Riis Nielson
In Static
Analysis, 25th International Symposium (SAS 2018),
Lecture Notes in Computer Science, vol. 11002, pp. 284-305,
© Springer-Verlag 2018,
[DOI link],
[full version pdf],
[prototype],
[video]
QuickChecking Patricia Trees (Best paper award)
Jan Midtgaard
In
Trends in Functional Programming - 18th International Symposium, TFP 2017, Revised Selected Papers,
Lecture Notes in Computer Science, vol. 10788, pp. 59-78,
© Springer-Verlag 2018,
[paper],
[code]
Developments in Property-Based Testing (Invited Talk)
Jan Midtgaard
In
Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program
Manipulation (PEPM 2018),
p 1,
© ACM Press 2018
Effect-Driven QuickChecking of Compilers
Jan Midtgaard,
Mathias Nygaard Justesen,
Patrick Kasting,
Flemming Nielson,
Hanne Riis Nielson
In Proceedings of the ACM on Programming Languages,
Volume 1, Issue ICFP, Sep. 2017, Article No.15,
pp. 15:1-15:23,
© ACM Press 2017,
[DOI link],
[corrigendum],
[full version pdf],
[prototype],
[docker image],
[video]
Quickchecking Static Analysis Properties
Jan Midtgaard,
Anders Møller
In Software:
Testing, Verification and Reliability (Special Issue), volume 27, issue 6, Sep. 2017, © Wiley 2017,
[DOI link],
[author version]
Extended version of our ICST'15-paper.
A Parametric Abstract Domain for Lattice-Valued Regular Expressions
Jan Midtgaard,
Flemming Nielson,
Hanne Riis Nielson
In Static
Analysis, 23rd International Symposium (SAS 2016),
Lecture Notes in Computer Science, vol. 9837, pp. 338-360,
© Springer-Verlag 2016,
[DOI link],
[full version pdf],
[prototype]
Iterated Process Analysis over Lattice-Valued Regular Expressions
Jan Midtgaard,
Flemming Nielson,
Hanne Riis Nielson
In
Proceedings of the
18th International Symposium on Principles and Practice of Declarative
Programming (PPDP 2016),
pp 132-145,
© ACM Press 2016,
[free ACM link],
[full version pdf],
[web client prototype],
[source code]
Systematic Derivation of Correct Variability-Aware Program Analyses
Jan Midtgaard,
Aleksandar S. Dimovski,
Claus Brabrand,
Andrzej Wąsowski
In Science of Computer Programming, volume 105,
pp. 145-170, © Elsevier 2015,
[DOI link]
Extended version of our MODULARITY'14-paper.
A Case Study in Modular Programming: Using AspectJ and OCaml
in an Undergraduate Compiler Project
Aske Simon Christensen,
Jan Midtgaard,
Johnni Winther,
Ian Zerny
AU E-book. Apr. 2015,
[free
AU link]
Quickchecking Static Analysis Properties
Jan Midtgaard,
Anders Møller
In Proceedings of
the 8th IEEE
International Conference on Software Testing, Verification and
Validation (ICST 2015), Apr. 2015,
© IEEE 2015, [pdf]
Systematic Derivation of Static Analyses for Software Product Lines
Jan Midtgaard,
Claus Brabrand,
Andrzej Wąsowski
In Proceedings of the 13th
International Conference on Modularity (MODULARITY 2014),
pp 181-192, © ACM Press 2014,
[free ACM link]
Extended version available as ITU technical report TR-2014-170.
Engineering Definitional Interpreters
Jan Midtgaard,
Norman Ramsey,
Bradford Larsen
In Proceedings of the
15th International Symposium on Principles and Practice of Declarative
Programming (PPDP 2013),
pp 121-132, © ACM Press 2013,
[free ACM link]
[Full version and
source code]
Monadic Abstract Interpreters
Ilya Sergey,
Dominique Devriese,
Matthew Might,
Jan Midtgaard,
David Darais,
Dave Clarke,
Frank Piessens
In Proceedings of the 34th ACM
SIGPLAN International Conference on Programming Language Design
and Implementation (PLDI 2013)
pp 399-410, © ACM Press 2013,
[free ACM link]
Handling Overflow in MLton
Alexander Bjerremand Hansen,
Jan Midtgaard
In ACM SIGPLAN Workshop on ML,
Sep. 2012, [pdf]
A Structural Soundness Proof for Shivers's Escape Technique:
A Case for Galois Connections
Jan Midtgaard,
Michael D. Adams,
Matthew Might
In Static
Analysis, 19th International Symposium (SAS 2012),
Lecture Notes in Computer Science, vol. 7460, 352-369,
© Springer-Verlag 2012,
[DOI link],
[pdf]
Calculating Graph Algorithms for Dominance and Shortest Path
Ilya Sergey,
Jan Midtgaard,
Dave Clarke
In Mathematics
of Program Construction (MPC 2012),
Lecture Notes in Computer Science, vol. 7342, pp 132-156,
© Springer-Verlag 2012,
[DOI link]
Dominance Analysis via Ownership Types and Abstract Interpretation
Ilya Sergey,
Jan Midtgaard,
Dave Clarke
Technical report,
CW615,
Katholieke Universiteit Leuven, December 2011.
Control-Flow Analysis of Function Calls and Returns
by Abstract Interpretation
Jan Midtgaard,
Thomas P. Jensen
In Information and Computation, volume 211, pp. 49-76, © Elsevier 2012,
[DOI link]
Extended version of our ICFP'09-paper.
Flow-Sensitive Type Recovery in Linear-Log Time
Michael D. Adams,
Andrew W. Keep,
Jan Midtgaard,
Matthew Might,
Arun Chauhan,
R. Kent Dybvig
In Proceedings of the 26th ACM SIGPLAN Conference on
Object-Oriented Programming, Systems, Languages, and
Applications (OOPSLA 2011)
pp 483-498, © ACM Press 2011,
[free ACM link]
Technical Perspective: Abstracting Abstract Machines
Olivier Danvy, Jan Midtgaard
In Communications of the ACM, volume 54, number 9, pp. 100,
© ACM Press 2011,
[free ACM link]
Subcubic Control Flow Analysis Algorithms
Jan Midtgaard,
David Van Horn
Accepted for publication in
Higher-Order and Symbolic Computation
Older version available as Roskilde University computer science
research report
#125, May 2009, [pdf]
Control-Flow Analysis of Function Calls and Returns
by Abstract Interpretation
Jan Midtgaard,
Thomas P. Jensen
In Proceedings
of the 14th ACM
SIGPLAN International
Conference on Functional Programming (ICFP 2009),
pp 287-298, © ACM Press 2009,
[free ACM link],
[video]
Extended version available as INRIA research
report RR-6681
A Calculational Approach to Control-flow Analysis by Abstract
Interpretation
Jan Midtgaard,
Thomas P. Jensen
In Static Analysis, 15th
International Symposium (SAS 2008),
Lecture Notes in Computer Science, vol. 5079, pp 347-362,
© Springer-Verlag 2008,
[DOI link],
[pdf],
[code]
Control-flow Analysis of Functional Programs
Jan Midtgaard
In ACM Computing Surveys, volume 44, issue 3,
pp. 10:1-10:33, June 2012.
© ACM, 2010,
[free ACM link]
[Additional material available here].
Older version available as BRICS technical report
RS-07-18
Transformation, Analysis, and Interpretation of Higher-Order
Procedural Programs
Jan Midtgaard
PhD Dissertation, Department of Computer Science, University of
Aarhus, 2007
A Functional Correspondence between Monadic Evaluators and Abstract Machines for Languages with Computational Effects
Mads Sig Ager,
Olivier Danvy,
Jan Midtgaard
In Theoretical Computer Science, volume 342, issue 1, pp
149-172, © Elsevier 2005,
[DOI link]
Extended version available as BRICS technical report
RS-04-28
From Implicit to Explicit Contexts in Operational Semantics
Jan Midtgaard
PhD progress report, Department of Computer Science, University of
Aarhus, 2004
A Functional Correspondence between Call-by-Need Evaluators and Lazy Abstract Machines
Mads Sig Ager,
Olivier Danvy,
Jan Midtgaard
In Information Processing Letters, volume 90, number 5,
pp. 223-232, © Elsevier 2004,
[DOI link]
Extended version available as BRICS technical
report RS-04-3
From Interpreter to Compiler and Virtual Machine: a Functional Derivation
Mads Sig Ager,
Dariusz Biernacki,
Olivier Danvy,
Jan Midtgaard
BRICS technical
report RS-03-14
A Functional Correspondence between Evaluators and Abstract Machines
Mads Sig Ager,
Dariusz Biernacki,
Olivier Danvy,
Jan Midtgaard
In Proceedings of
the Fifth ACM-SIGPLAN
International Conference on Principles and Practice of Declarative
Programming (PPDP 2003),
pp 8-19, © ACM Press 2003,
[free ACM link]
Also available as BRICS technical report RS-03-13