Semantics of a Relational {\lambda}-Calculus (Extended Version)
Abstract
We extend the {\lambda}-calculus with constructs suitable for relational and functional-logic programming: non-deterministic choice, fresh variable introduction, and unification of expressions. In order to be able to unify {\lambda}-expressions and still obtain a confluent theory, we depart from related approaches, such as {\lambda}Prolog, in that we do not attempt to solve higher-order unification. Instead, abstractions are decorated with a location, which intuitively may be understood as its memory address, and we impose a simple coherence invariant: abstractions in the same location must be equal. This allows us to formulate a confluent small-step operational semantics which only performs first-order unification and does not require strong evaluation (below lambdas). We study a simply typed version of the system. Moreover, a denotational semantics for the calculus is proposed and reduction is shown to be sound with respect to the denotational semantics.
- Publication:
-
arXiv e-prints
- Pub Date:
- September 2020
- DOI:
- 10.48550/arXiv.2009.10929
- arXiv:
- arXiv:2009.10929
- Bibcode:
- 2020arXiv200910929B
- Keywords:
-
- Computer Science - Programming Languages