Jan Smans

dblp:09/6312 · DBLP profile ↗
← Back
12ranked-venue papers
4as first author
0since 2021 · last 2015
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 11 · 3 first-authorTheory of computation · 3 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
4 papers
Program verification · 71% Concurrent programming · 12% Programming languages and type systems · 12%

Topics — the 5 heaviest of 6, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program verification
modular verification
0.222011
Verification of Unloadable Modules · FM 2011
A programming model for concurrent object-oriented programs · ACM Trans. Program. Lang. Syst. 2008
Program verification › program logic
separation logic
0.112012
Implicit dynamic frames · ACM Trans. Program. Lang. Syst. 2012
Program verification › deductive verification
verification condition generation
0.112012
Implicit dynamic frames · ACM Trans. Program. Lang. Syst. 2012
Concurrent programming › concurrency bugs
data race freedom
0.112008
A programming model for concurrent object-oriented programs · ACM Trans. Program. Lang. Syst. 2008
Programming languages and type systems
programming models
0.112008
A programming model for concurrent object-oriented programs · ACM Trans. Program. Lang. Syst. 2008

Methods — techniques the papers use, named apart from their topics

symbolic execution · 0.1implicit dynamic frames · 0.1first-order provers · 0.1annotation-based verification · 0.1
YearPublicationVenuePosition
2015 Solving the VerifyThis 2012 challenges with VeriFast
Bart Jacobs 0002, Jan Smans, Frank Piessens
Int. J. Softw. Tools Technol. Transf.2
2014 Software verification with VeriFast: Industrial case studies
Pieter Philippaerts, Jan Tobias Mühlberg, Willem Penninckx, Jan Smans, Bart Jacobs 0002, Frank Piessens
Sci. Comput. Program.4
2012 Implicit dynamic frames
abstract
An important, challenging problem in the verification of imperative programs with shared, mutable state is the frame problem in the presence of data abstraction. That is, one must be able to specify and verify upper bounds on the set of memory locations a method can read and write without exposing that method's implementation. Separation logic is now widely considered the most promising solution to this problem. However, unlike conventional verification approaches, separation logic assertions cannot mention heap-dependent expressions from the host programming language, such as method calls familiar to many developers. Moreover, separation logic-based verifiers are often based on symbolic execution. These symbolic execution-based verifiers typically do not support non-separating conjunction, and some of them rely on the developer to explicitly fold and unfold predicate definitions. Furthermore, several researchers have wondered whether it is possible to use verification condition generation and standard first-order provers instead of symbolic execution to automatically verify conformance with a separation logic specification. In this article, we propose a variant of separation logic called implicit dynamic frames that supports heap-dependent expressions inside assertions. Conformance with an implicit dynamic frames specification can be checked by proving the validity of a number of first-order verification conditions. To show that these verification conditions can be discharged automatically by standard first-order provers, we have implemented our approach in a verifier prototype and have used this prototype to verify several challenging examples from related work. Our prototype automatically folds and unfolds predicate definitions, as required, during the proof and can reason about non-separating conjunction which is used in the specifications of some of these examples. Finally, we prove the soundness of the approach.
Jan Smans, Bart Jacobs 0002, Frank Piessens
ACM Trans. Program. Lang. Syst.1
2011 Verification of Unloadable Modules
Bart Jacobs 0002, Jan Smans, Frank Piessens
FM2
2011 The 1st Verified Software Competition: Experience Report
Vladimir Klebanov, Peter Müller 0001, Natarajan Shankar, Gary T. Leavens, Valentin Wüstholz, Eyad Alkassar, Rob Arthan, Derek Bronish, Roderick Chapman, Ernie Cohen, Mark A. Hillebrand, Bart Jacobs 0002, K. Rustan M. Leino, Rosemary Monahan, Frank Piessens, Nadia Polikarpova, Tom Ridge, Jan Smans, Stephan Tobies, Thomas Tuerk, Mattias Ulbrich, Benjamin Weiß 0001
FM18
2010 A Quick Tour of the VeriFast Program Verifier
Bart Jacobs 0002, Jan Smans, Frank Piessens
APLAS2
2010 Deadlock-Free Channels and Locks
K. Rustan M. Leino, Peter Müller 0001, Jan Smans
ESOP3
2010 Automatic verification of Java programs with dynamic frames
abstract
Abstract Framing in the presence of data abstraction is a challenging and important problem in the verification of object-oriented programs Leavens et al. (Formal Aspects Comput (FACS) 19:159–189, 2007). The dynamic frames approach is a promising solution to this problem. However, the approach is formalized in the context of an idealized logical framework. In particular, it is not clear the solution is suitable for use within a program verifier for a Java-like language based on verification condition generation and automated, first-order theorem proving. In this paper, we demonstrate that the dynamic frames approach can be integrated into an automatic verifier based on verification condition generation and automated theorem proving. The approach has been proven sound and has been implemented in a verifier prototype. The prototype has been used to prove correctness of several programming patterns considered challenging in related work.
Jan Smans, Bart Jacobs 0002, Frank Piessens, Wolfram Schulte
Formal Aspects Comput.1
2009 Implicit Dynamic Frames: Combining Dynamic Frames and Separation Logic
Jan Smans, Bart Jacobs 0002, Frank Piessens
ECOOP1
2008 An Automatic Verifier for Java-Like Programs Based on Dynamic Frames
Jan Smans, Bart Jacobs 0002, Frank Piessens, Wolfram Schulte
FASE1
2008 A programming model for concurrent object-oriented programs
abstract
Reasoning about multithreaded object-oriented programs is difficult, due to the nonlocal nature of object aliasing and data races. We propose a programming regime (or programming model ) that rules out data races, and enables local reasoning in the presence of object aliasing and concurrency. Our programming model builds on the multithreading and synchronization primitives as they are present in current mainstream programming languages. Java or C# programs developed according to our model can be annotated by means of stylized comments to make the use of the model explicit. We show that such annotated programs can be formally verified to comply with the programming model. If the annotated program verifies, the underlying Java or C# program is guaranteed to be free from data races, and it is sound to reason locally about program behavior. Verification is modular: a program is valid if all methods are valid, and validity of a method does not depend on program elements that are not visible to the method. We have implemented a verifier for programs developed according to our model in a custom build of the Spec# programming system, and we have validated our approach on a case study.
Bart Jacobs 0002, Frank Piessens, Jan Smans, K. Rustan M. Leino, Wolfram Schulte
ACM Trans. Program. Lang. Syst.3
2006 A Statically Verifiable Programming Model for Concurrent Object-Oriented Programs
Bart Jacobs 0002, Jan Smans, Frank Piessens, Wolfram Schulte
ICFEM2