Scott F. Smith 0001

dblp:s/ScottFSmith · DBLP profile ↗
← Back
43ranked-venue papers
4as first author
2since 2021 · last 2024
0009-0005-0495-2716ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 32 · 2 first-author · 2 since 2021Theory of computation · 10 · 2 first-authorSecurity and privacy · 2
YearPublicationVenuePosition
2024 Semantic-Type-Guided Bug Finding
abstract
In recent years, there has been an increased interest in tools that establish incorrectness rather than correctness of program properties. In this work we build on this approach by developing a novel methodology to prove incorrectness of semantic typing properties of functional programs, extending the incorrectness approach to the model theory of functional program typing. We define a semantic type refuter which refutes semantic typings for a simple functional language. We prove our refuter is co-recursively enumerable, and that it is sound and complete with respect to a semantic typing notion. An initial implementation is described which uses symbolic evaluation to efficiently find type errors over a functional language with a rich type system.
Kelvin Qian, Scott F. Smith 0001, Brandon Stride, Shiwei Weng, Ke Wu 0015
Proc. ACM Program. Lang.2
2024 A Pure Demand Operational Semantics with Applications to Program Analysis
abstract
This paper develops a novel minimal-state operational semantics for higher-order functional languages that uses only the call stack and a source program point or a lexical level as the complete state information: there is no environment, no substitution, no continuation, etc. We prove this form of operational semantics equivalent to standard presentations. We then show how this approach can open the door to potential new applications: we define a program analysis as a direct finitization of this operational semantics. The program analysis that naturally emerges has a number of novel and interesting properties compared to standard program analyses for higher-order programs: for example, it can infer recurrences and does not need value widening. We both give a formal definition of the analysis and describe our current implementation.
Scott F. Smith 0001, Robert Zhang 0003
Proc. ACM Program. Lang.1
2020 A Set-Based Context Model for Program Analysis
Leandro Facchinetti, Zachary Palmer, Scott F. Smith 0001, Ke Wu 0015, Ayaka Yorihiro
APLAS3
2020 Higher-order demand-driven symbolic evaluation
abstract
Symbolic backwards execution (SBE) is a useful variation on standard forward symbolic evaluation; it allows a symbolic evaluation to start anywhere in the program and proceed by executing in reverse to the program start. SBE brings goal-directed reasoning to symbolic evaluation and has proven effective in e.g. automated test generation for imperative languages. In this paper we define DDSE, a novel SBE which operates on a functional as opposed to imperative language; furthermore, it is defined as a natural extension of a backwards-executing interpreter. We establish the soundness of DDSE and define a test generation algorithm for this toy language. We report on an initial reference implementation to confirm the correctness of the principles.
Zachary Palmer, Theodore Park, Scott F. Smith 0001, Shiwei Weng
Proc. ACM Program. Lang.3
2019 Higher-order Demand-driven Program Analysis
abstract
Developing accurate and efficient program analyses for languages with higher-order functions is known to be difficult. Here we define a new higher-order program analysis, Demand-Driven Program Analysis (DDPA), which extends well-known demand-driven lookup techniques found in first-order program analyses to higher-order programs. This task presents several unique challenges to obtain good accuracy, including the need for a new method for demand-driven lookup of non-local variable values. DDPA is flow- and context-sensitive and provably polynomial-time. To efficiently implement DDPA, we develop a novel pushdown automaton metaprogramming framework, the Pushdown Reachability automaton. The analysis is formalized and proved sound, and an implementation is described.
Leandro Facchinetti, Zachary Palmer, Scott F. Smith 0001
ACM Trans. Program. Lang. Syst.3
2017 Using the coq theorem prover to verify complex data structure invariants
abstract
While automated static analysis tools can find many useful software bugs, there are still bugs that are beyond the reach of these tools. Most large software systems have complex data structures with complex invariants, and many bugs can be traced to code that does not maintain these invariants. These invariants cannot be easily inferred by automated tools. One must use an interactive system in which developers first enter these invariants to document their software and then use a theorem prover to verify their correctness.
Kenneth Roe, Scott F. Smith 0001
MEMOCODE2
2017 Relative Store Fragments for Singleton Abstraction
Leandro Facchinetti, Zachary Palmer, Scott F. Smith 0001
SAS3
2016 Higher-Order Demand-Driven Program Analysis
abstract
We explore a novel approach to higher-order program analysis that brings ideas of on-demand lookup from first-order CFL-reachability program analyses to higher-order programs. The analysis needs to produce only a control-flow graph; it can derive all other information including values of variables directly from the graph. Several challenges had to be overcome, including how to build the control-flow graph on-the-fly and how to deal with non-local variables in functions. The resulting analysis is flow- and context-sensitive with a provable polynomial-time bound. The analysis is formalized and proved correct and terminating, and an initial implementation is described.
Zachary Palmer, Scott F. Smith 0001
ECOOP2
2016 CoqPIE: An IDE Aimed at Improving Proof Development Productivity - (Rough Diamond)
Kenneth Roe, Scott F. Smith 0001
ITP2
2014 Types for Flexible Objects
Zachary Palmer, Pottayil Harisanker Menon, Alexander Rozenshteyn, Scott F. Smith 0001
APLAS4
2013 Scalaness/nesT: type specialized staged programming for sensor networks
abstract
Programming wireless embedded networks is challenging due to severe limitations on processing speed, memory, and bandwidth. Staged programming can help bridge the gap between high level code refinement techniques and efficient device level programs by allowing a first stage program to specialize device level code. Here we introduce a two stage programming system for wireless sensor networks. The first stage program is written in our extended dialect of Scala, called Scalaness, where components written in our type safe dialect of nesC, called nesT, are composed and specialized. Scalaness programs can dynamically construct TinyOS-compliant nesT device images that can be deployed to motes. A key result, called cross-stage type safety, shows that successful static type checking of a Scalaness program means no type errors will arise either during programmatic composition and specialization of WSN code, or later on the WSN itself. Scalaness has been implemented through direct modification of the Scala compiler. Implementation of a staged public-key cryptography calculation shows the sensor memory footprint can be significantly reduced by staging.
Peter C. Chapin, Christian Skalka, Scott F. Smith 0001, Michael Watson
GPCE3
2011 Backstage Java: making a difference in metaprogramming
abstract
We propose Backstage Java (BSJ), a Java language extension which allows algorithmic, contextually-aware generation and transformation of code. BSJ explicitly and concisely represents design patterns and other encodings by employing compile-time metaprogramming: a practice in which the programmer writes instructions which are executed over the program's AST during compilation. While compile-time metaprogramming has been successfully used in functional languages such as Template Haskell, a number of language properties (scope, syntactic structure, mutation, etc.) have thus far prevented this theory from translating to the imperative world. BSJ uses the novel approach of difference-based metaprogramming to provide an imperative programming style amenable to the Java community and to enforce that metaprograms are consistent and semantically unambiguous. To make the feasibility of BSJ metaprogramming evident, we have developed a compiler implementation and numerous working code examples.
Zachary Palmer, Scott F. Smith 0001
OOPSLA2
2010 Task types for pervasive atomicity
abstract
Atomic regions are an important concept in correct concurrent programming: since atomic regions can be viewed as having executed in a single step, atomicity greatly reduces the number of possible interleavings the programmer needs to consider. This paper describes a method for building atomicity into a programming language in an organic fashion. We take the view that atomicity holds for whole threads by default, and a division into smaller atomic regions occurs only at points where an explicit need for sharing is needed and declared. A corollary of this view is every line of code is part of some atomic region. We define a polymorphic type system, Task Types, to enforce most of the desired atomicity properties statically. We show the reasonableness of our type system by proving that type soundness, isolation invariance, and atomicity enforcement properties hold at run time. We also present initial results of a Task Types implementation built on Java
Yu David Liu, Scott F. Smith 0001
OOPSLA3
2008 Sound and Complete Type Inference for a Systems Programming Language
Swaroop Sridhar, Jonathan S. Shapiro, Scott F. Smith 0001
APLAS3
2008 Coqa: Concurrent Objects with Quantized Atomicity
Yu David Liu, Xiaoqi Lu, Scott F. Smith 0001
CC3
2008 Securing information flow via dynamic capture of dependencies
abstract
Although static systems for information flow security are well studied, few works address runtime information flow monitoring. Runtime information flow control offers distinct advantages in precision and in the ability to support dynamically defined policies. To this end, we here develop a new runt ime information flow system based on the runtime tracking of indirect dependencies between program points. Our system tracks both direct and indirect information flows, and noninterference results are proved.
Paritosh Shroff, Scott F. Smith 0001, Mark Thober
J. Comput. Secur.2
2008 Types and trace effects of higher order programs
abstract
Abstract This paper shows how type effect systems can be combined with model-checking techniques to produce powerful, automatically verifiable program logics for higher order programs. The properties verified are based on the ordered sequence of events that occur during program execution, so-called event traces . Our type and effect systems infer conservative approximations of the event traces arising at run-time, and model-checking techniques are used to verify logical properties of these histories. Our language model is based on the λ-calculus. Technical results include a type inference algorithm for a polymorphic type effect system, and a method for applying known model-checking techniques to the trace effects inferred by the type inference algorithm, allowing static enforcement of history- and stack-based security mechanisms. A type safety result is proven for both unification and subtyping constraint versions of the type system, ensuring that statically well-typed programs do not contain trace event checks that can fail at run-time.
Christian Skalka, Scott F. Smith 0001, David Van Horn
J. Funct. Program.2
2007 The Nuggetizer: Abstracting Away Higher-Orderness for Program Verification
Paritosh Shroff, Christian Skalka, Scott F. Smith 0001
APLAS3
2007 Dynamic Dependency Monitoring to Secure Information Flow
abstract
Although static systems for information flow security are well-studied, few works address run-time information flow monitoring. Run-time information flow control offers distinct advantages in precision and in the ability to support dynamically defined policies. To this end, we here develop a new run-time information flow system based on the runtime tracking of indirect dependencies between program points. Our system tracks both direct and indirect information flows, and noninterference results are proved.
Paritosh Shroff, Scott F. Smith 0001, Mark Thober
CSF2
2006 A formal framework for component deployment
abstract
Software deployment is a complex process, and industrial-strength frameworks such as .NET, Java, and CORBA all provide explicit support for component deployment. However, these frameworks are not built around fundamental principles as much as they are engineering efforts closely tied to particulars of the respective systems. Here we aim to elucidate the fundamental principles of software deployment, in a platform-independent manner. Issues that need to be addressed include deployment unit design, when, where and how to wire components together, versioning, version dependencies, and hot-deployment of components. We define the application buildbox as the place where software is developed and deployed, and define a formal Labeled Transition System (LTS) on the buildbox with transitions for deployment operations that include build, install, ship, and update. We establish formal properties of the LTS, including the fact that if a component is shipped with a certain version dependency, then at run time that dependency must be satisfied with a compatible version. Our treatment of deployment is both platform- and vendor-independent, and we show how it models the core mechanisms of the industrial-strength deployment frameworks.
Yu David Liu, Scott F. Smith 0001
OOPSLA2
2005 Interaction-based programming with classages
abstract
This paper presents Classages, a novel interaction-centric object-oriented language. Classes and objects in Classages are fully encapsulated, with explicit interfaces for all interactions they might be involved in. The design of Classages touches upon a wide range of language design topics, including encapsulation, object relationship representation, and object confinement. An encoding of Java's OO model in Classages is provided, showing how standard paradigms are supported. A prototype Classages compiler is described.
Yu David Liu, Scott F. Smith 0001
OOPSLA2
2005 A systematic approach to static access control
abstract
The Java Security Architecture includes a dynamic mechanism for enforcing access control checks, the so-called stack inspection process. While the architecture has several appealing features, access control checks are all implemented via dynamic method calls. This is a highly nondeclarative form of specification that is hard to read, and that leads to additional run-time overhead. This article develops type systems that can statically guarantee the success of these checks. Our systems allow security properties of programs to be clearly expressed within the types themselves, which thus serve as static declarations of the security policy. We develop these systems using a systematic methodology: we show that the security-passing style translation, proposed by Wallach et al. [2000] as a dynamic implementation technique, also gives rise to static security-aware type systems, by composition with conventional type systems. To define the latter, we use the general HM( X ) framework, and easily construct several constraint- and unification-based type systems.
François Pottier, Christian Skalka, Scott F. Smith 0001
ACM Trans. Program. Lang. Syst.3
2004 History Effects and Verification
Christian Skalka, Scott F. Smith 0001
APLAS2
2004 Modules with Interfaces for Dynamic Linking and Communication
Yu David Liu, Scott F. Smith 0001
ECOOP2
2002 Modular Internet Programming with Cells
Ran Rinat, Scott F. Smith 0001
ECOOP2
2001 Precise Constraint-Based Type Inference for Java
Scott F. Smith 0001
ECOOP2
2001 A Systematic Approach to Static Access Control
François Pottier, Christian Skalka, Scott F. Smith 0001
ESOP3
2000 Polyvariant Flow Analysis with Constrained Types
Scott F. Smith 0001
ESOP1
2000 Static enforcement of security with types
abstract
A number of security systems for programming languages have recently appeared, including systems for enforcing some form of access control. The Java JDK 1.2 security architecture is one such system that is widely studied and used. While the architecture has many appealing features, access control checks are all implemented via dynamic method calls. This is a highly non-declarative form of specification which is hard to read, and which leads to additional run-time overhead. In this paper, we present a novel security type system that enforces the same security guarantees as Java Stack Inspection, but via a static type system with no additional run-time checks. The system allows security properties of programs to be clearly expressed within the types themselves. We also define and prove correct an inference algorithm for security types, meaning that the system has the potential to be layered on top of the existing Java architecture, without requiring new syntax.
Christian Skalka, Scott F. Smith 0001
ICFP2
1999 Correspondence Polymorphism for Object-Oriented Languages
abstract
In this paper we propose a new form of polymorphism for object-oriented languages, called correspondence polymorphism. It lies in a different dimension than either parametric or subtype polymorphism. In correspondence polymorphism, some methods are declared to correspond to other methods, via a correspondence relation. With this relation, it is possible to reuse non-generic code in various type contexts—not necessarily subtyping or matching contexts—without having to plan ahead for this reuse. Correspondence polymorphism has advantages over other expressive object type systems in that programmer-declared types still may be simple, first-order types that are easily understood. We define a simple language LCP that reflects these new ideas, illustrating its behavior with multiple examples. We present formal type rules and an operational semantics for LCP, and establish soundness of the type system with respect to reduction.
Ran Rinat, Menachem Magidor, Scott F. Smith 0001
OOPSLA3
1997 A Foundation for Actor Computation
abstract
We present an actor language which is an extension of a simple functional language, and provide an operational semantics for this extension. Actor configurations represent open distributed systems, by which we mean that the specification of an actor system explicitly takes into account the interface with external components. We study the composability of such systems. We define and study various notions of testing equivalence on actor expressions and configurations. The model we develop provides fairness. An important result is that the three forms of equivalence, namely, convex, must, and may equivalences, collapse to two in the presence of fairness. We further develop methods for proving laws of equivalence and provide example proofs to illustrate our methodology.
Gul A. Agha, Ian A. Mason, Scott F. Smith 0001, Carolyn L. Talcott
J. Funct. Program.3
1996 Subtyping Constrained Types
Valery Trifonov, Scott F. Smith 0001
SAS2
1996 From Operational Semantics to Domain Theory
abstract
This paper builds domain theoretic concepts upon an operational foundation. The basic operational theory consists of a single step reduction system from which an operational ordering and equivalence on programs are defined. The theory is then extended to include concepts from domain theory, including the notions of directed set, least upper bound, complete partial order, monotonicity, continuity, finite element, ω -algebraicity, full abstraction, and least fixed point properties. We conclude by using these concepts to construct a (strongly) fully abstract continuous model for our language. In addition we generalize a result of Milner and prove the uniqueness of such models.
Ian A. Mason, Scott F. Smith 0001, Carolyn L. Talcott
Inf. Comput.2
1996 Constrained Types and Their Expressiveness
abstract
A constrained type consists of both a standard type and a constraint set. Such types enable efficient type inference for object-oriented languages with polymorphism and subtyping, as demonstrated by Eifrig, Smith, and Trifonov. Until now, it has been unclear how expressive constrained types are. In this article we study constrained types without universal quantification. We prove that they accept the same programs as the type system of Amadio and Cardelli with subtyping and recursive types. This result gives a precise connection between constrained types and the standard notion of types.
Jens Palsberg, Scott F. Smith 0001
ACM Trans. Program. Lang. Syst.2
1995 Sound Polymorphic Type Inference for Objects
abstract
A polymorphic, constraint-based type inference algorithm for an object-oriented language is defined. A generalized form of type, polymorphic recursively constrained types, are inferred. These types are expressive enough for typing objects, since they generalize recursive types and F-bounded polymorphism. The well-known tradeoff between inheritance and subtyping is mitigated by the type inference mechanism. Soundness and completeness of type inference are established.
Jonathan Eifrig, Scott F. Smith 0001, Valery Trifonov
OOPSLA2
1995 Correct Compilation of Specifications to Deterministic Asynchronous Circuits
Scott F. Smith 0001, Amy E. Zwarico
Formal Methods Syst. Des.1
1995 A Variable Typed Logic of Effects
abstract
In this paper we introduce a variable typed logic of effects inspired by the variable type systems of Feferman for purely functional languages. VTLoE (Variable Typed Logic of Effects) is introduced in two stages. The first stage is the first-order theory of individuals built on assertions of equality (operational equivalence à la Plotkin), and contextual assertions. The second stage extends the logic to include classes and class membership. The logic we present provides an expressive language for defining and studying properties of programs including program equivalences, in a uniform framework. The logic combines the features and benefits of equational calculi as well as program and specification logics. In addition to the usual first-order formula constructions, we add contextual assertions. Contextual assertions generalize Hoare′s triples in that they can be nested, they can be used as assumptions, and their free variables can be quantified. They are similar in spirit to program modalities in dynamic logic. We use the logic to establish the validity of the Meyer Sieber examples in an operational setting. The theory allows for the construction of inductively defined sets and derivation of the corresponding induction principles. We hope that classes may serve as a starting point for studying semantic notions of type. Naive attempts to represent ML types as classes fail in the sense that ML inference rules are not valid.
Furio Honsell, Ian A. Mason, Scott F. Smith 0001, Carolyn L. Talcott
Inf. Comput.3
1994 Application of OOP Type Theory: State, Decidability, Integragtion
abstract
Important strides toward developing expressive yet semantically sound type systems for object-oriented programming languages have recently been made by Cook, Bruce, Mitchell, and others. This paper focusses on how the theoretical work using F-bounded quantification may be brought more into the realm of actual language implementations while preserving rigorous soundness properties. We simultaneously address three of the more significant problems: adding a notion of global state, proving type-checking is decidable, and integrating the more widely implemented view that subclasses correspond to subtypes with the F-bounded view.
Jonathan Eifrig, Scott F. Smith 0001, Valery Trifonov, Amy E. Zwarico
OOPSLA2
1993 Computational Foundations of Basic Recursive Function Theory
abstract
The theory of computability, or basic recursive function theory as it is often called, is usually motivated and developed using Church's thesis. Here we show that there is an alternative computability theory in which some of the basic results on unsolvability become more absolute, results on completeness become simpler, and many of the central concepts become more abstract. In this approach computations are viewed as mathematical objects, and theorems in recursion theory may be classified according to which axioms of computation are needed to prove them. The theory is about typed functions over the natural numbers, and it includes theorems showing that there are unsolvable problems in this setting independent of the existence of indexings. The unsolvability results are interpreted to show that the partial function concept, so important in computer science, serves to distinguish between classical and constructive type theories (in a different way than does the decidability concept as expressed in the law of excluded middle). The implications of these ideas for the logical foundations of computer science are discussed, particularly in the context of recent interest in using constructive type theory in programming.
Robert L. Constable, Scott F. Smith 0001
Theor. Comput. Sci.2
1992 Towards a Theory of Actor Computation
Gul A. Agha, Ian A. Mason, Scott F. Smith 0001, Carolyn L. Talcott
CONCUR3
1991 From Operational to Denotational Semantics
Scott F. Smith 0001
MFPS1
1988 Computational Foundations of Basic Recursive Function Theory
abstract
The theory of computability often called basic recursive function theory is usually motivated and developed using Church's thesis. It is shown that there is an alternative computability theory in which some of the basic results on unsolvability become more absolute. Results on completeness become simpler, and many of the central concepts become more abstract. In this approach computations are viewed as mathematical objects, and the major theorems in recursion theory may be classified according to which axioms about computation are needed to prove them. The theory is a typed theory of functions over the natural numbers, and there are unsolvable problems in this setting independent of the existence of indexings. The unsolvability results are interpreted to show that the partial function concept serves to distinguish between classical and constructive type theories.>
Robert L. Constable, Scott F. Smith 0001
LICS2
1987 Partial Objects In Constructive Type Theory
Robert L. Constable, Scott F. Smith 0001
LICS2