Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/logsem/clutch

A probabilistic relational separation logic with support for asynchronous couplings.
https://github.com/logsem/clutch

asynchronous coq couplings higher-order iris logic probabilistic relational separation-logic

Last synced: about 1 month ago
JSON representation

A probabilistic relational separation logic with support for asynchronous couplings.

Lists

README

        




README

html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 80%;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
svg {
height: auto;
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}

Clutch


A higher-order probabilistic relational separation logic with support
for asynchronous probabilistic couplings. The logic is built using the
Iris program logic framework and
mechanized in the Coq proof
assistant
.


Preprint


A preprint describing this work is available on arXiv.



Gregersen, S.O., Aguirre, A., Haselwarter, P. G., Tassarotti, J. and
Birkedal, L., 2023. Asynchronous Probabilistic Couplings in Higher-Order
Separation Logic. arXiv
preprint arXiv:2301.10061
.



This table maps definitions, concepts,
and results found in the paper to the Coq formalization.


Building the development


The project is known to compile with



The recommended way to install the dependencies is through opam.



  1. Install opam
    if not already installed (a version greater than 2.0 is required).

  2. Install a new switch and link it to the project.


opam switch create clutch 4.14.1

opam switch link clutch .


  1. Add the Coq and Iris opam repositories.


opam repo add coq-released https://coq.inria.fr/opam/released

opam repo add iris-dev https://gitlab.mpi-sws.org/iris/opam.git
opam update


  1. Install the right version of the dependencies as specified in the
    clutch.opam file.


opam install . --deps-only

You should now be able to build the development by using
make -j N where N is the number of cores
available on your machine.


Axioms


The development relies on axioms for classical reasoning and an
axiomatization of the reals numbers, both found in Coq’s standard
library. The following list is produced when executing the command
Print Assumptions eager_lazy_equiv. in theories/examples/lazy_eager_coin.v:


ClassicalDedekindReals.sig_not_dec : ∀ P : Prop, {¬ ¬ P} + {¬ P}

ClassicalDedekindReals.sig_forall_dec : ∀ P : nat → Prop, (∀ n : nat, {P n} + {¬ P n}) → {n : nat | ¬ P n} + {∀ n : nat, P n}
functional_extensionality_dep : ∀ (A : Type) (B : A → Type) (f g : ∀ x : A, B x), (∀ x : A, f x = g x) → f = g
constructive_indefinite_description : ∀ (A : Type) (P : A → Prop), (∃ x : A, P x) → {x : A | P x}
classic : ∀ P : Prop, P ∨ ¬ P