Award Abstract # 1302327
SHF: Medium: Collaborative Research: FRP for Real

NSF Org: CCF
Division of Computing and Communication Foundations
Recipient: YALE UNIV
Initial Amendment Date: September 17, 2013
Latest Amendment Date: June 19, 2015
Award Number: 1302327
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: October 1, 2013
End Date: September 30, 2019 (Estimated)
Total Intended Award Amount: $850,000.00
Total Awarded Amount to Date: $866,000.00
Funds Obligated to Date: FY 2013 = $850,000.00
FY 2015 = $16,000.00
History of Investigator:
  • Ruzica Piskac (Principal Investigator)
    ruzica.piskac@yale.edu
  • Paul Hudak (Former Principal Investigator)
Recipient Sponsored Research Office: Yale University
150 MUNSON ST
NEW HAVEN
CT  US  06511-3572
(203)785-4689
Sponsor Congressional District: 03
Primary Place of Performance: Yale University
47 College Street Suite 203
New Haven
CT  US  06520-8047
Primary Place of Performance
Congressional District:
03
Unique Entity Identifier (UEI): FL6GV84CKN57
Parent UEI: FL6GV84CKN57
NSF Program(s): Software & Hardware Foundation,
PROGRAMMING LANGUAGES
Primary Program Source: 01001314DB NSF RESEARCH & RELATED ACTIVIT
01001516DB NSF RESEARCH & RELATED ACTIVIT
Program Reference Code(s): 7924, 7943, 9251
Program Element Code(s): 779800, 794300
Award Agency Code: 4900
Fund Agency Code: 4900
Assistance Listing Number(s): 47.070

ABSTRACT

Functional Reactive Programming, or FRP, is a declarative programming paradigm based on two fundamental abstractions: a continuous (functional) modeling of time-varying behaviors, and a discrete (reactive) calculus of user and process interaction. FRP provides a novel and effective approach to solving problems in which there is a combination of both continuous and discrete entities such as found in computer animation, robotics, control systems, GUIs, and interactive multimedia. FRP?s broader impact is seen in its adoption by several other research projects, and its use in several applications different from those at Yale. The proposed work will strengthen these existing projects, and further broaden the applicability of FRP. The proposed improvements in implementation will make FRP more suitable for compute-intensive applications, such as interactive 3D graphics and real-time audio processing. It will also benefit the modeling and simulation community, which often uses declarative approaches to specifying and solving problems.

Previous research at Yale helped to establish the foundations of FRP, and demonstrated its utility in several application domains. Despite this preliminary success, more work is needed to make "FRP for real." That is, to develop a system that facilitates writing natural and concise descriptions of reactive behaviors, responds well enough to satisfy most common real-time constraints, reifies real-world objects as first-class signal functions, runs efficiently through program optimization and parallel execution on multicore architectures, and has been validated in a real-world application domain, specifically audio signal processing. The proposed research will advance the overall FRP methodology in three areas: Language Design (type system extensions to capture resource constraints, a redesign of the mediation between the discrete and continuous, and a better syntax to capture the essence of FRP); Language Implementation (program optimizations, multicore execution, asynchronous sub-processes); and Validation and Testing (with a focus on real-time audio signal processing).

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.

(Showing: 1 - 10 of 16)
Bernd Finkbeiner, Felix Klein, Ruzica Piskac, Mark Santolucito "Synthesizing functional reactive programs" Haskell@ICFP 2019: 162-175 (Proceedings of the 12th ACM SIGPLAN International Symposium on Haskell, Haskell@ICFP 2019, Berlin, Germany, August 18-23, 2019. ACM 2019, ISBN 978-1-4503-6813-1) , 2019
Bernd Finkbeiner, Felix Klein, Ruzica Piskac, Mark Santolucito "Temporal Stream Logic: Synthesis Beyond the Bools" CAV 2019 (Computer Aided Verification - 31st International Conference, CAV 2019, New York City, NY, USA, July 15-18, 2019) , 2019
Ennan Zhai, Ruzica Piskac, Ronghui Gu, Xun Lao, Xi Wang "An auditing language for preventing correlated failures in the cloud." Proceedings of the ACM on Programming Languages, Volume 1 (OOPSLA): 97:1-97:28 (2017) , 2017
He Xiao, Zhenhua Li, Ennan Zhai, Tianyin Xu, Yang Li, Yunhao Liu, Quanlu Zhang, Yao Liu "Towards Web-based Delta Synchronization for Cloud Storage Services" The 16th USENIX Conference on File and Storage Technologies, FAST 2018, Oakland, CA, USA. , 2018
Mark Santolucito, Drew Goldman, Allyson Weseley, Ruzica Piskac "Programming by Example: Efficient, but Not "Helpful"" PLATEAU@SPLASH 2018 (9th Workshop on Evaluation and Usability of Programming Languages and Tools, PLATEAU@SPLASH 2018, November 5, 2018, Boston, Massachusetts, USA) , 2018
Mark Santolucito, Ennan Zhai, Rahul Dhodapkar, Aaron Shim, Ruzica Piskac "Synthesizing configuration file specifications with association rule learning." Proceedings of the ACM on Programming Languages, Volume 1 (OOPSLA): 64:1-64:20 (2017) , 2017
Mark Santolucito, Kate Rogers, Aedan Lombardo, Ruzica Piskac FARM@ICFP 2018: 18-25 "Programming-by-example for audio: synthesizing digital signal processing programs." Proceedings of the 6th ACM SIGPLAN International Workshop on Functional Art, Music, Modeling, and Design, FARM@ICFP 2018, St. Louis, MO, USA. , 2018
Mark Santolucito, William T. Hallahan, Ruzica Piskac "Live Programming By Example." CHI Extended Abstracts 2019 (Extended Abstracts of the 2019 CHI Conference on Human Factors in Computing Systems, CHI 2019, Glasgow, Scotland, UK, May 04-09, 2019. ACM 2019, ISBN 978-1-4503-5971-9) , 2019
Mingkang Ruan, Thierry Titcheu, Ennan Zhai, Zhenhua Li, Yao Liu, Jinlong E, Yong Cui, Hong Xu "On the Synchronization Bottleneck of OpenStack Swift-Like Cloud Storage Systems." IEEE Transactions on Parallel and Distributed Systems , v.29 , 2018
Ruzica Piskac "New Applications of Software Synthesis: Verification of Configuration Files and Firewall Repair" SAS 2018: 71-76 (Static Analysis - 25th International Symposium, SAS 2018, Freiburg, Germany, August 29-31, 2018, Proceedings. Lecture Notes in Computer Science 11002, Springer 2018, ISBN 978-3-319-99724-7) , 2018
Santolucito, Mark and Goldman, Drew and Weseley, Allyson and Piskac, Ruzica "Programming by Example: Efficient, but Not "Helpful"" 9th Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU 2018) , 2018 Citation Details
(Showing: 1 - 10 of 16)

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.

Software is continuously interacting with the world around us,
modeling the many complexities of reactive systems our world. In order
to build this type of software reliably, programmers require tools and
languages, such as Functional Reactive Programming, that are designed
specifically for such reactive systems. Functional Reactive
Programming, or FRP, is a declarative programming paradigm based on
two fundamental abstractions: a continuous (functional) modeling of
time-varying behaviors, and a discrete (reactive) calculus of user and
process interaction.

Without formal foundations for reactive programming, software will
continue to fail in the spectacular ways that costs both capital and
human lives. Because FRP is a critical direction in the development of
modern reactive systems, this work has made a significant impact on
the future of safe reactive systems design.

In order to improve the language design of FRP, the work done on this
grant introduced a new specification language, called Temporal Stream
Logic, that can be used to describe reactive systems. We used Temporal
Stream Logic to synthesize complex systems that were previously
out-of-scope for existing tools, such as an autonomous vehicle
controller that is formally guaranteed to correctly implement the
specified driving behavior.

This project also explored the use of Temporal Stream Logic to
synthesize FRP code that can be run on an FPGA - significantly
improving the runtime performance of FRP systems. In order to further
improve the performance of FRP program code, this project additionally
looked to various type systems and language design extensions. In
particular, the work of this project helped to better support
asynchrony in FRP, as well as take better advantage of optimizations
such as Causal Commutative Arrows.

One of the application domains this project focused on was computer
music - a notoriously challenging domain for reactive systems, which
requires continuous and discrete interactions to be processed in real
time. This project built the open source computer music library,
Euterpea, as well as began the first exploration of programming by
example for digital signal processing.

These results have been published in papers that have appeared in
major publication venues (PLDI, CAV, OOPSLA, ICFP). In addition this
work has also resulted in the publication of a textbook on FRP "The
Haskell School of Music: From Signals to Symphonies". Results from
this project has additionally been presented in a number of colloquium
and symposium speaking events.

In addition, we maintain a repository of software tools and benchmarks
that have been developed during the course of this project. These are
publicly available under non-restrictive open source licenses. Moreover,
we provide a synthesis tool chain to automatically generate FRP program
from specifications in this language.

Several of the synthesis benchmarks that we have developed during this
project are being reused by other researchers in the reactive
synthesis community. In addition, we contributed our benchmarks that
were generated by our FRP synthesis tool to the SYNT benchmark
suite. These benchmarks play a major role in evaluating reactive
synthesis tools and driving their development.

The project has provided training opportunities for three PhD students
and two postdoctoral students who conducted research related to the
project. Two of these PhD students have successfully graduated during
the project duration and have subsequently found employment in
research institutes and the software industry. The third PhD student
is on track to complete his thesis shortly.

Eight undergraduates and four high school students have gained
research experience by contributing to this project. Six of these
undergraduates completed REUs with funding from this grant, and two
completed senior projects as extensions of this project's work. Three
of these undergraduates were females, underscoring the PI's commitment
to increasing the diversity in computer science through this
project. We have published a paper based on these interactions
specifically addressing pedagogical techniques of involving more
undergraduates in computer science research.


Last Modified: 01/09/2020
Modified by: Ruzica Piskac

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

Print this page

Back to Top of page