Thomas P. Jensen

dblp:69/4418 · DBLP profile ↗
← Back
66ranked-venue papers
11as first author
11since 2021 · last 2026
0000-0002-4064-7170ORCID · verified

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

Software engineering, systems software and programming languages · 44 · 8 first-author · 8 since 2021Theory of computation · 18 · 3 first-author · 3 since 2021Security and privacy · 9 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 since 2021
YearPublicationVenuePosition
2026 Complete Abstractions for Verification of Polymorphic Functions with Equality
Malo Revel, Thomas Genet, Thomas P. Jensen
ESOP (2)3
2025 Contextual Equality Saturation
Alexandre Drewery, Thomas P. Jensen, David Pichardie
SAS2
2025 Design and Implementation of Static Analyses for Tezos Smart Contracts
abstract
Once deployed in blockchain, smart contracts become immutable: Attackers can exploit bugs and vulnerabilities in their code that cannot be replaced with a bug-free version. For this reason, the verification of smart contracts before they are deployed in blockchain is important. However, the development of verification tools is not easy, especially if one wants to obtain guarantees by using formal methods. This article describes the development, from scratch, of a static analyzer based on abstract interpretation for the verification of real-world Tezos smart contracts. The analyzer is generic with respect to the property under analysis. This article shows taint analysis as a concrete instantiation of the analyzer, at different levels of precision, to detect untrusted cross-contract invocations.
Luca Olivieri, Luca Negrini 0001, Vincenzo Arceri, Thomas P. Jensen, Fausto Spoto
Distributed Ledger Technol. Res. Pract.4
2025 An input-output relational domain for algebraic data types and functional arrays
Santiago Bautista, Thomas P. Jensen, Benoît Montagu
Formal Methods Syst. Des.2
2024 Verification of Programs with ADTs Using Shallow Horn Clauses
Théo Losekoot, Thomas Genet, Thomas P. Jensen
SAS3
2024 Axiomatising an information flow logic based on partial equivalence relations
abstract
Abstract We present a relational program logic for reasoning about information flow properties formalised in an assertion language based on partial equivalence relations. We define and prove the soundness of the logic, a proof technique for precise, logic-based information flow properties. The logic extends Hoare logic and its unary state predicates to binary PER-based predicates for relating observationally equivalent states. A salient feature of the logic is that it is capable of reasoning about programs that test on secret data in a secure manner.
Andrzej Filinski, Ken Friis Larsen, Thomas P. Jensen
Int. J. Softw. Tools Technol. Transf.3
2023 Automata-Based Verification of Relational Properties of Functions over Algebraic Data Structures
abstract
This paper is concerned with automatically proving properties about the input-output relation of functional programs operating over algebraic data types. Recent results show how to approximate the image of a functional program using a regular tree language. Though expressive, those techniques cannot prove properties relating the input and the output of a function, e.g., proving that the output of a function reversing a list has the same length as the input list. In this paper, we built upon those results and define a procedure to compute or over-approximate such a relation. Instead of representing the image of a function by a regular set of terms, we represent (an approximation of) the input-output relation by a regular set of tuples of terms. Regular languages of tuples of terms are recognized using a tree automaton recognizing convolutions of terms, where a convolution transforms a tuple of terms into a term built on tuples of symbols. Both the program and the properties are transformed into predicates and Constrained Horn clauses (CHCs). Then, using an Implication Counter Example procedure (ICE), we infer a model of the clauses, associating to each predicate a regular relation. In this ICE procedure, checking if a given model satisfies the clauses is undecidable in general. We overcome undecidability by proposing an incomplete but sound inference procedure for such relational regular properties. Though the procedure is incomplete, its implementation performs well on 120 examples. It efficiently proves non-trivial relational properties or finds counter-examples.
Théo Losekoot, Thomas Genet, Thomas P. Jensen
FSCD3
2023 Type-directed Program Transformation for Constant-Time Enforcement
abstract
Constant-time is a programming discipline which protects security sensitive code against a wide class of timing attacks. This discipline can be formalised as a non-interference property and enforced by an information flow type system which prevents branching and memory accesses over secret data. We propose a relaxed information flow type system which tracks indirect flows but only rejects programs leaking secrets through direct flows. The main result of this paper is that any program that is accepted using this relaxed type system can be transformed automatically into a semantically equivalent constant-time program. Our algorithms are implemented in the jasmin compiler and validated against synthetic programs.
Gautier Raimondi, Frédéric Besson, Thomas P. Jensen
PPDP3
2022 Lifting Numeric Relational Domains to Algebraic Data Types
Santiago Bautista, Thomas P. Jensen, Benoît Montagu
SAS2
2021 Trace-based control-flow analysis
abstract
We define a small-step semantics for the untyped λ-calculus, that traces the β-reductions that occur during evaluation. By abstracting the computation traces, we reconstruct k-CFA using abstract interpretation, and justify constraint-based k-CFA in a semantic way. The abstract interpretation of the trace semantics also paves the way for introducing widening operators in CFA that go beyond existing analyses, that are all based on exploring a finite state space. We define ∇CFA, a widening-based analysis that limits the cycles in call stacks, and can achieve better precision than k-CFA at a similar cost.
Benoît Montagu, Thomas P. Jensen
PLDI2
2021 Verification of Program Transformations with Inductive Refinement Types
abstract
High-level transformation languages like Rascal include expressive features for manipulating large abstract syntax trees: first-class traversals, expressive pattern matching, backtracking, and generalized iterators. We present the design and implementation of an abstract interpretation tool, Rabit, for verifying inductive type and shape properties for transformations written in such languages. We describe how to perform abstract interpretation based on operational semantics, specifically focusing on the challenges arising when analyzing the expressive traversals and pattern matching. Finally, we evaluate Rabit on a series of transformations (normalization, desugaring, refactoring, code generators, type inference, etc.) showing that we can effectively verify stated properties.
Ahmad Salim Al-Sibahi, Thomas P. Jensen, Aleksandar S. Dimovski, Andrzej Wasowski
ACM Trans. Softw. Eng. Methodol.2
2020 Regular language type inference with term rewriting
abstract
This paper defines a new type system applied to the fully automatic verification of safety properties of tree-processing higher-order functional programs. We use term rewriting systems to model the program and its semantics and tree automata to model algebraic data types. We define the regular abstract interpretation of the input term rewriting system where the abstract domain is a set of regular languages. From the regular abstract interpretation we derive a type system where each type is a regular language. We define an inference procedure for this type system which allows us check the validity of safety properties. The inference mechanism is built on an invariant learning procedure based on the tree automata completion algorithm. This invariant learning procedure is regularly-complete and complete in refutation, meaning that if it is possible to give a regular type to a term then we will eventually find it, and if there is no possible type (regular or not) then we will eventually find a counter-example.
Timothée Haudebourg, Thomas Genet, Thomas P. Jensen
Proc. ACM Program. Lang.3
2020 Stable relations and abstract interpretation of higher-order programs
abstract
We present a novel denotational semantics for the untyped call-by-value λ-calculus, where terms are interpreted as stable relations , i.e. as binary relations between substitutions and values, enjoying a monotonicity property. The denotation captures the input-output behaviour of higher-order programs, and is proved sound and complete with respect to the operational semantics. The definition also admits a presentation as a program logic. Following the principles of abstract interpretation, we use our denotational semantics as a collecting semantics to derive a modular relational analysis for higher-order programs. The analysis infers equalities between the arguments of a program and its result—a form of frame condition for functional programs.
Benoît Montagu, Thomas P. Jensen
Proc. ACM Program. Lang.2
2019 Information-Flow Preservation in Compiler Optimisations
abstract
Correct compilers perform program transformations preserving input/output behaviours of programs. Yet, correctness does not prevent program optimisations from introducing information-flow leaks that would make the target program more vulnerable to side-channel attacks than the source program. To tackle this problem, we propose a notion of Information-Flow Preserving (IFP) program transformation which ensures that a target program is no more vulnerable to passive side-channel attacks than a source program. To protect against a wide range of attacks, we model an attacker who is granted arbitrary memory accesses for a pre-defined set of observation points. We propose a compositional proof principle for proving that a transformation is IFP. Using this principle, we show how a translation validation technique can be used to automatically verify and even close information-flow leaks introduced by standard compiler passes such as dead-store elimination and register allocation. The technique has been experimentally validated on the CompCert C compiler.
Frédéric Besson, Alexandre Dang, Thomas P. Jensen
CSF3
2019 Compiling Sandboxes: Formally Verified Software Fault Isolation
abstract
Software Fault Isolation (SFI) is a security-enhancing program transformation for instrumenting an untrusted binary module so that it runs inside a dedicated isolated address space, called a sandbox. To ensure that the untrusted module cannot escape its sandbox, existing approaches such as Google’s Native Client rely on a binary verifier to check that all memory accesses are within the sandbox. Instead of relying on a posteriori verification, we design, implement and prove correct a program instrumentation phase as part of the formally verified compiler CompCert that enforces a sandboxing security property a priori . This eliminates the need for a binary verifier and, instead, leverages the soundness proof of the compiler to prove the security of the sandboxing transformation. The technical contributions are a novel sandboxing transformation that has a well-defined C semantics and which supports arbitrary function pointers, and a formally verified C compiler that implements SFI. Experiments show that our formally verified technique is a competitive way of implementing SFI.
Frédéric Besson, Sandrine Blazy, Alexandre Dang, Thomas P. Jensen, Pierre Wilke
ESOP4
2019 Inferring frame conditions with static correlation analysis
abstract
We introduce the abstract domain of correlations to denote equality relations between parts of inputs and outputs of programs. We formalise the theory of correlations, and mechanically verify their semantic properties. We design a static inter-procedural dataflow analysis for automatically inferring correlations for programs written in a first-order language equipped with algebraic data-types and arrays. The analysis, its precision and execution cost, have been evaluated on the code and functional specification of an industrial-size micro-kernel. We exploit the inferred correlations to automatically discharge two thirds of the proof obligations related to the preservation of invariants for this micro-kernel.
Oana Fabiana Andreescu, Thomas P. Jensen, Stéphane Lescuyer, Benoît Montagu
Proc. ACM Program. Lang.2
2019 Skeletal semantics and their interpretations
abstract
The development of mechanised language specification based on structured operational semantics, with applications to verified compilers and sound program analysis, requires huge effort. General theory and frameworks have been proposed to help with this effort. However, none of this work provides a systematic way of developing concrete and abstract semantics, connected together by a general consistency result. We introduce a skeletal semantics of a language, where each skeleton describes the complete semantic behaviour of a language construct. We define a general notion of interpretation , which provides a systematic and language-independent way of deriving semantic judgements from the skeletal semantics. We explore four generic interpretations: a simple well-formedness interpretation; a concrete interpretation; an abstract interpretation; and a constraint generator for flow-sensitive analysis. We prove general consistency results between interpretations, depending only on simple language-dependent lemmas. We illustrate our ideas using a simple While language.
Martin Bodin, Philippa Gardner, Thomas P. Jensen, Alan Schmitt
Proc. ACM Program. Lang.3
2018 Verifying Higher-Order Functions with Tree Automata
abstract
This paper describes a fully automatic technique for verifying safety properties of higher-order functional programs. Tree automata are used to represent sets of reachable states and functional programs are modeled using term rewriting systems. From a tree automaton representing the initial state, a completion algorithm iteratively computes an automaton which over-approximates the output set of the program to verify. We identify a subclass of higher-order functional programs for which the completion is guaranteed to terminate. Precision and termination are obtained conjointly by a careful choice of equations between terms. The verification objective can be used to generate sets of equations automatically. Our experiments show that tree automata are sufficiently expressive to prove intricate safety properties and sufficiently simple for the verification result to be certified in Coq.
Thomas Genet, Timothée Haudebourg, Thomas P. Jensen
FoSSaCS3
2018 Verification of high-level transformations with inductive refinement types
abstract
High-level transformation languages like Rascal include expressive features for manipulating large abstract syntax trees: first-class traversals, expressive pattern matching, backtracking and generalized iterators. We present the design and implementation of an abstract interpretation tool, Rabit, for verifying inductive type and shape properties for transformations written in such languages. We describe how to perform abstract interpretation based on operational semantics, specifically focusing on the challenges arising when analyzing the expressive traversals and pattern matching. Finally, we evaluate Rabit on a series of transformations (normalization, desugaring, refactoring, code generators, type inference, etc.) showing that we can effectively verify stated properties.
Ahmad Salim Al-Sibahi, Thomas P. Jensen, Aleksandar S. Dimovski, Andrzej Wasowski
GPCE2
2018 Modular Software Fault Isolation as Abstract Interpretation
Frédéric Besson, Thomas P. Jensen, Julien Lepiller
SAS2
2016 Hybrid Monitoring of Attacker Knowledge
abstract
Enforcement of noninterference requires proving that an attacker's knowledge about the initial state remains the same after observing a program's public output. We propose a hybrid monitoring mechanism which dynamically evaluates the knowledge that is contained in program variables. To get a precise estimate of the knowledge, the monitor statically analyses non-executed branches. We show that our knowledge-based monitor can be combined with existing dynamic monitors for non-interference. A distinguishing feature of such a combination is that the combined monitor is provably more permissive than each mechanism taken separately. We demonstrate this by proposing a knowledge-enhanced version of a no-sensitive-upgrade (NSU) monitor. The monitor and its static analysis have been formalized and proved correct within the Coq proof assistant.
Frédéric Besson, Nataliia Bielova, Thomas P. Jensen
CSF3
2016 Correlating Structured Inputs and Outputs in Functional Specifications
Oana Fabiana Andreescu, Thomas P. Jensen, Stéphane Lescuyer
SEFM2
2015 Certified Abstract Interpretation with Pretty-Big-Step Semantics
abstract
This paper describes an investigation into developing certified abstract interpreters from big-step semantics using the Coq proof assistant. We base our approach on Schmidt's abstract interpretation principles for natural semantics, and use a pretty-big-step (PBS) semantics, a semantic format proposed by Charguéraud. We propose a systematic representation of the PBS format and implement it in Coq. We then show how the semantic rules can be abstracted in a methodical fashion, independently of the chosen abstract domain, to produce a set of abstract inference rules that specify an abstract interpreter. We prove the correctness of the abstract interpreter in Coq once and for all, under the assumption that abstract operations faithfully respect the concrete ones. We finally show how to define correct-by-construction analyses: their correction amounts to proving they belong to the abstract semantics.
Martin Bodin, Thomas P. Jensen, Alan Schmitt
CPP2
2015 Dependency Analysis of Functional Specifications with Algebraic Data Structures
Oana Fabiana Andreescu, Thomas P. Jensen, Stéphane Lescuyer
ICFEM2
2014 SawjaCard: A Static Analysis Tool for Certifying Java Card Applications
Frédéric Besson, Thomas P. Jensen, Pierre Vittet
SAS2
2014 Inference of polynomial invariants for imperative programs: A farewell to Gröbner bases
David Cachera, Thomas P. Jensen, Arnaud Jobin, Florent Kirchner
Sci. Comput. Program.2
2013 Hybrid Information Flow Monitoring against Web Tracking
abstract
Motivated by the problem of stateless web tracking (fingerprinting), we propose a novel approach to hybrid information flow monitoring by tracking the knowledge about secret variables using logical formulae. This knowledge representation helps to compare and improve precision of hybrid information flow monitors. We define a generic hybrid monitor parametrised by a static analysis and derive sufficient conditions on the static analysis for soundness and relative precision of hybrid monitors. We instantiate the generic monitor with a combined static constant and dependency analysis. Several other hybrid monitors including those based on well-known hybrid techniques for information flow control are formalised as instances of our generic hybrid monitor. These monitors are organised into a hierarchy that establishes their relative precision. The whole framework is accompanied by a formalisation of the theory in the Coq proof assistant.
Frédéric Besson, Nataliia Bielova, Thomas P. Jensen
CSF3
2012 Inference of Polynomial Invariants for Imperative Programs: A Farewell to Gröbner Bases
David Cachera, Thomas P. Jensen, Arnaud Jobin, Florent Kirchner
SAS2
2012 Control-flow analysis of function calls and returns by abstract interpretation
Jan Midtgaard, Thomas P. Jensen
Inf. Comput.2
2011 Secure the Clones - Static Enforcement of Policies for Secure Object Copying
Thomas P. Jensen, Florent Kirchner, David Pichardie
ESOP1
2010 A Provably Correct Stackless Intermediate Representation for Java Bytecode
Delphine Demange, Thomas P. Jensen, David Pichardie
APLAS2
2010 Enforcing Secure Object Initialization in Java
Laurent Hubert, Thomas P. Jensen, Vincent Monfort, David Pichardie
ESORICS2
2010 Verifying resource access control on mobile interactive devices
abstract
A model of resource access control is presented in which the access control to resources can employ user interaction to obtain the necessary permissions. This model is inspired by and improves on the Java security architecture used in Java-enabled mobile telephones. We extend the Java model to incl ude access control permissions with multiplicities in order to allow to use a permission a certain number of times. We define a program model based on control flow graphs together with its operational semantics and provide a formal definition of the basic security policy to enforce viz that an application will always ask for a permission before using it to access a resource. A static analysis which enforces the security policy is defined and proved correct. A constraint solving algorithm implementing the analysis is presented.
Frédéric Besson, Guillaume Dufay, Thomas P. Jensen, David Pichardie
J. Comput. Secur.3
2010 Long-run cost analysis by approximation of linear operators over dioids
abstract
In this paper we present a semantics-based framework for analysing the quantitative behaviour of programs with respect to resource usage. We start from an operational semantics in which costs are modelled using a dioid structure. The dioid structure of costs allows the definition of the quantitative semantics as a linear operator. We then develop a theory of approximation of such a semantics, which is akin to what is offered by the theory of abstract interpretation for analysing qualitative properties, in order to compute effectively global cost information from the program. We focus on the notion of long-run cost, which models the asymptotic average cost of a program. The abstraction of the semantics has to take two distinct notions of order into account: the order on costs and the order on states. We prove that our abstraction technique provides a correct approximation of the concrete long-run cost of a program.
David Cachera, Thomas P. Jensen, Arnaud Jobin, Pascal Sotin
Math. Struct. Comput. Sci.2
2009 Control-flow analysis of function calls and returns by abstract interpretation
abstract
We derive a control-flow analysis that approximates the interprocedural control-flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, our analysis computes for each expression an abstract control stack, effectively approximating where function calls return across optimized tail calls. The analysis is systematically calculated by abstract interpretation of the stack-based CaEK abstract machine of Flanagan et al. using a series of Galois connections. Abstract interpretation provides a unifying setting in which we 1) prove the analysis equivalent to the composition of a continuation-passing style (CPS) transformation followed by an abstract interpretation of a stack-less CPS machine, and 2) extract an equivalent constraint-based formulation, thereby providing a rational reconstruction of a constraint-based control-flow analysis from abstract interpretation principles.
Jan Midtgaard, Thomas P. Jensen
ICFP2
2008 Computing Stack Maps with Interfaces
Frédéric Besson, Thomas P. Jensen, Tiphaine Turpin
ECOOP2
2008 A Calculational Approach to Control-Flow Analysis by Abstract Interpretation
Jan Midtgaard, Thomas P. Jensen
SAS2
2007 Small Witnesses for Abstract Interpretation-Based Proofs
Frédéric Besson, Thomas P. Jensen, Tiphaine Turpin
ESOP2
2007 Rewriting Approximations for Fast Prototyping of Static Analyzers
Yohan Boichut, Thomas Genet, Thomas P. Jensen, Luka Leroux
RTA3
2006 A Formal Model of Access Control for Mobile Interactive Devices
Frédéric Besson, Guillaume Dufay, Thomas P. Jensen
ESORICS3
2006 Certificates of Resource Usage on Mobile Telephones
abstract
Resources on Java-enabled mobile telephones are controlled by permissions that grant an applet a certain number of accesses to a resource. Such permissions can be given by the operator or can be obtained dynamically during execution by querying the user interactively. In this talk, we describe a formal model of such interactive access control with an emphasis on how to handle permissions with multiplicities. Based on this model, we present a proof system in which it is possible to engineer a formal proof that an applet will not consume resources for which it does not have permissions. Such proofs will then serve as a basis for constructing compact certificates attesting the correct behaviour of a down-loaded applet.
Thomas P. Jensen
ISoLA1
2006 Proof-carrying code from certified abstract interpretation and fixpoint compression
abstract
Proof-carrying code (PCC) is a technique for downloading mobile code on a host machine while ensuring that the code adheres to the host's safety policy. We show how certified abstract interpretation can be used to build a PCC architecture where the code producer can produce program certificates automatically. Code consumers use proof checkers derived from certified analysers to check certificates. Proof checkers carry their own correctness proofs and accepting a new proof checker amounts to type checking the checker in Coq. Certificates take the form of strategies for reconstructing a fixpoint and are kept small due to a technique for fixpoint compression. The PCC architecture has been implemented and evaluated experimentally on a byte code language for which we have designed an interval analysis that allows to generate certificates ascertaining that no array-out-of-bounds accesses will occur.
Frédéric Besson, Thomas P. Jensen, David Pichardie
Theor. Comput. Sci.2
2005 Certified Memory Usage Analysis
David Cachera, Thomas P. Jensen, David Pichardie, Gerardo Schneider
FM2
2005 Interfaces for stack inspection
abstract
Stack inspection is a mechanism for programming secure applications in the presence of code from various protection domains. Run-time checks of the call stack allow a method to obtain information about the code that (directly or indirectly) invoked it in order to make access control decisions. This mechanism is part of the security architecture of Java and the .NET Common Language Runtime. A central problem with stack inspection is to determine to what extent the local checks inserted into the code are sufficient to guarantee that a global security property is enforced. A further problem is how such verification can be carried out in an incremental fashion. Incremental analysis is important for avoiding re-analysis of library code every time it is used, and permits the library developer to reason about the code without knowing its context of deployment. We propose a technique for inferring interfaces for stack-inspecting libraries in the form of secure calling context for methods. By a secure calling context we mean a pre-condition on the call stack sufficient for guaranteeing that execution of the method will not violate a given global property. The technique is a constraint-based static program analysis implemented via fixed point iteration over an abstract domain of linear temporal logic properties.
Frédéric Besson, Thomas de Grenier de Latour, Thomas P. Jensen
J. Funct. Program.3
2005 Extracting a data flow analyser in constructive logic
David Cachera, Thomas P. Jensen, David Pichardie, Vlad Rusu
Theor. Comput. Sci.2
2004 Extracting a Data Flow Analyser in Constructive Logic
David Cachera, Thomas P. Jensen, David Pichardie, Vlad Rusu
ESOP2
2003 Modular Class Analysis with DATALOG
Frédéric Besson, Thomas P. Jensen
SAS2
2003 Modular Control-Flow Analysis with Rank 2 Intersection Types
abstract
We show how the principal typing property of the rank 2 intersection type system enables the specification of a modular and polyvariant control-flow analysis.
Anindya Banerjee 0001, Thomas P. Jensen
Math. Struct. Comput. Sci.2
2003 Class analyses as abstract interpretations of trace semantics
abstract
We use abstract interpretation to abstract a compositional trace semantics for a simple imperative object-oriented language into its projection over a set of program points called watchpoints . We say that the resulting watchpoint semantics is focused on the watchpoints. Every abstraction of the computational domain of this semantics induces an abstract, still compositional, and focused watchpoint semantics. This establishes a basis for developing static analyses obtaining information pertaining only to the watchpoints. As an example, we consider three domains for class analysis of object-oriented programs derived from three techniques present in the literature, namely, rapid type analysis, a simple dataflow analysis, and a constraint-based analysis. We obtain three static analyses which are provably correct and whose abstract operations are provably optimal. Moreover, we prove that our formalization of the constraint-based analysis is more precise than that of the other two analyses. We have implemented our watchpoint semantics and our three domains for class analysis. This implementation shows that the time and space costs of the analysis are actually proportional to the number of watchpoints, as a consequence of the focused nature of the watchpoint semantics.
Fausto Spoto, Thomas P. Jensen
ACM Trans. Program. Lang. Syst.2
2002 Secure Object Flow Analysis for Java Card
Marc Éluard, Thomas P. Jensen
CARDIS2
2002 Secure calling contexts for stack inspection
abstract
Stack inspection is a mechanism for programming secure applications by which a method can obtain information from the call stack about the code that (directly or indirectly) invoked it. This mechanism plays a fundamental role in the security architecture of Java and the .NET Common Language Runtime. A central problem with stack inspection is to determine to what extent the local checks inserted into the code are sufficient to guarantee that a global security property is enforced. In this paper, we present a technique for inferring a secure calling context for a method. By a secure calling context we mean a pre-condition on the call stack sufficient for guaranteeing that execution of the method will not violate a given global property. This is particularly useful for annotating library code in order to avoid having to re-analyse libraries for every new application. The technique is a constraint based static program analysis implemented via fixed point iteration over an abstract domain of linear temporal logic properties.
Frédéric Besson, Thomas de Grenier de Latour, Thomas P. Jensen
PPDP3
2002 Correctness of Java card method lookup via logical relations
Ewen Denney, Thomas P. Jensen
Theor. Comput. Sci.2
2001 Class Analysis of Object-Oriented Programs through Abstract Interpretation
Thomas P. Jensen, Fausto Spoto
FoSSaCS1
2001 Model Checking Security Properties of Control Flow Graphs
abstract
A fundamental problem in software-based security is whether local security checks inserted into the code are sufficient to implement a global security property. This article introduces a formalism based on a linear-time temporal logic for specifying global security properties pertaining to the control flow of the program, and illustrates its expressive power with a number of existing properties. We define a minimalistic, security-dedicated program model that only contains procedure call and run-time security checks and propose an automatic method for verifying that an implementation using local security checks satisfies a global security property. We then show how to instantiate the framework to the security architecture of Java 2 based on stack inspection and privileged method calls.
Frédéric Besson, Thomas P. Jensen, Daniel Le Métayer
J. Comput. Secur.2
2000 Correctness of Java Card Method Lookup via Logical Relations
Ewen Denney, Thomas P. Jensen
ESOP2
1999 Polyhedral Analysis for Synchronous Languages
Frédéric Besson, Thomas P. Jensen, Jean-Pierre Talpin
SAS2
1999 Verification of Control Flow based Security Properties
abstract
A fundamental problem in software based security is whether local security checks inserted into the code are sufficient to implement a global security property. We introduce a formalism based on a two-level linear time temporal logic for specifying global security properties pertaining to the control flow of the program, and illustrate its expressive power with a number of existing properties. We define a minimalistic, security dedicated program model that only contains procedure call and run time security checks and propose an automatic method for verifying that an implementation using local security checks satisfies a global security property. For a given formula in the temporal logic, we prove that there exists a bound on the size of the states that have to be considered in order to assure the validity of the formula: this reduces the problem to finite state model checking. Finally, we instantiate the framework to the security architecture proposed for Java (JDK 1.2).
Thomas P. Jensen, Daniel Le Métayer, Tommy Thorn
S&P1
1998 Inference of Polymorphic and Conditional Strictness Properties
abstract
We define an inference system for modular strictness analysis of functional programs by extending a conjunctive strictness logic with polymorphic and conditional properties. This extended set of properties is used to define a syntax-directed, polymorphic strictness analysis based on polymorphic recursion whose soundness is established via a translation from the polymorphic system into the conjunctive system. From the polymorphic analysis, an inference algorithm based on constraint resolution is derived and shown complete for variant of the polymorphic analysis. The algorithm deduces at the same time a property and a set of hypotheses on the free variables of an expression which makes it suitable for analysis of program with module structure.
Thomas P. Jensen
POPL1
1997 Disjunctive Program Analysis for Algebraic Data Types
abstract
We describe how binding-time, data-flow, and strictness analyses for languages with higher-order functions and algebraic data types can be obtained by instantiating a generic program logic and axiomatization of the properties analyzed for. A distinctive feature of the analyses is that disjunctions of program properties are represented exactly. This yields analyses of high precision and provides a logical characterization of abstract interpretations involving tensor products and uniform properties of recursive data structures. An effective method for proving properties of a program based on fixed-point iteration is obtained by grouping logically equivalent formulae of the same type into equivalence classes, obtaining a lattice of properties of that type, and then defining an abstract interpretation over these lattices. We demonstrate this in the case of strictness analysis by proving that the strictness abstract interpretation of a program is the equivalence class containing the strongest property provable of the program in the strictness logic.
Thomas P. Jensen
ACM Trans. Program. Lang. Syst.1
1996 Flow Analysis in the Geometry of Interaction
Thomas P. Jensen, Ian Mackie
ESOP1
1995 Clock Analysis of Synchronous Dataflow Programs
abstract
Synchronous dataflow languages such as Lustre and Signal have been proposed as a tool for programming reactive systems. These languages rely on a clock analysis to ensure that synchronous operations receive their arguments at the same time. We present a denotational model of a Lustre-like dataflow language and show how a range of clock analyses for this language can be designed and proved correct. To the best of our knowledge this is the first formal correctness proof for such an analysis. We then give a type system formulation of this analysis using clocks as types and show how adding polymorphic clocks enables us to treat programs where clocks vary according to their context. The relationship to the clock analysis by constraint solving used in the language Signal is discussed. 1 Introduction One of the earliest models of concurrent computation is Kahn's networks of processes [Kah74, KM77]. Such a network consists of a set of deterministic processes, or agents, communicating in an ...
Thomas P. Jensen
PEPM1
1995 Conjunctive Type Systems and Abstract Interpretation of Higher-Order Functional Programs
abstract
We establish an equivalence between two techniques for analysing higher-order functional programs: abstract interpretation and non-standard type inference. The equivalence is based on an axiomatic presentation of the lattices used in abstract interpretation. This axiomatization forms the basis of a program logic for deducing properties of expressions in a simply typed lambda calculus enriched with fixed points and constants. The main result of the paper is that the strictness logic is sound and complete with respect to the abstract interpretation thus proving that strictness analysis by type inference and by abstract interpretation are equally powerful techniques. We then show how a similar result can be obtained for binding-time analysis.
Thomas P. Jensen
J. Log. Comput.1
1992 Homology of Higher Dimensional Automata
Eric Goubault, Thomas P. Jensen
CONCUR2
1992 Disjunctive Strictness Analysis
abstract
The problem of constructing a disjunctive strictness analysis for a higher-order, functional language is addressed. A system of disjunctive types for strictness analysis of typed lambda -calculus is introduced, and the types are used to define a program logic for strictness analysis. A disjunctive abstract interpretation is then obtained as a sound and complete model of the program logic. The results extend earlier work on using the tensor product of lattices to analyze disjunctive properties of programs by abstract interpretation.>
Thomas P. Jensen
LICS1
1991 A Relational Approach to Strictness Analysis for Higher-Order Polymorphic Functions
abstract
This paper defines the categorical notions of relators and transformations and shows that these concepts enable us to give a semantics for polymorphic, higher order functional programs.We demonstrate the pertinence of this semantics to the analysis of polymorphic programs by proving that strictness analysis is a polymorphic invariant.
Samson Abramsky, Thomas P. Jensen
POPL2
1990 A Backwards Analysis for Compile-time Garbage Collection
Thomas P. Jensen, Torben Æ. Mogensen
ESOP1