Patrick Cousot

dblp:c/PCousot · DBLP profile ↗
← Back
66ranked-venue papers
55as first author
4since 2021 · last 2025
0000-0003-0101-9953ORCID · verified

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

Software engineering, systems software and programming languages · 51 · 40 first-author · 3 since 2021Theory of computation · 21 · 21 first-author · 1 since 2021Applied, interdisciplinary, general and emerging computing · 2 · 2 first-author
YearPublicationVenuePosition
2025 Calculational Design of Hyperlogics by Abstract Interpretation
abstract
We design various logics for proving hyper properties of iterative programs by application of abstract interpretation principles. In part I, we design a generic, structural, fixpoint abstract interpreter parameterized by an algebraic abstract domain describing finite and infinite computations that can be instantiated for various operational, denotational, or relational program semantics. Considering semantics as program properties, we define a post algebraic transformer for execution properties (e.g. sets of traces) and a Post algebraic transformer for semantic (hyper) properties (e.g. sets of sets of traces), we provide corresponding calculuses as instances of the generic abstract interpreter, and we derive under and over approximation hyperlogics. In part II, we define exact and approximate semantic abstractions, and show that they preserve the mathematical structure of the algebraic semantics, the collecting semantics post, the hyper collecting semantics Post, and the hyperlogics. Since proofs by sound and complete hyperlogics require an exact characterization of the program semantics within the proof, we consider in part III abstractions of the (hyper) semantic properties that yield simplified proof rules. These abstractions include the join, the homomorphic, the elimination, the principal ideal, the order ideal, the frontier order ideal, and the chain limit algebraic abstractions, as well as their combinations, that lead to new algebraic generalizations of hyperlogics, including the ∀ ∃ * , ∀ ∀ * , and ∃ ∀ * hyperlogics.
Patrick Cousot, Jeffery Wang
Proc. ACM Program. Lang.1
2024 Calculational Design of [In]Correctness Transformational Program Logics by Abstract Interpretation
abstract
We study transformational program logics for correctness and incorrectness that we extend to explicitly handle both termination and nontermination. We show that the logics are abstract interpretations of the right image transformer for a natural relational semantics covering both finite and infinite executions. This understanding of logics as abstractions of a semantics facilitates their comparisons through their respective abstractions of the semantics (rather that the much more difficult comparison through their formal proof systems). More importantly, the formalization provides a calculational method for constructively designing the sound and complete formal proof system by abstraction of the semantics. As an example, we extend Hoare logic to cover all possible behaviors of nondeterministic programs and design a new precondition (in)correctness logic.
Patrick Cousot
Proc. ACM Program. Lang.1
2022 The Systematic Design of Responsibility Analysis by Abstract Interpretation
abstract
Given a behavior of interest, automatically determining the corresponding responsible entity (i.e., the root cause) is a task of critical importance in program static analysis. In this article, a novel definition of responsibility based on the abstraction of trace semantics is proposed, which takes into account the cognizance of observer, which, to the best of our knowledge, is a new innovative idea in program analysis. Compared to current dependency and causality analysis methods, the responsibility analysis is demonstrated to be more precise on various examples. However, the concrete trace semantics used in defining responsibility is uncomputable in general, which makes the corresponding concrete responsibility analysis undecidable. To solve this problem, the article proposes a sound framework of abstract responsibility analysis, which allows a balance between cost and precision. Essentially, the abstract analysis builds a trace partitioning automaton by an iteration of over-approximating forward reachability analysis with trace partitioning and under/over-approximating backward impossible failure accessibility analysis, and determines the bounds of potentially responsible entities along paths in the automaton. Unlike the concrete responsibility analysis that identifies exactly a single action as the responsible entity along every concrete trace, the abstract analysis may lose some precision and find multiple actions potentially responsible along each automaton path. However, the soundness is preserved, and every responsible entity in the concrete is guaranteed to be also found responsible in the abstract.
Chaoqiang Deng, Patrick Cousot
ACM Trans. Program. Lang. Syst.2
2021 Calculational design of a regular model checker by abstract interpretation
Patrick Cousot
Theor. Comput. Sci.1
2019 Calculational Design of a Regular Model Checker by Abstract Interpretation
Patrick Cousot
ICTAC1
2019 On Fixpoint/Iteration/Variant Induction Principles for Proving Total Correctness of Programs with Denotational Semantics
Patrick Cousot
LOPSTR1
2019 Syntactic and Semantic Soundness of Structural Dataflow Analysis
Patrick Cousot
SAS1
2019 Abstract Semantic Dependency
Patrick Cousot
SAS1
2019 Responsibility Analysis by Abstract Interpretation
Chaoqiang Deng, Patrick Cousot
SAS2
2019 Verifying Numerical Programs via Iterative Abstract Testing
Banghu Yin, Liqian Chen, Jiangchao Liu, Ji Wang 0001, Patrick Cousot
SAS5
2019 A²I: abstract² interpretation
abstract
The fundamental idea of Abstract 2 Interpretation (A 2 I), also called meta-abstract interpretation, is to apply abstract interpretation to abstract interpretation-based static program analyses. A 2 I is generally meant to use abstract interpretation to analyse properties of program analysers. A 2 I can be either offline or online. Offline A 2 I is performed either before the program analysis, such as variable packing used by the Astrée program analyser, or after the program analysis, such as in alarm diagnosis. Online A 2 I is performed during the program analysis, such as Venet’s cofibred domains or Halbwachs et al.’s and Singh et al.’s variable partitioning techniques for fast polyhedra/numerical abstract domains. We formalize offline and online meta-abstract interpretation and illustrate this notion with the design of widenings and the decomposition of relational abstract domains to speed-up program analyses. This shows how novel static analyses can be extracted as meta-abstract interpretations to design efficient and precise program analysis algorithms.
Patrick Cousot, Roberto Giacobazzi, Francesco Ranzato
Proc. ACM Program. Lang.1
2018 Program Analysis Is Harder Than Verification: A Computability Perspective
abstract
We study from a computability perspective static program analysis, namely detecting sound program assertions, and verification, namely sound checking of program assertions. We first design a general computability model for domains of program assertions and corresponding program analysers and verifiers. Next, we formalize and prove an instantiation of Rice’s theorem for static program analysis and verification. Then, within this general model, we provide and show a precise statement of the popular belief that program analysis is a harder problem than program verification: we prove that for finite domains of program assertions, program analysis and verification are equivalent problems, while for infinite domains, program analysis is strictly harder than verification.
Patrick Cousot, Roberto Giacobazzi, Francesco Ranzato
CAV (2)1
2017 Ogre and Pythia: an invariance proof method for weak consistency models
abstract
We design an invariance proof method for concurrent programs parameterised by a weak consistency model. The calculational design of the invariance proof method is by abstract interpretation of a truly parallel analytic semantics. This generalises the methods by Lamport and Owicki-Gries for sequential consistency. We use cat as an example of language to write consistency specifications of both concurrent programs and machine architectures.
Jade Alglave, Patrick Cousot
POPL2
2015 Verification by abstract interpretation, soundness and abstract induction
abstract
Automatic program verification tools have to cope with programming language and machine semantics, undecidability, and mathematical induction, and so are all complex and imperfect. The ins and outs of automatic program verification will be discussed in light of the theory and practice of abstract interpretation [18, 19, 22].
Patrick Cousot
PPDP1
2015 A Binary Decision Tree Abstract Domain Functor
Patrick Cousot
SAS2
2015 On Various Abstract Understandings of Abstract Interpretation
abstract
We discuss several possible understandings and misunderstandings of Abstract Interpretation theory and practice at various levels of abstraction.
Patrick Cousot
TASE1
2015 Abstracting Induction by Extrapolation and Interpolation
Patrick Cousot
VMCAI1
2014 A Galois connection calculus for abstract interpretation
abstract
We introduce a Galois connection calculus for language independent specification of abstract interpretations used in programming language semantics, formal verification, and static analysis. This Galois connection calculus and its type system are typed by abstract interpretation.
Patrick Cousot, Radhia Cousot
POPL1
2013 Andromeda: Accurate and Scalable Security Analysis of Web Applications
Omer Tripp, Marco Pistoia, Patrick Cousot, Radhia Cousot, Salvatore Guarnieri
FASE3
2013 Automatic Inference of Necessary Preconditions
Patrick Cousot, Radhia Cousot, Manuel Fähndrich, Francesco Logozzo
VMCAI1
2012 Probabilistic Abstract Interpretation
Patrick Cousot, Michael Monerau
ESOP1
2012 An abstract interpretation framework for refactoring with application to extract methods with contracts
abstract
Method extraction is a common refactoring feature provided by most modern IDEs. It replaces a user-selected piece of code with a call to an automatically generated method. We address the problem of automatically inferring contracts (precondition, postcondition) for the extracted method. We require the inferred contract: (a) to be valid for the extracted method (validity); (b) to guard the language and programmer assertions in the body of the extracted method by an opportune precondition (safety); (c) to preserve the proof of correctness of the original code when analyzing the new method separately (completeness); and (d) to be the most general possible (generality). These requirements rule out trivial solutions (e.g., inlining, projection, etc). We propose two theoretical solutions to the problem. The first one is simple and optimal. It is valid, safe, complete and general but unfortunately not effectively computable (except for unrealistic finiteness/decidability hypotheses). The second one is based on an iterative forward/backward method. We show it to be valid, safe, and, under reasonable assumptions, complete and general. We prove that the second solution subsumes the first. All justifications are provided with respect to a new, set-theoretic version of Hoare logic (hence without logic), and abstractions of Hoare logic, revisited to avoid surprisingly unsound inference rules.
Patrick Cousot, Radhia Cousot, Francesco Logozzo, Michael Barnett 0001
OOPSLA1
2012 An abstract interpretation framework for termination
abstract
Proof, verification and analysis methods for termination all rely on two induction principles: (1) a variant function or induction on data ensuring progress towards the end and (2) some form of induction on the program structure. The abstract interpretation design principle is first illustrated for the design of new forward and backward proof, verification and analysis methods for safety. The safety collecting semantics defining the strongest safety property of programs is first expressed in a constructive fixpoint form. Safety proof and checking/verification methods then immediately follow by fixpoint induction. Static analysis of abstract safety properties such as invariance are constructively designed by fixpoint abstraction (or approximation) to (automatically) infer safety properties. So far, no such clear design principle did exist for termination so that the existing approaches are scattered and largely not comparable with each other.
Patrick Cousot, Radhia Cousot
POPL1
2012 Theories, solvers and static analysis by abstract interpretation
abstract
The algebraic/model theoretic design of static analyzers uses abstract domains based on representations of properties and pre-calculated property transformers. It is very efficient. The logical/proof theoretic approach uses SMT solvers/theorem provers and computation of property transformers on-the-fly. It is very expressive. We propose to unify both approaches, so that they can be combined to reach the sweet spot best adapted to a specific application domain in the precision/cost spectrum. We first give a new formalization of the proof theoretic approach in the abstract interpretation framework, introducing a semantics based on multiple interpretations to deal with the soundness of such approaches. Then we describe how to combine them with any other abstract interpretation-based analysis using an iterated reduction to combine abstractions. The key observation is that the Nelson-Oppen procedure, which decides satisfiability in a combination of logical theories by exchanging equalities and disequalities, computes a reduced product (after the state is enhanced with some new “observations” corresponding to alien terms). By abandoning restrictions ensuring completeness (such as disjointness, convexity, stably-infiniteness, or shininess, etc.), we can even broaden the application scope of logical abstractions for static analysis (which is incomplete anyway).
Patrick Cousot, Radhia Cousot, Laurent Mauborgne
J. ACM1
2011 Linear Absolute Value Relation Analysis
Liqian Chen, Antoine Miné, Ji Wang 0001, Patrick Cousot
ESOP4
2011 The Reduced Product of Abstract Domains and the Combination of Decision Procedures
Patrick Cousot, Radhia Cousot, Laurent Mauborgne
FoSSaCS1
2011 A parametric segmentation functor for fully automatic and scalable array content analysis
abstract
We introduce FunArray, a parametric segmentation abstract domain functor for the fully automatic and scalable analysis of array content properties. The functor enables a natural, painless and efficient lifting of existing abstract domains for scalar variables to the analysis of uniform compound data-structures such as arrays and collections. The analysis automatically and semantically divides arrays into consecutive non-overlapping possibly empty segments. Segments are delimited by sets of bound expressions and abstracted uniformly. All symbolic expressions appearing in a bound set are equal in the concrete. The FunArray can be naturally combined via reduced product with any existing analysis for scalar variables. The analysis is presented as a general framework parameterized by the choices of bound expressions, segment abstractions and the reduction operator. Once the functor has been instantiated with fixed parameters, the analysis is fully automatic.
Patrick Cousot, Radhia Cousot, Francesco Logozzo
POPL1
2011 Precondition Inference from Intermittent Assertions and Application to Contracts on Collections
Patrick Cousot, Radhia Cousot, Francesco Logozzo
VMCAI1
2011 Grammar semantics, analysis and parsing by abstract interpretation
Patrick Cousot, Radhia Cousot
Theor. Comput. Sci.1
2010 An Abstract Domain to Discover Interval Linear Equalities
Liqian Chen, Antoine Miné, Ji Wang 0001, Patrick Cousot
VMCAI4
2009 Interval Polyhedra: An Abstract Domain to Infer Interval Linear Relationships
Liqian Chen, Antoine Miné, Ji Wang 0001, Patrick Cousot
SAS4
2009 Why does Astrée scale up?
Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, Xavier Rival
Formal Methods Syst. Des.1
2009 Bi-inductive structural semantics
Patrick Cousot, Radhia Cousot
Inf. Comput.1
2009 Abstract interpretation of resolution-based semantics
Patrick Cousot, Radhia Cousot, Roberto Giacobazzi
Theor. Comput. Sci.1
2008 A Sound Floating-Point Polyhedra Abstract Domain
Liqian Chen, Antoine Miné, Patrick Cousot
APLAS3
2007 Proving the absence of run-time errors in safety-critical avionics code
abstract
We explain the design of the interpretation-based static analyzer ASTRÉE and its use to prove the absence of run-time errors in safety-critical codes.
Patrick Cousot
EMSOFT1
2007 Fixpoint-Guided Abstraction Refinements
Patrick Cousot, Pierre Ganty, Jean-François Raskin
SAS1
2007 The Rôle of Abstract Interpretation in Formal Methods
abstract
In computer science and software engineering, formal methods are mathematically-based techniques for the specification, development and verification of software and hardware systems. They therefore establish the satisfaction of a specification by a system semantics. Abstract interpretation is a theory of sound approximation of mathematical structures, in particular those involved in the description of the behavior of computer systems. It allows the systematic derivation of sound methods and algorithms for approximating undecidable or highly complex problems in various areas of computer science (semantics, verification and proof, model- checking, static analysis, program transformation and optimization, typing, software steganography, etc.). Its main current application is on the safety and security of complex hardware and software computer systems.
Patrick Cousot
SEFM1
2007 Varieties of Static Analyzers: A Comparison with ASTREE
abstract
We discuss the characteristic properties of ASTREE, an automatic static analyzer for proving the absence of runtime errors in safety-critical real-time synchronous control command C programs, and compare it with a variety of other program analysis tools.
Patrick Cousot, Radhia Cousot, Jérôme Feret, Antoine Miné, Laurent Mauborgne, David Monniaux, Xavier Rival
TASE1
2005 Integrating Physical Systems in the Static Analysis of Embedded Control Software
Patrick Cousot
APLAS1
2005 The ASTREÉ Analyzer
Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, Xavier Rival
ESOP1
2005 Proving Program Invariance and Termination by Parametric Abstraction, Lagrangian Relaxation and Semidefinite Programming
Patrick Cousot
VMCAI1
2004 An abstract interpretation-based framework for software watermarking
abstract
Software watermarking consists in the intentional embedding of indelible stegosignatures or watermarks into the subject software and extraction of the stegosignatures embedded in the stegoprograms for purposes such as intellectual property protection. We introduce the novel concept of abstract software watermarking. The basic idea is that the watermark is hidden in the program code in such a way that it can only be extracted by an abstract interpretation of the (maybe non-standard) concrete semantics of this code. This static analysis-based approach allows the watermark to be recovered even if only a small part of the program code is present and does not even need that code to be executed. We illustrate the technique by a simple abstract watermarking protocol for methods of Java™ classes. The concept applies equally well to any other kind of software (including hardware originally specified by software).
Patrick Cousot, Radhia Cousot
POPL1
2003 A static analyzer for large safety-critical software
abstract
We show that abstract interpretation-based static program analysis can be made efficient and precise enough to formally verify a class of properties for a family of large programs with few or no false alarms. This is achieved by refinement of a general purpose static analyzer and later adaptation to particular programs of the family by the end-user through parametrization. This is applied to the proof of soundness of data manipulation operations at the machine level for periodic synchronous safety critical embedded software.The main novelties are the design principle of static analyzers by refinement and adaptation through parametrization (Sect. 3 and 7), the symbolic manipulation of expressions to improve the precision of abstract transfer functions (Sect. 6.3), the octagon (Sect. 6.2.2), ellipsoid (Sect. 6.2.3), and decision tree (Sect. 6.2.4) abstract domains, all with sound handling of rounding errors in oating point computations, widening strategies (with thresholds: Sect. 7.1.2, delayed: Sect. 7.1.3) and the automatic determination of the parameters (parametrized packing: Sect. 7.2).
Bruno Blanchet, Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, Xavier Rival
PLDI2
2003 Automatic Verification by Abstract Interpretation
Patrick Cousot
VMCAI1
2003 Parsing as abstract interpretation of grammar semantics
Patrick Cousot, Radhia Cousot
Theor. Comput. Sci.1
2002 On Abstraction in Software Verification
Patrick Cousot, Radhia Cousot
CAV1
2002 Modular Static Program Analysis
Patrick Cousot, Radhia Cousot
CC1
2002 Systematic design of program transformation frameworks by abstract interpretation
abstract
We introduce a general uniform language-independent framework for designing online and offline source-to-source program transformations by abstract interpretation of program semantics. Iterative source-to-source program transformations are designed constructively by composition of source-to-semantics, semantics-to-transformed semantics and semantics-to-source abstractions applied to fixpoint trace semantics. The correctness of the transformations is expressed through observational and performance abstractions. The framework is illustrated on three examples: constant propagation, program specialization by online and offline partial evaluation and static program monitoring.
Patrick Cousot, Radhia Cousot
POPL1
2002 Constructive design of a hierarchy of semantics of a transition system by abstract interpretation
Patrick Cousot
Theor. Comput. Sci.1
2001 Design of Syntactic Program Transformations by Abstract Interpretation of Semantic Transformations
Patrick Cousot
ICLP1
2000 Temporal Abstract Interpretation
abstract
We study the abstract interpretation of temporal calculi and logics in a general syntax, semantics and abstraction independent setting. This is applied to the @@@@-calculus, a generalization of the μ-calculus with new reversal and abstraction modalities as well as a new time-symmetric trace-based semantics. The more classical set-based semantics is shown to be an abstract interpretation of the trace-based semantics which leads to the understanding of model-checking and its application to data-flow analysis as incomplete temporal abstract interpretations. Soundness and incompleteness of the abstractions are discussed. The sources of incompleteness, even for finite systems, are pointed out, which leads to the identification of relatively complete sublogics, à la CTL.
Patrick Cousot, Radhia Cousot
POPL1
1999 Refining Model Checking by Abstract Interpretation
Patrick Cousot, Radhia Cousot
Autom. Softw. Eng.1
1997 Types as Abstract Interpretations
abstract
Starting from a denotational semantics of the eager untyped lambda-calculus with explicit runtime errors, the standard collecting semantics is defined as specifying the strongest program properties. By a first abstraction, a new sound type collecting semantics is derived in compositional fix-point form. Then by successive (semi-dual) Galois connection based abstractions, type systems and/or type inference algorithms are designed as abstract semantics or abstract interpreters approximating the type collecting semantics. This leads to a hierarchy of type systems, which is part of the lattice of abstract interpretations of the untyped lambda-calculus. This hierarchy includes two new a la Church/Curry polytype systems. Abstractions of this polytype semantics lead to classical Milner/Mycroft and Damas/Milner polymorphic type schemes, Church/Curry monotypes and Hindley principal typing algorithm. This shows that types are abstract interpretations.
Patrick Cousot
POPL1
1997 Abstract Interpretation Based Static Analysis Parameterized by Semantics
Patrick Cousot
SAS1
1995 Compositional and Inductive Semantic Definitions in Fixpoint, Equational, Constraint, Closure-condition, Rule-based and Game-Theoretic Form
Patrick Cousot, Radhia Cousot
CAV1
1993 "A la Burstall" Intermittent Assertions Induction Principles for Proving Inevitable Ability Properties of Programs
Patrick Cousot, Radhia Cousot
Theor. Comput. Sci.1
1992 Inductive Definitions, Semantics and Abstract Interpretation
abstract
We introduce and illustrate a specification method combining rule-based inductive definitions, well-founded induction principles, fixed-point theory and abstract interpretation for general use in computer science. Finite as well as infinite objects can be specified, at various levels of details related by abstraction. General proof principles are applicable to prove properties of the specified objects.
Patrick Cousot, Radhia Cousot
POPL1
1992 Abstract Interpretation Frameworks
abstract
We introduce abstract interpretation frameworks which are variations on the archetypal framework using Galois connections between concrete and abstract semantics, widenings and narrowings and are obtained by relaxation of the original hypotheses. We consider various ways of establishing the correctness of an abstract interpretation depending on how the relation between the concrete and abstract semantics is denned. We insist upon those correspondences allowing for the inducing of the approximate abstract semantics from the concrete one. Furthermore we study various notions of widening and narrowing as a means of obtaining convergence in the iterations used in abstract interpretation.
Patrick Cousot, Radhia Cousot
J. Log. Comput.1
1991 Abstract Interpretation of Logic Programs
Patrick Cousot
ICLP1
1989 A Language Independent Proof of the Soundness and Completeness of Generalized Hoare Logic
Patrick Cousot, Radhia Cousot
Inf. Comput.1
1987 Sometime = Always + Recursion = Always on the Equivalence of the Intermittent and Invariant Assertions Methods for Proving Inevitability Properties of Programs
Patrick Cousot, Radhia Cousot
Acta Informatica1
1980 Semantic Analysis of Communicating Sequential Processes (Shortened Version)
Patrick Cousot, Radhia Cousot
ICALP1
1979 Systematic Design of Program Analysis Frameworks
abstract
Semantic analysis of programs is essential in optimizing compilers and program verification systems. It encompasses data flow analysis, data type determination, generation of approximate invariant assertions, etc.
Patrick Cousot, Radhia Cousot
POPL1
1978 Automatic Discovery of Linear Restraints Among Variables of a Program
abstract
The model of abstract interpretation of programs developed by Cousot and Cousot [2nd ISOP, 1976], Cousot and Cousot [POPL 1977] and Cousot [PhD thesis 1978] is applied to the static determination of linear equality or inequality invariant relations among numerical variables of programs.
Patrick Cousot, Nicolas Halbwachs
POPL1
1977 Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints
abstract
A program denotes computations in some universe of objects. Abstract interpretation of programs consists in using that denotation to describe computations in another universe of abstract objects, so that the results of abstract execution give some information on the actual computations. An intuitive example (which we borrow from Sintzoff [72]) is the rule of signs. The text -1515 * 17 may be understood to denote computations on the abstract universe {(+), (-), (±)} where the semantics of arithmetic operators is defined by the rule of signs. The abstract execution -1515 * 17 → -(+) * (+) → (-) * (+) → (-), proves that -1515 * 17 is a negative number. Abstract interpretation is concerned by a particular underlying structure of the usual universe of computations (the sign, in our example). It gives a summary of some facets of the actual executions of a program. In general this summary is simple to obtain but inaccurate (e.g. -1515 + 17 → -(+) + (+) → (-) + (+) → (±)). Despite its fundamentally incomplete results abstract interpretation allows the programmer or the compiler to answer questions which do not need full knowledge of program executions or which tolerate an imprecise answer, (e.g. partial correctness proofs of programs ignoring the termination problems, type checking, program optimizations which are not carried in the absence of certainty about their feasibility, …).
Patrick Cousot, Radhia Cousot
POPL1