Skip to content
/ nola Public

Nola: Parameterizing Higher-Order Ghost State to Clear the Later Modality

License

Notifications You must be signed in to change notification settings

hopv/nola

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nola: Parameterizing Higher-Order Ghost State to Clear the Later Modality

Nola is a library for parameterizing higher-order ghost state, which enables wiping out the later modality. It is fully mechanized in Coq with the Iris separation logic framework.

The name Nola comes from 'No later' and the nickname for New Orleans, Louisiana, US.

Publication

  • Non-Step-Indexed Separation Logic with Invariants and Rust-Style Borrows. Yusuke Matsushita. Ph.D. Thesis, University of Tokyo. Dec 2023. Paper Talk slides

Getting Started

We use opam ver 2.* for package management.

To set up an opam switch named nola and link it to the folder:

opam switch create nola 5.0.0 # Choose an OCaml version
opam switch link nola .

To set up opam repos for Coq and Iris for the current opam switch:

opam repo add coq-released https://coq.inria.fr/opam/released
opam repo add iris-dev https://gitlab.mpi-sws.org/iris/opam.git

To fix development dependencies and compile Coq code:

make devdep
make -j16 # Choose a job number

Or to install as a library locally:

opam install .

To generate and browse a document:

make viewdoc

Architecture

All the Coq code is in nola/ and structured as follows:

  • prelude : Prelude
  • util/ : General-purpose utilities, extending stdpp
  • bi/ : Libraries for bunched implication logic
    • util (Utilities)
    • later (Later modality)
    • gmap (On gmap), plist (On plist)
    • order (Order theory), deriv (Derivability)
    • genupd (General update), updw (Update with a custom world satisfaction), wpw (Weakest precondition with a custom world satisfaction)
    • paradox (Paradoxes)
  • iris/ : Libraries for Iris base logic
  • heap_lang/ : Variant of Iris HeapLang, supporting Ndnat (infinite non-determinism) and program logic with custom world satisfactions
  • examples/ : Examples

About

Nola: Parameterizing Higher-Order Ghost State to Clear the Later Modality

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published