Static Analysis and Verification of Aerospace

Total Page:16

File Type:pdf, Size:1020Kb

Static Analysis and Verification of Aerospace Static Analysis and Verification of Aerospace Software Static Analysis and Verification of Aerospace Software by Abstractby Abstract InterpretationInterpretation Patrick CousotJulien Bertraneand Radhia∗ Cousot Ecole´ normale sup´erieure, Paris , Patrick Cousot∗ ∗∗ jointCourant work Institute with: of Mathematical Sciences, NYU, New York & Ecole´ normale sup´erieure, Paris Radhia Cousot∗ J´erˆome Feret∗ Ecole´ normale sup´erieure & CNRS, Paris Ecole´ normale sup´erieure & INRIA, Paris , Laurent Mauborgne∗ ‡ Ecole´ normale sup´erieure, Paris & IMDEA Software, Madrid Antoine Min´e∗ Xavier Rival∗ Ecole´ normale sup´erieure & CNRS, Paris Ecole´ normale sup´erieure & INRIA, Paris We discuss the!Workshop principles on of formal static analysisverification by abstract of avionics interpretation software andproducts report on the automatic verification of the absence of runtime errors in large embedded aerospaceJune 24, 2010 Airbussoftware France, by Toulouse, static analysis France based on abstract interpretation. The first industrial applications concerned synchronous control/command software in open loop. Recent advances consider Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 © P Cousot et al. imperfectly synchronous, parallel programs, and1 target code validation as well. Future research directions on abstract interpretation are also discussed in the context of aerospace software. Nomenclature S program states I initial states t state transition t I collecting semantics t I trace semantics t I prefix trace semantics C T P F prefix trace transformer t I reachability semantics F reachability transformer P R R 0 Fι interval transformer 1S identity on S (also t ) t ◦ r composition of relations V set of all program variables x program variable t and r t reflexive transitive closure tn powers of relation t ρ reduction of relation t α abstraction function γ concretization function lfp⊆ F least fixpoint of F for widening narrowing ⊆ x absolute value of x X abstract counterpart of X ℘(S) parts of set S (also 2S) | | q quaternion q conjugate of quaternion q q norm of quaternion q || || N naturals Z integers R reals ∗Ecole´ normale sup´erieure, D´epartement d’informatique, 45 rue d’Ulm, 75230 Paris cedex 05, [email protected]. ∗∗Courant Institute of Mathematical Sciences, New York University, 251 Mercer Street New York, N.Y. 10012-1185, [email protected] . ‡Fundaci´on IMDEA Software, Facultad de Inform´atica (UPM), Campus Montegancedo, 28660-Boadilla del Monte, Madrid, Spain. 1of38 American Institute of Aeronautics and Astronautics Content • Brief motivation • An informal introduction to abstract interpretation • A short overview of a few applications and on-going work at ENS on aerospace software • A recent comprehensive overview paper (with all theoretical and practical details and references): J. Bertrane, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné and X. Rival Static analysis and verification of aerospace software by abstract interpretation AIAA Infotech@Aerospace 2010, Atlanta, Georgia, USA, April 20, 2010 Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 2 © P Cousot et al. Motivation Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 3 © P Cousot et al. Computer scientists have made great contributions to the failure of complex systems All Computer Scientists Have Experienced Bugs Ariane 5.01 failure Patriot failure Mars orbiter loss (overflow) (float rounding) (unit error) • Checking the presence of bugs is great but never It is preferableends to verify that mission/safety-critical pro- gramsProving do not their go absence wrong before is even running better! them. Workshop• on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 © P Cousot et al. 4 Sep. 5, 2006 September 5, 2006 J¡¡¡—3—[] ¨ — £££I ľ P. Cousot Abstract interpretation Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 5 © P Cousot et al. Abstract interpretation • Started in the 70’s and well-developped since then • Originally for inferring program invariants (with first applications to compilation, optimization, program transformation, to help hand-made proofs, etc) • Based on the idea that undecidability and complexity of automated program analysis can be fought by approximation • Applications evolved from static analysis to verification • Does scale up! Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 6 © P Cousot et al. Fighting undecidability and complexity in program verification • Any automatic program verification method will definitely fail on infinitely many programs (Gödel) • Solutions: • Ask for human help (theorem-prover based deductive methods) • Consider (small enough) finite systems (model- checking) • Do sound approximations or complete abstractions (abstract interpretation) Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 7 © P Cousot et al. An informal introduction to abstract interpretation Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 8 © P Cousot et al. 1) Define the programming language semantics Formalize the concrete execution of programs (e.g. transition system) y y (x,y) t=0 x t=2 x t=… t=1 t Trajectory Space/time trajectory in state space Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 9 © P Cousot et al. II) Define the program properties of interest Formalize what you are interested to know about program behaviors Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 10 © P Cousot et al. III) Define which specification must be checked Formalize what you are interested to prove about program behaviors Forbiden zone Possible trajectories Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 11 © P Cousot et al. IV) Choose the appropriate abstraction Abstract away all information on program behaviors irrelevant to the proof Zone interdite Possible trajectories Abstraction of the trajectories Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 12 © P Cousot et al. V) Mechanically verify in the abstract The proof is fully automatic Forbidden zone Possible trajectories Abstraction of the trajectories Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 13 © P Cousot et al. Soundness of the abstract verification Never forget any possible case so the abstract proof is correct in the concrete Forbidden zone Possible trajectories Abstraction of the trajectories Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 14 © P Cousot et al. Unsound validation: testing Try a few cases Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 15 © P Cousot et al. Unsound validation: bounded model-checking Simulate the beginning of all executions Forbidden zone Possible trajectories Bounded model-checking Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 16 © P Cousot et al. Unsound validation: static analysis Many static analysis tools are unsound (e.g. Coverity, etc.) so inconclusive Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 17 © P Cousot et al. Incompleteness When abstract proofs may fail while concrete proofs would succeed Forbidden zone Alarm !!! Possible trajectories Error or false alarm ? By soundness an alarm must be raised for this overapproximation! Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 18 © P Cousot et al. True error The abstract alarm may correspond to a concrete error Forbidden zone Alarm !!! Possible trajectories Error Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 19 © P Cousot et al. False alarm The abstract alarm may correspond to no concrete error (false negative) Forbidden zone Alarm !!! Possible trajectories False alarm Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 20 © P Cousot et al. What to do about false alarms? • Automatic refinement: inefficient and may not terminate (Gödel) • Domain-specific abstraction: • Adapt the abstraction to the programming paradigms typically used in given domain-specific applications • e.g. synchronous control/command: no recursion, no dynamic memory allocation, maximum execution time, etc. Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 21 © P Cousot et al. ASTRÉE Workshop on formal verification of avionics software products, Airbus France, Toulouse, June 24–25, 2010 22 © P Cousot et al. Target language and applications • C programming language • Without recursion, longjump, dynamic memory allocation, conflicting side effects, backward jumps, system calls (stubs) • With all its horrors (union, pointer arithmetics, etc) • Reasonably extending the standard (e.g. size & endianess of integers, IEEE 754-1985 floats, etc) • Synchronous control/command • e.g. generated from Scade Workshop
Recommended publications
  • Project-Team Abstraction Abstract Interpretation
    INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE Project-Team Abstraction Abstract Interpretation Paris - Rocquencourt THEME SYM c t i v it y ep o r t 2007 Table of contents 1. Team .................................................................................... 1 2. Overall Objectives ........................................................................ 1 2.1. Overall Objectives 1 2.2. Highlights of the Year 1 3. Scientific Foundations .....................................................................2 3.1. Abstract Interpretation Theory 2 3.2. Formal Verification by Abstract Interpretation 2 3.3. Advanced Introductions to Abstract Interpretation 3 4. Application Domains ......................................................................3 4.1. Certification of Safety Critical Software 3 4.2. Security Protocols 4 4.3. Abstraction of Biological Cell Signalling Networks 4 5. Software ................................................................................. 4 5.1. The Astrée Static Analyzer 4 5.2. The Apron Numerical Abstract Domain Library 5 5.3. Translation Validation 6 5.4. ProVerif 6 5.5. CryptoVerif 7 6. New Results .............................................................................. 7 6.1. Abstract Semantics of Grammars 7 6.2. Bi-inductive Definitions and Bifinitary Semantics of the Eager Lambda-Calculus 8 6.3. Verification of Security Protocols in the Formal Model 8 6.3.1. Automatic Verification of Correspondences for Security Protocols 8 6.3.2. Case Study: the Protocol Just Fast Keying (JFK) 8 6.3.3. Case Study: the Secure Storage System Plutus 9 6.4. Verification of Security Protocols in the Computational Model 9 6.4.1. Computationally Sound Mechanized Proofs of Correspondence Assertions 9 6.4.2. Computationally Sound Mechanized Proofs for Basic and Public-key Kerberos 9 6.5. Analysis of Biological Pathways 10 6.5.1. Reachability Analysis of Biological Signalling Pathways by Abstract Interpretation 10 6.5.2.
    [Show full text]
  • Team ANTIQUE
    IN PARTNERSHIP WITH: CNRS Ecole normale supérieure de Paris Activity Report 2014 Team ANTIQUE Analyse Statique par Interprétation Abstraite RESEARCH CENTER Paris - Rocquencourt THEME Proofs and Verification Table of contents 1. Members :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1 2. Overall Objectives :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 3. Research Program :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 3.1. Semantics 3 3.2. Abstract interpretation and static analysis3 3.3. Applications of the notion of abstraction in semantics4 3.4. The analysis of biological models4 4. Application Domains ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::4 4.1. Verification of safety critical embedded software4 4.2. Static analysis of software components and libraries5 4.3. Biological systems6 5. New Software and Platforms :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 6 5.1. The Apron Numerical Abstract Domain Library6 5.2. The Astrée Static Analyzer of Synchronous Software7 5.3. The AstréeA Static Analyzer of Asynchronous Software8 5.4. ClangML: A binding with the CLANG C-frontend8 5.5. FuncTion: An Abstract Domain Functor for Termination9 5.6. HOO: Heap Abstraction for Open Objects9 5.7. The MemCADstatic analyzer9 5.8. The OpenKappa Modeling Plateform 10 5.9. QUICr set abstract domain 10 5.10. Translation Validation 10 5.11. Zarith 10 6. New Results ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 11 6.1. Highlights of the Year 11 6.2. Memory Abstraction 11 6.2.1. Modular Construction of Shape-Numeric Analyzers 11 6.2.2. An abstract domain combinator for separately conjoining memory abstractions 11 6.2.3. Abstraction of Arrays Based on Non Contiguous Partitions 12 6.3. Static analysis of JavaScript applications 12 6.3.1. Automatic Analysis of Open Objects in Dynamic Language Programs 12 6.3.2. Desynchronized Multi-State Abstractions for Open Programs in Dynamic Languages 12 6.4.
    [Show full text]
  • Project-Team Abstraction Abstract Interpretation
    INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE Project-Team Abstraction Abstract Interpretation Paris - Rocquencourt THEME ALGORITHMICS, PROGRAMMING, SOFTWARE AND ARCHITECTURE c t i v it y ep o r t 2008 Table of contents 1. Team .................................................................................... 1 2. Overall Objectives ........................................................................ 1 2.1. Overall Objectives 1 2.2. Highlights of the Year 2 3. Scientific Foundations .....................................................................2 3.1. Abstract Interpretation Theory 2 3.2. Formal Verification by Abstract Interpretation 3 3.3. Advanced Introductions to Abstract Interpretation 4 4. Application Domains ......................................................................4 4.1. Certification of Safety Critical Software 4 4.2. Security Protocols 5 4.3. Abstraction of Biological Cell Signalling Networks 5 5. Software ................................................................................. 5 5.1. The Astrée Static Analyzer 5 5.2. The Apron Numerical Abstract Domain Library 6 5.3. Translation Validation 7 5.4. ProVerif 7 5.5. CryptoVerif 8 6. New Results .............................................................................. 9 6.1. Abstract Semantics of Grammars 9 6.2. Abstract Semantics of Resolution-Based Logic Languages 9 6.3. Bi-inductive Definitions and Bifinitary Semantics of the Eager Lambda-Calculus 9 6.4. Verification of Security Protocols in the Formal Model 10 6.4.1. Case Study: the Secure Storage System Plutus 10 6.4.2. Extensions of ProVerif 10 6.5. Verification of Security Protocols in the Computational Model 10 6.5.1. Computationally Sound Mechanized Proofs for Basic and Public-key Kerberos 10 6.5.2. Extensions of CryptoVerif 11 6.6. Verification of Security Protocols: Formal Model and Computational Model 11 6.7. Analysis of Biological Pathways 11 6.7.1. Reachable Species Analysis 11 6.7.2.
    [Show full text]
  • Abstract Interpretation”
    ‟Next 40 years of Abstract Interpretation” Abstract Interpretation – 40 years back + some years ahead Abstract interpretation: origin (abridged) N40AI 2017 January 21st, 2017 Paris, France Patrick Cousot [email protected]@yu.e1du cs.nyu.edu/~pcousot N40AI, 2017/01/21, Paris, France 1 © P. Cousot N40AI, 2017/01/21, Paris, France 2 © P. Cousot Before starting (1972-73): formal syntax Before starting (1972-73): formal semantics • Radhia Rezig: works on precedence parsing (R.W. • Patrick Cousot: works on the operational semantics of Floyd, N. Wirth and H. Weber, etc.) for Algol 68 programming languages and the derivation of ➡ P r e - p r o c e s s i n g ( by s t a t i c a n a l y s i s a n d implementations from the formal definition transformation) of the grammar before building the ➡ Static analysis of the formal definition and bottom-up parser transformation to get the implementation by “pre- • Patrick Cousot: works on context-free grammar evaluation” (similar to the more recent “partial parsing (J. Earley and F. De Remer) evaluation”) ➡ P r e - p r o c e s s i n g ( by s t a t i c a n a l y s i s a n d transformation) of the grammar before building the top-down parser • Radhia Rezig. Application de la méthode de précédence totale à l’analyse d’Algol 68, Master thesis, Université Joseph Fourier, Grenoble, France, September 1972. • Patrick Cousot. Définition interprétative et implantation de languages de programmation. Thèse de Docteur Ingénieur en Informatique, Université Joseph Fourier, Grenoble, France, 14 Décembre 1974 (submitted in 1973 • Patrick Cousot.
    [Show full text]
  • Introduction to Abstract Interpretation
    Introduction to Abstract Interpretation Bruno Blanchet D´epartement d'Informatique Ecole´ Normale Sup´erieure, Paris and Max-Planck-Institut fur¨ Informatik [email protected] November 29, 2002 Abstract We present the basic theory of abstract interpretation, and its application to static program analysis. The goal is not to give an exhaustive view of abstract interpretation, but to give enough background to make papers on abstract interpretation more under- standable. Notations: λx.M denotes the function that maps x to M. f[x 7! M] denotes the function f extended so that x is mapped to M. If f was already defined at x, the new binding replaces the old one. 1 Introduction The goal of static analysis is to determine runtime properties of programs without executing them. (Scheme of an analyzer: Program ! Analyzer ! Properties.) Here are some examples of properties can be proved by static analysis: • For optimization: { Dead code elimination { Constant propagation { Live variables { Stack allocation (more complex) • For verification: { Absence of runtime errors: division by zero, square root of negative numbers, overflows, array index out of bounds, pointer dereference outside objects, . { Worst-case execution time (see Wilhelm's work with his team and AbsInt) { Security properties (secrecy, authenticity of protocols, . ) 1 However, most interesting program properties are undecidable. The basic result to show undecidability is the undecidability of the halting problem. Proof By contradiction. Assume that there exists Halt(P,E) returning Yes when P termi- nates on entry E, No otherwise. Consider P'(P) = if Halt(P,P) then loop else stop. • If P'(P') loops, Halt(P',P') = true, so P'(P') stops: contradiction.
    [Show full text]
  • Presentation of the Abstraction Project Proposal »
    « Presentation of the Abstraction project proposal » Patrick Cousot École normale supérieure 45 rue d’Ulm, 75230 Paris cedex 05, France [email protected] www.di.ens.fr/~cousot Projects’ committee — INRIA Rocquencourt Thursday March 8th, 2007 Projects’ committee, INRIA Rocquencourt, 8/3/2007 — 1 — ľ P. Cousot 1. Project Members Projects’ committee, INRIA Rocquencourt, 8/3/2007 — 2 — ľ P. Cousot Project Members Julien Bertrane, PhD student Bruno Blanchet, CR1 CNRS Patrick Cousot,Prof. Jérôme Feret, CDD Laurent Mauborgne, MdC Antoine Miné, ATER David Monniaux,CR1CNRS Xavier Rival, CDD Projects’ committee, INRIA Rocquencourt, 8/3/2007 — 3 — ľ P. Cousot 2. The Problem: The Design of Safe and Secure Computer- Based Systems Projects’ committee, INRIA Rocquencourt, 8/3/2007 — 4 — ľ P. Cousot Software is Everywhere – exponential growth of hardware since 1975 – ) exponential growth of software (favored by software engineering methods) – mainly manual activity ) bugs are everywhere l Projects’ committee, INRIA Rocquencourt, 8/3/2007 — 5 — ľ P. Cousot Guaranteeing the Reliability and Security of Software-Intensive Systems – an objective of the INRIA strategic plan – an industrial categorical imperative, in particular for safety and security critical software (validation can ac- count for up to 60% of software development costs) Projects’ committee, INRIA Rocquencourt, 8/3/2007 — 6 — ľ P. Cousot Validation/Formal Methods – bug-finding methods : unit, integration, and system testing, dynamic verification, bounded model-checking, . – absence of bug proving methods : formally prove that the semantics of a program satisfies a specification - theorem-proving & proof checking - model-checking - abstract interpretation – in practice : complementary methods are used, very difficult to scale up Projects’ committee, INRIA Rocquencourt, 8/3/2007 — 7 — ľ P.
    [Show full text]
  • On Various Abstract Understandings of Abstract Interpretation
    1 On Various Abstract Understandings of Abstract Interpretation Patrick COUSOT Courant Institute of Mathematical Sciences New York University cp ousot@ ci ms. n u.ey ud , cimn.s u . e dy/u ˜ o spcu ot Abstract—We discuss several possible understandings and is correct/sound for all programs of a programming language, misunderstandings of Abstract Interpretation theory and practice it is necessary to compare the results of the static analysis at various levels of abstraction. with a formal definition of the program semantics (sometimes Keywords-Abstract Interpretation, Abstraction, Completeness, called a model) [7]. Formal methods, Semantics, Semantics, Soundness, Static anal- Abstract Interpretation goes much further by showing how ysis, Verification. to formally construct the static analyzer from the definition of program properties as specified by the semantics [8]. ABSTRACT INTERPRETATION FOR STATIC ANALYSIS These ideas lead to mechanically checked static analyzers Abstract Interpretation (see [10], [11] for gentle introduc- [19], and hopefully in the future, to mechanically constructed tions) can be, and is often, understood in a very narrow sense: static analyzers (as has been done by hand, e.g. in [3] for type an algorithm for static analysis of sequential programs with systems). widening and narrowing, even maybe restricted to interval analysis only. HIERARCHIES OF ABSTRACTIONS This was indeed the origin of the concept [6] and the very first fully automatic infinitary static analysis, rapidly followed A more profound understanding of Abstract Interpretation by more expressive and costly relational analyzes [15]. leads to a much broader scope of application. To cope with For programming languages, i.e. infinitely many pro- complex problems, e.g.
    [Show full text]
  • Automotive Embedded Software Design Using Formal Methods Vassil Todorov
    Automotive embedded software design using formal methods Vassil Todorov To cite this version: Vassil Todorov. Automotive embedded software design using formal methods. Modeling and Simula- tion. Université Paris-Saclay, 2020. English. NNT : 2020UPASG026. tel-03082647 HAL Id: tel-03082647 https://tel.archives-ouvertes.fr/tel-03082647 Submitted on 18 Dec 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Automotive embedded software design using formal methods Thèse de doctorat de l’Université Paris-Saclay École doctorale n◦ 580, Sciences et Technologies de l’Information et de la Communication Spécialité de doctorat: Informatique Unité de recherche: Université Paris-Saclay, CNRS, Laboratoire de recherche en informatique, 91405, Orsay, France Référent: CentraleSupélec Thèse présentée et soutenue à Gif-sur-Yvette, le 9 décembre 2020, par Vassil TODOROV Composition du jury: Pascale Le Gall Présidente et examinatrice Professeur, CentraleSupélec Gérard Berry Rapporteur et examinateur Professeur émérite, Collège de France Cesare Tinelli Rapporteur et examinateur
    [Show full text]
  • Astrée: Proving the Absence of Runtime Errors
    Astrée: Proving the Absence of Runtime Errors Daniel Kästner,1 Stephan Wilhelm,1 Stefana Nenova,1 Patrick Cousot,† Radhia Cousot,† Jérôme Feret,† Laurent Mauborgne,† Antoine Miné,† Xavier Rival,† 1: AbsInt Angewandte Informatik GmbH. Science Park 1, D-66123 Saarbrücken, Germany 2: École Normale Supérieure. 45, rue d’Ulm, F-75230 Paris, France Abstract: Safety-critical embedded software has without actually running the software under analy- to satisfy stringent quality requirements. Testing sis. The results thus obtained hold for any possi- and validation consumes a large – and growing – ble input scenario and any possible program execu- fraction of development cost. The last years have tion. Examples are tools for computing the worst- seen the emergence of semantics-based static anal- case execution time [28, 13] or the maximal stack ysis tools in various application areas, from runtime usage of tasks [12], the accuracy of floating-point error analysis to worst-case execution time predic- computations [20], and the absence of run-time er- tion. Their appeal is that they have the poten- rors [2,6,8]. Modern semantics-based static ana- tial to reduce testing effort while providing 100% lyzers scale well and support the analysis of large coverage, thus enhancing safety. Static runtime industrial software projects. error analysis is applicable to large industry-scale This article focuses on a certain class of errors, the projects and produces a list of definite runtime er- so-called runtime errors. Examples for runtime er- rors and of potential runtime errors which might be rors are floating-point overflows, array bound vio- true errors or false alarms.
    [Show full text]
  • 2017-01-21-N40AI-1-1.Pdf
    ‟Next 40 years of Abstract Interpretation” Abstract Interpretation – 40 years back + some years ahead N40AI 2017 January 21st, 2017 Paris, France Patrick Cousot [email protected]@yu.e1du cs.nyu.edu/~pcousot N40AI, 2017/01/21, Paris, France 1 © P. Cousot Abstract interpretation: origin (abridged) N40AI, 2017/01/21, Paris, France 2 © P. Cousot Before starting (1972-73): formal syntax • Radhia Rezig: works on precedence parsing (R.W. Floyd, N. Wirth and H. Weber, etc.) for Algol 68 ➡ P r e - p r o c e s s i n g ( by s t a t i c a n a l y s i s a n d transformation) of the grammar before building the bottom-up parser • Patrick Cousot: works on context-free grammar parsing (J. Earley and F. De Remer) ➡ P r e - p r o c e s s i n g ( by s t a t i c a n a l y s i s a n d transformation) of the grammar before building the top-down parser • Radhia Rezig. Application de la méthode de précédence totale à l’analyse d’Algol 68, Master thesis, Université Joseph Fourier, Grenoble, France, September 1972. • Patrick Cousot. Un analyseur syntaxique pour grammaires hors contexte ascendant sélectif et général. In Congrès AFCET 72, Brochure 1, pages 106-130, Grenoble, France, 6-9 November 1972. N40AI, 2017/01/21, Paris, France 3 © P. Cousot Before starting (1972-73): formal semantics • Patrick Cousot: works on the operational semantics of programming languages and the derivation of implementations from the formal definition ➡ Static analysis of the formal definition and transformation to get the implementation by “pre- evaluation” (similar to the more recent “partial evaluation”) • Patrick Cousot.
    [Show full text]
  • Lipics-ECOOP-2021-14.Pdf (1
    Lifted Static Analysis of Dynamic Program Families by Abstract Interpretation Aleksandar S. Dimovski # Mother Teresa University, Skopje, North Macedonia Sven Apel # Saarland University, Saarland Informatics Campus, 66123 Saarbrücken, Germany Abstract Program families (software product lines) are increasingly adopted by industry for building families of related software systems. A program family offers a set of features (configured options) to control the presence and absence of software functionality. Features in program families are often assigned at compile-time, so their values can only be read at run-time. However, today many program families and application domains demand run-time adaptation, reconfiguration, and post-deployment tuning. Dynamic program families (dynamic software product lines) have emerged as an attempt to handle variability at run-time. Features in dynamic program families can be controlled by ordinary program variables, so reads and writes to them may happen at run-time. Recently, a decision tree lifted domain for analyzing traditional program families with numerical features has been proposed, in which decision nodes contain linear constraints defined over numerical features and leaf nodes contain analysis properties defined over program variables. Decision nodes partition the configuration space of possible feature values, while leaf nodes provide analysis information corresponding to each partition of the configuration space. As features are statically assigned at compile-time, decision nodes can be added, modified, and deleted only when analyzing read accesses of features. In this work, we extend the decision tree lifted domain so that it can be used to efficiently analyze dynamic program families with numerical features. Since features cannowbe changed at run-time, decision nodes can be modified when handling read and write accesses of feature variables.
    [Show full text]
  • Calculational Design of a Static Dependency Analysis
    2019 Mooly Fest April 6th, 2019 — ETAPS, Prague, Czech Republic Calculational design of a static dependency analysis Patrick Cousot New York University, Courant Institute of Mathematics, Computer Science [email protected] cs.nyu.edu/~pcousot “Calculational design of, a static dependency analysis” – 1/39 – © P. Cousot, NYU, CIMS, CS, April 6th, 2019 . Motivation . “Calculational design of, a static dependency analysis” – 2/39 – © P. Cousot, NYU, CIMS, CS, April 6th, 2019 Dependency Dependency is prevalent in computer science: • Non-interference (confidentiality, integrity) • Security, privacy • Slicing • Temporal dependencies in synchronous languages (Lustre, Signal, etc.) • etc. The existing definitions • are postulated a priori (par exemple Cheney, Ahmed, and Acar, 2011; D. E. Denning and P. J. Denning, 1977), • without semantics justifications (except Assaf, Naumann, Signoles, Totel, and Tronel, 2017 (“hyper-collecting semantics”), Urban and Müller, 2018 on program exit uniquely) We are interested in principles, in soundness proofs, not so much in a new more powerful dependency analysis. “Calculational design of, a static dependency analysis” – 3/39 – © P. Cousot, NYU, CIMS, CS, April 6th, 2019 Structural fixpoint trace semantics . “Calculational design of, a static dependency analysis” – 4/39 – © P. Cousot, NYU, CIMS, CS, April 6th, 2019 Program syntax • C statements limited to integers, assignments, statement lits, conditionals, iterations • Programs are labelled to designate program points • atJSK: entry program point of S starts; • afterJSK: normal exit program point of S; • inJSK: reachable program points of S (excluding afterJSK); • break-toJSK: breaking point when S contains a break ; to exit a loop (then escapeJSK = tt); . “Calculational design of, a static dependency analysis” – 5/39 – © P.
    [Show full text]