Skip to content

Mechanizations and prototypes for reachability types, a new take on ownership that scales better to impure higher-order languages.

Notifications You must be signed in to change notification settings

bracevac/reachability

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reachability Types

Reachability types are a new take on modeling lifetimes and sharing in high-level functional languages, showing how to integrate Rust-style reasoning capabilities with higher-order functions, polymorphic types, and similar high-level abstractions.

Mechanizations

Overview

  • base -- Coq mechanization of the $λ^*$-calculus [1] and its variations, gradually increasing in complexity.

  • effects -- Coq mechanization of the $λ_\varepsilon^*$-calculus [1] and its variations, gradually increasing in complexity.

  • polymorphism -- Coq mechanization of the $λ^\diamond$-calculus [2] and its variations, featuring a refined reachability model that scales to parametric type polymorphism.

  • lr -- Logical relations for proving semantic type soundness of the $λ^*$-calculus [1,3].

Acknowledgements

The mechanizations based on sets reuse some libraries by the UPenn PL Club that complement the FSet library shipping with Coq. We set up the FSet library with extensional equality as inspired by Boruch-Gruszecki et al.'s artifact.

Prototype Implementations

  • Interactive prototype for [1], also demonstrating the use of reachability types for graph-based IRs for impure functional languages [3].

  • A standalone prototype language Diamond implements polymorphic reachability types [2].

Contributors

References

[1] Reachability Types: Tracking Aliasing and Separation in Higher-order Functional Programs (OOPSLA 2021)
by Yuyan Bao, Guannan Wei, Oliver Bračevac, Luke Jiang, Qiyang He, and Tiark Rompf (pdf).

[2] Polymorphic Reachability Types: Tracking Aliasing and Separation in Higher-order Generic Programs (2023)
by Guannan Wei, Oliver Bračevac, Siyuan He, Yuyan Bao, and Tiark Rompf (to appear).

[3] Graph IRs for Impure Higher-Order Languages -- Making Aggressive Optimizations Affordable with Precise Effect Dependencies (OOPSLA 2023)
by Oliver Bračevac, Guannan Wei, Luke Jiang, Supun Abeysinghe, Songlin Jia, Siyuan He, Yuyan Bao, and Tiark Rompf (to appear).

About

Mechanizations and prototypes for reachability types, a new take on ownership that scales better to impure higher-order languages.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Coq 99.3%
  • Makefile 0.7%