Publication View

Abstract Observational Equality, Now! (2008)

Abstract
This paper has something new and positive to say about propositional equality in programming and proof systems based on the Curry-Howard correspondence between propositions and types. We have found a way to present a propositional equality type • which is substitutive, allowing us to reason by replacing equal for equal in propositions; • which reflects the observable behaviour of values rather than their construction: in particular, we have extensionality— functions are equal if they take equal inputs to equal outputs; • which retains strong normalisation, decidable typechecking and canonicity—the property that closed normal forms inhabiting datatypes have canonical constructors; • which allows inductive data structures to be expressed in terms of a standard characterisation of well-founded trees; • which is presented syntactically—you can implement it directly, and we are doing so—this approach stands at the core of Epigram 2; • which you can play with now: we have simulated our system by a shallow embedding in Agda 2, shipping as part of the standard examples package for that system [21]. Until now, it has always been necessary to sacrifice some of these aspects. The closest attempt in the literature is Altenkirch’s construction of a setoid-model for a system with canonicity and extensionality on top of an intensional type theory with proof-irrelevant propositions [4]. Our new proposal simplifies Altenkirch’s construction by adopting McBride’s heterogeneous approach to equality [19].

Publication details
Download http://citeseerx.ist.psu.edu/viewdoc/summary?doi=?doi=10.1.1.128.1927
Source http://www.cs.nott.ac.uk/~wss/Publications/ObsEqNow.pdf
Contributors CiteSeerX
Repository CiteSeerX - Scientific Literature Digital Library and Search Engine (United States)
Keywords Equality
Type text
Language English
Relation 10.1.1.41.548, 10.1.1.47.155, 10.1.1.35.469, 10.1.1.6.9497, 10.1.1.113.2304, 10.1.1.26.4785, 10.1.1.39.2950, 10.1.1.39.4193, 10.1.1.23.6292, 10.1.1.125.2364, 10.1.1.63.8326, 10.1.1.44.9585, 10.1.1.107.1751, 10.1.1.101.7522, 10.1.1.100.295, 10.1.1.97.3860