Latest in cs.pl
total 2596took 0.12s
Optimizing and Evaluating Transient Gradual TypingFeb 20 2019Gradual typing enables programmers to combine static and dynamic typing in the same language. However, ensuring a sound interaction between the static and dynamic parts can incur significant runtime cost. In this paper, we perform a detailed performance ... More Compiled Obfuscation for Data Structures in Encrypted ComputingFeb 16 2019Encrypted computing is an emerging technology based on a processor that `works encrypted', taking encrypted inputs to encrypted outputs while data remains in encrypted form throughout. It aims to secure user data against possible insider attacks by the ... More Resource-Aware Session Types for Digital ContractsFeb 16 2019Programming digital contracts comes with unique challenges, which include describing and enforcing protocols of interaction, controlling resource usage, and tracking linear assets. This article presents the type-theoretic foundation of Nomos, a programming ... More Types by Need (Extended Version)Feb 15 2019A cornerstone of the theory of lambda-calculus is that intersection types characterise termination properties. They are a flexible tool that can be adapted to various notions of termination, and that also induces adequate denotational models. Since the ... More A static higher-order dependency pair frameworkFeb 15 2019We revisit the static dependency pair method for proving termination of higher-order term rewriting and extend it in a number of ways: (1) We introduce a new rewrite formalism designed for general applicability in termination proving of higher-order rewriting, ... More Formal Foundations of Serverless ComputingFeb 15 2019Feb 18 2019A robust, large-scale web service can be difficult to engineer. When demand spikes, it must configure new machines and manage load-balancing; when demand falls, it must shut down idle machines to reduce costs; and when a machine crashes, it must quickly ... More Redundant Loads: A Software Inefficiency IndicatorFeb 14 2019Modern software packages have become increasingly complex with millions of lines of code and references to many external libraries. Redundant operations are a common performance limiter in these code bases. Missed compiler optimization opportunities, ... More Checking Observational Purity of ProceduresFeb 14 2019Verifying whether a procedure is observationally pure is useful in many software engineering scenarios. An observationally pure procedure always returns the same value for the same argument, and thus mimics a mathematical function. The problem is challenging ... More Introducing Yet Another REversible LanguageFeb 14 2019Yarel is a core reversible programming language that implements a class of permutations, defined recursively, which are primitive recursive complete. The current release of Yarel syntax and operational semantics, implemented by compiling Yarel to Java, ... More Differentials and distances in probabilistic coherence spacesFeb 13 2019In probabilistic coherence spaces, a denotational model of probabilistic functional languages, mor-phisms are analytic and therefore smooth. We explore two related applications of the corresponding derivatives. First we show how derivatives allow to compute ... More Mesh: Compacting Memory Management for C/C++ ApplicationsFeb 13 2019Programs written in C/C++ can suffer from serious memory fragmentation, leading to low utilization of memory, degraded performance, and application failure due to memory exhaustion. This paper introduces Mesh, a plug-in replacement for malloc that, for ... More Mesh: Compacting Memory Management for C/C++ ApplicationsFeb 13 2019Feb 16 2019Programs written in C/C++ can suffer from serious memory fragmentation, leading to low utilization of memory, degraded performance, and application failure due to memory exhaustion. This paper introduces Mesh, a plug-in replacement for malloc that, for ... More Cost Analysis of Nondeterministic Probabilistic ProgramsFeb 12 2019We consider the problem of expected cost analysis over nondeterministic probabilistic programs, which aims at automated methods for analyzing the resource-usage of such programs. Previous approaches for this problem could only handle nonnegative bounded ... More Program Equivalence for Algebraic Effects via ModalitiesFeb 12 2019This dissertation is concerned with the study of program equivalence and algebraic effects as they arise in the theory of programming languages. Algebraic effects represent impure behaviour in a functional programming language, such as input and output, ... More Revec: Program Rejuvenation through RevectorizationFeb 07 2019Modern microprocessors are equipped with Single Instruction Multiple Data (SIMD) or vector instructions which expose data level parallelism at a fine granularity. Programmers exploit this parallelism by using low-level vector intrinsics in their code. ... More On Quasi Ordinal Diagram SystemsFeb 06 2019The purposes of this note are the following two; we first generalize Okada-Takeuti's well quasi ordinal diagram theory, utilizing the recent result of Dershowitz-Tzameret's version of tree embedding theorem with gap conditions. Second, we discuss possible ... More Fine-Grain Checkpointing with In-Cache-Line LoggingFeb 02 2019Non-Volatile Memory offers the possibility of implementing high-performance, durable data structures. However, achieving performance comparable to well-designed data structures in non-persistent (transient) memory is difficult, primarily because of the ... More Separating Use and Reuse to Improve BothFeb 01 2019Context: Trait composition has inspired new research in the area of code reuse for object oriented (OO) languages. One of the main advantages of this kind of composition is that it makes possible to separate subtyping from subclassing; which is good for ... More ExceLint: Automatically Finding Spreadsheet Formula ErrorsJan 30 2019Spreadsheets are one of the most widely used programming environments, and are widely deployed in domains like finance where errors can have catastrophic consequences. We present a static analysis specifically designed to find spreadsheet formula errors. ... More Egyptian multiplication and some of its ramificationsJan 30 2019Fast exponentiation with an integer exponent relies on squaring of the base being compensated by halving the exponent when even. Likewise one can raise to a fractional power where doubling the exponent is compensated by taking the square root of the base. ... More Abstract I/O SpecificationJan 29 2019We recently proposed an approach for the specification and modular formal verification of the interactive (I/O) behavior of programs, based on an embedding of Petri nets into separation logic. While this approach is scalable and modular in terms of the ... More Program algebra for Turing-machine programsJan 25 2019This note presents an algebraic theory of instruction sequences with instructions for Turing tapes as basic instructions, the behaviours produced by the instruction sequences concerned under execution, and the interaction between such behaviours and the ... More Kantorovich Continuity of Probabilistic ProgramsJan 19 2019The Kantorovich metric is a canonical lifting of a distance from sets to distributions over this set. The metric also arises naturally when proving continuity properties of probabilistic programs. For instance, algorithmic stability of machine learning ... More Static Analysis for Asynchronous JavaScript ProgramsJan 11 2019Asynchrony has become an inherent element of JavaScript, as an effort to improve the scalability and performance of modern web applications. To this end, JavaScript provides programmers with a wide range of constructs and features for developing code ... More Keeping CALM: When Distributed Consistency is EasyJan 07 2019Jan 26 2019A key concern in modern distributed systems is to avoid the cost of coordination while maintaining consistent semantics. Until recently, there was no answer to the question of when coordination is actually required. In this paper we present an informal ... More Sundials/ML: Connecting OCaml to the Sundials Numeric SolversDec 31 2018This paper describes the design and implementation of a comprehensive OCaml interface to the Sundials library of numeric solvers for ordinary differential equations, differential algebraic equations, and non-linear equations. The interface provides a ... More Correct by constructionDec 21 2018Matrix code allows one to discover algorithms and to render them in code that is both compilable and is correct by construction. In this way the difficulty of verifying existing code is avoided. The method is especially important for logically dense code ... More Property-based testing for Spark StreamingDec 20 2018Stream processing has reached the mainstream in the last years, as a new generation of open source distributed stream processing systems, designed for scaling horizontally on commodity hardware, has brought the capability for processing high volume and ... More CSS Minification via Constraint Solving (Technical Report)Dec 07 2018Minification is a widely-accepted technique which aims at reducing the size of the code transmitted over the web. We study the problem of minifying Cascading Style Sheets (CSS) --- the de facto language for styling web documents. Traditionally, CSS minifiers ... More Sound Approximation of Programs with Elementary FunctionsNov 26 2018Elementary function calls are a common feature in numerical programs. While their implementions in library functions are highly optimized, their computation is nonetheless very expensive compared to plain arithmetic. Full accuracy is, however, not always ... More GASTAP: A Gas Analyzer for Smart ContractsNov 22 2018Gas 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 ... More Newton: A Language for Describing PhysicsNov 12 2018This article introduces Newton, a specification language for notating the analytic form, units of measure, and sensor signal properties for physical-object-specific invariants and general physical laws. We designed Newton to provide a means for hardware ... More A Program Logic for First-Order Encapsulated WebAssemblyNov 08 2018WebAssembly (Wasm) is the first new programming language in over 20 years to be natively supported on the web. A small-step semantics of Wasm was formally introduced by Haas et al. 2017 and mechanised in Isabelle by Watt 2018. In this report, we introduce ... More On the extreme power of nonstandard programming languagesNov 07 2018Nov 18 2018Suenaga and Hasuo introduced a nonstandard programming language ${\bf While}^{{\bf dt}}$ which models hybrid systems. We demonstrate why ${\bf While}^{{\bf dt}}$ is not suitable for modeling actual computations. GPU Acceleration of an Established Solar MHD Code using OpenACCNov 06 2018GPU accelerators have had a notable impact on high-performance computing across many disciplines. They provide high performance with low cost/power, and therefore have become a primary compute resource on many of the largest supercomputers. Here, we implement ... More Gradual Type Theory (Extended Version)Nov 06 2018Gradually typed languages are designed to support both dynamically typed and statically typed programming styles while preserving the benefits of each. While existing gradual type soundness theorems for these languages aim to show that type-based reasoning ... More Fast and exact analysis for LRU cachesNov 05 2018Dec 20 2018For applications in worst-case execution time analysis and in security, it is desirable to statically classify memory accesses into those that result in cache hits, and those that result in cache misses. Among cache replacement policies, the least recently ... More Synthesizing Symmetric LensesOct 26 2018Lenses are programs that can be run both "front to back" and "back to front," allowing data and updates to be transformed in two directions. Since their introduction, lenses have been extensively studied and applied. Recent work has also demonstrated ... More All-Path Reachability LogicOct 25 2018This paper presents a language-independent proof system for reachability properties of programs written in non-deterministic (e.g., concurrent) languages, referred to as all-path reachability logic. It derives partial-correctness properties with all-path ... More Pyro: Deep Universal Probabilistic ProgrammingOct 18 2018Pyro is a probabilistic programming language built on Python as a platform for developing advanced probabilistic models in AI research. To scale to large datasets and high-dimensional models, Pyro uses stochastic variational inference algorithms and probability ... More Relay: A New IR for Machine Learning FrameworksSep 26 2018Machine learning powers diverse services in industry including search, translation, recommendation systems, and security. The scale and importance of these models require that they be efficient, expressive, and portable across an array of heterogeneous ... More Scenic: Language-Based Scene GenerationSep 25 2018Synthetic data has proved increasingly useful in both training and testing machine learning models such as neural networks. The major problem in synthetic data generation is producing meaningful data that is not simply random but reflects properties of ... More TeSSLa: Temporal Stream-based Specification LanguageAug 31 2018Runtime verification is concerned with monitoring program traces. In particular, stream runtime verification (SRV) takes the program trace as input streams and incrementally derives output streams. SRV can check logical properties and compute temporal ... More Measuring Coverage of Prolog Programs Using Mutation TestingAug 23 2018Testing is an important aspect in professional software development, both to avoid and identify bugs as well as to increase maintainability. However, increasing the number of tests beyond a reasonable amount hinders development progress. To decide on ... More Compiling Control as Offline Partial DeductionAug 16 2018Nov 30 2018We present a new approach to a technique known as compiling control, whose aim is to compile away special mechanisms for non-standard atom selection in logic programs. It has previously been conjectured that compiling control could be implemented as an ... More Multivariant Assertion-based Guidance in Abstract InterpretationAug 15 2018Dec 17 2018Approximations during program analysis are a necessary evil, as they ensure essential properties, such as soundness and termination of the analysis, but they also imply not always producing useful results. Automatic techniques have been studied to prevent ... More Multiparty Classical ChoreographiesAug 15 2018Dec 02 2018We present Multiparty Classical Choreographies (MCC), a language model where global descriptions of communicating systems (choreographies) implement typed multiparty sessions. Typing is achieved by generalising classical linear logic to judgements that ... More A prototype-based approach to object reclassificationAug 13 2018We investigate, in the context of functional prototype-based lan- guages, a calculus of objects which might extend themselves upon receiving a message, a capability referred to by Cardelli as a self-inflicted operation. We present a sound type system ... More CT-Wasm: Type-Driven Secure Cryptography for the Web EcosystemAug 03 2018Dec 17 2018A significant amount of both client and server-side cryptography is implemented in JavaScript. Despite widespread concerns about its security, no other language has been able to match the convenience that comes from its ubiquitous support on the "web ... More Genetic algorithms in ForthJul 17 2018A method for automatically finding a program (bytecode) realizing the given algorithm is developed. The algorithm is specified as a set of tests (input\_data) $ \rightarrow $ (output\_data). Genetic methods made it possible to find the implementation ... More Competitive Parallelism: Getting Your Priorities RightJul 10 2018Multi-threaded programs have traditionally fallen into one of two domains: cooperative and competitive. These two domains have traditionally remained mostly disjoint, with cooperative threading used for increasing throughput in compute-intensive applications ... More