9 research outputs found
Programming Up to Congruence (Extended version)
This paper presents the design of ZOMBIE, a dependently-typed programming language that uses an adaptation of a congruence closure algorithm for proof and type inference. This algorithm allows the type checker to automatically use equality assumptions from the context when reasoning about equality. Most dependently typed languages automatically use equalities that follow from -reduction during type checking; however, such reasoning is incompatible with congruence closure. In contrast, ZOMBIE does not use automatic -reduction because types may contain potentially diverging terms. Therefore ZOMBIE provides a unique opportunity to explore an alternative definition of equivalence in dependently typed language design. Our work includes the specification of the language via a bidirectional type system, which works “up-to-congruence,” and an algorithm for elaborating expressions in this language to an explicitly typed core language. We prove that our elaboration algorithm is complete with respect to the source type system, and always produces well typed terms in the core language. This algorithm has been implemented in the ZOMBIE language, which includes general recursion, irrelevant arguments, heterogeneous equality and data types
Termination Casts: A Flexible Approach to Termination With General Recursion (Technical Appendix)
This paper proposes a type-and-effect system called Teq↓, which distinguishes terminating terms and total functions from possibly diverging terms and partial functions, for a lambda calculus with general recursion and equality types. The central idea is to include a primitive type-form Terminates t , expressing that term t is terminating; and then allow terms t to be coerced from possibly diverging to total, using a proof of Terminates t. We call such coercions termination casts, and show how to implement terminating recursion using them. For the meta-theory of the system, we describe a translation from Teq↓ to a logical theory of termination for general recursive, simply typed functions. Every typing judgment of Teq↓ is translated to a theorem expressing the appropriate termination property of the computational part of the Teq↓ term
Combining Proofs and Programs in a Dependently Typed Language
Most dependently-typed programming languages either require that all expressions terminate (e.g. Coq, Agda, and Epigram), or allow infinite loops but are inconsistent when viewed as logics (e.g. Haskell, ATS, mega). Here, we combine these two approaches into a single dependently-typed core language. The language is composed of two fragments that share a common syntax and overlapping semantics: a logic that guarantees total correctness, and a call-by-value programming language that guarantees type safety but not termination. The two fragments may interact: logical expressions may be used as programs; the logic may soundly reason about potentially nonterminating programs; programs can require logical proofs as arguments; and “mobile” program values, including proofs computed at runtime, may be used as evidence by the logic. This language allows programmers to work with total and partial functions uniformly, providing a smooth path from functional programming to dependently-typed programming. Categories and Subject Descriptors D.3.1 [Programming Languages]: Formal Definitions and Theory Keywords Dependent types; Termination; General recursio
Rapid identification of intact bacterial resistance plasmids via optical mapping of single DNA molecules
The rapid spread of antibiotic resistance - currently one of the greatest threats to human health according to WHO - is to a large extent enabled by plasmid-mediated horizontal transfer of resistance genes. Rapid identification and characterization of plasmids is thus important both for individual clinical outcomes and for epidemiological monitoring of antibiotic resistance. Toward this aim, we have developed an optical DNA mapping procedure where individual intact plasmids are elongated within nanofluidic channels and visualized through fluorescence microscopy, yielding barcodes that reflect the underlying sequence. The assay rapidly identifies plasmids through statistical comparisons with barcodes based on publicly available sequence repositories and also enables detection of structural variations. Since the assay yields holistic sequence information for individual intact plasmids, it is an ideal complement to next generation sequencing efforts which involve reassembly of sequence reads from fragmented DNA molecules. The assay should be applicable in microbiology labs around the world in applications ranging from fundamental plasmid biology to clinical epidemiology and diagnostics