Skip to main content

Showing 1–47 of 47 results for author: Van Horn, D

Searching in archive cs. Search in all archives.
.
  1. arXiv:2401.13045  [pdf

    stat.ML cs.LG stat.AP stat.ME

    Assessment of Sports Concussion in Female Athletes: A Role for Neuroinformatics?

    Authors: Rachel Edelstein, Sterling Gutterman, Benjamin Newman, John Darrell Van Horn

    Abstract: Over the past decade, the intricacies of sports-related concussions among female athletes have become readily apparent. Traditional clinical methods for diagnosing concussions suffer limitations when applied to female athletes, often failing to capture subtle changes in brain structure and function. Advanced neuroinformatics techniques and machine learning models have become invaluable assets in t… ▽ More

    Submitted 9 March, 2024; v1 submitted 23 January, 2024; originally announced January 2024.

  2. arXiv:2309.04607  [pdf

    cs.CL cs.AI

    Linking Symptom Inventories using Semantic Textual Similarity

    Authors: Eamonn Kennedy, Shashank Vadlamani, Hannah M Lindsey, Kelly S Peterson, Kristen Dams OConnor, Kenton Murray, Ronak Agarwal, Houshang H Amiri, Raeda K Andersen, Talin Babikian, David A Baron, Erin D Bigler, Karen Caeyenberghs, Lisa Delano-Wood, Seth G Disner, Ekaterina Dobryakova, Blessen C Eapen, Rachel M Edelstein, Carrie Esopenko, Helen M Genova, Elbert Geuze, Naomi J Goodrich-Hunsaker, Jordan Grafman, Asta K Haberg, Cooper B Hodges , et al. (57 additional authors not shown)

    Abstract: An extensive library of symptom inventories has been developed over time to measure clinical symptoms, but this variety has led to several long standing issues. Most notably, results drawn from different settings and studies are not comparable, which limits reproducibility. Here, we present an artificial intelligence (AI) approach using semantic textual similarity (STS) to link symptoms and scores… ▽ More

    Submitted 8 September, 2023; originally announced September 2023.

  3. Absynthe: Abstract Interpretation-Guided Synthesis

    Authors: Sankha Narayan Guria, Jeffrey S. Foster, David Van Horn

    Abstract: Synthesis tools have seen significant success in recent times. However, past approaches often require a complete and accurate embedding of the source language in the logic of the underlying solver, an approach difficult for industrial-grade languages. Other approaches couple the semantics of the source language with purpose-built synthesizers, necessarily tying the synthesis engine to a particular… ▽ More

    Submitted 24 April, 2023; v1 submitted 25 February, 2023; originally announced February 2023.

    Comments: 22 pages, 6 figures, this is a preprint of a paper conditionally accepted at Programming Language Design and Implementation (PLDI) 2023

  4. arXiv:2301.01189  [pdf

    cs.DB

    On the long-term archiving of research data

    Authors: Cyril Pernet, Claus Svarer, Ross Blair, John D. Van Horn, Russell A. Poldrack

    Abstract: Accessing research data at any time is what FAIR (Findable Accessible Interoperable Reusable) data sharing aims to achieve at scale. Yet, we argue that it is not sustainable to keep accumulating and maintaining all datasets for rapid access, considering the monetary and ecological cost of maintaining repositories. Here, we address the issue of cold data storage: when to dispose of data for offline… ▽ More

    Submitted 3 January, 2023; originally announced January 2023.

    Comments: Editorial style paper, supported by an analysis of the OpenNeuro repository, about the long term FAIR management of datasets

  5. arXiv:2201.13394  [pdf, other

    cs.PL cs.SE

    A Formal Model of Checked C

    Authors: Liyi Li, Yiyun Liu, Deena L. Postol, Leonidas Lampropoulos, David Van Horn, Michael Hicks

    Abstract: We present a formal model of Checked C, a dialect of C that aims to enforce spatial memory safety. Our model pays particular attention to the semantics of dynamically sized, potentially null-terminated arrays. We formalize this model in Coq, and prove that any spatial memory safety errors can be blamed on portions of the program labeled unchecked; this is a Checked C feature that supports incremen… ▽ More

    Submitted 31 January, 2022; originally announced January 2022.

    Comments: This is an extended version of a paper that appears at the 2022 Computer Security Foundations Symposium

    ACM Class: D.3.1

  6. arXiv:2102.13183  [pdf, other

    cs.PL

    RbSyn: Type- and Effect-Guided Program Synthesis

    Authors: Sankha Narayan Guria, Jeffrey S. Foster, David Van Horn

    Abstract: In recent years, researchers have explored component-based synthesis, which aims to automatically construct programs that operate by composing calls to existing APIs. However, prior work has not considered efficient synthesis of methods with side effects, e.g., web app methods that update a database. In this paper, we introduce RbSyn, a novel type- and effect-guided synthesis tool for Ruby. An RbS… ▽ More

    Submitted 7 April, 2021; v1 submitted 25 February, 2021; originally announced February 2021.

    Comments: 17 pages, 13 figures, this is a technical report (with appendix) of a paper to appear in Programming Language Design and Implementation (PLDI) 2021

  7. arXiv:2007.12630  [pdf

    cs.PL

    Corpse Reviver: Sound and Efficient Gradual Typing via Contract Verification

    Authors: Cameron Moy, Phúc C. Nguyen, Sam Tobin-Hochstadt, David Van Horn

    Abstract: Gradually-typed programming languages permit the incremental addition of static types to untyped programs. To remain sound, languages insert run-time checks at the boundaries between typed and untyped code. Unfortunately, performance studies have shown that the overhead of these checks can be disastrously high, calling into question the viability of sound gradual typing. In this paper, we show tha… ▽ More

    Submitted 9 October, 2020; v1 submitted 24 July, 2020; originally announced July 2020.

    Comments: To appear in POPL 2021

  8. arXiv:1904.03521  [pdf, other

    cs.PL

    Type-Level Computations for Ruby Libraries

    Authors: Milod Kazerounian, Sankha Narayan Guria, Niki Vazou, Jeffrey S. Foster, David Van Horn

    Abstract: Many researchers have explored ways to bring static typing to dynamic languages. However, to date, such systems are not precise enough when types depend on values, which often arises when using certain Ruby libraries. For example, the type safety of a database query in Ruby on Rails depends on the table and column names used in the query. To address this issue, we introduce CompRDL, a type system… ▽ More

    Submitted 6 April, 2019; originally announced April 2019.

    Comments: 22 pages, this is a technical report (with appendix) of a paper to appear in Programming Language Design and Implementation (PLDI 2019)

  9. Size-Change Termination as a Contract

    Authors: Phuc C. Nguyen, Thomas Gilray, Sam Tobin-Hochstadt, David Van Horn

    Abstract: Termination is an important but undecidable program property, which has led to a large body of work on static methods for conservatively predicting or enforcing termination. One such method is the size-change termination approach of Lee, Jones, and Ben-Amram, which operates in two phases: (1) abstract programs into "size-change graphs," and (2) check these graphs for the size-change property: the… ▽ More

    Submitted 25 April, 2019; v1 submitted 6 August, 2018; originally announced August 2018.

    Journal ref: Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '19), June 22-26, 2019, Phoenix, AZ, USA

  10. Constructive Galois Connections

    Authors: David Darais, David Van Horn

    Abstract: Galois connections are a foundational tool for structuring abstraction in semantics and their use lies at the heart of the theory of abstract interpretation. Yet, mechanization of Galois connections using proof assistants remains limited to restricted modes of use, preventing their general application in mechanized metatheory and certified programming. This paper presents constructive Galois con… ▽ More

    Submitted 23 July, 2018; originally announced July 2018.

    Journal ref: J. Funct. Prog. 29 (2019) e11

  11. Gradual Liquid Type Inference

    Authors: Niki Vazou, Éric Tanter, David Van Horn

    Abstract: Liquid typing provides a decidable refinement inference mechanism that is convenient but subject to two major issues: (1) inference is global and requires top-level annotations, making it unsuitable for inference of modular code components and prohibiting its applicability to library code, and (2) inference failure results in obscure error messages. These difficulties seriously hamper the migratio… ▽ More

    Submitted 30 October, 2019; v1 submitted 5 July, 2018; originally announced July 2018.

    Comments: To appear at OOPSLA 2018

  12. arXiv:1806.03541  [pdf, other

    cs.PL

    Functional Pearl: Theorem Proving for All (Equational Reasoning in Liquid Haskell)

    Authors: Niki Vazou, Joachim Breitner, Will Kunkel, David Van Horn, Graham Hutton

    Abstract: Equational reasoning is one of the key features of pure functional languages such as Haskell. To date, however, such reasoning always took place externally to Haskell, either manually on paper, or mechanised in a theorem prover. This article shows how equational reasoning can be performed directly and seamlessly within Haskell itself, and be checked using Liquid Haskell. In particular, language le… ▽ More

    Submitted 9 June, 2018; originally announced June 2018.

    Comments: Submitted to Haskell'18

  13. Soft Contract Verification for Higher-Order Stateful Programs

    Authors: Phuc C. Nguyen, Thomas Gilray, Sam Tobin-Hochstadt, David Van Horn

    Abstract: Software contracts allow programmers to state rich program properties using the full expressive power of an object language. However, since they are enforced at runtime, monitoring contracts imposes significant overhead and delays error discovery. So contract verification aims to guarantee all or most of these properties ahead of time, enabling valuable optimizations and yielding a more general as… ▽ More

    Submitted 9 November, 2017; originally announced November 2017.

    Comments: ACM SIGPLAN Symposium on Principles of Programming Language (POPL)

    Journal ref: Proceedings of the ACM on Programming Languages, Vol. 2, No. POPL, Article 51. Publication date: January 2018

  14. Abstracting Definitional Interpreters

    Authors: David Darais, Nicholas Labich, Phuc C. Nguyen, David Van Horn

    Abstract: In this functional pearl, we examine the use of definitional interpreters as a basis for abstract interpretation of higher-order programming languages. As it turns out, definitional interpreters, especially those written in monadic style, can provide a nice basis for a wide variety of collecting semantics, abstract interpretations, symbolic executions, and their intermixings. But the real insigh… ▽ More

    Submitted 15 July, 2017; originally announced July 2017.

    Journal ref: Proc. ACM Program. Lang. 1, ICFP, Article 12 (September 2017)

  15. arXiv:1608.06012  [pdf, other

    cs.PL

    A Vision for Online Verification-Validation

    Authors: Matthew A. Hammer, Bor-Yuh Evan Chang, David Van Horn

    Abstract: Today's programmers face a false choice between creating software that is extensible and software that is correct. Specifically, dynamic languages permit software that is richly extensible (via dynamic code loading, dynamic object extension, and various forms of reflection), and today's programmers exploit this flexibility to "bring their own language features" to enrich extensible languages (e.g.… ▽ More

    Submitted 21 August, 2016; originally announced August 2016.

  16. arXiv:1511.06965  [pdf, ps, other

    cs.PL

    Constructive Galois Connections: Taming the Galois Connection Framework for Mechanized Metatheory

    Authors: David Darais, David Van Horn

    Abstract: Galois connections are a foundational tool for structuring abstraction in semantics and their use lies at the heart of the theory of abstract interpretation. Yet, mechanization of Galois connections remains limited to restricted modes of use, preventing their general application in mechanized metatheory and certified programming. This paper presents constructive Galois connections, a variant of… ▽ More

    Submitted 26 October, 2016; v1 submitted 21 November, 2015; originally announced November 2015.

  17. arXiv:1507.04817  [pdf, other

    cs.PL

    Higher-order symbolic execution for contract verification and refutation

    Authors: Phuc C. Nguyen, Sam Tobin-Hochstadt, David Van Horn

    Abstract: We present a new approach to automated reasoning about higher-order programs by endowing symbolic execution with a notion of higher-order, symbolic values. Our approach is sound and relatively complete with respect to a first-order solver for base type values. Therefore, it can form the basis of automated verification and bug-finding tools for higher-order programs. To validate our approach, we… ▽ More

    Submitted 20 March, 2016; v1 submitted 16 July, 2015; originally announced July 2015.

    Comments: This paper unifies and expands upon the work presented in the papers "Soft contract verification" [arXiv:1307.6239], and "Relatively complete counterexamples for higher-order programs" [arXiv:1411.3967]. It also subsumes the work in the paper "Higher-order symbolic execution via contracts" [arXiv:1103.1362]

  18. arXiv:1507.03559  [pdf, other

    cs.PL

    Mechanically Verified Calculational Abstract Interpretation

    Authors: David Darais, David Van Horn

    Abstract: Calculational abstract interpretation, long advocated by Cousot, is a technique for deriving correct-by-construction abstract interpreters from the formal semantics of programming languages. This paper addresses the problem of deriving correct-by-verified-construction abstract interpreters with the use of a proof assistant. We identify several technical challenges to overcome with the aim of sup… ▽ More

    Submitted 13 July, 2015; originally announced July 2015.

  19. Pushdown Control-Flow Analysis for Free

    Authors: Thomas Gilray, Steven Lyde, Michael D. Adams, Matthew Might, David Van Horn

    Abstract: Traditional control-flow analysis (CFA) for higher-order languages, whether implemented by constraint-solving or abstract interpretation, introduces spurious connections between callers and callees. Two distinct invocations of a function will necessarily pollute one another's return-flow. Recently, three distinct approaches have been published which provide perfect call-stack precision in a comput… ▽ More

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

    Comments: in Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2016

    ACM Class: D.3.4

  20. Incremental Computation with Names

    Authors: Matthew A. Hammer, Jana Dunfield, Kyle Headley, Nicholas Labich, Jeffrey S. Foster, Michael Hicks, David Van Horn

    Abstract: Over the past thirty years, there has been significant progress in developing general-purpose, language-based approaches to incremental computation, which aims to efficiently update the result of a computation when an input is changed. A key design challenge in such approaches is how to provide efficient incremental support for a broad range of programs. In this paper, we argue that first-class na… ▽ More

    Submitted 23 March, 2021; v1 submitted 26 March, 2015; originally announced March 2015.

    Comments: OOPSLA '15, October 25-30, 2015, Pittsburgh, PA, USA

    ACM Class: D.3.1; D.3.3; F.3.2

  21. arXiv:1412.4053  [pdf, other

    cs.PL

    Running Probabilistic Programs Backwards

    Authors: Neil Toronto, Jay McCarthy, David Van Horn

    Abstract: Many probabilistic programming languages allow programs to be run under constraints in order to carry out Bayesian inference. Running programs under constraints could enable other uses such as rare event simulation and probabilistic verification---except that all such probabilistic languages are necessarily limited because they are defined or implemented in terms of an impoverished theory of proba… ▽ More

    Submitted 16 January, 2015; v1 submitted 12 December, 2014; originally announced December 2014.

    Comments: 26 pages, ESOP 2015 (to appear)

  22. arXiv:1411.3967  [pdf, other

    cs.PL

    Relatively Complete Counterexamples for Higher-Order Programs

    Authors: Phuc C. Nguyen, David Van Horn

    Abstract: In this paper, we study the problem of generating inputs to a higher-order program causing it to error. We first study the problem in the setting of PCF, a typed, core functional language and contribute the first relatively complete method for constructing counterexamples for PCF programs. The method is relatively complete in the sense of Hoare logic; completeness is reduced to the completeness of… ▽ More

    Submitted 21 April, 2015; v1 submitted 14 November, 2014; originally announced November 2014.

    Comments: In Proceedings of the 36th annual ACM SIGPLAN conference on Programming Language Design and Implementation, Portland, Oregon, June 2015

    ACM Class: D.2.4; D.3.1

  23. Galois Transformers and Modular Abstract Interpreters

    Authors: David Darais, Matthew Might, David Van Horn

    Abstract: The design and implementation of static analyzers has become increasingly systematic. Yet for a given language or analysis feature, it often requires tedious and error prone work to implement an analyzer and prove it sound. In short, static analysis features and their proofs of soundness do not compose well, causing a dearth of reuse in both implementation and metatheory. We solve the problem of… ▽ More

    Submitted 5 October, 2015; v1 submitted 14 November, 2014; originally announced November 2014.

    Comments: OOPSLA '15, October 25-30, 2015, Pittsburgh, PA, USA

    ACM Class: F.3.2

  24. Pruning, Pushdown Exception-Flow Analysis

    Authors: Shuying Liang, Weibin Sun, Matthew Might, Andy Keep, David Van Horn

    Abstract: Statically reasoning in the presence of exceptions and about the effects of exceptions is challenging: exception-flows are mutually determined by traditional control-flow and points-to analyses. We tackle the challenge of analyzing exception-flows from two angles. First, from the angle of pruning control-flows (both normal and exceptional), we derive a pushdown framework for an object-oriented lan… ▽ More

    Submitted 10 September, 2014; originally announced September 2014.

    Comments: 14th IEEE International Working Conference on Source Code Analysis and Manipulation

  25. 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

  26. arXiv:1311.5825  [pdf, other

    cs.PL

    Flow analysis, linearity, and PTIME

    Authors: David Van Horn, Harry G. Mairson

    Abstract: Flow analysis is a ubiquitous and much-studied component of compiler technology---and its variations abound. Amongst the most well known is Shivers' 0CFA; however, the best known algorithm for 0CFA requires time cubic in the size of the analyzed program and is unlikely to be improved. Consequently, several analyses have been designed to approximate 0CFA by trading precision for faster computation.… ▽ More

    Submitted 22 November, 2013; originally announced November 2013.

    Comments: Appears in The 15th International Static Analysis Symposium (SAS 2008), Valencia, Spain, July 2008

  27. arXiv:1311.5810  [pdf, other

    cs.PL

    Deciding $k$CFA is complete for EXPTIME

    Authors: David Van Horn, Harry G. Mairson

    Abstract: We give an exact characterization of the computational complexity of the $k$CFA hierarchy. For any $k > 0$, we prove that the control flow decision problem is complete for deterministic exponential time. This theorem validates empirical observations that such control flow analysis is intractable. It also provides more general insight into the complexity of abstract interpretation.

    Submitted 22 November, 2013; originally announced November 2013.

    Comments: Appeared in The 13th ACM SIGPLAN International Conference on Functional Programming (ICFP'08), Victoria, British Columbia, Canada, September 2008

  28. arXiv:1311.4733  [pdf, other

    cs.PL

    The Complexity of Flow Analysis in Higher-Order Languages

    Authors: David Van Horn

    Abstract: This dissertation proves lower bounds on the inherent difficulty of deciding flow analysis problems in higher-order programming languages. We give exact characterizations of the computational complexity of 0CFA, the $k$CFA hierarchy, and related analyses. In each case, we precisely capture both the expressiveness and feasibility of the analysis, identifying the elements responsible for the trade-o… ▽ More

    Submitted 19 November, 2013; originally announced November 2013.

  29. arXiv:1311.4231  [pdf, other

    cs.PL

    Resolving and Exploiting the $k$-CFA Paradox

    Authors: Matthew Might, Yannis Smaragdakis, David Van Horn

    Abstract: Low-level program analysis is a fundamental problem, taking the shape of "flow analysis" in functional languages and "points-to" analysis in imperative and object-oriented languages. Despite the similarities, the vocabulary and results in the two communities remain largely distinct, with limited cross-understanding. One of the few links is Shivers's $k$-CFA work, which has advanced the concept of… ▽ More

    Submitted 17 November, 2013; originally announced November 2013.

    Comments: Appears in the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation (PLDI'10)

  30. arXiv:1311.4201  [pdf, ps, other

    cs.PL cs.CR

    Sound and Precise Malware Analysis for Android via Pushdown Reachability and Entry-Point Saturation

    Authors: Shuying Liang, Andrew W. Keep, Matthew Might, Steven Lyde, Thomas Gilray, Petey Aldous, David Van Horn

    Abstract: We present Anadroid, a static malware analysis framework for Android apps. Anadroid exploits two techniques to soundly raise precision: (1) it uses a pushdown system to precisely model dynamically dispatched interprocedural and exception-driven control-flow; (2) it uses Entry-Point Saturation (EPS) to soundly approximate all possible interleavings of asynchronous entry points in Android applicatio… ▽ More

    Submitted 17 November, 2013; originally announced November 2013.

    Comments: Appears in 3rd Annual ACM CCS workshop on Security and Privacy in SmartPhones and Mobile Devices (SPSM'13), Berlin, Germany, 2013

    ACM Class: D.2.0; F.3.2

  31. arXiv:1311.4198  [pdf, ps, other

    cs.PL

    AnaDroid: Malware Analysis of Android with User-supplied Predicates

    Authors: Shuying Liang, Matthew Might, David Van Horn

    Abstract: Today's mobile platforms provide only coarse-grained permissions to users with regard to how third- party applications use sensitive private data. Unfortunately, it is easy to disguise malware within the boundaries of legitimately-granted permissions. For instance, granting access to "contacts" and "internet" may be necessary for a text-messaging application to function, even though the user does… ▽ More

    Submitted 17 November, 2013; originally announced November 2013.

    Comments: Appears in the Workshop on Tools for Automatic Program Analysis, Seattle, Washington, June 2013

  32. Soft Contract Verification

    Authors: Phuc C. Nguyen, Sam Tobin-Hochstadt, David Van Horn

    Abstract: Behavioral software contracts are a widely used mechanism for governing the flow of values between components. However, run-time monitoring and enforcement of contracts imposes significant overhead and delays discovery of faulty components to run-time. To overcome these issues, we present soft contract verification, which aims to statically prove either complete or partial contract correctness o… ▽ More

    Submitted 16 June, 2014; v1 submitted 23 July, 2013; originally announced July 2013.

    Comments: ICFP '14, September 1-6, 2014, Gothenburg, Sweden

    ACM Class: D.2.4; D.3.1

  33. From Principles to Practice with Class in the First Year

    Authors: Sam Tobin-Hochstadt, David Van Horn

    Abstract: We propose a bridge between functional and object-oriented programming in the first-year curriculum. Traditionally, curricula that begin with functional programming transition to a professional, usually object-oriented, language in the second course. This transition poses obstacles for students, and often results in confusing the details of development environments, syntax, and libraries with the… ▽ More

    Submitted 10 December, 2013; v1 submitted 19 June, 2013; originally announced June 2013.

    Comments: In Proceedings TFPIE 2013, arXiv:1312.2216

    Journal ref: EPTCS 136, 2013, pp. 1-15

  34. Abstracting Abstract Control (Extended)

    Authors: J. Ian Johnson, David Van Horn

    Abstract: The strength of a dynamic language is also its weakness: run-time flexibility comes at the cost of compile-time predictability. Many of the hallmarks of dynamic languages such as closures, continuations, various forms of reflection, and a lack of static types make many programmers rejoice, while compiler writers, tool developers, and verification engineers lament. The dynamism of these features si… ▽ More

    Submitted 14 August, 2014; v1 submitted 14 May, 2013; originally announced May 2013.

    Comments: To appear at DLS '14

    ACM Class: F.3.2

  35. arXiv:1302.2692  [pdf, ps, other

    cs.PL

    Pushdown Exception-Flow Analysis of Object-Oriented Programs

    Authors: Shuying Liang, Matthew Might, Thomas Gilray, David Van Horn

    Abstract: Statically reasoning in the presence of and about exceptions is challenging: exceptions worsen the well-known mutual recursion between data-flow and control-flow analysis. The recent development of pushdown control-flow analysis for the λ-calculus hints at a way to improve analysis of exceptions: a pushdown stack can precisely match catches to throws in the same way it matches returns to calls. Th… ▽ More

    Submitted 11 February, 2013; originally announced February 2013.

  36. Optimizing Abstract Abstract Machines

    Authors: J. Ian Johnson, Nicholas Labich, Matthew Might, David Van Horn

    Abstract: The technique of abstracting abstract machines (AAM) provides a systematic approach for deriving computable approximations of evaluators that are easily proved sound. This article contributes a complementary step-by-step process for subsequently going from a naive analyzer derived under the AAM approach, to an efficient and correct implementation. The end result of the process is a two to three or… ▽ More

    Submitted 24 July, 2013; v1 submitted 15 November, 2012; originally announced November 2012.

    Comments: Proceedings of the International Conference on Functional Programming 2013 (ICFP 2013). Boston, Massachusetts. September, 2013

    ACM Class: F.3.2

  37. 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

  38. arXiv:1109.4467  [pdf, ps, other

    cs.PL

    Pushdown Abstractions of JavaScript

    Authors: David Van Horn, Matthew Might

    Abstract: We design a family of program analyses for JavaScript that make no approximation in matching calls with returns, exceptions with handlers, and breaks with labels. We do so by starting from an established reduction semantics for JavaScript and systematically deriving its intensional abstract interpretation. Our first step is to transform the semantics into an equivalent low-level abstract machine:… ▽ More

    Submitted 20 December, 2011; v1 submitted 20 September, 2011; originally announced September 2011.

    ACM Class: F.3.2

  39. arXiv:1107.3539  [pdf, ps, other

    cs.PL

    Systematic Abstraction of Abstract Machines

    Authors: David Van Horn, Matthew Might

    Abstract: We describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines for higher-order and imperative programming languages. To demonstrate the technique and support our claim, we transform the CEK machine of Felleisen and Friedman, a lazy variant of Krivine's machine, and the stack-inspecting CM… ▽ More

    Submitted 18 July, 2011; originally announced July 2011.

  40. arXiv:1105.1743  [pdf, ps, other

    cs.PL

    Abstracting Abstract Machines: A Systematic Approach to Higher-Order Program Analysis

    Authors: David Van Horn, Matthew Might

    Abstract: Predictive models are fundamental to engineering reliable software systems. However, designing conservative, computable approximations for the behavior of programs (static analyses) remains a difficult and error-prone process for modern high-level programming languages. What analysis designers need is a principled method for navigating the gap between semantics and analytic models: analysis design… ▽ More

    Submitted 9 May, 2011; originally announced May 2011.

    Comments: Communications of the ACM, Research Highlight

    ACM Class: F.3.2; F.4.1

  41. arXiv:1105.0106  [pdf, ps, other

    cs.PL

    Semantic Solutions to Program Analysis Problems

    Authors: Sam Tobin-Hochstadt, David Van Horn

    Abstract: Problems in program analysis can be solved by developing novel program semantics and deriving abstractions conventionally. For over thirty years, higher-order program analysis has been sold as a hard problem. Its solutions have required ingenuity and complex models of approximation. We claim that this difficulty is due to premature focus on abstraction and propose a new approach that emphasizes se… ▽ More

    Submitted 30 April, 2011; originally announced May 2011.

  42. arXiv:1103.5167  [pdf, ps, other

    cs.PL

    A family of abstract interpretations for static analysis of concurrent higher-order programs

    Authors: Matthew Might, David Van Horn

    Abstract: We develop a framework for computing two foundational analyses for concurrent higher-order programs: (control-)flow analysis (CFA) and may-happen-in-parallel analysis (MHP). We pay special attention to the unique challenges posed by the unrestricted mixture of first-class continuations and dynamically spawned threads. To set the stage, we formulate a concrete model of concurrent higher-order progr… ▽ More

    Submitted 14 June, 2011; v1 submitted 26 March, 2011; originally announced March 2011.

    Comments: The 18th International Static Analysis Symposium (SAS 2011)

  43. arXiv:1103.1362  [pdf, other

    cs.PL

    Higher-Order Symbolic Execution via Contracts

    Authors: Sam Tobin-Hochstadt, David Van Horn

    Abstract: We present a new approach to automated reasoning about higher-order programs by extending symbolic execution to use behavioral contracts as symbolic values, enabling symbolic approximation of higher-order behavior. Our approach is based on the idea of an abstract reduction semantics that gives an operational semantics to programs with both concrete and symbolic components. Symbolic components ar… ▽ More

    Submitted 26 April, 2012; v1 submitted 7 March, 2011; originally announced March 2011.

  44. arXiv:1009.3174  [pdf, ps, other

    cs.PL

    Evaluating Call-By-Need on the Control Stack

    Authors: Stephen Chang, David Van Horn, Matthias Felleisen

    Abstract: Ariola and Felleisen's call-by-need λ-calculus replaces a variable occurrence with its value at the last possible moment. To support this gradual notion of substitution, function applications-once established-are never discharged. In this paper we show how to translate this notion of reduction into an abstract machine that resolves variable references via the control stack. In particular, the mach… ▽ More

    Submitted 16 September, 2010; originally announced September 2010.

    Comments: Symposium on Trends in Functional Programming (TFP 2010), Norman, Oklahoma, May 2010

    ACM Class: D.3.1

  45. arXiv:1009.1560  [pdf, ps, other

    cs.PL

    Stack-Summarizing Control-Flow Analysis of Higher-Order Programs

    Authors: Christopher Earl, Matthew Might, David Van Horn

    Abstract: Two sinks drain precision from higher-order flow analyses: (1) merging of argument values upon procedure call and (2) merging of return values upon procedure return. To combat the loss of precision, these two sinks have been addressed independently. In the case of procedure calls, abstract garbage collection reduces argument merging; while in the case of procedure returns, context-free approache… ▽ More

    Submitted 8 September, 2010; originally announced September 2010.

    ACM Class: F.3.2; F.4.1

  46. arXiv:1007.4446  [pdf, ps, other

    cs.PL

    Abstracting Abstract Machines

    Authors: David Van Horn, Matthew Might

    Abstract: We describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines. To demonstrate the technique and support our claim, we transform the CEK machine of Felleisen and Friedman, a lazy variant of Krivine's machine, and the stack-inspecting CM machine of Clements and Felleisen into abstract interp… ▽ More

    Submitted 7 September, 2010; v1 submitted 26 July, 2010; originally announced July 2010.

    Comments: The 15th ACM SIGPLAN International Conference on Functional Programming (ICFP'10), Baltimore, Maryland, September, 2010

    ACM Class: F.3.2; F.4.1

  47. arXiv:1007.4268  [pdf, ps, other

    cs.PL

    Pushdown Control-Flow Analysis of Higher-Order Programs

    Authors: Christopher Earl, Matthew Might, David Van Horn

    Abstract: Context-free approaches to static analysis gain precision over classical approaches by perfectly matching returns to call sites---a property that eliminates spurious interprocedural paths. Vardoulakis and Shivers's recent formulation of CFA2 showed that it is possible (if expensive) to apply context-free methods to higher-order languages and gain the same boost in precision achieved over first-ord… ▽ More

    Submitted 24 July, 2010; originally announced July 2010.

    Comments: The 2010 Workshop on Scheme and Functional Programming

    ACM Class: F.3.2; F.4.1