Leibniz equality is isomorphic to Martin-Löf identity, parametrically


Andreas Abel, Jesper Cockx, Dominique Devriese, Amin Timany, and Philip Wadler: Leibniz equality is isomorphic to Martin-Löf identity, parametrically. In Journal of Functional Programming (JFP), May 2020. https://doi.org/10.1017/S0956796820000155
Journal Paper
Abstract.

Consider two widely used definitions of equality. That of Leibniz: one value equals another if any predicate that holds of the first holds of the second. And that of Martin-Löf: the type identifying one value with another is occupied if the two values are identical. The former dates back several centuries, while the latter is widely used in proof systems such as Agda and Coq. Here we show that the two definitions are isomorphic: we can convert any proof of Leibniz equality to one of Martin-Löf identity and vice versa, and each conversion followed by the other is the identity. One direction of the isomorphism depends crucially on values of the type corresponding to Leibniz equality satisfying functional extensionality and Reynolds’ notion of parametricity. The existence of the conversions is widely known (meaning that if one can prove one equality then one can prove the other), but that the two conversions form an isomorphism (internally) in the presence of parametricity and functional extensionality is, we believe, new. Our result is a special case of a more general relation that holds between inductive families and their Church encodings. Our proofs are given inside type theory, rather than meta-theoretically. Our paper is a literate Agda script.

The bibtex source for this publication:
@article{DBLP:journals/jfp/AbelCDTW20,
  author    = {Andreas Abel and
               Jesper Cockx and
               Dominique Devriese and
               Amin Timany and
               Philip Wadler},
  title     = {Leibniz equality is isomorphic to Martin-L{\"{o}}f identity,
               parametrically},
  journal   = {J. Funct. Program.},
  volume    = {30},
  pages     = {e17},
  year      = {2020},
  url       = {https://doi.org/10.1017/S0956796820000155},
  doi       = {10.1017/S0956796820000155},
  timestamp = {Sat, 05 Sep 2020 17:51:31 +0200},
  biburl    = {https://dblp.org/rec/journals/jfp/AbelCDTW20.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}