Award Abstract # 1713389
SHF: Small: RUI: New Foundations for Indexed Programming

NSF Org: CCF
Division of Computing and Communication Foundations
Recipient: APPALACHIAN STATE UNIVERSITY
Initial Amendment Date: May 26, 2017
Latest Amendment Date: May 26, 2017
Award Number: 1713389
Award Instrument: Standard Grant
Program Manager: Anindya Banerjee
abanerje@nsf.gov
 (703)292-7885
CCF
 Division of Computing and Communication Foundations
CSE
 Directorate for Computer and Information Science and Engineering
Start Date: September 15, 2017
End Date: August 31, 2021 (Estimated)
Total Intended Award Amount: $463,504.00
Total Awarded Amount to Date: $463,504.00
Funds Obligated to Date: FY 2017 = $463,504.00
History of Investigator:
  • Patricia Johann (Principal Investigator)
    johannp@appstate.edu
Recipient Sponsored Research Office: Appalachian State University
438 ACADEMY ST
BOONE
NC  US  28608-0001
(828)262-7459
Sponsor Congressional District: 05
Primary Place of Performance: Appalachian State University
P.O. Box 32174
Boone
NC  US  28608-2174
Primary Place of Performance
Congressional District:
05
Unique Entity Identifier (UEI): F1NAKY5L1425
Parent UEI:
NSF Program(s): Software & Hardware Foundation
Primary Program Source: 01001718DB NSF RESEARCH & RELATED ACTIVIT
Program Reference Code(s): 7923, 7943, 9251
Program Element Code(s): 779800
Award Agency Code: 4900
Fund Agency Code: 4900
Assistance Listing Number(s): 47.070

ABSTRACT

Testing of programs has dominated the last 50 years of software development, but the next 50 will see an increased demand for provably correct software. This is partly because modern applications are increasingly safety critical, partly because testing is by its very nature only a partial correctness guarantee, and partly because programming language technology has now advanced to the stage where it is feasible to formally verify critical programs. Language-based verification uses a language's type system to guarantee program correctness, so that type-checking a program becomes tantamount to verifying its correctness. Thus, the more program properties a type system can express, the more the compiler can automatically verify. Indexed programming is a key technique for using a language's type system to express more and more sophisticated properties of programs. Indexed programming uses the extra information present in type indices to help close the so-called "semantic gap" between what programmers know about their programs and what type systems can express about them. The intellectual merits of this project lie in providing a principled methodology for transferring knowledge about effective programming and proving between languages supporting type-indexing of types and those supporting term-indexing of types, developing a semantic framework that enhances researchers' and practitioners' understanding of the nature of indexed types in general, and opening the way for new forms of indexing that can enforce even greater correctness guarantees. The broader impact of this project is to use indexed types to develop better and more widely applicable formal program verification methods, and, thereby, to help ensure that even large and sophisticated software systems are safe and reliable. Because it will lead to provably correct and secure software, this project has the potential to impact any application area, and thus any sector of the economy, for which such software is paramount.

This project will use the algebraic structure of indexing to guide the way programmers program with indexed types. Specifically, it will advance the state-of-the-art by providing an axiomatic framework for indexed programming that is principled, conceptually simple, comprehensive, uniform, and predictive. It will use the categorical notion of a fibration to ensure that the framework is general enough both to describe traditional type- and term-indexing of types, and to prescribe approaches to indexed programming when indices have more sophisticated and computationally useful algebraic structure. To this end, it will develop analogues of the adjoint structure present in the fibrations underlying traditional type- and term-indexing for more general fibrations interpreting programs, their types, and their properties. Because fibrations can uniformly model very general notions of "index" and "program property" in very general computational settings, they are indeed a promising foundation for the new framework. The development of the framework will drive both theory and practice forward by transferring knowledge between the traditional type- and term-indexed settings, solving state-of-the-art problems in each of these settings, and providing an understanding of the conceptual essence of indexed programming that allows problem solutions from these traditional settings to be extended to new ones.

PUBLICATIONS PRODUCED AS A RESULT OF THIS RESEARCH

Note:  When clicking on a Digital Object Identifier (DOI) number, you will be taken to an external site maintained by the publisher. Some full text articles may not yet be available without a charge during the embargo (administrative interval).

Some links on this page may take you to non-federal websites. Their policies may differ from this site.

Johann, P. and Ghiorzi, E. and and Jeffries, D. "GADTs, Functoriality, Parametricity: Pick Two" Logical And Semantic Frameworks with Applications , 2021 Citation Details
Johann, Patricia and Polonsky, Andrew "Higher-Kinded Data Types: Syntax and Semantics" Logic in Computer Science , 2019 https://doi.org/10.1109/LICS.2019.8785657 Citation Details
Polonsky, Andrew and Johann, Patricia "Local Presentability of Certain Comma Categories" Applied categorical structures , v.28 , 2019 https://doi.org/10.1007/s10485-019-09574-w Citation Details

PROJECT OUTCOMES REPORT

Disclaimer

This Project Outcomes Report for the General Public is displayed verbatim as submitted by the Principal Investigator (PI) for this award. Any opinions, findings, and conclusions or recommendations expressed in this Report are those of the PI and do not necessarily reflect the views of the National Science Foundation; NSF has not approved or endorsed its content.

In this project we studied type- and term-indexed data types to better understand their syntax and semantics, as well as how the two kinds of indexing relate to one another. The ultimate goal of this line of work is to help programmers think about, and use, indexed types more effectively in practice.

Postdoc Andrew Polonsky and I first proved a new, fundamental result in pure category theory that we needed to develop semantics of indexed data types. This result was a surprise --- not just to us, but to world experts on the topic, who expected it to be false. The result is reported in our Applied Category Theory (ACT) paper.

Polonsky and I used our ACT result to develop a fundamentally new syntax and semantics for higher-kinded (type-indexed) types, including (truly) nested types and generalized algebraic data types (GADTs). These are widely used in functional programming to enforce constraints on data. Our results are reported in our LICS'19 paper.

Polonsky and I then used the semantics for (truly) nested types from our LICS'19 paper to develop an extended theory of induction over them.  Our theory made it possible to define the first-ever induction rules for truly nested types. It also delivered new induction rules for nested types that greatly improve those currently generated for all nested types (including algebraic data types) by modern theorem provers. The new rules are reported in our FoSSaCS'20 paper, which is accompanied by a small Agda implementation.

Postdoc Enrico Ghiorzi, App State Master's student Daniel Jeffries, and I subsequently discovered that the same approach used in the FoSSaCS'20 paper does not support induction rules for GADTs (explaining, perhaps, why no proof assistants currently generate such rules). Despite working on this problem for over a year now, I still know of no semantics for GADTs that support induction rules and specialize to those for algebraic data types (ADTs) and nested types. The reasons for this seem to be very deep. The issue is still very actively under investigation.

Ghiorzi, Jeffries, and I used the semantics from the LICS'19 paper to give a parametric model for a polymorphic lambda calculus supporting nested types (including truly nested types) as primitive, or native, data types. Parametricity makes it possible to reason uniformly about data at different instances of a data type. Our model is reported in our FoSSaCS'21 paper. Jeffries made good progress on implementing and formally validating our theory of parametricity for nested types in Agda in his (ambitious) Master's thesis.  For the same reasons that we haven't been able to extend induction to GADTs, we haven't been able to understand our parametric model to them either. The important parts of our understanding of the situation are summarized in our LFSA'21 paper.

On the non-technical side, this project brought two successive post-doctoral researchers to App State and supported one Master's student. It created the opportunity for an undergraduate to get involved in internationally leading research, and to stay on for a Master's degree in which they could continue that work. It also provided the second postdoc good training in mentoring a graduate student. The project resulted not just in a Master's degree for the student, but also in two co-authored publications at internationally competitive venues.


Last Modified: 10/25/2021
Modified by: Patricia Johann

Please report errors in award information by writing to: awardsearch@nsf.gov.

Print this page

Back to Top of page