Skip to main content

Showing 1–23 of 23 results for author: Sergey, I

Searching in archive cs. Search in all archives.
.
  1. arXiv:2404.06477  [pdf, other

    cs.PL cs.LO

    Mechanised Hypersafety Proofs about Structured Data: Extended Version

    Authors: Vladimir Gladshtein, Qiyuan Zhao, Willow Ahrens, Saman Amarasinghe, Ilya Sergey

    Abstract: Arrays are a fundamental abstraction to represent collections of data. It is often possible to exploit structural properties of the data stored in an array (e.g., repetition or sparsity) to develop a specialised representation optimised for space efficiency. Formally reasoning about correctness of manipulations with such structured data is challenging, as they are often composed of multiple loops… ▽ More

    Submitted 9 April, 2024; originally announced April 2024.

    Comments: Extended version of the paper accepted at PLDI'24

  2. arXiv:2403.12733  [pdf, other

    cs.PL cs.LO

    Small Scale Reflection for the Working Lean User

    Authors: Vladimir Gladshtein, George Pîrlea, Ilya Sergey

    Abstract: We present the design and implementation of the Small Scale Reflection proof methodology and tactic language (a.k.a. SSR) for the Lean 4 proof assistant. Like its Coq predecessor SSReflect, our Lean 4 implementation, dubbed LeanSSR, provides powerful rewriting principles and means for effective management of hypotheses in the proof context. Unlike SSReflect for Coq, LeanSSR does not require explic… ▽ More

    Submitted 19 March, 2024; originally announced March 2024.

  3. arXiv:2305.02601  [pdf, other

    cs.SE

    Greybox Fuzzing of Distributed Systems

    Authors: Ruijie Meng, George Pîrlea, Abhik Roychoudhury, Ilya Sergey

    Abstract: Grey-box fuzzing is the lightweight approach of choice for finding bugs in sequential programs. It provides a balance between efficiency and effectiveness by conducting a biased random search over the domain of program inputs using a feedback function from observed test executions. For distributed system testing, however, the state-of-practice is represented today by only black-box tools that do n… ▽ More

    Submitted 12 August, 2023; v1 submitted 4 May, 2023; originally announced May 2023.

  4. arXiv:2108.02490  [pdf, other

    cs.SE cs.PL

    HIPPODROME: Data Race Repair using Static Analysis Summaries

    Authors: Andreea Costea, Abhishek Tiwari, Sigmund Chianasta, Kishore R, Abhik Roychoudhury, Ilya Sergey

    Abstract: Implementing bug-free concurrent programs is a challenging task in modern software development. State-of-the-art static analyses find hundreds of concurrency bugs in production code, scaling to large codebases. Yet, fixing these bugs in constantly changing codebases represents a daunting effort for programmers, particularly because a fix in the concurrent code can introduce other bugs in a subtle… ▽ More

    Submitted 6 August, 2021; v1 submitted 5 August, 2021; originally announced August 2021.

  5. arXiv:2008.05555  [pdf, other

    cs.PL

    Compiling a Higher-Order Smart Contract Language to LLVM

    Authors: Vaivaswatha Nagaraj, Jacob Johannsen, Anton Trunov, George Pîrlea, Amrit Kumar, Ilya Sergey

    Abstract: Scilla is a higher-order polymorphic typed intermediate level language for implementing smart contracts. In this talk, we describe a Scilla compiler targeting LLVM, with a focus on map** Scilla types, values, and its functional language constructs to LLVM-IR. The compiled LLVM-IR, when executed with LLVM's JIT framework, achieves a speedup of about 10x over the reference interpreter on a typic… ▽ More

    Submitted 12 August, 2020; originally announced August 2020.

    Comments: This is an extended talk abstract submitted to the 2020 Virtual LLVM Developers' Meeting (LLVM2020). It has been accepted as a poster presentation

  6. arXiv:2004.13312  [pdf, other

    cs.DS cs.PL

    Certifying Certainty and Uncertainty in Approximate Membership Query Structures -- Extended Version

    Authors: Kiran Gopinathan, Ilya Sergey

    Abstract: Approximate Membership Query structures (AMQs) rely on randomisation for time- and space-efficiency, while introducing a possibility of false positive and false negative answers. Correctness proofs of such structures involve subtle reasoning about bounds on probabilities of getting certain outcomes. Because of these subtleties, a number of unsound arguments in such proofs have been made over the y… ▽ More

    Submitted 28 April, 2020; originally announced April 2020.

    Comments: 24 pages

  7. QED at Large: A Survey of Engineering of Formally Verified Software

    Authors: Talia Ringer, Karl Palmskog, Ilya Sergey, Milos Gligoric, Zachary Tatlock

    Abstract: Development of formal proofs of correctness of programs can increase actual and perceived reliability and facilitate better understanding of program specifications and their underlying assumptions. Tools supporting such development have been available for over 40 years, but have only recently seen wide practical use. Projects based on construction of machine-checked formal proofs are now reaching… ▽ More

    Submitted 13 March, 2020; originally announced March 2020.

    Comments: 183 pages, for errata see https://proofengineering.org/qed_errata.html

    ACM Class: F.3.1; D.2.4; I.2.3

    Journal ref: Foundations and Trends in Programming Languages, Vol. 5, No. 2-3 (Sept. 2019), pp. 102-281

  8. arXiv:2001.10723  [pdf, other

    cs.PL cs.LO

    Concise Read-Only Specifications for Better Synthesis of Programs with Pointers -- Extended Version

    Authors: Andreea Costea, Amy Zhu, Nadia Polikarpova, Ilya Sergey

    Abstract: In program synthesis there is a well-known trade-off between concise and strong specifications: if a specification is too verbose, it might be harder to write than the program; if it is too weak, the synthesised program might not match the user's intent. In this work we explore the use of annotations for restricting memory access permissions in program synthesis, and show that they can make specif… ▽ More

    Submitted 29 January, 2020; originally announced January 2020.

  9. arXiv:1811.10403  [pdf, other

    cs.PL cs.CL

    Running on Fumes--Preventing Out-of-Gas Vulnerabilities in Ethereum Smart Contracts using Static Resource Analysis

    Authors: Elvira Albert, Pablo Gordillo, Albert Rubio, Ilya Sergey

    Abstract: Gas is a measurement unit of the computational effort that it will take to execute every single operation that takes part in the Ethereum blockchain platform. Each instruction executed by the Ethereum Virtual Machine (EVM) has an associated gas consumption specified by Ethereum. If a transaction exceeds the amount of gas allotted by the user (known as gas limit), an out-of-gas exception is raised.… ▽ More

    Submitted 7 August, 2019; v1 submitted 22 November, 2018; originally announced November 2018.

  10. A True Positives Theorem for a Static Race Detector - Extended Version

    Authors: Nikos Gorogiannis, Peter W. O'Hearn, Ilya Sergey

    Abstract: RacerD is a static race detector that has been proven to be effective in engineering practice: it has seen thousands of data races fixed by developers before reaching production, and has supported the migration of Facebook's Android app rendering infrastructure from a single-threaded to a multi-threaded architecture. We prove a True Positives Theorem stating that, under certain assumptions, an ide… ▽ More

    Submitted 8 November, 2018; originally announced November 2018.

    Journal ref: Proc. ACM Program. Lang. 3, POPL, Article 57 (January 2019)

  11. arXiv:1810.11605  [pdf, other

    cs.CR

    Exploiting The Laws of Order in Smart Contracts

    Authors: Aashish Kolluri, Ivica Nikolic, Ilya Sergey, Aquinas Hobor, Prateek Saxena

    Abstract: We investigate a family of bugs in blockchain-based smart contracts, which we call event-ordering (or EO) bugs. These bugs are intimately related to the dynamic ordering of contract events, i.e., calls of its functions on the blockchain, and enable potential exploits of millions of USD worth of Ether. Known examples of such bugs and prior techniques to detect them have been restricted to a small n… ▽ More

    Submitted 27 October, 2018; originally announced October 2018.

    Comments: 18 pages, 12 figures

  12. Structuring the Synthesis of Heap-Manipulating Programs - Extended Version

    Authors: Nadia Polikarpova, Ilya Sergey

    Abstract: This paper describes a deductive approach to synthesizing imperative programs with pointers from declarative specifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions---a pre- and a postcondition---which describe two states of the symbolic heap, and derives a program that transforms one state into the other, guided by the shape of the heap. The progr… ▽ More

    Submitted 8 November, 2018; v1 submitted 18 July, 2018; originally announced July 2018.

    Journal ref: Proc. ACM Program. Lang. 3, POPL, Article 72 (January 2019)

  13. EthIR: A Framework for High-Level Analysis of Ethereum Bytecode

    Authors: Elvira Albert, Pablo Gordillo, Benjamin Livshits, Albert Rubio, Ilya Sergey

    Abstract: Analyzing Ethereum bytecode, rather than the source code from which it was generated, is a necessity when: (1) the source code is not available (e.g., the blockchain only stores the bytecode), (2) the information to be gathered in the analysis is only visible at the level of bytecode (e.g., gas consumption is specified at the level of EVM instructions), (3) the analysis results may be affected by… ▽ More

    Submitted 10 May, 2018; originally announced May 2018.

  14. arXiv:1802.06038  [pdf, other

    cs.CR

    Finding The Greedy, Prodigal, and Suicidal Contracts at Scale

    Authors: Ivica Nikolic, Aashish Kolluri, Ilya Sergey, Prateek Saxena, Aquinas Hobor

    Abstract: Smart contracts---stateful executable objects hosted on blockchains like Ethereum---carry billions of dollars worth of coins and cannot be updated once deployed. We present a new systematic characterization of a class of trace vulnerabilities, which result from analyzing multiple invocations of a contract over its lifetime. We focus attention on three example properties of such trace vulnerabiliti… ▽ More

    Submitted 14 March, 2018; v1 submitted 16 February, 2018; originally announced February 2018.

  15. arXiv:1802.05969  [pdf, other

    cs.DC

    Paxos Consensus, Deconstructed and Abstracted (Extended Version)

    Authors: Álvaro García-Pérez, Alexey Gotsman, Yuri Meshman, Ilya Sergey

    Abstract: Lamport's Paxos algorithm is a classic consensus protocol for state machine replication in environments that admit crash failures. Many versions of Paxos exploit the protocol's intrinsic properties for the sake of gaining better run-time performance, thus widening the gap between the original description of the algorithm, which was proven correct, and its real-world implementations. In this work,… ▽ More

    Submitted 16 February, 2018; originally announced February 2018.

    Comments: Accepted for publication in the 27th European Symposium on Programming (ESOP'18)

    MSC Class: 68W15

  16. arXiv:1801.00687  [pdf, other

    cs.PL

    Scilla: a Smart Contract Intermediate-Level LAnguage

    Authors: Ilya Sergey, Amrit Kumar, Aquinas Hobor

    Abstract: This paper outlines key design principles of Scilla---an intermediate-level language for verified smart contracts. Scilla provides a clean separation between the communication aspect of smart contracts on a blockchain, allowing for the rich interaction patterns, and a programming component, which enjoys principled semantics and is amenable to formal verification. Scilla is not meant to be a high… ▽ More

    Submitted 2 January, 2018; originally announced January 2018.

    Comments: 12 pages

  17. arXiv:1702.05511  [pdf, ps, other

    cs.DC

    A Concurrent Perspective on Smart Contracts

    Authors: Ilya Sergey, Aquinas Hobor

    Abstract: In this paper, we explore remarkable similarities between multi-transactional behaviors of smart contracts in cryptocurrencies such as Ethereum and classical problems of shared-memory concurrency. We examine two real-world examples from the Ethereum blockchain and analyzing how they are vulnerable to bugs that are closely reminiscent to those that often occur in traditional concurrent programs. We… ▽ More

    Submitted 17 February, 2017; originally announced February 2017.

    Comments: 15 pages

  18. arXiv:1606.01400  [pdf, other

    cs.PL

    Operational Aspects of C/C++ Concurrency

    Authors: Anton Podkopaev, Ilya Sergey, Aleksandar Nanevski

    Abstract: In this work, we present a family of operational semantics that gradually approximates the realistic program behaviors in the C/C++11 memory model. Each semantics in our framework is built by elaborating and combining two simple ingredients: viewfronts and operation buffers. Viewfronts allow us to express the spatial aspect of thread interaction, i.e., which values a thread can read, while operati… ▽ More

    Submitted 9 July, 2016; v1 submitted 4 June, 2016; originally announced June 2016.

  19. arXiv:1604.08080  [pdf, other

    cs.LO cs.DC cs.PL

    Concurrent Data Structures Linked in Time

    Authors: Germán Andrés Delbianco, Ilya Sergey, Aleksandar Nanevski, Anindya Banerjee

    Abstract: Arguments about correctness of a concurrent data structure are typically carried out by using the notion of linearizability and specifying the linearization points of the data structure's procedures. Such arguments are often cumbersome as the linearization points' position in time can be dynamic (depend on the interference, run-time values and events from the past, or even future), non-local (appe… ▽ More

    Submitted 18 January, 2017; v1 submitted 27 April, 2016; originally announced April 2016.

    ACM Class: F.3.1; F.1.2; D.2.4

  20. arXiv:1509.06220  [pdf, other

    cs.LO cs.PL

    Hoare-style Specifications as Correctness Conditions for Non-linearizable Concurrent Objects

    Authors: Ilya Sergey, Aleksandar Nanevski, Anindya Banerjee, German Andres Delbianco

    Abstract: Designing scalable concurrent objects, which can be efficiently used on multicore processors, often requires one to abandon standard specification techniques, such as linearizability, in favor of more relaxed consistency requirements. However, the variety of alternative correctness conditions makes it difficult to choose which one to employ in a particular case, and to compose them when using obje… ▽ More

    Submitted 21 July, 2016; v1 submitted 21 September, 2015; originally announced September 2015.

    Comments: 18 pages

    ACM Class: D.3.1; F.3.1

  21. arXiv:1410.0306  [pdf, other

    cs.LO

    Specifying and Verifying Concurrent Algorithms with Histories and Subjectivity

    Authors: Ilya Sergey, Aleksandar Nanevski, Anindya Banerjee

    Abstract: We present a lightweight approach to Hoare-style specifications for fine-grained concurrency, based on a notion of time-stamped histories that abstractly capture atomic changes in the program state. Our key observation is that histories form a partial commutative monoid, a structure fundamental for representation of concurrent resources. This insight provides us with a unifying mechanism that allo… ▽ More

    Submitted 1 October, 2014; originally announced October 2014.

    Comments: 17 pages

  22. Pushdown flow analysis with abstract garbage collection

    Authors: J. Ian Johnson, Ilya Sergey, Christopher Earl, Matthew Might, David Van Horn

    Abstract: In the static analysis of functional programs, pushdown flow analysis and abstract garbage collection push the boundaries of what we can learn about programs statically. This work illuminates and poses solutions to theoretical and practical challenges that stand in the way of combining the power of these techniques. Pushdown flow analysis grants unbounded yet computable polyvariance to the analysi… ▽ More

    Submitted 19 June, 2014; originally announced June 2014.

    ACM Class: D.3.4; F.3.2

    Journal ref: Journal of Functional Programming, Volume 24, Special Issue 2-3, May 2014, pp 218-283

  23. arXiv:1207.1813  [pdf, other

    cs.PL

    Introspective Pushdown Analysis of Higher-Order Programs

    Authors: Christopher Earl, Ilya Sergey, Matthew Might, David Van Horn

    Abstract: In the static analysis of functional programs, pushdown flow analysis and abstract garbage collection skirt just inside the boundaries of soundness and decidability. Alone, each method reduces analysis times and boosts precision by orders of magnitude. This work illuminates and conquers the theoretical challenges that stand in the way of combining the power of these techniques. The challenge in ma… ▽ More

    Submitted 7 July, 2012; originally announced July 2012.

    Comments: Proceedings of the 17th ACM SIGPLAN International Conference on Functional Programming, 2012, ACM

    ACM Class: D.3.4; F.3.2