Kenneth Knowles
University of California, Santa Cruz
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Kenneth Knowles.
ACM Transactions on Programming Languages and Systems | 2010
Kenneth Knowles; Cormac Flanagan
Traditional static type systems are effective for verifying basic interface specifications. Dynamically checked contracts support more precise specifications, but these are not checked until runtime, resulting in incomplete detection of defects. Hybrid type checking is a synthesis of these two approaches that enforces precise interface specifications, via static analysis where possible, but also via dynamic checks where necessary. This article explores the key ideas and implications of hybrid type checking, in the context of the λ-calculus extended with contract types, that is, with dependent function types and with arbitrary refinements of base types.
european symposium on programming | 2007
Kenneth Knowles; Cormac Flanagan
General refinement types allow types to be refined by predicates written in a general-purpose programming language, and can express function pre- and postconditions and data structure invariants. In this setting, with expressive and possibly verbose types, type reconstruction is particularly valuable, yet typeability is undecidable because it subsumes type checking. Using a generalized notion of type reconstruction, we present the first type reconstruction algorithm for a type system with base types refined by abitrary program terms. Our algorithm is a typeability-preserving transformation and defers type checking to a subsequent phase. The algorithm generates and solves a collection of implication constraints over refinement predicates, inferring maximally precise refinement predicates in a largely syntactic manner that is reminiscent of strongest postcondition calculation. Perhaps surprisingly, our notion of type reconstruction is decidable even though type checking is not.
principles of security and trust | 2016
Thomas Schmitz; Dustin Rhodes; Thomas H. Austin; Kenneth Knowles; Cormac Flanagan
An application that fails to ensure information flow security may leak sensitive data such as passwords, credit card numbers, or medical records. News stories of such failures abound. Austin and Flanagan [2] introduce faceted values --- values that present different behavior according to the privilege of the observer --- as a dynamic approach to enforce information flow policies for an untyped, imperative
programming languages meets program verification | 2009
Kenneth Knowles; Cormac Flanagan
Archive | 2006
Jessica Gronski; Kenneth Knowles; Aaron Tomb; Stephen N. Freund; Cormac Flanagan
\lambda
Archive | 2007
Kenneth Knowles; Aaron Tomb; Jessica Gronski; Stephen N. Freund; Cormac Flanagan
Archive | 2008
Caitlin Sadowski; Jaeheon Yi; Kenneth Knowles; Cormac Flanagan
λ-calculus. We implement faceted values as a Haskell library, elucidating their relationship to types and monadic imperative programming. In contrast to previous work, our approach does not require modification to the language runtime. In addition to pure faceted values, our library supports faceted mutable reference cells and secure facet-aware socket-like communication. This library guarantees information flow security, independent of any vulnerabilities or bugs in application code. The library uses a control monad in the traditional way for encapsulating effects, but it also uniquely uses a second data monad to structure faceted values. To illustrate a non-trivial use of the library, we present a bi-monadic interpreter for a small language that illustrates the interplay of the control and data monads.
Technical Report UCSC-SOE-14-07 | 2014
Thomas H. Austin; Kenneth Knowles; Cormac Flanagan
Simple type systems perform compositional reasoning in that the type of a term depends only on the types of its subterms, and not on their semantics. Contracts offer more expressive abstractions, but static contract checking systems typically violate those abstractions and base their reasoning directly upon the semantics of terms. Pragmatically, this noncompositionality makes the decidability of static checking unpredictable. We first show how compositional reasoning may be restored using standard type-theoretic techniques, namely existential types and subtyping. Despite its compositional nature, our type system is exact, in that the type of a term can completely capture its semantics, hence demonstrating that precision and compositionality are compatible. We then address predictability of static checking for contract types by giving a type-checking algorithm for an important class of programs with contract predicates drawn from a decidable theory. Our algorithm relies crucially on the fact that the type of a term depends only the types of its subterms (which fall into the decidable theory) and not their semantics (which will not, in general).
Archive | 2008
Kenneth Knowles; Cormac Flanagan
Archive | 2007
Kenneth Knowles; Cormac Flanagan