Daniel Licata - Profile on Academia.edu (original) (raw)
Papers by Daniel Licata
AGRAWAL, Mukesh CMU-CS-11-101 AKELLA, Aditya CMU-CS-11-100, CMU-CS-11-117
Calculating the Fundamental Group of the Circle in Homotopy Type Theory
Abstract: Recent work on homotopy type theory exploits an exciting new correspondence between Mar... more Abstract: Recent work on homotopy type theory exploits an exciting new correspondence between Martin-Lof's dependent type theory and the mathematical disciplines of category theory and homotopy theory. The category theory and homotopy theory suggest new principles to add to type theory, and type theory can be used in novel ways to formalize these areas of mathematics. In this paper, we formalize a basic result in algebraic topology, that the fundamental group of the circle is the integers.
• I haven't had time to do many of the adequacy proofs yet. If you know of a way of streamlining ... more • I haven't had time to do many of the adequacy proofs yet. If you know of a way of streamlining these, I'd love to hear it. I wonder if moving to a Kevin-style presentation would help? • The theorem in Appendix A stating that equivalent worlds have the same canonical forms is true (in the sense that I wrote out the proof on paper, but I haven't had a chance to type it up yet). I haven't seen this written up anywhere, so please let me know if it exists. These notes are a rough draft; please alert me to any errors or omissions! So, what exactly is Twelf? Among other things, it includes 1. a type checker for the dependently-typed λ-calculus LF [9].
Citeseer
We present a technical introduction to mechanizing language definitions and meta-theory using LF ... more We present a technical introduction to mechanizing language definitions and meta-theory using LF and Twelf. LF is a logical framework designed for representing languages that are specified by inductively-defined judgements. Twelf is an implementation of LF that includes additional support for checking meta-theorems about represented languages. In this article, we first summarize a canonical-forms presentation of LF, following the treatment of CLF by Watkins et al. Next, we use the simply-typed λ-calculus as a running example of mechanization in LF and Twelf: we show how to adequately encode the simply-typed λ-calculus in LF, and then we prove type preservation and strengthening as examples of Twelf meta-theory.
Variable binding is a prevalent feature of the syntax and proof theory of many logical systems. I... more Variable binding is a prevalent feature of the syntax and proof theory of many logical systems. In this paper, we define a programming language that provides intrinsic support for both representing and computing with binding. This language is extracted as the Curry-Howard interpretation of a focused sequent calculus with two kinds of implication, of opposite polarity. The representational arrow extends systems of definitional reflection with the notion of a scoped inference rule, which permits the adequate representation of binding via higher-order abstract syntax. On the other hand, the usual computational arrow classifies recursive functions over such higher-order data. Unlike many previous approaches, both binding and computation can mix freely. Following Zeilberger [POPL 2008], the computational function space admits a form of open-endedness, in that it is represented by an abstract map from patterns to expressions. As we demonstrate with Coq and Agda implementations, this has the important practical benefit that we can reuse the pattern coverage checking of these tools.
The groupoid interpretation of dependent type theory given by Hofmann and Streicher associates to... more The groupoid interpretation of dependent type theory given by Hofmann and Streicher associates to each closed type a category whose objects represent the elements of that type and whose maps represent proofs of equality of elements. The categorial structure ensures that equality is reflexive (identity maps) and transitive (closure under composition); the groupoid structure, which demands that every map be invertible, ensures symmetry. Families of types are interpreted as functors; the action on maps (equality proofs) ensures that families respect equality of elements of the index type. The functorial action of a type family is computationally non-trivial in the case that the groupoid associated to the index type is non-trivial. For example, one may identity elements of a universe of sets up to isomorphism, in which case the action of a family of types indexed by sets must respect set isomorphism. The groupoid interpretation is 2-dimensional in that the coherence requirements on proofs of equality are required to hold "on the nose", rather than up to higher dimensional equivalences. Recent work by Awodey and Lumsdaine, Voevodsky, and others extends the groupoid interpretation to higher dimensions, exposing close correspondences between type theory, higher-dimensional category theory, and homotopy theory.
contrib.andrew.cmu.edu
We study the impact of background network traffic on foreground network traffic. Foreground appli... more We study the impact of background network traffic on foreground network traffic. Foreground applications, such as Web browsers, are those that require low latency for their network traffic, often because a user is actively waiting for the network's response. Background applications, such as peer-topeer file sharing systems, are those that do not require fast responses to individual requests. Current foreground applications often do not, overall, transfer that much data, whereas current background applications are often more data-intensive. Thus, one would hope to provide low latency to foreground applications while simultaneously providing high bandwidth to background applications.
A Pronominal Approach to Binding and Computation
Typed Lambda Calculi and …, Jan 1, 2009
There has been a great deal of research on programming languages for computing with binding and s... more There has been a great deal of research on programming languages for computing with binding and scope (bound variables, ��-equivalence, capture-avoiding substitution). These languages are useful for a variety of tasks, such as implementing domain-specific languages and formalizing the metatheory of programming languages. Functional programming with binding and scope involves two different notions of function: functions-as-data and functions-as-computation. Functions-as-data, used to represent abstract syntax with variable ...
cs.cmu.edu
Intuitionistic type theory is an expressive formalism that unifies mathematics and computation. A... more Intuitionistic type theory is an expressive formalism that unifies mathematics and computation. A central concept is the propositions-as-types principle, according to which propositions are interpreted as types, and proofs of a proposition are interpreted as programs of the associated type. Mathematical propositions are thereby to be understood as specifications, or problem descriptions, that are solved by providing a program that meets the specification. Conversely, a program can, by the same token, be understood as a proof of its type viewed as a proposition. Over the last quarter-century type theory has emerged as the central organizing principle of programming language research, through the identification of the informal concept of language features with type structure. Numerous benefits accrue from the identification of proofs and programs in type theory. First, it provides the foundation for integrating types and verification, the two most successful formal methods used to ensure the correctness of software. Second, it provides a language for the mechanization of mathematics in which proof checking is equivalent to type checking, and proof search is equivalent to writing a program to meet a specification.
In POPL
Recent work on higher-dimensional dependent type theory enriches conventional one-dimensional dep... more Recent work on higher-dimensional dependent type theory enriches conventional one-dimensional dependent type theory with additional structure expressing equivalence of elements of a type. This structure may be employed in a variety of ways to capture rather coarse identifications of elements that must be respected by type families. Higher-dimensional type theory has applications to code reuse for dependently typed programming, and to the formalization of mathematics. In this paper, we develop a novel judgemental formulation of a two-dimensional type theory, which enjoys a canonicity property: a closed term of boolean type is definitionally equal to one of the two booleans. Canonicity is a necessary condition for a computational interpretation of type theory as a programming language, and does not hold for existing axiomatic presentations of higher-dimensional type theory. The method of proof is a generalization of the NuPRL semantics, interpreting types as syntactic groupoids rather than equivalence relations.
Recent work on higher-dimensional type theory has explored connections between Martin-Löf type th... more Recent work on higher-dimensional type theory has explored connections between Martin-Löf type theory, higher-dimensional category theory, and homotopy theory. These connections suggest a generalization of dependent type theory to account for computationally relevant proofs of propositional equality-for example, taking Id Set A B to be the isomorphisms between A and B. The crucial observation is that all of the familiar type and term constructors can be equipped with a functorial action that describes how they preserve such proofs. The key benefit of higher-dimensional type theory is that programmers and mathematicians may work up to isomorphism and higher equivalence, such as equivalence of categories.
Twelf is an implementation of the LF logical framework and the Elf logic programming language tha... more Twelf is an implementation of the LF logical framework and the Elf logic programming language that provides several automated analyses of Elf programs. It is increasingly used in the development and study of large deductive systems, such as programming languages and logics. Such large projects would benefit from language extensions that facilitate extensible code reuse and modular development. Drawing on prior work with module systems for LF and Elf, have designed and prototyped a simple module system for Twelf. The module system supports namespace management and simple forms of parameterization and reuse. It is defined by elaboration into the current Twelf implementation.
… of Computer Science, …, Jan 1, 2006
The annual ICFP Programming Contest has become one of the premiere programming competitions in th... more The annual ICFP Programming Contest has become one of the premiere programming competitions in the world. The 9 th incarnation of the contest, "The Cult of the Bound Variable," was held in July 2006 and organized by the Principles of Programming group at Carnegie Mellon University. This report details the contest tasks, the technology used to produce the contest, and the contest results. Several tasks draw ideas from programming languages research. For example, participants implemented a simple virtual machine, played an adventure game based on a substructural logic, and programmed in a two-dimensional circuit language with a discordantly high-level operational semantics. The contest technology includes an optimizing compiler for a high-level functional language that targets our virtual machine. By the end of the three day contest, 365 teams, composed of 700 programmers from all over the world, solved at least one of the contest tasks.
Mechanizing metatheory in a logical framework. Submitted for publication
Proceedings of the 3rd workshop on …, Jan 1, 2009
This paper is part of a line of work on using the logical techniques of polarity and focusing to ... more This paper is part of a line of work on using the logical techniques of polarity and focusing to design a dependent programming language, with particular emphasis on programming with deductive systems such as programming languages and proof theories. Polarity emphasizes the distinction between positive types, which classify data, and negative types, which classify computation. In previous work, we showed how to use Zeilberger's higher-order formulation of focusing to integrate a positive function space for representing variable binding, an essential tool for specifying logical systems, with a standard negative computational function space. However, our previous work considers only a simply-typed language. The central technical contribution of the present paper is to extend higher-order focusing with a form of dependency that we call positively dependent types: We allow dependency on positive data, but not negative computation. Additionally, we present the syntax of dependent pair and function types using an iterated inductive definition, mapping positive data to types, which gives an account of type-level computation. We construct our language inside the dependently typed programming language Agda 2, making essential use of coinductive types and induction-recursion.
Arxiv preprint arXiv:1009.2793, Jan 1, 2010
ML5 is a programming language for spatially distributed computing, based on a Curry-Howard corres... more ML5 is a programming language for spatially distributed computing, based on a Curry-Howard correspondence with the modal logic S5. However, the ML5 programming language differs from the logic in several ways. In this paper, we give a semantic embedding of ML5 into the dependently typed programming language Agda, which both explains these discrepancies between ML5 and S5 and suggests some simplifications and generalizations of the language. Our embedding translates ML5 into a slightly different logic: intuitionistic S5 extended with a lax modality that encapsulates effectful computations in a monad. Rather than formalizing lax S5 as a proof theory, we embed it as a universe within the the dependently typed host language, with the universe elimination given by implementing the modal logic's Kripke semantics. *
Submitted for publication, Jan 1, 2006
Draft available from http://www. cs. cmu. edu/drl, Jan 1, 2008
We propose a thesis defending the following statement:
Submitted to POPL, Jan 1, 2008
Indexed families of types are a way of associating run-time data with compile-time abstractions t... more Indexed families of types are a way of associating run-time data with compile-time abstractions that can be used to reason about them. We propose an extensible theory of indexed types, in which programmers can define the index data appropriate to their programs and use them to track properties of run-time code. The essential ingredients in our proposal are (1) a logical framework, which is used to define index data, constraints, and proofs, and (2) computation with indices, both at the static and dynamic levels of the programming language. Computation with indices supports a variety of mechanisms necessary for programming with extensible indexed types, including the definition and implementation of indexed types, meta-theoretic reasoning about indices, proofproducing run-time checks, computed index expressions, and runtime actions of index constraints.
AGRAWAL, Mukesh CMU-CS-11-101 AKELLA, Aditya CMU-CS-11-100, CMU-CS-11-117
Calculating the Fundamental Group of the Circle in Homotopy Type Theory
Abstract: Recent work on homotopy type theory exploits an exciting new correspondence between Mar... more Abstract: Recent work on homotopy type theory exploits an exciting new correspondence between Martin-Lof's dependent type theory and the mathematical disciplines of category theory and homotopy theory. The category theory and homotopy theory suggest new principles to add to type theory, and type theory can be used in novel ways to formalize these areas of mathematics. In this paper, we formalize a basic result in algebraic topology, that the fundamental group of the circle is the integers.
• I haven't had time to do many of the adequacy proofs yet. If you know of a way of streamlining ... more • I haven't had time to do many of the adequacy proofs yet. If you know of a way of streamlining these, I'd love to hear it. I wonder if moving to a Kevin-style presentation would help? • The theorem in Appendix A stating that equivalent worlds have the same canonical forms is true (in the sense that I wrote out the proof on paper, but I haven't had a chance to type it up yet). I haven't seen this written up anywhere, so please let me know if it exists. These notes are a rough draft; please alert me to any errors or omissions! So, what exactly is Twelf? Among other things, it includes 1. a type checker for the dependently-typed λ-calculus LF [9].
Citeseer
We present a technical introduction to mechanizing language definitions and meta-theory using LF ... more We present a technical introduction to mechanizing language definitions and meta-theory using LF and Twelf. LF is a logical framework designed for representing languages that are specified by inductively-defined judgements. Twelf is an implementation of LF that includes additional support for checking meta-theorems about represented languages. In this article, we first summarize a canonical-forms presentation of LF, following the treatment of CLF by Watkins et al. Next, we use the simply-typed λ-calculus as a running example of mechanization in LF and Twelf: we show how to adequately encode the simply-typed λ-calculus in LF, and then we prove type preservation and strengthening as examples of Twelf meta-theory.
Variable binding is a prevalent feature of the syntax and proof theory of many logical systems. I... more Variable binding is a prevalent feature of the syntax and proof theory of many logical systems. In this paper, we define a programming language that provides intrinsic support for both representing and computing with binding. This language is extracted as the Curry-Howard interpretation of a focused sequent calculus with two kinds of implication, of opposite polarity. The representational arrow extends systems of definitional reflection with the notion of a scoped inference rule, which permits the adequate representation of binding via higher-order abstract syntax. On the other hand, the usual computational arrow classifies recursive functions over such higher-order data. Unlike many previous approaches, both binding and computation can mix freely. Following Zeilberger [POPL 2008], the computational function space admits a form of open-endedness, in that it is represented by an abstract map from patterns to expressions. As we demonstrate with Coq and Agda implementations, this has the important practical benefit that we can reuse the pattern coverage checking of these tools.
The groupoid interpretation of dependent type theory given by Hofmann and Streicher associates to... more The groupoid interpretation of dependent type theory given by Hofmann and Streicher associates to each closed type a category whose objects represent the elements of that type and whose maps represent proofs of equality of elements. The categorial structure ensures that equality is reflexive (identity maps) and transitive (closure under composition); the groupoid structure, which demands that every map be invertible, ensures symmetry. Families of types are interpreted as functors; the action on maps (equality proofs) ensures that families respect equality of elements of the index type. The functorial action of a type family is computationally non-trivial in the case that the groupoid associated to the index type is non-trivial. For example, one may identity elements of a universe of sets up to isomorphism, in which case the action of a family of types indexed by sets must respect set isomorphism. The groupoid interpretation is 2-dimensional in that the coherence requirements on proofs of equality are required to hold "on the nose", rather than up to higher dimensional equivalences. Recent work by Awodey and Lumsdaine, Voevodsky, and others extends the groupoid interpretation to higher dimensions, exposing close correspondences between type theory, higher-dimensional category theory, and homotopy theory.
contrib.andrew.cmu.edu
We study the impact of background network traffic on foreground network traffic. Foreground appli... more We study the impact of background network traffic on foreground network traffic. Foreground applications, such as Web browsers, are those that require low latency for their network traffic, often because a user is actively waiting for the network's response. Background applications, such as peer-topeer file sharing systems, are those that do not require fast responses to individual requests. Current foreground applications often do not, overall, transfer that much data, whereas current background applications are often more data-intensive. Thus, one would hope to provide low latency to foreground applications while simultaneously providing high bandwidth to background applications.
A Pronominal Approach to Binding and Computation
Typed Lambda Calculi and …, Jan 1, 2009
There has been a great deal of research on programming languages for computing with binding and s... more There has been a great deal of research on programming languages for computing with binding and scope (bound variables, ��-equivalence, capture-avoiding substitution). These languages are useful for a variety of tasks, such as implementing domain-specific languages and formalizing the metatheory of programming languages. Functional programming with binding and scope involves two different notions of function: functions-as-data and functions-as-computation. Functions-as-data, used to represent abstract syntax with variable ...
cs.cmu.edu
Intuitionistic type theory is an expressive formalism that unifies mathematics and computation. A... more Intuitionistic type theory is an expressive formalism that unifies mathematics and computation. A central concept is the propositions-as-types principle, according to which propositions are interpreted as types, and proofs of a proposition are interpreted as programs of the associated type. Mathematical propositions are thereby to be understood as specifications, or problem descriptions, that are solved by providing a program that meets the specification. Conversely, a program can, by the same token, be understood as a proof of its type viewed as a proposition. Over the last quarter-century type theory has emerged as the central organizing principle of programming language research, through the identification of the informal concept of language features with type structure. Numerous benefits accrue from the identification of proofs and programs in type theory. First, it provides the foundation for integrating types and verification, the two most successful formal methods used to ensure the correctness of software. Second, it provides a language for the mechanization of mathematics in which proof checking is equivalent to type checking, and proof search is equivalent to writing a program to meet a specification.
In POPL
Recent work on higher-dimensional dependent type theory enriches conventional one-dimensional dep... more Recent work on higher-dimensional dependent type theory enriches conventional one-dimensional dependent type theory with additional structure expressing equivalence of elements of a type. This structure may be employed in a variety of ways to capture rather coarse identifications of elements that must be respected by type families. Higher-dimensional type theory has applications to code reuse for dependently typed programming, and to the formalization of mathematics. In this paper, we develop a novel judgemental formulation of a two-dimensional type theory, which enjoys a canonicity property: a closed term of boolean type is definitionally equal to one of the two booleans. Canonicity is a necessary condition for a computational interpretation of type theory as a programming language, and does not hold for existing axiomatic presentations of higher-dimensional type theory. The method of proof is a generalization of the NuPRL semantics, interpreting types as syntactic groupoids rather than equivalence relations.
Recent work on higher-dimensional type theory has explored connections between Martin-Löf type th... more Recent work on higher-dimensional type theory has explored connections between Martin-Löf type theory, higher-dimensional category theory, and homotopy theory. These connections suggest a generalization of dependent type theory to account for computationally relevant proofs of propositional equality-for example, taking Id Set A B to be the isomorphisms between A and B. The crucial observation is that all of the familiar type and term constructors can be equipped with a functorial action that describes how they preserve such proofs. The key benefit of higher-dimensional type theory is that programmers and mathematicians may work up to isomorphism and higher equivalence, such as equivalence of categories.
Twelf is an implementation of the LF logical framework and the Elf logic programming language tha... more Twelf is an implementation of the LF logical framework and the Elf logic programming language that provides several automated analyses of Elf programs. It is increasingly used in the development and study of large deductive systems, such as programming languages and logics. Such large projects would benefit from language extensions that facilitate extensible code reuse and modular development. Drawing on prior work with module systems for LF and Elf, have designed and prototyped a simple module system for Twelf. The module system supports namespace management and simple forms of parameterization and reuse. It is defined by elaboration into the current Twelf implementation.
… of Computer Science, …, Jan 1, 2006
The annual ICFP Programming Contest has become one of the premiere programming competitions in th... more The annual ICFP Programming Contest has become one of the premiere programming competitions in the world. The 9 th incarnation of the contest, "The Cult of the Bound Variable," was held in July 2006 and organized by the Principles of Programming group at Carnegie Mellon University. This report details the contest tasks, the technology used to produce the contest, and the contest results. Several tasks draw ideas from programming languages research. For example, participants implemented a simple virtual machine, played an adventure game based on a substructural logic, and programmed in a two-dimensional circuit language with a discordantly high-level operational semantics. The contest technology includes an optimizing compiler for a high-level functional language that targets our virtual machine. By the end of the three day contest, 365 teams, composed of 700 programmers from all over the world, solved at least one of the contest tasks.
Mechanizing metatheory in a logical framework. Submitted for publication
Proceedings of the 3rd workshop on …, Jan 1, 2009
This paper is part of a line of work on using the logical techniques of polarity and focusing to ... more This paper is part of a line of work on using the logical techniques of polarity and focusing to design a dependent programming language, with particular emphasis on programming with deductive systems such as programming languages and proof theories. Polarity emphasizes the distinction between positive types, which classify data, and negative types, which classify computation. In previous work, we showed how to use Zeilberger's higher-order formulation of focusing to integrate a positive function space for representing variable binding, an essential tool for specifying logical systems, with a standard negative computational function space. However, our previous work considers only a simply-typed language. The central technical contribution of the present paper is to extend higher-order focusing with a form of dependency that we call positively dependent types: We allow dependency on positive data, but not negative computation. Additionally, we present the syntax of dependent pair and function types using an iterated inductive definition, mapping positive data to types, which gives an account of type-level computation. We construct our language inside the dependently typed programming language Agda 2, making essential use of coinductive types and induction-recursion.
Arxiv preprint arXiv:1009.2793, Jan 1, 2010
ML5 is a programming language for spatially distributed computing, based on a Curry-Howard corres... more ML5 is a programming language for spatially distributed computing, based on a Curry-Howard correspondence with the modal logic S5. However, the ML5 programming language differs from the logic in several ways. In this paper, we give a semantic embedding of ML5 into the dependently typed programming language Agda, which both explains these discrepancies between ML5 and S5 and suggests some simplifications and generalizations of the language. Our embedding translates ML5 into a slightly different logic: intuitionistic S5 extended with a lax modality that encapsulates effectful computations in a monad. Rather than formalizing lax S5 as a proof theory, we embed it as a universe within the the dependently typed host language, with the universe elimination given by implementing the modal logic's Kripke semantics. *
Submitted for publication, Jan 1, 2006
Draft available from http://www. cs. cmu. edu/drl, Jan 1, 2008
We propose a thesis defending the following statement:
Submitted to POPL, Jan 1, 2008
Indexed families of types are a way of associating run-time data with compile-time abstractions t... more Indexed families of types are a way of associating run-time data with compile-time abstractions that can be used to reason about them. We propose an extensible theory of indexed types, in which programmers can define the index data appropriate to their programs and use them to track properties of run-time code. The essential ingredients in our proposal are (1) a logical framework, which is used to define index data, constraints, and proofs, and (2) computation with indices, both at the static and dynamic levels of the programming language. Computation with indices supports a variety of mechanisms necessary for programming with extensible indexed types, including the definition and implementation of indexed types, meta-theoretic reasoning about indices, proofproducing run-time checks, computed index expressions, and runtime actions of index constraints.