Concurrent Separation Logic
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Lemma Functions for Frama-C: C Programs As Proofs
Lemma Functions for Frama-C: C Programs as Proofs Grigoriy Volkov Mikhail Mandrykin Denis Efremov Faculty of Computer Science Software Engineering Department Faculty of Computer Science National Research University Ivannikov Institute for System Programming of the National Research University Higher School of Economics Russian Academy of Sciences Higher School of Economics Moscow, Russia Moscow, Russia Moscow, Russia [email protected] [email protected] [email protected] Abstract—This paper describes the development of to additionally specify loop invariants and termination an auto-active verification technique in the Frama-C expression (loop variants) in case the function under framework. We outline the lemma functions method analysis contains loops. Then the verification instrument and present the corresponding ACSL extension, its implementation in Frama-C, and evaluation on a set generates verification conditions (VCs), which can be of string-manipulating functions from the Linux kernel. separated into categories: safety and behavioral ones. We illustrate the benefits our approach can bring con- Safety VCs are responsible for runtime error checks for cerning the effort required to prove lemmas, compared known (modeled) types, while behavioral VCs represent to the approach based on interactive provers such as the functional correctness checks. All VCs need to be Coq. Current limitations of the method and its imple- mentation are discussed. discharged in order for the function to be considered fully Index Terms—formal verification, deductive verifi- proved (totally correct). This can be achieved either by cation, Frama-C, auto-active verification, lemma func- manually proving all VCs discharged with an interactive tions, Linux kernel prover (i. e., Coq, Isabelle/HOL or PVS) or with the help of automatic provers. -
The Abcs of Petri Net Reachability Relaxations
The ABCs of Petri net reachability relaxations Michael Blondin, Universite´ de Sherbrooke, Canada Petri nets form a widespread model of concurrency well suited for the verification of systems with infinitely many configurations. Deciding configuration reachability in Petri nets, which plays a central role in their formal analysis, suffers from a nonelementary time complexity lower bound. We survey relaxations that alleviate this tremendous complexity, both for classical Petri nets and for extensions with affine transformations, branching rules and colored tokens. 1. INTRODUCTION Petri nets are a widespread formalism to model and analyze concurrent systems with possibly infinite configuration spaces over nonnegative counters, i.e. Nk. They offer a great tradeoff between graphical modeling and amenability to algorithmic analysis. In particular, they find applications ranging from program verification (e.g. [German and Sistla 1992; Kaiser et al. 2014; Atig et al. 2011; Delzanno et al. 2002]) to the for- mal analysis of chemical, biological and business processes (e.g. [Esparza et al. 2017; Heiner et al. 2008; van der Aalst 1998]). One of the central questions in Petri net the- ory consists in determining whether a given target configuration, typically an error of a system, is reachable from an initial configuration. This reachability problem, which we will shortly define formally, has been extensively studied over several decades. For a long time, the computational complexity of the problem lay between EXPSPACE- hardness [Lipton 1976] and decidability [Mayr 1981; Kosaraju 1982; Lambert 1992; Leroux 2012]. However, it was recently narrowed down between TOWER-hardness [Cz- erwinski´ et al. 2019], i.e. a tower of exponentials, and Ackermaniann time [Leroux and Schmitz 2019]. -
A Program Logic for First-Order Encapsulated Webassembly
A Program Logic for First-Order Encapsulated WebAssembly Conrad Watt University of Cambridge, UK [email protected] Petar Maksimović Imperial College London, UK; Mathematical Institute SASA, Serbia [email protected] Neelakantan R. Krishnaswami University of Cambridge, UK [email protected] Philippa Gardner Imperial College London, UK [email protected] Abstract We introduce Wasm Logic, a sound program logic for first-order, encapsulated WebAssembly. We design a novel assertion syntax, tailored to WebAssembly’s stack-based semantics and the strong guarantees given by WebAssembly’s type system, and show how to adapt the standard separation logic triple and proof rules in a principled way to capture WebAssembly’s uncommon structured control flow. Using Wasm Logic, we specify and verify a simple WebAssembly B-tree library, giving abstract specifications independent of the underlying implementation. We mechanise Wasm Logic and its soundness proof in full in Isabelle/HOL. As part of the soundness proof, we formalise and fully mechanise a novel, big-step semantics of WebAssembly, which we prove equivalent, up to transitive closure, to the original WebAssembly small-step semantics. Wasm Logic is the first program logic for WebAssembly, and represents a first step towards the creation of static analysis tools for WebAssembly. 2012 ACM Subject Classification Theory of computation Ñ separation logic Keywords and phrases WebAssembly, program logic, separation logic, soundness, mechanisation Acknowledgements We would like to thank the reviewers, whose comments were valuable in improving the paper. All authors were supported by the EPSRC Programme Grant ‘REMS: Rigorous Engineering for Mainstream Systems’ (EP/K008528/1). -
Adversarial Symbolic Execution for Detecting Concurrency-Related Cache Timing Leaks
Adversarial Symbolic Execution for Detecting Concurrency-Related Cache Timing Leaks Shengjian Guo Meng Wu Chao Wang Virginia Tech Virginia Tech University of Southern California Blacksburg, VA, USA Blacksburg, VA, USA Los Angeles, CA, USA ABSTRACT The timing characteristics of cache, a high-speed storage between Program P Adversarial the fast CPU and the slow memory, may reveal sensitive information (Thread T1) Thread Schedule of a program, thus allowing an adversary to conduct side-channel attacks. Existing methods for detecting timing leaks either ignore Concurrent Pro- Symbolic Cache-timing ′′ SMT Solving cache all together or focus only on passive leaks generated by the gram P Execution Leakage program itself, without considering leaks that are made possible by concurrently running some other threads. In this work, we show Program P′ Adversarial Cache that timing-leak-freedom is not a compositional property: a program (Thread T2) Cache Modeling Configuration that is not leaky when running alone may become leaky when inter- leaved with other threads. Thus, we develop a new method, named Figure 1: Flow of our cache timing leak detector SymSC. adversarial symbolic execution, to detect such leaks. It systematically explores both the feasible program paths and their interleavings while modeling the cache, and leverages an SMT solver to decide if are caused by differences in the number and type of instructions there are timing leaks. We have implemented our method in LLVM executed along different paths: unless the differences are indepen- and evaluated it on a set of real-world ciphers with 14,455 lines of dent of the sensitive data, they may be exploited by an adversary. -
1 Employment 2 Education 3 Grants
STEPHEN F. SIEGEL Curriculum Vitæ Department of Computer and Information Sciences email: [email protected] 101 Smith Hall web: http://vsl.cis.udel.edu/siegel.html University of Delaware tel: (302) 831{0083, fax: (302) 831{8458 Newark, DE 19716 skype: sfsiegel 1 Employment Associate Professor, Department of Computer and Information Sciences and Department of Math- ematical Sciences, University of Delaware, September 2012 to present Assistant Professor, Department of Computer and Information Sciences and Department of Math- ematical Sciences, University of Delaware, September 2006 to August 2012 Senior Research Scientist, Laboratory for Advanced Software Engineering Research, Department of Computer Science, University of Massachusetts Amherst, August 2001 to August 2006 Senior Software Engineer, Laboratory for Advanced Software Engineering Research, Department of Computer Science, University of Massachusetts Amherst, August 1998 to July 2001 Visiting Assistant Professor, Department of Mathematics, University of Massachusetts Amherst, September 1996 to August 1998 Visiting Assistant Professor, Department of Mathematics, Northwestern University, September 1993 to June 1996 2 Education Ph.D., Mathematics, University of Chicago, August 1993 (Advisor: Prof. Jonathan L. Alperin) M.Sc., Mathematics, Oxford University, June 1989 B.A., Mathematics, University of Chicago, June 1988 3 Grants Awarded • Principal Investigator, Subcontract 4000159498, Oak Ridge National Laboratory, Extend and Improve the CIVL Software Verification Platform. January 31, 2018 { September 30, 2020. Award amount: $245,963 (sole PI). Subcontract under Department of Energy award RAPIDS: A SciDAC Institute for Computer Science and Data. • Principal Investigator, Department of Energy Award DE-SC0012566, Program Verification for Extreme- Scale Applications, September 1, 2014 { August 31, 2018. Award amount: $510,000. (Sole PI) • Principal Investigator, National Science Foundation Award NSF CCF-1319571, SHF: Small: Con- tracts for Message-Passing Parallel Programs, September 1, 2013 { August 31, 2018. -
SIGLOG: Special Interest Group on Logic and Computation a Proposal
SIGLOG: Special Interest Group on Logic and Computation A Proposal Natarajan Shankar Computer Science Laboratory SRI International Menlo Park, CA Mar 21, 2014 SIGLOG: Executive Summary Logic is, and will continue to be, a central topic in computing. ACM has a core constituency with an interest in Logic and Computation (L&C), witnessed by 1 The many Turing Awards for work centrally in L&C 2 The ACM journal Transactions on Computational Logic 3 Several long-running conferences like LICS, CADE, CAV, ICLP, RTA, CSL, TACAS, and MFPS, and super-conferences like FLoC and ETAPS SIGLOG explores the connections between logic and computing covering theory, semantics, analysis, and synthesis. SIGLOG delivers value to its membership through the coordination of conferences, journals, newsletters, awards, and educational programs. SIGLOG enjoys significant synergies with several existing SIGs. Natarajan Shankar SIGLOG 2/9 Logic and Computation: Early Foundations Logicians like Alonzo Church, Kurt G¨odel, Alan Turing, John von Neumann, and Stephen Kleene have played a pioneering role in laying the foundation of computing. In the last 65 years, logic has become the calculus of computing underpinning the foundations of many diverse sub-fields. Natarajan Shankar SIGLOG 3/9 Logic and Computation: Turing Awardees Turing awardees for logic-related work include John McCarthy, Edsger Dijkstra, Dana Scott Michael Rabin, Tony Hoare Steve Cook, Robin Milner Amir Pnueli, Ed Clarke Allen Emerson Joseph Sifakis Leslie Lamport Natarajan Shankar SIGLOG 4/9 Interaction between SIGLOG and other SIGs Logic interacts in a significant way with AI (SIGAI), theory of computation (SIGACT), databases (SIGMOD) and knowledge bases (SIGKDD), programming languages (SIGPLAN), software engineering (SIGSOFT), computational biology (SIGBio), symbolic computing (SIGSAM), semantic web (SIGWEB), and hardware design (SIGDA and SIGARCH). -
Stephanie Weirich –
Stephanie Weirich School of Engineering and Science, University of Pennsylvania Levine 510, 3330 Walnut St, Philadelphia, PA 19104 215-573-2821 • [email protected] July 13, 2021 Positions University of Pennsylvania Philadelphia, Pennsylvania ENIAC President’s Distinguished Professor September 2019-present Galois, Inc Portland, Oregon Visiting Scientist June 2018-August 2019 University of Pennsylvania Philadelphia, Pennsylvania Professor July 2015-August 2019 University of Pennsylvania Philadelphia, Pennsylvania Associate Professor July 2008-June 2015 University of Cambridge Cambridge, UK Visitor August 2009-July 2010 Microsoft Research Cambridge, UK Visiting Researcher September-November 2009 University of Pennsylvania Philadelphia, Pennsylvania Assistant Professor July 2002-July 2008 Cornell University Ithaca, New York Instructor, Research Assistant and Teaching AssistantAugust 1996-July 2002 Lucent Technologies Murray Hill, New Jersey Intern June-July 1999 Education Cornell University Ithaca, NY Ph.D., Computer Science 2002 Cornell University Ithaca, NY M.S., Computer Science 2000 Rice University Houston, TX B.A., Computer Science, magnum cum laude 1996 Honors ○␣ SIGPLAN Robin Milner Young Researcher award, 2016 ○␣ Most Influential ICFP 2006 Paper, awarded in 2016 ○␣ Microsoft Outstanding Collaborator, 2016 ○␣ Penn Engineering Fellow, University of Pennsylvania, 2014 ○␣ Institute for Defense Analyses Computer Science Study Panel, 2007 ○␣ National Science Foundation CAREER Award, 2003 ○␣ Intel Graduate Student Fellowship, 2000–2001 -
Dafny: an Automatic Program Verifier for Functional Correctness K
Dafny: An Automatic Program Verifier for Functional Correctness K. Rustan M. Leino Microsoft Research [email protected] Abstract Traditionally, the full verification of a program’s functional correctness has been obtained with pen and paper or with interactive proof assistants, whereas only reduced verification tasks, such as ex- tended static checking, have enjoyed the automation offered by satisfiability-modulo-theories (SMT) solvers. More recently, powerful SMT solvers and well-designed program verifiers are starting to break that tradition, thus reducing the effort involved in doing full verification. This paper gives a tour of the language and verifier Dafny, which has been used to verify the functional correctness of a number of challenging pointer-based programs. The paper describes the features incorporated in Dafny, illustrating their use by small examples and giving a taste of how they are coded for an SMT solver. As a larger case study, the paper shows the full functional specification of the Schorr-Waite algorithm in Dafny. 0 Introduction Applications of program verification technology fall into a spectrum of assurance levels, at one extreme proving that the program lives up to its functional specification (e.g., [8, 23, 28]), at the other extreme just finding some likely bugs (e.g., [19, 24]). Traditionally, program verifiers at the high end of the spectrum have used interactive proof assistants, which require the user to have a high degree of prover expertise, invoking tactics or guiding the tool through its various symbolic manipulations. Because they limit which program properties they reason about, tools at the low end of the spectrum have been able to take advantage of satisfiability-modulo-theories (SMT) solvers, which offer some fixed set of automatic decision procedures [18, 5]. -
Separation Logic: a Logic for Shared Mutable Data Structures
Separation Logic: A Logic for Shared Mutable Data Structures John C. Reynolds∗ Computer Science Department Carnegie Mellon University [email protected] Abstract depends upon complex restrictions on the sharing in these structures. To illustrate this problem,and our approach to In joint work with Peter O’Hearn and others, based on its solution,consider a simple example. The following pro- early ideas of Burstall, we have developed an extension of gram performs an in-place reversal of a list: Hoare logic that permits reasoning about low-level impera- tive programs that use shared mutable data structure. j := nil ; while i = nil do The simple imperative programming language is ex- (k := [i +1];[i +1]:=j ; j := i ; i := k). tended with commands (not expressions) for accessing and modifying shared structures, and for explicit allocation and (Here the notation [e] denotes the contents of the storage at deallocation of storage. Assertions are extended by intro- address e.) ducing a “separating conjunction” that asserts that its sub- The invariant of this program must state that i and j are formulas hold for disjoint parts of the heap, and a closely lists representing two sequences α and β such that the re- related “separating implication”. Coupled with the induc- flection of the initial value α0 can be obtained by concate- tive definition of predicates on abstract data structures, this nating the reflection of α onto β: extension permits the concise and flexible description of ∃ ∧ ∧ † †· structures with controlled sharing. α, β. list α i list β j α0 = α β, In this paper, we will survey the current development of this program logic, including extensions that permit unre- where the predicate list α i is defined by induction on the stricted address arithmetic, dynamically allocated arrays, length of α: and recursive procedures. -
Model Checking Randomized Distributed Algorithms Nathalie Bertrand
Model checking randomized distributed algorithms Nathalie Bertrand To cite this version: Nathalie Bertrand. Model checking randomized distributed algorithms. ACM SIGLOG News, ACM, 2020, 7 (1), pp.35-45. 10.1145/3385634.3385638. hal-03095637 HAL Id: hal-03095637 https://hal.inria.fr/hal-03095637 Submitted on 21 Jun 2021 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. Model checking randomized distributed algorithms Nathalie Bertrand, Univ. Rennes, Inria, CNRS, IRISA – Rennes (France) Randomization is a powerful paradigm to solve hard problems, especially in distributed computing. Proving the correctness, and assessing the performances, of randomized distributed algorithms, is a very challenging research objective, that the verification community has started to address. In this article, we review existing model checking approaches to the verification of randomized distributed algorithms and identify further research directions. 1. RANDOMIZED DISTRIBUTED ALGORITHMS Distributed algorithms appear in a variety of applications and of frameworks. Emblematic applications include telecommunications, scientific computing, and Blockchain that received recently a lot of attention. Although one could think dis- tributed algorithms necessarily run on processors that are geographically distributed, the term also applies to algorithms running on shared-memory multiprocessors. -
Pointer Programs, Separation Logic
Chapter 6 Pointer Programs, Separation Logic The goal of this section is to drop the hypothesis that we have until now, that is, references are not values of the language, and in particular there is nothing like a reference to a reference, and there is no way to program with data structures that can be modified in-place, such as records where fields can be assigned directly. There is a fundamental difference of semantics between in-place modification of a record field and the way we modeled records in Chapter 4. The small piece of code below, in the syntax of the C programming language, is a typical example of the kind of programs we want to deal with in this chapter. typedef struct L i s t { i n t data; list next; } ∗ l i s t ; list create( i n t d , l i s t n ) { list l = (list)malloc( sizeof ( struct L i s t ) ) ; l −>data = d ; l −>next = n ; return l ; } void incr_list(list p) { while ( p <> NULL) { p−>data++; p = p−>next ; } } Like call by reference, in-place assignment of fields is another source of aliasing issues. Consider this small test program void t e s t ( ) { list l1 = create(4,NULL); list l2 = create(7,l1); list l3 = create(12,l1); assert ( l3 −>next−>data == 4 ) ; incr_list(l2); assert ( l3 −>next−>data == 5 ) ; } which builds the following structure: 63 7 4 null 12 the list node l1 is shared among l2 and l3, hence the call to incr_list(l2) modifies the second node of list l3. -
A ACM Transactions on Trans. 1553 TITLE ABBR ISSN ACM Computing Surveys ACM Comput. Surv. 0360‐0300 ACM Journal
ACM - zoznam titulov (2016 - 2019) CONTENT TYPE TITLE ABBR ISSN Journals ACM Computing Surveys ACM Comput. Surv. 0360‐0300 Journals ACM Journal of Computer Documentation ACM J. Comput. Doc. 1527‐6805 Journals ACM Journal on Emerging Technologies in Computing Systems J. Emerg. Technol. Comput. Syst. 1550‐4832 Journals Journal of Data and Information Quality J. Data and Information Quality 1936‐1955 Journals Journal of Experimental Algorithmics J. Exp. Algorithmics 1084‐6654 Journals Journal of the ACM J. ACM 0004‐5411 Journals Journal on Computing and Cultural Heritage J. Comput. Cult. Herit. 1556‐4673 Journals Journal on Educational Resources in Computing J. Educ. Resour. Comput. 1531‐4278 Transactions ACM Letters on Programming Languages and Systems ACM Lett. Program. Lang. Syst. 1057‐4514 Transactions ACM Transactions on Accessible Computing ACM Trans. Access. Comput. 1936‐7228 Transactions ACM Transactions on Algorithms ACM Trans. Algorithms 1549‐6325 Transactions ACM Transactions on Applied Perception ACM Trans. Appl. Percept. 1544‐3558 Transactions ACM Transactions on Architecture and Code Optimization ACM Trans. Archit. Code Optim. 1544‐3566 Transactions ACM Transactions on Asian Language Information Processing 1530‐0226 Transactions ACM Transactions on Asian and Low‐Resource Language Information Proce ACM Trans. Asian Low‐Resour. Lang. Inf. Process. 2375‐4699 Transactions ACM Transactions on Autonomous and Adaptive Systems ACM Trans. Auton. Adapt. Syst. 1556‐4665 Transactions ACM Transactions on Computation Theory ACM Trans. Comput. Theory 1942‐3454 Transactions ACM Transactions on Computational Logic ACM Trans. Comput. Logic 1529‐3785 Transactions ACM Transactions on Computer Systems ACM Trans. Comput. Syst. 0734‐2071 Transactions ACM Transactions on Computer‐Human Interaction ACM Trans.