Skip to content

A logical relation for contextual equivalence of a probabilistic programming language in Coq

License

Notifications You must be signed in to change notification settings

cobbal/ppl-ctx-equiv-coq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contextual Equivalence for Probabilistic Programs with Continuous Random Variables and Scoring: The Coq Proofs


Intro

These proofs accompany the paper at https://link.springer.com/chapter/10.1007%2F978-3-662-54434-1_14

A prettier, coqdoc version of the sources is viewable at https://cobbal.github.io/ppl-ctx-equiv-coq/toc.html

Axioms

Since a complete formalization of measure theory is beyond the scope of this project, many facts about measures and integration have been axiomatized. These axioms are contained and documented in integration.v

Differences from paper

While the Coq formalism largely follows the same structure as the paper, there are some notable differences between the two:

  • The language uses De Bruijn indices for variables.
  • Many operations (e.g. EVAL) are defined only for well-typed terms. Substitution is provided by the autosubst library over mostly type-erased terms. See syntax.v for details.
  • The language does not yet have primitive operations besides addition. The proofs for the other operations would be the same as for addition, but the syntactic overhead made it low priority.
  • Entropy is fixed to be the Hilbert cube [0, 1]^ω
  • Simple contexts don't yet include let x = e in [].

Organization

Files listed in dependency order:

  • ennr.v
    Extended non-negative reals [0, ∞].
  • utils.v
    Common helper tactics and lemmas.
  • entropy.v
    Definition of entropy as countable product of unit intervals.
  • integration.v
    Axiomatization and lemmas about integration.
  • syntax.v
    Definition of language syntax and evaluation.
  • determinism.v
    Proof that evaluation is a partial function.
  • relations.v
    Definition of logical relation for contextual equivalence and proof of fundamental property.
  • chain.v
    Definition of type-aligned lists, which we use to define contexts
  • ctxequiv.v
    Definition of contexts, contextual equivalence, and proof that the logical relation is sound with respect to contextual equivalence.
  • properties_of_relations.v
    Symmetry, transitivity, and reflexivity of main and auxilary logical relations.
  • applications.v
    Applications of logical relation to show equivalences. Includes β_v, simple contexts, commutivity, and a few others.

About

A logical relation for contextual equivalence of a probabilistic programming language in Coq

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published